func (o *LoginOptions) Complete(f *osclientcmd.Factory, cmd *cobra.Command, args []string) error { kubeconfig, err := f.OpenShiftClientConfig.RawConfig() o.StartingKubeConfig = &kubeconfig if err != nil { if !os.IsNotExist(err) { return err } // build a valid object to use if we failed on a non-existent file o.StartingKubeConfig = kclientcmdapi.NewConfig() } addr := flagtypes.Addr{Value: "localhost:8443", DefaultScheme: "https", DefaultPort: 8443, AllowPrefix: true}.Default() if serverFlag := kcmdutil.GetFlagString(cmd, "server"); len(serverFlag) > 0 { if err := addr.Set(serverFlag); err != nil { return err } o.Server = addr.String() } else if len(args) == 1 { if err := addr.Set(args[0]); err != nil { return err } o.Server = addr.String() } else if len(o.Server) == 0 { if defaultContext, defaultContextExists := o.StartingKubeConfig.Contexts[o.StartingKubeConfig.CurrentContext]; defaultContextExists { if cluster, exists := o.StartingKubeConfig.Clusters[defaultContext.Cluster]; exists { o.Server = cluster.Server } } } o.CertFile = kcmdutil.GetFlagString(cmd, "client-certificate") o.KeyFile = kcmdutil.GetFlagString(cmd, "client-key") o.APIVersion = kcmdutil.GetFlagString(cmd, "api-version") // if the API version isn't explicitly passed, use the API version from the default context (same rules as the server above) if len(o.APIVersion) == 0 { if defaultContext, defaultContextExists := o.StartingKubeConfig.Contexts[o.StartingKubeConfig.CurrentContext]; defaultContextExists { if cluster, exists := o.StartingKubeConfig.Clusters[defaultContext.Cluster]; exists { o.APIVersion = cluster.APIVersion } } } o.CAFile = kcmdutil.GetFlagString(cmd, "certificate-authority") o.InsecureTLS = kcmdutil.GetFlagBool(cmd, "insecure-skip-tls-verify") o.Token = kcmdutil.GetFlagString(cmd, "token") o.DefaultNamespace, _ = f.OpenShiftClientConfig.Namespace() o.PathOptions = config.NewPathOptions(cmd) return nil }
func (o *LogoutOptions) Complete(f *osclientcmd.Factory, cmd *cobra.Command, args []string) error { kubeconfig, err := f.OpenShiftClientConfig.RawConfig() o.StartingKubeConfig = &kubeconfig if err != nil { return err } o.Config, err = f.OpenShiftClientConfig.ClientConfig() if err != nil { return err } o.PathOptions = config.NewPathOptions(cmd) return nil }
func (o *NewProjectOptions) complete(cmd *cobra.Command, f *clientcmd.Factory) error { args := cmd.Flags().Args() if len(args) != 1 { cmd.Help() return errors.New("must have exactly one argument") } o.ProjectName = args[0] o.ProjectOptions = &ProjectOptions{} o.ProjectOptions.PathOptions = cliconfig.NewPathOptions(cmd) if err := o.ProjectOptions.Complete(f, []string{""}, o.Out); err != nil { return err } return nil }
// NewCmdProject implements the OpenShift cli rollback command func NewCmdProject(fullName string, f *clientcmd.Factory, out io.Writer) *cobra.Command { options := &ProjectOptions{} cmd := &cobra.Command{ Use: "project [NAME]", Short: "Switch to another project", Long: projectLong, Example: fmt.Sprintf(projectExample, fullName), Run: func(cmd *cobra.Command, args []string) { options.PathOptions = cliconfig.NewPathOptions(cmd) if err := options.Complete(f, args, out); err != nil { cmdutil.CheckErr(cmdutil.UsageError(cmd, err.Error())) } if err := options.RunProject(); err != nil { cmdutil.CheckErr(err) } }, } return cmd }