12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /*
- Copyright 2015 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 cmd
- import (
- "fmt"
- "io"
- "github.com/renstrom/dedent"
- "github.com/spf13/cobra"
- "k8s.io/kubernetes/pkg/kubectl"
- cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
- )
- var (
- namespaceLong = dedent.Dedent(`
- Create a namespace with the specified name.`)
- namespaceExample = dedent.Dedent(`
- # Create a new namespace named my-namespace
- kubectl create namespace my-namespace`)
- )
- // NewCmdCreateNamespace is a macro command to create a new namespace
- func NewCmdCreateNamespace(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
- cmd := &cobra.Command{
- Use: "namespace NAME [--dry-run]",
- Aliases: []string{"ns"},
- Short: "Create a namespace with the specified name",
- Long: namespaceLong,
- Example: namespaceExample,
- Run: func(cmd *cobra.Command, args []string) {
- err := CreateNamespace(f, cmdOut, cmd, args)
- cmdutil.CheckErr(err)
- },
- }
- cmdutil.AddApplyAnnotationFlags(cmd)
- cmdutil.AddValidateFlags(cmd)
- cmdutil.AddPrinterFlags(cmd)
- cmdutil.AddGeneratorFlags(cmd, cmdutil.NamespaceV1GeneratorName)
- return cmd
- }
- // CreateNamespace implements the behavior to run the create namespace command
- func CreateNamespace(f *cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
- name, err := NameFromCommandArgs(cmd, args)
- if err != nil {
- return err
- }
- var generator kubectl.StructuredGenerator
- switch generatorName := cmdutil.GetFlagString(cmd, "generator"); generatorName {
- case cmdutil.NamespaceV1GeneratorName:
- generator = &kubectl.NamespaceGeneratorV1{Name: name}
- default:
- return cmdutil.UsageError(cmd, fmt.Sprintf("Generator: %s not supported.", generatorName))
- }
- return RunCreateSubcommand(f, cmd, cmdOut, &CreateSubcommandOptions{
- Name: name,
- StructuredGenerator: generator,
- DryRun: cmdutil.GetDryRunFlag(cmd),
- OutputFormat: cmdutil.GetFlagString(cmd, "output"),
- })
- }
|