Skip to content
Snippets Groups Projects
Unverified Commit 6f4379ff authored by Jess's avatar Jess Committed by GitHub
Browse files

Merge pull request #148 from jessicayuen/init-namespace

Initialize namespace to 'default' if not specified
parents 6a8604b7 ce194ca2
No related branches found
No related tags found
No related merge requests found
......@@ -109,35 +109,11 @@ var envAddCmd = &cobra.Command{
name := args[0]
server, namespace, context, err := commonEnvFlags(flags)
server, namespace, err := resolveEnvFlags(flags)
if err != nil {
return err
}
if len(namespace) == 0 {
namespace = defaultNamespace
}
if len(server) == 0 {
// If server is not provided, use the provided context.
// If context is also not provided, use the current context.
var ctx *string
if len(context) != 0 {
ctx = &context
}
var ns string
server, ns, err = resolveContext(ctx)
if err != nil {
return err
}
// If namespace is not provided, use the default namespace provided in the context.
if !flags.Changed(flagEnvNamespace) {
namespace = ns
}
}
appDir, err := os.Getwd()
if err != nil {
return err
......@@ -300,22 +276,7 @@ var envSetCmd = &cobra.Command{
return err
}
server, namespace, context, err := commonEnvFlags(flags)
if err != nil {
return err
}
// If namespace flag is provided but without a value, use the default namespace.
if flags.Changed(flagEnvNamespace) && len(namespace) == 0 {
namespace = defaultNamespace
}
if len(context) != 0 {
server, _, err = resolveContext(&context)
if err != nil {
return err
}
}
server, namespace, err := resolveEnvFlags(flags)
c, err := kubecfg.NewEnvSetCmd(originalName, name, server, namespace, manager)
if err != nil {
......@@ -365,3 +326,25 @@ func commonEnvFlags(flags *pflag.FlagSet) (server, namespace, context string, er
return server, namespace, context, nil
}
func resolveEnvFlags(flags *pflag.FlagSet) (string, string, error) {
server, ns, context, err := commonEnvFlags(flags)
if err != nil {
return "", "", err
}
if server == "" {
// server is not provided -- use the context.
server, ns, err = resolveContext(context)
if err != nil {
return "", "", err
}
}
namespace := defaultNamespace
if ns != "" {
namespace = ns
}
return server, namespace, nil
}
......@@ -56,24 +56,13 @@ var initCmd = &cobra.Command{
return err
}
context, err := flags.GetString(flagEnvContext)
server, namespace, err := resolveEnvFlags(flags)
if err != nil {
return err
}
log.Infof("Creating a new app '%s' at path '%s'", appName, appRoot)
// Find the URI and namespace of the current cluster, if it exists.
var ctx *string
if len(context) != 0 {
ctx = &context
}
uri, namespace, err := resolveContext(ctx)
if err != nil {
return err
}
c, err := kubecfg.NewInitCmd(appName, appRoot, specFlag, &uri, &namespace)
c, err := kubecfg.NewInitCmd(appName, appRoot, specFlag, &server, &namespace)
if err != nil {
return err
}
......
......@@ -134,33 +134,35 @@ func namespaceFor(c clientcmd.ClientConfig, overrides *clientcmd.ConfigOverrides
return ns, err
}
// resolveContext returns the server and namespace of the cluster at the provided
// context. If context is nil, the current context is used.
func resolveContext(context *string) (server, namespace string, err error) {
// resolveContext returns the server and namespace of the cluster at the
// provided context. If the context string is empty, the default context is
// used.
func resolveContext(context string) (server, namespace string, err error) {
rawConfig, err := clientConfig.RawConfig()
if err != nil {
return "", "", err
}
ctxName := rawConfig.CurrentContext
if context != nil {
ctxName = *context
}
ctx := rawConfig.Contexts[ctxName]
if ctx == nil {
if len(ctxName) == 0 && ctxName == rawConfig.CurrentContext {
// use the default context where context is empty
if context == "" {
if rawConfig.CurrentContext == "" {
// User likely does not have a kubeconfig file.
return "", "", fmt.Errorf("No current context found. Make sure a kubeconfig file is present")
}
context = rawConfig.CurrentContext
}
return "", "", fmt.Errorf("context '%s' does not exist in the kubeconfig file", ctxName)
ctx := rawConfig.Contexts[context]
if ctx == nil {
return "", "", fmt.Errorf("context '%s' does not exist in the kubeconfig file", context)
}
log.Infof("Using context '%s' from the kubeconfig file specified at the environment variable $KUBECONFIG", ctxName)
log.Infof("Using context '%s' from the kubeconfig file specified at the environment variable $KUBECONFIG", context)
cluster, exists := rawConfig.Clusters[ctx.Cluster]
if !exists {
return "", "", fmt.Errorf("No cluster with name '%s' exists", ctx.Cluster)
}
return cluster.Server, ctx.Namespace, nil
}
......
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