1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /*
- Copyright 2014 The Kubernetes Authors.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
- package config
- import (
- "io"
- "path"
- "strconv"
- "github.com/spf13/cobra"
- "k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
- )
- // NewCmdConfig creates a command object for the "config" action, and adds all child commands to it.
- func NewCmdConfig(pathOptions *clientcmd.PathOptions, out io.Writer) *cobra.Command {
- if len(pathOptions.ExplicitFileFlag) == 0 {
- pathOptions.ExplicitFileFlag = clientcmd.RecommendedConfigPathFlag
- }
- cmd := &cobra.Command{
- Use: "config SUBCOMMAND",
- Short: "Modify kubeconfig files",
- Long: `Modify kubeconfig files using subcommands like "kubectl config set current-context my-context"
- The loading order follows these rules:
- 1. If the --` + pathOptions.ExplicitFileFlag + ` flag is set, then only that file is loaded. The flag may only be set once and no merging takes place.
- 2. If $` + pathOptions.EnvVar + ` environment variable is set, then it is used a list of paths (normal path delimitting rules for your system). These paths are merged. When a value is modified, it is modified in the file that defines the stanza. When a value is created, it is created in the first file that exists. If no files in the chain exist, then it creates the last file in the list.
- 3. Otherwise, ` + path.Join("${HOME}", pathOptions.GlobalFileSubpath) + ` is used and no merging takes place.
- `,
- Run: func(cmd *cobra.Command, args []string) {
- cmd.Help()
- },
- }
- // file paths are common to all sub commands
- cmd.PersistentFlags().StringVar(&pathOptions.LoadingRules.ExplicitPath, pathOptions.ExplicitFileFlag, pathOptions.LoadingRules.ExplicitPath, "use a particular kubeconfig file")
- cmd.AddCommand(NewCmdConfigView(out, pathOptions))
- cmd.AddCommand(NewCmdConfigSetCluster(out, pathOptions))
- cmd.AddCommand(NewCmdConfigSetAuthInfo(out, pathOptions))
- cmd.AddCommand(NewCmdConfigSetContext(out, pathOptions))
- cmd.AddCommand(NewCmdConfigSet(out, pathOptions))
- cmd.AddCommand(NewCmdConfigUnset(out, pathOptions))
- cmd.AddCommand(NewCmdConfigCurrentContext(out, pathOptions))
- cmd.AddCommand(NewCmdConfigUseContext(out, pathOptions))
- cmd.AddCommand(NewCmdConfigGetContexts(out, pathOptions))
- cmd.AddCommand(NewCmdConfigGetClusters(out, pathOptions))
- cmd.AddCommand(NewCmdConfigDeleteCluster(out, pathOptions))
- cmd.AddCommand(NewCmdConfigDeleteContext(out, pathOptions))
- return cmd
- }
- func toBool(propertyValue string) (bool, error) {
- boolValue := false
- if len(propertyValue) != 0 {
- var err error
- boolValue, err = strconv.ParseBool(propertyValue)
- if err != nil {
- return false, err
- }
- }
- return boolValue, nil
- }
|