Commit 6acac8f7 authored by Jeff Lowdermilk's avatar Jeff Lowdermilk

Merge pull request #3754 from deads2k/deads-remove-ns-path

remove --ns-path option from .kubeconfig file
parents 7f5ed541 bc93de31
...@@ -72,9 +72,7 @@ __kubectl_pre_command() ...@@ -72,9 +72,7 @@ __kubectl_pre_command()
--client-key= --client-key=
--insecure-skip-tls-verify= --insecure-skip-tls-verify=
--match-server-version= --match-server-version=
-n
--namespace= --namespace=
--ns-path=
-s -s
--server= --server=
) )
...@@ -85,7 +83,7 @@ __kubectl_pre_command() ...@@ -85,7 +83,7 @@ __kubectl_pre_command()
COMPREPLY=( $(compgen -W "${api_versions[*]}" -- "$cur") ) COMPREPLY=( $(compgen -W "${api_versions[*]}" -- "$cur") )
return 0 return 0
;; ;;
-a | --auth-path | --certificate-authority | --client-certificate | --client-key | --ns-path) -a | --auth-path | --certificate-authority | --client-certificate | --client-key)
_filedir _filedir
return 0 return 0
;; ;;
......
...@@ -83,8 +83,6 @@ type Context struct { ...@@ -83,8 +83,6 @@ type Context struct {
AuthInfo string `json:"user"` AuthInfo string `json:"user"`
// Namespace is the default namespace to use on unspecified requests // Namespace is the default namespace to use on unspecified requests
Namespace string `json:"namespace,omitempty"` Namespace string `json:"namespace,omitempty"`
// NamespacePath is the path to a kubernetes ns file (~/.kubernetes_ns)
NamespacePath string `json:"namespace-path,omitempty"`
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
Extensions map[string]runtime.EmbeddedObject `json:"extensions,omitempty"` Extensions map[string]runtime.EmbeddedObject `json:"extensions,omitempty"`
} }
......
...@@ -83,8 +83,6 @@ type Context struct { ...@@ -83,8 +83,6 @@ type Context struct {
AuthInfo string `json:"user"` AuthInfo string `json:"user"`
// Namespace is the default namespace to use on unspecified requests // Namespace is the default namespace to use on unspecified requests
Namespace string `json:"namespace,omitempty"` Namespace string `json:"namespace,omitempty"`
// NamespacePath is the path to a kubernetes ns file (~/.kubernetes_ns)
NamespacePath string `json:"namespace-path,omitempty"`
// Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields // Extensions holds additional information. This is useful for extenders so that reads and writes don't clobber unknown fields
Extensions []NamedExtension `json:"extensions,omitempty"` Extensions []NamedExtension `json:"extensions,omitempty"`
} }
......
...@@ -22,10 +22,10 @@ import ( ...@@ -22,10 +22,10 @@ import (
"github.com/imdario/mergo" "github.com/imdario/mergo"
"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
"github.com/GoogleCloudPlatform/kubernetes/pkg/client" "github.com/GoogleCloudPlatform/kubernetes/pkg/client"
clientcmdapi "github.com/GoogleCloudPlatform/kubernetes/pkg/client/clientcmd/api" clientcmdapi "github.com/GoogleCloudPlatform/kubernetes/pkg/client/clientcmd/api"
"github.com/GoogleCloudPlatform/kubernetes/pkg/clientauth" "github.com/GoogleCloudPlatform/kubernetes/pkg/clientauth"
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl"
"github.com/GoogleCloudPlatform/kubernetes/pkg/util/errors" "github.com/GoogleCloudPlatform/kubernetes/pkg/util/errors"
) )
...@@ -241,25 +241,10 @@ func (config DirectClientConfig) Namespace() (string, error) { ...@@ -241,25 +241,10 @@ func (config DirectClientConfig) Namespace() (string, error) {
configContext := config.getContext() configContext := config.getContext()
if len(configContext.Namespace) != 0 { if len(configContext.Namespace) == 0 {
return configContext.Namespace, nil return api.NamespaceDefault, nil
} }
return configContext.Namespace, nil
if len(configContext.NamespacePath) != 0 {
nsInfo, err := kubectl.LoadNamespaceInfo(configContext.NamespacePath)
if err != nil {
return "", err
}
return nsInfo.Namespace, nil
}
// if nothing was specified, try the default file
nsInfo, err := kubectl.LoadNamespaceInfo(os.Getenv("HOME") + "/.kubernetes_ns")
if err != nil {
return "", err
}
return nsInfo.Namespace, nil
} }
// ConfirmUsable looks a particular context and determines if that particular part of the config is useable. There might still be errors in the config, // ConfirmUsable looks a particular context and determines if that particular part of the config is useable. There might still be errors in the config,
......
...@@ -56,7 +56,6 @@ type ContextOverrideFlags struct { ...@@ -56,7 +56,6 @@ type ContextOverrideFlags struct {
Namespace string Namespace string
// allow the potential for shorter namespace flags for commands that tend to work across namespaces // allow the potential for shorter namespace flags for commands that tend to work across namespaces
NamespaceShort string NamespaceShort string
NamespacePath string
} }
// ClusterOverride holds the flag names to be used for binding command line flags for Cluster objects // ClusterOverride holds the flag names to be used for binding command line flags for Cluster objects
...@@ -69,19 +68,18 @@ type ClusterOverrideFlags struct { ...@@ -69,19 +68,18 @@ type ClusterOverrideFlags struct {
} }
const ( const (
FlagClusterName = "cluster" FlagClusterName = "cluster"
FlagAuthInfoName = "user" FlagAuthInfoName = "user"
FlagContext = "context" FlagContext = "context"
FlagNamespace = "namespace" FlagNamespace = "namespace"
FlagNamespacePath = "ns-path" FlagAPIServer = "server"
FlagAPIServer = "server" FlagAPIVersion = "api-version"
FlagAPIVersion = "api-version" FlagAuthPath = "auth-path"
FlagAuthPath = "auth-path" FlagInsecure = "insecure-skip-tls-verify"
FlagInsecure = "insecure-skip-tls-verify" FlagCertFile = "client-certificate"
FlagCertFile = "client-certificate" FlagKeyFile = "client-key"
FlagKeyFile = "client-key" FlagCAFile = "certificate-authority"
FlagCAFile = "certificate-authority" FlagBearerToken = "token"
FlagBearerToken = "token"
) )
// RecommendedAuthOverrideFlags is a convenience method to return recommended flag names prefixed with a string of your choosing // RecommendedAuthOverrideFlags is a convenience method to return recommended flag names prefixed with a string of your choosing
...@@ -117,10 +115,9 @@ func RecommendedConfigOverrideFlags(prefix string) ConfigOverrideFlags { ...@@ -117,10 +115,9 @@ func RecommendedConfigOverrideFlags(prefix string) ConfigOverrideFlags {
// RecommendedContextOverrideFlags is a convenience method to return recommended flag names prefixed with a string of your choosing // RecommendedContextOverrideFlags is a convenience method to return recommended flag names prefixed with a string of your choosing
func RecommendedContextOverrideFlags(prefix string) ContextOverrideFlags { func RecommendedContextOverrideFlags(prefix string) ContextOverrideFlags {
return ContextOverrideFlags{ return ContextOverrideFlags{
ClusterName: prefix + FlagClusterName, ClusterName: prefix + FlagClusterName,
AuthInfoName: prefix + FlagAuthInfoName, AuthInfoName: prefix + FlagAuthInfoName,
Namespace: prefix + FlagNamespace, Namespace: prefix + FlagNamespace,
NamespacePath: prefix + FlagNamespacePath,
} }
} }
...@@ -153,5 +150,4 @@ func BindContextFlags(contextInfo *clientcmdapi.Context, flags *pflag.FlagSet, f ...@@ -153,5 +150,4 @@ func BindContextFlags(contextInfo *clientcmdapi.Context, flags *pflag.FlagSet, f
flags.StringVar(&contextInfo.Cluster, flagNames.ClusterName, "", "The name of the kubeconfig cluster to use") flags.StringVar(&contextInfo.Cluster, flagNames.ClusterName, "", "The name of the kubeconfig cluster to use")
flags.StringVar(&contextInfo.AuthInfo, flagNames.AuthInfoName, "", "The name of the kubeconfig user to use") flags.StringVar(&contextInfo.AuthInfo, flagNames.AuthInfoName, "", "The name of the kubeconfig user to use")
flags.StringVarP(&contextInfo.Namespace, flagNames.Namespace, flagNames.NamespaceShort, "", "If present, the namespace scope for this CLI request.") flags.StringVarP(&contextInfo.Namespace, flagNames.Namespace, flagNames.NamespaceShort, "", "If present, the namespace scope for this CLI request.")
flags.StringVar(&contextInfo.NamespacePath, flagNames.NamespacePath, "", "Path to the namespace info file that holds the namespace context to use for CLI requests.")
} }
...@@ -18,43 +18,24 @@ package cmd ...@@ -18,43 +18,24 @@ package cmd
import ( import (
"io" "io"
"os"
"fmt" "github.com/golang/glog"
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubectl"
"github.com/spf13/cobra" "github.com/spf13/cobra"
) )
// TODO remove once people have been given enough time to notice
func NewCmdNamespace(out io.Writer) *cobra.Command { func NewCmdNamespace(out io.Writer) *cobra.Command {
cmd := &cobra.Command{ cmd := &cobra.Command{
Use: "namespace [<namespace>]", Use: "namespace [<namespace>]",
Short: "Set and view the current Kubernetes namespace", Short: "SUPERCEDED: Set and view the current Kubernetes namespace",
Long: `Set and view the current Kubernetes namespace scope for command line requests. Long: `SUPERCEDED: Set and view the current Kubernetes namespace scope for command line requests.
A Kubernetes namespace subdivides the cluster into groups of logically related pods, services, and replication controllers.
Examples:
$ kubectl namespace
Using namespace default
$ kubectl namespace other namespace has been superceded by the context.namespace field of .kubeconfig files. See 'kubectl config set-context --help' for more details.
Set current namespace to other`, `,
Run: func(cmd *cobra.Command, args []string) { Run: func(cmd *cobra.Command, args []string) {
nsPath := GetFlagString(cmd, "ns-path") glog.Errorln("namespace has been superceded by the context.namespace field of .kubeconfig files. See 'kubectl config set-context --help' for more details.")
var err error os.Exit(1)
var ns *kubectl.NamespaceInfo
switch len(args) {
case 0:
ns, err = kubectl.LoadNamespaceInfo(nsPath)
fmt.Printf("Using namespace %s\n", ns.Namespace)
case 1:
ns = &kubectl.NamespaceInfo{Namespace: args[0]}
err = kubectl.SaveNamespaceInfo(nsPath, ns)
fmt.Printf("Set current namespace to %s\n", ns.Namespace)
default:
usageError(cmd, "kubectl namespace [<namespace>]")
}
checkErr(err)
}, },
} }
return cmd return cmd
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment