Skip to content

Commit

Permalink
add oc create dc
Browse files Browse the repository at this point in the history
  • Loading branch information
deads2k committed May 3, 2016
1 parent b50fa54 commit 0cad48c
Show file tree
Hide file tree
Showing 6 changed files with 253 additions and 0 deletions.
45 changes: 45 additions & 0 deletions contrib/completions/bash/oc
Expand Up @@ -6808,6 +6808,50 @@ _oc_create_policybinding()
must_have_one_noun=()
}

_oc_create_deploymentconfig()
{
last_command="oc_create_deploymentconfig"
commands=()

flags=()
two_word_flags=()
flags_with_completion=()
flags_completion=()

flags+=("--image=")
flags+=("--output=")
two_word_flags+=("-o")
flags+=("--api-version=")
flags+=("--as=")
flags+=("--certificate-authority=")
flags_with_completion+=("--certificate-authority")
flags_completion+=("_filedir")
flags+=("--client-certificate=")
flags_with_completion+=("--client-certificate")
flags_completion+=("_filedir")
flags+=("--client-key=")
flags_with_completion+=("--client-key")
flags_completion+=("_filedir")
flags+=("--cluster=")
flags+=("--config=")
flags_with_completion+=("--config")
flags_completion+=("_filedir")
flags+=("--context=")
flags+=("--google-json-key=")
flags+=("--insecure-skip-tls-verify")
flags+=("--log-flush-frequency=")
flags+=("--match-server-version")
flags+=("--namespace=")
two_word_flags+=("-n")
flags+=("--server=")
flags+=("--token=")
flags+=("--user=")

must_have_one_flag=()
must_have_one_flag+=("--image=")
must_have_one_noun=()
}

_oc_create()
{
last_command="oc_create"
Expand All @@ -6818,6 +6862,7 @@ _oc_create()
commands+=("serviceaccount")
commands+=("route")
commands+=("policybinding")
commands+=("deploymentconfig")

flags=()
two_word_flags=()
Expand Down
45 changes: 45 additions & 0 deletions contrib/completions/bash/openshift
Expand Up @@ -10393,6 +10393,50 @@ _openshift_cli_create_policybinding()
must_have_one_noun=()
}

_openshift_cli_create_deploymentconfig()
{
last_command="openshift_cli_create_deploymentconfig"
commands=()

flags=()
two_word_flags=()
flags_with_completion=()
flags_completion=()

flags+=("--image=")
flags+=("--output=")
two_word_flags+=("-o")
flags+=("--api-version=")
flags+=("--as=")
flags+=("--certificate-authority=")
flags_with_completion+=("--certificate-authority")
flags_completion+=("_filedir")
flags+=("--client-certificate=")
flags_with_completion+=("--client-certificate")
flags_completion+=("_filedir")
flags+=("--client-key=")
flags_with_completion+=("--client-key")
flags_completion+=("_filedir")
flags+=("--cluster=")
flags+=("--config=")
flags_with_completion+=("--config")
flags_completion+=("_filedir")
flags+=("--context=")
flags+=("--google-json-key=")
flags+=("--insecure-skip-tls-verify")
flags+=("--log-flush-frequency=")
flags+=("--match-server-version")
flags+=("--namespace=")
two_word_flags+=("-n")
flags+=("--server=")
flags+=("--token=")
flags+=("--user=")

must_have_one_flag=()
must_have_one_flag+=("--image=")
must_have_one_noun=()
}

