func setupAppConfig(f *clientcmd.Factory, out io.Writer, c *cobra.Command, args []string, config *newcmd.AppConfig) error { namespace, _, err := f.DefaultNamespace() if err != nil { return err } dockerClient, _, err := dockerutil.NewHelper().GetClient() if err == nil { if err = dockerClient.Ping(); err == nil { config.SetDockerClient(dockerClient) } } if err != nil { glog.V(2).Infof("No local Docker daemon detected: %v", err) } osclient, _, err := f.Clients() if err != nil { return err } config.SetOpenShiftClient(osclient, namespace) config.Out = out config.ErrOut = c.Out() unknown := config.AddArguments(args) if len(unknown) != 0 { return cmdutil.UsageError(c, "Did not recognize the following arguments: %v", unknown) } if config.AllowMissingImages && config.AsSearch { return cmdutil.UsageError(c, "--allow-missing-images and --search are mutually exclusive.") } return nil }
func setupAppConfig(f *clientcmd.Factory, c *cobra.Command, args []string, config *newcmd.AppConfig) error { namespace, _, err := f.DefaultNamespace() if err != nil { return err } dockerClient, _, err := dockerutil.NewHelper().GetClient() if err == nil { if err = dockerClient.Ping(); err == nil { config.SetDockerClient(dockerClient) } } if err != nil { glog.V(2).Infof("No local Docker daemon detected: %v", err) } osclient, _, err := f.Clients() if err != nil { return err } config.SetOpenShiftClient(osclient, namespace) unknown := config.AddArguments(args) if len(unknown) != 0 { return cmdutil.UsageError(c, "Did not recognize the following arguments: %v", unknown) } return nil }
func setupAppConfig(f *clientcmd.Factory, out io.Writer, c *cobra.Command, args []string, config *newcmd.AppConfig) error { namespace, _, err := f.DefaultNamespace() if err != nil { return err } dockerClient, _, err := dockerutil.NewHelper().GetClient() if err == nil { if err = dockerClient.Ping(); err == nil { config.SetDockerClient(dockerClient) } else { glog.V(4).Infof("Docker client did not respond to a ping: %v", err) } } if err != nil { glog.V(2).Infof("No local Docker daemon detected: %v", err) } osclient, kclient, err := f.Clients() if err != nil { return err } config.KubeClient = kclient config.SetOpenShiftClient(osclient, namespace) // Only output="" should print descriptions of intermediate steps. Everything // else should print only some specific output (json, yaml, go-template, ...) output := cmdutil.GetFlagString(c, "output") if len(output) == 0 { config.Out = out } else { config.Out = ioutil.Discard } config.ErrOut = c.Out() if config.AllowSecretUse { cfg, err := f.OpenShiftClientConfig.ClientConfig() if err != nil { return err } config.SecretAccessor = newConfigSecretRetriever(cfg) } unknown := config.AddArguments(args) if len(unknown) != 0 { return cmdutil.UsageError(c, "Did not recognize the following arguments: %v", unknown) } if config.AllowMissingImages && config.AsSearch { return cmdutil.UsageError(c, "--allow-missing-images and --search are mutually exclusive.") } if len(config.SourceImage) != 0 && len(config.SourceImagePath) == 0 { return cmdutil.UsageError(c, "--source-image-path must be specified when --source-image is specified.") } if len(config.SourceImage) == 0 && len(config.SourceImagePath) != 0 { return cmdutil.UsageError(c, "--source-image must be specified when --source-image-path is specified.") } return nil }
func CompleteAppConfig(config *newcmd.AppConfig, f *clientcmd.Factory, c *cobra.Command, args []string) error { mapper, typer := f.Object(false) if config.Mapper == nil { config.Mapper = mapper } if config.Typer == nil { config.Typer = typer } if config.ClientMapper == nil { config.ClientMapper = resource.ClientMapperFunc(f.ClientForMapping) } namespace, _, err := f.DefaultNamespace() if err != nil { return err } osclient, _, kclient, err := f.Clients() if err != nil { return err } config.KubeClient = kclient dockerClient, _ := getDockerClient() config.SetOpenShiftClient(osclient, namespace, dockerClient) if config.AllowSecretUse { cfg, err := f.OpenShiftClientConfig.ClientConfig() if err != nil { return err } config.SecretAccessor = newConfigSecretRetriever(cfg) } unknown := config.AddArguments(args) if len(unknown) != 0 { return kcmdutil.UsageError(c, "Did not recognize the following arguments: %v", unknown) } if config.AllowMissingImages && config.AsSearch { return kcmdutil.UsageError(c, "--allow-missing-images and --search are mutually exclusive.") } if len(config.SourceImage) != 0 && len(config.SourceImagePath) == 0 { return kcmdutil.UsageError(c, "--source-image-path must be specified when --source-image is specified.") } if len(config.SourceImage) == 0 && len(config.SourceImagePath) != 0 { return kcmdutil.UsageError(c, "--source-image must be specified when --source-image-path is specified.") } if config.BinaryBuild && config.Strategy == generate.StrategyPipeline { return kcmdutil.UsageError(c, "specifying binary builds and the pipeline strategy at the same time is not allowed.") } return nil }
func TestNewAppAddArguments(t *testing.T) { tmpDir, err := ioutil.TempDir("", "test-newapp") if err != nil { t.Fatalf("Unexpected error: %v", err) } defer os.RemoveAll(tmpDir) testDir := filepath.Join(tmpDir, "test/one/two/three") err = os.MkdirAll(testDir, 0777) if err != nil { t.Fatalf("Unexpected error: %v", err) } tests := map[string]struct { args []string env []string parms []string repos []string components []string unknown []string }{ "components": { args: []string{"one", "two+three", "four~five"}, components: []string{"one", "two+three", "four~five"}, unknown: []string{}, }, "source": { args: []string{".", testDir, "git://github.com/openshift/origin.git"}, repos: []string{".", testDir, "git://github.com/openshift/origin.git"}, unknown: []string{}, }, "source custom ref": { args: []string{"https://github.com/openshift/ruby-hello-world#beta4"}, repos: []string{"https://github.com/openshift/ruby-hello-world#beta4"}, unknown: []string{}, }, "env": { args: []string{"first=one", "second=two", "third=three"}, env: []string{"first=one", "second=two", "third=three"}, unknown: []string{}, }, "mix 1": { args: []string{"git://github.com/openshift/origin.git", "[email protected]/openshift/origin.git", "env1=test", "ruby-helloworld-sample"}, repos: []string{"git://github.com/openshift/origin.git"}, components: []string{"[email protected]/openshift/origin.git", "ruby-helloworld-sample"}, env: []string{"env1=test"}, unknown: []string{}, }, } for n, c := range tests { a := cmd.AppConfig{} unknown := a.AddArguments(c.args) if !reflect.DeepEqual(a.Environment, c.env) { t.Errorf("%s: Different env variables. Expected: %v, Actual: %v", n, c.env, a.Environment) } if !reflect.DeepEqual(a.SourceRepositories, c.repos) { t.Errorf("%s: Different source repos. Expected: %v, Actual: %v", n, c.repos, a.SourceRepositories) } if !reflect.DeepEqual(a.Components, c.components) { t.Errorf("%s: Different components. Expected: %v, Actual: %v", n, c.components, a.Components) } if !reflect.DeepEqual(unknown, c.unknown) { t.Errorf("%s: Different unknown result. Expected: %v, Actual: %v", n, c.unknown, unknown) } } }