1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /*
- Copyright 2016 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 (
- deploymentLong = dedent.Dedent(`
- Create a deployment with the specified name.`)
- deploymentExample = dedent.Dedent(`
- # Create a new deployment named my-dep that runs the busybox image.
- kubectl create deployment my-dep --image=busybox`)
- )
- // NewCmdCreateDeployment is a macro command to create a new deployment
- func NewCmdCreateDeployment(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
- cmd := &cobra.Command{
- Use: "deployment NAME --image=image [--dry-run]",
- Aliases: []string{"dep"},
- Short: "Create a deployment with the specified name.",
- Long: deploymentLong,
- Example: deploymentExample,
- Run: func(cmd *cobra.Command, args []string) {
- err := CreateDeployment(f, cmdOut, cmd, args)
- cmdutil.CheckErr(err)
- },
- }
- cmdutil.AddApplyAnnotationFlags(cmd)
- cmdutil.AddValidateFlags(cmd)
- cmdutil.AddPrinterFlags(cmd)
- cmdutil.AddGeneratorFlags(cmd, cmdutil.DeploymentBasicV1Beta1GeneratorName)
- cmd.Flags().StringSlice("image", []string{}, "Image name to run.")
- cmd.MarkFlagRequired("image")
- return cmd
- }
- // CreateDeployment implements the behavior to run the create deployment command
- func CreateDeployment(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.DeploymentBasicV1Beta1GeneratorName:
- generator = &kubectl.DeploymentBasicGeneratorV1{Name: name, Images: cmdutil.GetFlagStringSlice(cmd, "image")}
- 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"),
- })
- }
|