// NewCmdPolicy implements the OpenShift cli policy command func NewCmdPolicy(name, fullName string, f *clientcmd.Factory, out io.Writer) *cobra.Command { // Parent command to which all subcommands are added. cmds := &cobra.Command{ Use: name, Short: "Manage policy", Long: `Manage policy`, Run: cmdutil.DefaultSubCommandRun(out), } cmds.AddCommand(NewCmdWhoCan(WhoCanRecommendedName, fullName+" "+WhoCanRecommendedName, f, out)) cmds.AddCommand(NewCmdAddRoleToUser(AddRoleToUserRecommendedName, fullName+" "+AddRoleToUserRecommendedName, f, out)) cmds.AddCommand(NewCmdRemoveRoleFromUser(RemoveRoleFromUserRecommendedName, fullName+" "+RemoveRoleFromUserRecommendedName, f, out)) cmds.AddCommand(NewCmdRemoveUserFromProject(RemoveUserRecommendedName, fullName+" "+RemoveUserRecommendedName, f, out)) cmds.AddCommand(NewCmdAddRoleToGroup(AddRoleToGroupRecommendedName, fullName+" "+AddRoleToGroupRecommendedName, f, out)) cmds.AddCommand(NewCmdRemoveRoleFromGroup(RemoveRoleFromGroupRecommendedName, fullName+" "+RemoveRoleFromGroupRecommendedName, f, out)) cmds.AddCommand(NewCmdRemoveGroupFromProject(RemoveGroupRecommendedName, fullName+" "+RemoveGroupRecommendedName, f, out)) cmds.AddCommand(NewCmdAddClusterRoleToUser(AddClusterRoleToUserRecommendedName, fullName+" "+AddClusterRoleToUserRecommendedName, f, out)) cmds.AddCommand(NewCmdRemoveClusterRoleFromUser(RemoveClusterRoleFromUserRecommendedName, fullName+" "+RemoveClusterRoleFromUserRecommendedName, f, out)) cmds.AddCommand(NewCmdAddClusterRoleToGroup(AddClusterRoleToGroupRecommendedName, fullName+" "+AddClusterRoleToGroupRecommendedName, f, out)) cmds.AddCommand(NewCmdRemoveClusterRoleFromGroup(RemoveClusterRoleFromGroupRecommendedName, fullName+" "+RemoveClusterRoleFromGroupRecommendedName, f, out)) cmds.AddCommand(NewCmdReconcileClusterRoles(ReconcileClusterRolesRecommendedName, fullName+" "+ReconcileClusterRolesRecommendedName, f, out)) cmds.AddCommand(NewCmdReconcileClusterRoleBindings(ReconcileClusterRoleBindingsRecommendedName, fullName+" "+ReconcileClusterRoleBindingsRecommendedName, f, out)) cmds.AddCommand(NewCmdAddSCCToUser(AddSCCToUserRecommendedName, fullName+" "+AddSCCToUserRecommendedName, f, out)) cmds.AddCommand(NewCmdAddSCCToGroup(AddSCCToGroupRecommendedName, fullName+" "+AddSCCToGroupRecommendedName, f, out)) cmds.AddCommand(NewCmdRemoveSCCFromUser(RemoveSCCFromUserRecommendedName, fullName+" "+RemoveSCCFromUserRecommendedName, f, out)) cmds.AddCommand(NewCmdRemoveSCCFromGroup(RemoveSCCFromGroupRecommendedName, fullName+" "+RemoveSCCFromGroupRecommendedName, f, out)) cmds.AddCommand(NewCmdReconcileSCC(ReconcileSCCRecommendedName, fullName+" "+ReconcileSCCRecommendedName, f, out)) return cmds }
// NewCmdSet exposes commands for modifying objects. func NewCmdSet(fullName string, f *clientcmd.Factory, in io.Reader, out, errout io.Writer) *cobra.Command { set := &cobra.Command{ Use: "set COMMAND", Short: "Commands that help set specific features on objects", Long: setLong, Run: cmdutil.DefaultSubCommandRun(out), } name := fmt.Sprintf("%s set", fullName) groups := templates.CommandGroups{ { Message: "Replication controllers, deployments, and daemon sets:", Commands: []*cobra.Command{ NewCmdEnv(name, f, in, out), NewCmdVolume(name, f, out, errout), NewCmdProbe(name, f, out, errout), }, }, { Message: "Manage application flows:", Commands: []*cobra.Command{ NewCmdTriggers(name, f, out, errout), }, }, } groups.Add(set) templates.ActsAsRootCommand(set, []string{"options"}, groups...) return set }
func NewCommandMigrate(name, fullName string, f *clientcmd.Factory, out io.Writer, cmds ...*cobra.Command) *cobra.Command { // Parent command to which all subcommands are added. cmd := &cobra.Command{ Use: name, Short: "Migrate data in the cluster", Long: migrateLong, Run: cmdutil.DefaultSubCommandRun(out), } cmd.AddCommand(cmds...) return cmd }
func NewCmdConfig(name, fullName string, f *clientcmd.Factory, out, errout io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: name, Short: "Manage config", Long: configLong, Run: cmdutil.DefaultSubCommandRun(out), } cmd.AddCommand(NewCmdPatch(PatchRecommendedName, fullName+" "+PatchRecommendedName, f, out)) return cmd }
func NewCommandTop(name, fullName string, f *clientcmd.Factory, out io.Writer) *cobra.Command { // Parent command to which all subcommands are added. cmds := &cobra.Command{ Use: name, Short: "Show usage statistics of resources on the server", Long: topLong, Run: cmdutil.DefaultSubCommandRun(out), } cmds.AddCommand(NewCmdTopImages(f, fullName, TopImagesRecommendedName, out)) cmds.AddCommand(NewCmdTopImageStreams(f, fullName, TopImageStreamsRecommendedName, out)) return cmds }
func NewCmdCluster(name, fullName string, f *clientcmd.Factory, out io.Writer) *cobra.Command { // Parent command to which all subcommands are added. cmds := &cobra.Command{ Use: fmt.Sprintf("%s ACTION", name), Short: "Start and stop OpenShift cluster", Long: clusterLong, Run: cmdutil.DefaultSubCommandRun(out), } cmds.AddCommand(docker.NewCmdUp(docker.CmdUpRecommendedName, fullName+" "+docker.CmdUpRecommendedName, f, out)) cmds.AddCommand(docker.NewCmdDown(docker.CmdDownRecommendedName, fullName+" "+docker.CmdDownRecommendedName, f, out)) return cmds }
// NewCmdImport exposes commands for modifying objects. func NewCmdImport(fullName string, f *clientcmd.Factory, in io.Reader, out, errout io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "import COMMAND", Short: "Commands that import applications", Long: importLong, Run: cmdutil.DefaultSubCommandRun(out), } name := fmt.Sprintf("%s import", fullName) cmd.AddCommand(NewCmdDockerCompose(name, f, in, out, errout)) return cmd }
// NewCmdCreateRoute is a macro command to create a secured route. func NewCmdCreateRoute(fullName string, f *clientcmd.Factory, out io.Writer) *cobra.Command { cmd := &cobra.Command{ Use: "route", Short: "Expose containers externally via secured routes", Long: fmt.Sprintf(routeLong, fullName), Run: cmdutil.DefaultSubCommandRun(out), } cmd.AddCommand(NewCmdCreateEdgeRoute(fullName, f, out)) cmd.AddCommand(NewCmdCreatePassthroughRoute(fullName, f, out)) cmd.AddCommand(NewCmdCreateReencryptRoute(fullName, f, out)) return cmd }
func NewCmdServiceAccounts(name, fullName string, f *clientcmd.Factory, out io.Writer) *cobra.Command { cmds := &cobra.Command{ Use: name, Short: serviceAccountsShort, Long: serviceAccountsLong, Aliases: []string{"sa"}, Run: cmdutil.DefaultSubCommandRun(out), } cmds.AddCommand(NewCommandGetServiceAccountToken(GetServiceAccountTokenRecommendedName, fullName+" "+GetServiceAccountTokenRecommendedName, f, out)) cmds.AddCommand(NewCommandNewServiceAccountToken(NewServiceAccountTokenRecommendedName, fullName+" "+NewServiceAccountTokenRecommendedName, f, out)) return cmds }
func NewCommandPrune(name, fullName string, f *clientcmd.Factory, out io.Writer) *cobra.Command { // Parent command to which all subcommands are added. cmds := &cobra.Command{ Use: name, Short: "Remove older versions of resources from the server", Long: pruneLong, Run: cmdutil.DefaultSubCommandRun(out), } cmds.AddCommand(NewCmdPruneBuilds(f, fullName, PruneBuildsRecommendedName, out)) cmds.AddCommand(NewCmdPruneDeployments(f, fullName, PruneDeploymentsRecommendedName, out)) cmds.AddCommand(NewCmdPruneImages(f, fullName, PruneImagesRecommendedName, out)) return cmds }
func NewCmdTypes(fullName string, f *clientcmd.Factory, out io.Writer) *cobra.Command { buf := &bytes.Buffer{} for _, c := range concepts { writeTerm(buf, c) } cmd := &cobra.Command{ Use: "types", Short: "An introduction to concepts and types", Long: fmt.Sprintf(typesLong, buf.String()), Example: fmt.Sprintf(typesExample, fullName), Run: ocutil.DefaultSubCommandRun(out), } return cmd }
func NewCommandValidate(name, fullName string, out io.Writer) *cobra.Command { // Parent command to which all subcommands are added. cmds := &cobra.Command{ Use: name, Short: "Validate configuration file integrity", Long: validateLong, Run: cmdutil.DefaultSubCommandRun(out), } cmds.AddCommand(NewCommandValidateMasterConfig(ValidateMasterConfigRecommendedName, fullName+" "+ValidateMasterConfigRecommendedName, out)) cmds.AddCommand(NewCommandValidateNodeConfig(ValidateNodeConfigRecommendedName, fullName+" "+ValidateNodeConfigRecommendedName, out)) return cmds }
func NewCmdGroups(name, fullName string, f *clientcmd.Factory, out io.Writer) *cobra.Command { // Parent command to which all subcommands are added. cmds := &cobra.Command{ Use: name, Short: "Manage groups", Long: groupLong, Run: cmdutil.DefaultSubCommandRun(out), } cmds.AddCommand(NewCmdNewGroup(NewGroupRecommendedName, fullName+" "+NewGroupRecommendedName, f, out)) cmds.AddCommand(NewCmdAddUsers(AddRecommendedName, fullName+" "+AddRecommendedName, f, out)) cmds.AddCommand(NewCmdRemoveUsers(RemoveRecommendedName, fullName+" "+RemoveRecommendedName, f, out)) return cmds }
// NewCommandOpenShift creates the standard OpenShift command func NewCommandOpenShift(name string) *cobra.Command { in, out, errout := os.Stdin, os.Stdout, os.Stderr product := "Origin" switch name { case "openshift": product = "OpenShift" case "atomic-enterprise": product = "Atomic" } root := &cobra.Command{ Use: name, Short: "Build, deploy, and manage your cloud applications", Long: fmt.Sprintf(openshiftLong, name, product), Run: cmdutil.DefaultSubCommandRun(out), } startAllInOne, _ := start.NewCommandStartAllInOne(name, out) root.AddCommand(startAllInOne) root.AddCommand(admin.NewCommandAdmin("admin", name+" admin", out)) root.AddCommand(cli.NewCommandCLI("cli", name+" cli", in, out, errout)) root.AddCommand(cli.NewCmdKubectl("kube", out)) root.AddCommand(newExperimentalCommand("ex", name+" ex")) root.AddCommand(version.NewVersionCommand(name)) // infra commands are those that are bundled with the binary but not displayed to end users // directly infra := &cobra.Command{ Use: "infra", // Because this command exposes no description, it will not be shown in help } infra.AddCommand( irouter.NewCommandTemplateRouter("router"), irouter.NewCommandF5Router("f5-router"), deployer.NewCommandDeployer("deploy"), builder.NewCommandSTIBuilder("sti-build"), builder.NewCommandDockerBuilder("docker-build"), ) root.AddCommand(infra) root.AddCommand(cmd.NewCmdOptions(out)) // TODO: add groups templates.ActsAsRootCommand(root) return root }
func NewCmdPodNetwork(name, fullName string, f *clientcmd.Factory, out io.Writer) *cobra.Command { // Parent command to which all subcommands are added. cmds := &cobra.Command{ Use: name, Short: "Manage pod network", Long: podNetworkLong, Run: cmdutil.DefaultSubCommandRun(out), } cmds.AddCommand(NewCmdJoinProjectsNetwork(JoinProjectsNetworkCommandName, fullName+" "+JoinProjectsNetworkCommandName, f, out)) cmds.AddCommand(NewCmdMakeGlobalProjectsNetwork(MakeGlobalProjectsNetworkCommandName, fullName+" "+MakeGlobalProjectsNetworkCommandName, f, out)) cmds.AddCommand(NewCmdIsolateProjectsNetwork(IsolateProjectsNetworkCommandName, fullName+" "+IsolateProjectsNetworkCommandName, f, out)) return cmds }
// NewCmdCert implements the OpenShift cli ca command func NewCmdCert(name, fullName string, out io.Writer) *cobra.Command { // Parent command to which all subcommands are added. cmds := &cobra.Command{ Use: name, Short: "Manage certificates and keys", Long: `Manage certificates and keys`, Run: util.DefaultSubCommandRun(out), } cmds.AddCommand(admin.NewCommandCreateMasterCerts(admin.CreateMasterCertsCommandName, fullName+" "+admin.CreateMasterCertsCommandName, out)) cmds.AddCommand(admin.NewCommandCreateKeyPair(admin.CreateKeyPairCommandName, fullName+" "+admin.CreateKeyPairCommandName, out)) cmds.AddCommand(admin.NewCommandCreateServerCert(admin.CreateServerCertCommandName, fullName+" "+admin.CreateServerCertCommandName, out)) cmds.AddCommand(admin.NewCommandCreateSignerCert(admin.CreateSignerCertCommandName, fullName+" "+admin.CreateSignerCertCommandName, out)) return cmds }
func NewCmdSecrets(name, fullName string, f *clientcmd.Factory, out io.Writer, ocEditFullName string) *cobra.Command { // Parent command to which all subcommands are added. cmds := &cobra.Command{ Use: name, Short: "Manage secrets", Long: secretsLong, Run: cmdutil.DefaultSubCommandRun(out), } newSecretFullName := fullName + " " + NewSecretRecommendedCommandName cmds.AddCommand(NewCmdCreateSecret(NewSecretRecommendedCommandName, newSecretFullName, f, out)) cmds.AddCommand(NewCmdCreateDockerConfigSecret(CreateDockerConfigSecretRecommendedName, fullName+" "+CreateDockerConfigSecretRecommendedName, f.Factory, out, newSecretFullName, ocEditFullName)) cmds.AddCommand(NewCmdAddSecret(AddSecretRecommendedName, fullName+" "+AddSecretRecommendedName, f.Factory, out)) return cmds }
// NewCommandOpenShift creates the standard OpenShift command func NewCommandOpenShift(name string) *cobra.Command { in, out, errout := os.Stdin, term.NewResponsiveWriter(os.Stdout), os.Stderr root := &cobra.Command{ Use: name, Short: "Build, deploy, and manage your cloud applications", Long: fmt.Sprintf(openshiftLong, name, cmdutil.GetPlatformName(name), cmdutil.GetDistributionName(name)), Run: cmdutil.DefaultSubCommandRun(out), } f := clientcmd.New(pflag.NewFlagSet("", pflag.ContinueOnError)) startAllInOne, _ := start.NewCommandStartAllInOne(name, out, errout) root.AddCommand(startAllInOne) root.AddCommand(admin.NewCommandAdmin("admin", name+" admin", in, out, errout)) root.AddCommand(cli.NewCommandCLI("cli", name+" cli", in, out, errout)) root.AddCommand(cli.NewCmdKubectl("kube", out)) root.AddCommand(newExperimentalCommand("ex", name+" ex")) root.AddCommand(newCompletionCommand("completion", name+" completion")) root.AddCommand(cmd.NewCmdVersion(name, f, out, cmd.VersionOptions{PrintEtcdVersion: true, IsServer: true})) // infra commands are those that are bundled with the binary but not displayed to end users // directly infra := &cobra.Command{ Use: "infra", // Because this command exposes no description, it will not be shown in help } infra.AddCommand( irouter.NewCommandTemplateRouter("router"), irouter.NewCommandF5Router("f5-router"), deployer.NewCommandDeployer("deploy"), recycle.NewCommandRecycle("recycle", out), builder.NewCommandS2IBuilder("sti-build"), builder.NewCommandDockerBuilder("docker-build"), diagnostics.NewCommandPodDiagnostics("diagnostic-pod", out), diagnostics.NewCommandNetworkPodDiagnostics("network-diagnostic-pod", out), ) root.AddCommand(infra) root.AddCommand(cmd.NewCmdOptions(out)) // TODO: add groups templates.ActsAsRootCommand(root, []string{"options"}) return root }
func NewCommandAdmin(name, fullName string, out io.Writer) *cobra.Command { // Main command cmds := &cobra.Command{ Use: name, Short: "Tools for managing an OpenShift cluster", Long: fmt.Sprintf(adminLong), Run: cmdutil.DefaultSubCommandRun(out), } f := clientcmd.New(cmds.PersistentFlags()) cmds.AddCommand(project.NewCmdNewProject(project.NewProjectRecommendedName, fullName+" "+project.NewProjectRecommendedName, f, out)) cmds.AddCommand(policy.NewCmdPolicy(policy.PolicyRecommendedName, fullName+" "+policy.PolicyRecommendedName, f, out)) cmds.AddCommand(exipfailover.NewCmdIPFailoverConfig(f, fullName, "ipfailover", out)) cmds.AddCommand(router.NewCmdRouter(f, fullName, "router", out)) cmds.AddCommand(registry.NewCmdRegistry(f, fullName, "registry", out)) cmds.AddCommand(buildchain.NewCmdBuildChain(f, fullName, "build-chain")) cmds.AddCommand(node.NewCommandManageNode(f, node.ManageNodeCommandName, fullName+" "+node.ManageNodeCommandName, out)) cmds.AddCommand(cmd.NewCmdConfig(fullName, "config")) cmds.AddCommand(prune.NewCommandPrune(prune.PruneRecommendedName, fullName+" "+prune.PruneRecommendedName, f, out)) // TODO: these probably belong in a sub command cmds.AddCommand(admin.NewCommandCreateKubeConfig(admin.CreateKubeConfigCommandName, fullName+" "+admin.CreateKubeConfigCommandName, out)) cmds.AddCommand(admin.NewCommandCreateBootstrapPolicyFile(admin.CreateBootstrapPolicyFileCommand, fullName+" "+admin.CreateBootstrapPolicyFileCommand, out)) cmds.AddCommand(admin.NewCommandCreateBootstrapProjectTemplate(f, admin.CreateBootstrapProjectTemplateCommand, fullName+" "+admin.CreateBootstrapProjectTemplateCommand, out)) cmds.AddCommand(admin.NewCommandOverwriteBootstrapPolicy(admin.OverwriteBootstrapPolicyCommandName, fullName+" "+admin.OverwriteBootstrapPolicyCommandName, fullName+" "+admin.CreateBootstrapPolicyFileCommand, out)) cmds.AddCommand(admin.NewCommandNodeConfig(admin.NodeConfigCommandName, fullName+" "+admin.NodeConfigCommandName, out)) // TODO: these should be rolled up together cmds.AddCommand(admin.NewCommandCreateMasterCerts(admin.CreateMasterCertsCommandName, fullName+" "+admin.CreateMasterCertsCommandName, out)) cmds.AddCommand(admin.NewCommandCreateClient(admin.CreateClientCommandName, fullName+" "+admin.CreateClientCommandName, out)) cmds.AddCommand(admin.NewCommandCreateKeyPair(admin.CreateKeyPairCommandName, fullName+" "+admin.CreateKeyPairCommandName, out)) cmds.AddCommand(admin.NewCommandCreateServerCert(admin.CreateServerCertCommandName, fullName+" "+admin.CreateServerCertCommandName, out)) cmds.AddCommand(admin.NewCommandCreateSignerCert(admin.CreateSignerCertCommandName, fullName+" "+admin.CreateSignerCertCommandName, out)) // TODO: use groups templates.ActsAsRootCommand(cmds) if name == fullName { cmds.AddCommand(version.NewVersionCommand(fullName)) } cmds.AddCommand(cmd.NewCmdOptions(out)) return cmds }
func NewCmdPolicy(name, fullName string, f *clientcmd.Factory, out io.Writer) *cobra.Command { // Parent command to which all subcommands are added. cmds := &cobra.Command{ Use: name, Short: "Manage authorization policy", Long: `Manage authorization policy`, Run: cmdutil.DefaultSubCommandRun(out), } cmds.AddCommand(adminpolicy.NewCmdWhoCan(adminpolicy.WhoCanRecommendedName, fullName+" "+adminpolicy.WhoCanRecommendedName, f, out)) cmds.AddCommand(adminpolicy.NewCmdAddRoleToUser(adminpolicy.AddRoleToUserRecommendedName, fullName+" "+adminpolicy.AddRoleToUserRecommendedName, f, out)) cmds.AddCommand(adminpolicy.NewCmdRemoveRoleFromUser(adminpolicy.RemoveRoleFromUserRecommendedName, fullName+" "+adminpolicy.RemoveRoleFromUserRecommendedName, f, out)) cmds.AddCommand(adminpolicy.NewCmdRemoveUserFromProject(adminpolicy.RemoveUserRecommendedName, fullName+" "+adminpolicy.RemoveUserRecommendedName, f, out)) cmds.AddCommand(adminpolicy.NewCmdAddRoleToGroup(adminpolicy.AddRoleToGroupRecommendedName, fullName+" "+adminpolicy.AddRoleToGroupRecommendedName, f, out)) cmds.AddCommand(adminpolicy.NewCmdRemoveRoleFromGroup(adminpolicy.RemoveRoleFromGroupRecommendedName, fullName+" "+adminpolicy.RemoveRoleFromGroupRecommendedName, f, out)) cmds.AddCommand(adminpolicy.NewCmdRemoveGroupFromProject(adminpolicy.RemoveGroupRecommendedName, fullName+" "+adminpolicy.RemoveGroupRecommendedName, f, out)) return cmds }
// NewCommandOpenShift creates the standard OpenShift command func NewCommandOpenShift(name string) *cobra.Command { out := os.Stdout root := &cobra.Command{ Use: name, Short: "OpenShift helps you build, deploy, and manage your cloud applications", Long: openshiftLong, Run: cmdutil.DefaultSubCommandRun(out), } startAllInOne, _ := start.NewCommandStartAllInOne(name, out) root.AddCommand(startAllInOne) root.AddCommand(admin.NewCommandAdmin("admin", name+" admin", out)) root.AddCommand(cli.NewCommandCLI("cli", name+" cli")) root.AddCommand(cli.NewCmdKubectl("kube", out)) root.AddCommand(newExperimentalCommand("ex", name+" ex")) root.AddCommand(version.NewVersionCommand(name)) // infra commands are those that are bundled with the binary but not displayed to end users // directly infra := &cobra.Command{ Use: "infra", // Because this command exposes no description, it will not be shown in help } infra.AddCommand( irouter.NewCommandTemplateRouter("router"), deployer.NewCommandDeployer("deploy"), builder.NewCommandSTIBuilder("sti-build"), builder.NewCommandDockerBuilder("docker-build"), gitserver.NewCommandGitServer("git-server"), ) root.AddCommand(infra) root.AddCommand(cmd.NewCmdOptions(out)) // TODO: add groups templates.ActsAsRootCommand(root) return root }
func NewCommandAdmin(name, fullName string, out io.Writer, errout io.Writer) *cobra.Command { // Main command cmds := &cobra.Command{ Use: name, Short: "Tools for managing a cluster", Long: fmt.Sprintf(adminLong), Run: cmdutil.DefaultSubCommandRun(out), } f := clientcmd.New(cmds.PersistentFlags()) groups := templates.CommandGroups{ { Message: "Basic Commands:", Commands: []*cobra.Command{ project.NewCmdNewProject(project.NewProjectRecommendedName, fullName+" "+project.NewProjectRecommendedName, f, out), policy.NewCmdPolicy(policy.PolicyRecommendedName, fullName+" "+policy.PolicyRecommendedName, f, out, errout), groups.NewCmdGroups(groups.GroupsRecommendedName, fullName+" "+groups.GroupsRecommendedName, f, out), }, }, { Message: "Install Commands:", Commands: []*cobra.Command{ router.NewCmdRouter(f, fullName, "router", out), exipfailover.NewCmdIPFailoverConfig(f, fullName, "ipfailover", out, errout), registry.NewCmdRegistry(f, fullName, "registry", out), }, }, { Message: "Maintenance Commands:", Commands: []*cobra.Command{ buildchain.NewCmdBuildChain(name, fullName+" "+buildchain.BuildChainRecommendedCommandName, f, out), diagnostics.NewCmdDiagnostics(diagnostics.DiagnosticsRecommendedName, fullName+" "+diagnostics.DiagnosticsRecommendedName, out), node.NewCommandManageNode(f, node.ManageNodeCommandName, fullName+" "+node.ManageNodeCommandName, out, errout), prune.NewCommandPrune(prune.PruneRecommendedName, fullName+" "+prune.PruneRecommendedName, f, out), }, }, { Message: "Settings Commands:", Commands: []*cobra.Command{ cmd.NewCmdConfig(fullName, "config"), // TODO: these probably belong in a sub command admin.NewCommandCreateKubeConfig(admin.CreateKubeConfigCommandName, fullName+" "+admin.CreateKubeConfigCommandName, out), admin.NewCommandCreateClient(admin.CreateClientCommandName, fullName+" "+admin.CreateClientCommandName, out), cmd.NewCmdCompletion(fullName, f, out), }, }, { Message: "Advanced Commands:", Commands: []*cobra.Command{ network.NewCmdPodNetwork(network.PodNetworkCommandName, fullName+" "+network.PodNetworkCommandName, f, out), admin.NewCommandCreateBootstrapProjectTemplate(f, admin.CreateBootstrapProjectTemplateCommand, fullName+" "+admin.CreateBootstrapProjectTemplateCommand, out), admin.NewCommandCreateBootstrapPolicyFile(admin.CreateBootstrapPolicyFileCommand, fullName+" "+admin.CreateBootstrapPolicyFileCommand, out), admin.NewCommandCreateLoginTemplate(f, admin.CreateLoginTemplateCommand, fullName+" "+admin.CreateLoginTemplateCommand, out), admin.NewCommandCreateProviderSelectionTemplate(f, admin.CreateProviderSelectionTemplateCommand, fullName+" "+admin.CreateProviderSelectionTemplateCommand, out), admin.NewCommandCreateErrorTemplate(f, admin.CreateErrorTemplateCommand, fullName+" "+admin.CreateErrorTemplateCommand, out), admin.NewCommandOverwriteBootstrapPolicy(admin.OverwriteBootstrapPolicyCommandName, fullName+" "+admin.OverwriteBootstrapPolicyCommandName, fullName+" "+admin.CreateBootstrapPolicyFileCommand, out), admin.NewCommandNodeConfig(admin.NodeConfigCommandName, fullName+" "+admin.NodeConfigCommandName, out), cert.NewCmdCert(cert.CertRecommendedName, fullName+" "+cert.CertRecommendedName, out, errout), }, }, } groups.Add(cmds) templates.ActsAsRootCommand(cmds, []string{"options"}, groups...) // Deprecated commands that are bundled with the binary but not displayed to end users directly deprecatedCommands := []*cobra.Command{ admin.NewCommandCreateMasterCerts(admin.CreateMasterCertsCommandName, fullName+" "+admin.CreateMasterCertsCommandName, out), admin.NewCommandCreateKeyPair(admin.CreateKeyPairCommandName, fullName+" "+admin.CreateKeyPairCommandName, out), admin.NewCommandCreateServerCert(admin.CreateServerCertCommandName, fullName+" "+admin.CreateServerCertCommandName, out), admin.NewCommandCreateSignerCert(admin.CreateSignerCertCommandName, fullName+" "+admin.CreateSignerCertCommandName, out), } for _, cmd := range deprecatedCommands { // Unsetting Short description will not show this command in help cmd.Short = "" cmd.Deprecated = fmt.Sprintf("Use '%s ca' instead.", fullName) cmds.AddCommand(cmd) } if name == fullName { cmds.AddCommand(version.NewVersionCommand(fullName, false)) } cmds.AddCommand(cmd.NewCmdOptions(out)) return cmds }
func NewCommandCLI(name, fullName string, in io.Reader, out, errout io.Writer) *cobra.Command { // Main command cmds := &cobra.Command{ Use: name, Short: "Command line tools for managing applications", Long: fmt.Sprintf(cliLong, fullName), Run: cmdutil.DefaultSubCommandRun(out), BashCompletionFunction: bashCompletionFunc, } f := clientcmd.New(cmds.PersistentFlags()) loginCmd := cmd.NewCmdLogin(fullName, f, in, out) groups := templates.CommandGroups{ { Message: "Basic Commands:", Commands: []*cobra.Command{ cmd.NewCmdTypes(fullName, f, out), loginCmd, cmd.NewCmdRequestProject("new-project", fullName+" new-project", fullName+" login", fullName+" project", f, out), cmd.NewCmdNewApplication(fullName, f, out), cmd.NewCmdStatus(cmd.StatusRecommendedName, fullName+" "+cmd.StatusRecommendedName, f, out), cmd.NewCmdProject(fullName+" project", f, out), }, }, { Message: "Build and Deploy Commands:", Commands: []*cobra.Command{ cmd.NewCmdStartBuild(fullName, f, in, out), cmd.NewCmdBuildLogs(fullName, f, out), cmd.NewCmdDeploy(fullName, f, out), cmd.NewCmdRollback(fullName, f, out), cmd.NewCmdNewBuild(fullName, f, in, out), cmd.NewCmdCancelBuild(fullName, f, out), cmd.NewCmdImportImage(fullName, f, out), cmd.NewCmdScale(fullName, f, out), cmd.NewCmdTag(fullName, f, out), }, }, { Message: "Application Modification Commands:", Commands: []*cobra.Command{ cmd.NewCmdGet(fullName, f, out), cmd.NewCmdDescribe(fullName, f, out), cmd.NewCmdEdit(fullName, f, out), cmd.NewCmdEnv(fullName, f, in, out), cmd.NewCmdVolume(fullName, f, out, errout), cmd.NewCmdLabel(fullName, f, out), cmd.NewCmdAnnotate(fullName, f, out), cmd.NewCmdExpose(fullName, f, out), cmd.NewCmdStop(fullName, f, out), cmd.NewCmdDelete(fullName, f, out), }, }, { Message: "Troubleshooting and Debugging Commands:", Commands: []*cobra.Command{ cmd.NewCmdExplain(fullName, f, out), cmd.NewCmdLogs(fullName, f, out), cmd.NewCmdRsh(cmd.RshRecommendedName, fullName, f, in, out, errout), cmd.NewCmdRsync(cmd.RsyncRecommendedName, fullName, f, out, errout), cmd.NewCmdExec(fullName, f, in, out, errout), cmd.NewCmdPortForward(fullName, f), cmd.NewCmdProxy(fullName, f, out), }, }, { Message: "Advanced Commands:", Commands: []*cobra.Command{ cmd.NewCmdCreate(fullName, f, out), cmd.NewCmdReplace(fullName, f, out), // TODO decide what to do about apply. Its doing unusual things // cmd.NewCmdApply(fullName, f, out), cmd.NewCmdPatch(fullName, f, out), cmd.NewCmdProcess(fullName, f, out), cmd.NewCmdExport(fullName, f, in, out), cmd.NewCmdRun(fullName, f, in, out, errout), cmd.NewCmdAttach(fullName, f, in, out, errout), policy.NewCmdPolicy(policy.PolicyRecommendedName, fullName+" "+policy.PolicyRecommendedName, f, out), secrets.NewCmdSecrets(secrets.SecretsRecommendedName, fullName+" "+secrets.SecretsRecommendedName, f, in, out, fullName+" edit"), cmd.NewCmdConvert(fullName, f, out), }, }, { Message: "Settings Commands:", Commands: []*cobra.Command{ cmd.NewCmdLogout("logout", fullName+" logout", fullName+" login", f, in, out), cmd.NewCmdConfig(fullName, "config"), cmd.NewCmdWhoAmI(cmd.WhoAmIRecommendedCommandName, fullName+" "+cmd.WhoAmIRecommendedCommandName, f, out), }, }, } groups.Add(cmds) changeSharedFlagDefaults(cmds) templates.ActsAsRootCommand(cmds, groups...). ExposeFlags(loginCmd, "certificate-authority", "insecure-skip-tls-verify") if name == fullName { cmds.AddCommand(version.NewVersionCommand(fullName, false)) } cmds.AddCommand(cmd.NewCmdOptions(out)) return cmds }
// NewCmdPolicy implements the OpenShift cli policy command func NewCmdPolicy(name, fullName string, f *clientcmd.Factory, out, errout io.Writer) *cobra.Command { // Parent command to which all subcommands are added. cmds := &cobra.Command{ Use: name, Short: "Manage policy", Long: policyLong, Run: cmdutil.DefaultSubCommandRun(out), } groups := templates.CommandGroups{ { Message: "Discover:", Commands: []*cobra.Command{ NewCmdWhoCan(WhoCanRecommendedName, fullName+" "+WhoCanRecommendedName, f, out), }, }, { Message: "Manage project membership:", Commands: []*cobra.Command{ NewCmdRemoveUserFromProject(RemoveUserRecommendedName, fullName+" "+RemoveUserRecommendedName, f, out), NewCmdRemoveGroupFromProject(RemoveGroupRecommendedName, fullName+" "+RemoveGroupRecommendedName, f, out), }, }, { Message: "Assign roles to users and groups:", Commands: []*cobra.Command{ NewCmdAddRoleToUser(AddRoleToUserRecommendedName, fullName+" "+AddRoleToUserRecommendedName, f, out), NewCmdAddRoleToGroup(AddRoleToGroupRecommendedName, fullName+" "+AddRoleToGroupRecommendedName, f, out), NewCmdRemoveRoleFromUser(RemoveRoleFromUserRecommendedName, fullName+" "+RemoveRoleFromUserRecommendedName, f, out), NewCmdRemoveRoleFromGroup(RemoveRoleFromGroupRecommendedName, fullName+" "+RemoveRoleFromGroupRecommendedName, f, out), }, }, { Message: "Assign cluster roles to users and groups:", Commands: []*cobra.Command{ NewCmdAddClusterRoleToUser(AddClusterRoleToUserRecommendedName, fullName+" "+AddClusterRoleToUserRecommendedName, f, out), NewCmdAddClusterRoleToGroup(AddClusterRoleToGroupRecommendedName, fullName+" "+AddClusterRoleToGroupRecommendedName, f, out), NewCmdRemoveClusterRoleFromUser(RemoveClusterRoleFromUserRecommendedName, fullName+" "+RemoveClusterRoleFromUserRecommendedName, f, out), NewCmdRemoveClusterRoleFromGroup(RemoveClusterRoleFromGroupRecommendedName, fullName+" "+RemoveClusterRoleFromGroupRecommendedName, f, out), }, }, { Message: "Manage policy on pods and containers:", Commands: []*cobra.Command{ NewCmdAddSCCToUser(AddSCCToUserRecommendedName, fullName+" "+AddSCCToUserRecommendedName, f, out), NewCmdAddSCCToGroup(AddSCCToGroupRecommendedName, fullName+" "+AddSCCToGroupRecommendedName, f, out), NewCmdRemoveSCCFromUser(RemoveSCCFromUserRecommendedName, fullName+" "+RemoveSCCFromUserRecommendedName, f, out), NewCmdRemoveSCCFromGroup(RemoveSCCFromGroupRecommendedName, fullName+" "+RemoveSCCFromGroupRecommendedName, f, out), }, }, { Message: "Upgrade and repair system policy:", Commands: []*cobra.Command{ NewCmdReconcileClusterRoles(ReconcileClusterRolesRecommendedName, fullName+" "+ReconcileClusterRolesRecommendedName, f, out, errout), NewCmdReconcileClusterRoleBindings(ReconcileClusterRoleBindingsRecommendedName, fullName+" "+ReconcileClusterRoleBindingsRecommendedName, f, out), NewCmdReconcileSCC(ReconcileSCCRecommendedName, fullName+" "+ReconcileSCCRecommendedName, f, out), }, }, } groups.Add(cmds) templates.ActsAsRootCommand(cmds, []string{"options"}, groups...) return cmds }
func NewCommandCLI(name, fullName string) *cobra.Command { in := os.Stdin out := os.Stdout // Main command cmds := &cobra.Command{ Use: name, Short: "Client tools for OpenShift", Long: fmt.Sprintf(cliLong, fullName), Run: cmdutil.DefaultSubCommandRun(out), BashCompletionFunction: bashCompletionFunc, } f := clientcmd.New(cmds.PersistentFlags()) loginCmd := cmd.NewCmdLogin(fullName, f, in, out) groups := templates.CommandGroups{ { Message: "Basic Commands:", Commands: []*cobra.Command{ cmd.NewCmdTypes(fullName, f, out), loginCmd, cmd.NewCmdRequestProject("new-project", fullName+" new-project", fullName+" login", fullName+" project", f, out), cmd.NewCmdNewApplication(fullName, f, out), cmd.NewCmdStatus(fullName, f, out), cmd.NewCmdProject(fullName+" project", f, out), }, }, { Message: "Build and Deploy Commands:", Commands: []*cobra.Command{ cmd.NewCmdStartBuild(fullName, f, out), cmd.NewCmdBuildLogs(fullName, f, out), cmd.NewCmdDeploy(fullName, f, out), cmd.NewCmdRollback(fullName, f, out), cmd.NewCmdNewBuild(fullName, f, out), cmd.NewCmdCancelBuild(fullName, f, out), cmd.NewCmdImportImage(fullName, f, out), cmd.NewCmdScale(fullName, f, out), cmd.NewCmdTag(fullName, f, out), }, }, { Message: "Application Modification Commands:", Commands: []*cobra.Command{ cmd.NewCmdGet(fullName, f, out), cmd.NewCmdDescribe(fullName, f, out), cmd.NewCmdEdit(fullName, f, out), cmd.NewCmdEnv(fullName, f, os.Stdin, out), cmd.NewCmdVolume(fullName, f, out), cmd.NewCmdLabel(fullName, f, out), cmd.NewCmdExpose(fullName, f, out), cmd.NewCmdStop(fullName, f, out), cmd.NewCmdDelete(fullName, f, out), }, }, { Message: "Troubleshooting and Debugging Commands:", Commands: []*cobra.Command{ cmd.NewCmdLogs(fullName, f, out), cmd.NewCmdExec(fullName, f, os.Stdin, out, os.Stderr), cmd.NewCmdPortForward(fullName, f), cmd.NewCmdProxy(fullName, f, out), }, }, { Message: "Advanced Commands:", Commands: []*cobra.Command{ cmd.NewCmdCreate(fullName, f, out), cmd.NewCmdUpdate(fullName, f, out), cmd.NewCmdProcess(fullName, f, out), cmd.NewCmdExport(fullName, f, os.Stdin, out), policy.NewCmdPolicy(policy.PolicyRecommendedName, fullName+" "+policy.PolicyRecommendedName, f, out), secrets.NewCmdSecrets(secrets.SecretsRecommendedName, fullName+" "+secrets.SecretsRecommendedName, f, out, fullName+" edit"), }, }, { Message: "Settings Commands:", Commands: []*cobra.Command{ cmd.NewCmdLogout("logout", fullName+" logout", fullName+" login", f, in, out), cmd.NewCmdConfig(fullName, "config"), cmd.NewCmdWhoAmI(cmd.WhoAmIRecommendedCommandName, fullName+" "+cmd.WhoAmIRecommendedCommandName, f, out), }, }, } groups.Add(cmds) templates.ActsAsRootCommand(cmds, groups...). ExposeFlags(loginCmd, "certificate-authority", "insecure-skip-tls-verify") if name == fullName { cmds.AddCommand(version.NewVersionCommand(fullName)) } cmds.AddCommand(cmd.NewCmdOptions(out)) return cmds }
func NewCommandAdmin(name, fullName string, in io.Reader, out io.Writer, errout io.Writer) *cobra.Command { // Main command cmds := &cobra.Command{ Use: name, Short: "Tools for managing a cluster", Long: fmt.Sprintf(adminLong), Run: cmdutil.DefaultSubCommandRun(out), } f := clientcmd.New(cmds.PersistentFlags()) groups := templates.CommandGroups{ { Message: "Component Installation:", Commands: []*cobra.Command{ router.NewCmdRouter(f, fullName, "router", out), exipfailover.NewCmdIPFailoverConfig(f, fullName, "ipfailover", out, errout), registry.NewCmdRegistry(f, fullName, "registry", out), }, }, { Message: "Security and Policy:", Commands: []*cobra.Command{ project.NewCmdNewProject(project.NewProjectRecommendedName, fullName+" "+project.NewProjectRecommendedName, f, out), policy.NewCmdPolicy(policy.PolicyRecommendedName, fullName+" "+policy.PolicyRecommendedName, f, out, errout), groups.NewCmdGroups(groups.GroupsRecommendedName, fullName+" "+groups.GroupsRecommendedName, f, out), cert.NewCmdCert(cert.CertRecommendedName, fullName+" "+cert.CertRecommendedName, out, errout), admin.NewCommandOverwriteBootstrapPolicy(admin.OverwriteBootstrapPolicyCommandName, fullName+" "+admin.OverwriteBootstrapPolicyCommandName, fullName+" "+admin.CreateBootstrapPolicyFileCommand, out), }, }, { Message: "Node Management:", Commands: []*cobra.Command{ admin.NewCommandNodeConfig(admin.NodeConfigCommandName, fullName+" "+admin.NodeConfigCommandName, out), node.NewCommandManageNode(f, node.ManageNodeCommandName, fullName+" "+node.ManageNodeCommandName, out, errout), cmdutil.ReplaceCommandName("kubectl", fullName, kubectl.NewCmdCordon(f.Factory, out)), cmdutil.ReplaceCommandName("kubectl", fullName, kubectl.NewCmdUncordon(f.Factory, out)), cmdutil.ReplaceCommandName("kubectl", fullName, kubectl.NewCmdDrain(f.Factory, out)), cmdutil.ReplaceCommandName("kubectl", fullName, kubectl.NewCmdTaint(f.Factory, out)), network.NewCmdPodNetwork(network.PodNetworkCommandName, fullName+" "+network.PodNetworkCommandName, f, out), }, }, { Message: "Maintenance:", Commands: []*cobra.Command{ diagnostics.NewCmdDiagnostics(diagnostics.DiagnosticsRecommendedName, fullName+" "+diagnostics.DiagnosticsRecommendedName, out), prune.NewCommandPrune(prune.PruneRecommendedName, fullName+" "+prune.PruneRecommendedName, f, out), buildchain.NewCmdBuildChain(name, fullName+" "+buildchain.BuildChainRecommendedCommandName, f, out), migrate.NewCommandMigrate( migrate.MigrateRecommendedName, fullName+" "+migrate.MigrateRecommendedName, f, out, // Migration commands migrateimages.NewCmdMigrateImageReferences("image-references", fullName+" "+migrate.MigrateRecommendedName+" image-references", f, in, out, errout), migratestorage.NewCmdMigrateAPIStorage("storage", fullName+" "+migrate.MigrateRecommendedName+" storage", f, in, out, errout), ), top.NewCommandTop(top.TopRecommendedName, fullName+" "+top.TopRecommendedName, f, out), }, }, { Message: "Configuration:", Commands: []*cobra.Command{ admin.NewCommandCreateKubeConfig(admin.CreateKubeConfigCommandName, fullName+" "+admin.CreateKubeConfigCommandName, out), admin.NewCommandCreateClient(admin.CreateClientCommandName, fullName+" "+admin.CreateClientCommandName, out), admin.NewCommandCreateBootstrapProjectTemplate(f, admin.CreateBootstrapProjectTemplateCommand, fullName+" "+admin.CreateBootstrapProjectTemplateCommand, out), admin.NewCommandCreateBootstrapPolicyFile(admin.CreateBootstrapPolicyFileCommand, fullName+" "+admin.CreateBootstrapPolicyFileCommand, out), admin.NewCommandCreateLoginTemplate(f, admin.CreateLoginTemplateCommand, fullName+" "+admin.CreateLoginTemplateCommand, out), admin.NewCommandCreateProviderSelectionTemplate(f, admin.CreateProviderSelectionTemplateCommand, fullName+" "+admin.CreateProviderSelectionTemplateCommand, out), admin.NewCommandCreateErrorTemplate(f, admin.CreateErrorTemplateCommand, fullName+" "+admin.CreateErrorTemplateCommand, out), }, }, } groups.Add(cmds) templates.ActsAsRootCommand(cmds, []string{"options"}, groups...) // Deprecated commands that are bundled with the binary but not displayed to end users directly deprecatedCommands := []*cobra.Command{ admin.NewCommandCreateMasterCerts(admin.CreateMasterCertsCommandName, fullName+" "+admin.CreateMasterCertsCommandName, out), admin.NewCommandCreateKeyPair(admin.CreateKeyPairCommandName, fullName+" "+admin.CreateKeyPairCommandName, out), admin.NewCommandCreateServerCert(admin.CreateServerCertCommandName, fullName+" "+admin.CreateServerCertCommandName, out), admin.NewCommandCreateSignerCert(admin.CreateSignerCertCommandName, fullName+" "+admin.CreateSignerCertCommandName, out), } for _, cmd := range deprecatedCommands { // Unsetting Short description will not show this command in help cmd.Short = "" cmd.Deprecated = fmt.Sprintf("Use '%s ca' instead.", fullName) cmds.AddCommand(cmd) } cmds.AddCommand( // part of every root command cmd.NewCmdConfig(fullName, "config"), cmd.NewCmdCompletion(fullName, f, out), // hidden cmd.NewCmdOptions(out), ) if name == fullName { cmds.AddCommand(cmd.NewCmdVersion(fullName, f, out, cmd.VersionOptions{})) } return cmds }