_openshift_cli_create()
{
last_command="openshift_cli_create"
Expand All @@ -10403,6 +10447,7 @@ _openshift_cli_create()
commands+=("serviceaccount")
commands+=("route")
commands+=("policybinding")
commands+=("deploymentconfig")

flags=()
two_word_flags=()
Expand Down
13 changes: 13 additions & 0 deletions docs/generated/oc_by_example_content.adoc
Expand Up @@ -798,6 +798,19 @@ Create a configMap from a local file, directory or literal value.
====


== oc create deploymentconfig
Create deployment config with default options that uses a given image.

====
[options="nowrap"]
----
# Create an nginx deployment config named my-nginx
$ oc create deploymentconfig my-nginx --image=nginx
----
====


== oc create namespace
Create a namespace with the specified name.

Expand Down
141 changes: 141 additions & 0 deletions pkg/cmd/cli/cmd/create/deploymentconfig.go
@@ -0,0 +1,141 @@
package create

import (
"fmt"
"io"

"github.com/spf13/cobra"

kapi "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/meta"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/runtime"

"github.com/openshift/origin/pkg/client"
"github.com/openshift/origin/pkg/cmd/util/clientcmd"
deployapi "github.com/openshift/origin/pkg/deploy/api"
)

const (
DeploymentConfigRecommendedName = "deploymentconfig"

deploymentConfigLong = `
Create a deployment config that uses a given image.`

deploymentConfigExample = ` # Create an nginx deployment config named my-nginx
$ %[1]s my-nginx --image=nginx`
)

type CreateDeploymentConfigOptions struct {
DC *deployapi.DeploymentConfig
Client client.DeploymentConfigsNamespacer

Mapper meta.RESTMapper
OutputFormat string
Out io.Writer
Printer ObjectPrinter
}

// NewCmdCreateServiceAccount is a macro command to create a new service account
func NewCmdCreateDeploymentConfig(name, fullName string, f *clientcmd.Factory, out io.Writer) *cobra.Command {
o := &CreateDeploymentConfigOptions{Out: out}

cmd := &cobra.Command{
Use: name + " NAME --image=IMAGE -- [COMMAND] [args...]",
Short: "Create deployment config with default options that uses a given image.",
Long: deploymentConfigLong,
Example: fmt.Sprintf(deploymentConfigExample, fullName),
Run: func(cmd *cobra.Command, args []string) {
cmdutil.CheckErr(o.Complete(cmd, f, args))
cmdutil.CheckErr(o.Validate())
cmdutil.CheckErr(o.Run())
},
Aliases: []string{"dc"},
}

cmd.Flags().String("image", "", "The image for the container to run.")
cmd.MarkFlagRequired("image")
cmdutil.AddOutputFlagsForMutation(cmd)
return cmd
}

func (o *CreateDeploymentConfigOptions) Complete(cmd *cobra.Command, f *clientcmd.Factory, args []string) error {
if len(args) == 0 {
return fmt.Errorf("at least one argument is required")
}
labels := map[string]string{"deployment-config.name": args[0]}

o.DC = &deployapi.DeploymentConfig{
ObjectMeta: kapi.ObjectMeta{Name: args[0]},
Spec: deployapi.DeploymentConfigSpec{
Selector: labels,
Replicas: 1,
Template: &kapi.PodTemplateSpec{
ObjectMeta: kapi.ObjectMeta{Labels: labels},
Spec: kapi.PodSpec{
Containers: []kapi.Container{
{
Name: "default-container",
Image: cmdutil.GetFlagString(cmd, "image"),
Command: args[1:],
},
},
},
},
},
}

var err error
o.DC.Namespace, _, err = f.DefaultNamespace()
if err != nil {
return err
}

o.Client, _, err = f.Clients()
if err != nil {
return err
}

o.Mapper, _ = f.Object(false)
o.OutputFormat = cmdutil.GetFlagString(cmd, "output")

o.Printer = func(obj runtime.Object, out io.Writer) error {
return f.PrintObject(cmd, o.Mapper, obj, out)
}

return nil
}

func (o *CreateDeploymentConfigOptions) Validate() error {
if o.DC == nil {
return fmt.Errorf("DC is required")
}
if o.Client == nil {
return fmt.Errorf("Client is required")
}
if o.Mapper == nil {
return fmt.Errorf("Mapper is required")
}
if o.Out == nil {
return fmt.Errorf("Out is required")
}
if o.Printer == nil {
return fmt.Errorf("Printer is required")
}

return nil
}

func (o *CreateDeploymentConfigOptions) Run() error {
actualObj, err := o.Client.DeploymentConfigs(o.DC.Namespace).Create(o.DC)
if err != nil {
return err
}

if useShortOutput := o.OutputFormat == "name"; useShortOutput || len(o.OutputFormat) == 0 {
cmdutil.PrintSuccess(o.Mapper, useShortOutput, o.Out, "deploymentconfig", actualObj.Name, "created")
return nil
}

return o.Printer(actualObj, o.Out)
}
1 change: 1 addition & 0 deletions pkg/cmd/cli/cmd/wrappers.go
Expand Up @@ -159,6 +159,7 @@ func NewCmdCreate(parentName string, f *clientcmd.Factory, out io.Writer) *cobra
// create subcommands
cmd.AddCommand(NewCmdCreateRoute(parentName, f, out))
cmd.AddCommand(create.NewCmdCreatePolicyBinding(create.PolicyBindingRecommendedName, parentName+" create "+create.PolicyBindingRecommendedName, f, out))
cmd.AddCommand(create.NewCmdCreateDeploymentConfig(create.DeploymentConfigRecommendedName, parentName+" create "+create.DeploymentConfigRecommendedName, f, out))

adjustCmdExamples(cmd, parentName, "create")

Expand Down
8 changes: 8 additions & 0 deletions test/cmd/basicresources.sh
Expand Up @@ -139,6 +139,14 @@ os::cmd::expect_success 'oc get nodes'
echo "nodes: ok"
os::test::junit::declare_suite_end


os::test::junit::declare_suite_start "cmd/basicresources/create"
os::cmd::expect_success 'oc create dc my-nginx --image=nginx'
os::cmd::expect_success 'oc delete dc my-nginx'
echo "create subcommands: ok"
os::test::junit::declare_suite_end


os::test::junit::declare_suite_start "cmd/basicresources/routes"
os::cmd::expect_success 'oc get routes'
os::cmd::expect_success 'oc create -f test/integration/fixtures/test-route.json'
Expand Down

0 comments on commit 0cad48c

Please sign in to comment.