// CommandFor returns the appropriate command for this base name, // or the global OpenShift command func CommandFor(basename string) *cobra.Command { var cmd *cobra.Command out := os.Stdout // Make case-insensitive and strip executable suffix if present if runtime.GOOS == "windows" { basename = strings.ToLower(basename) basename = strings.TrimSuffix(basename, ".exe") } switch basename { case "openshift-router": cmd = irouter.NewCommandTemplateRouter(basename) case "openshift-deploy": cmd = deployer.NewCommandDeployer(basename) case "openshift-sti-build": cmd = builder.NewCommandSTIBuilder(basename) case "openshift-docker-build": cmd = builder.NewCommandDockerBuilder(basename) case "openshift-gitserver": cmd = gitserver.NewCommandGitServer(basename) case "oc", "osc": cmd = cli.NewCommandCLI(basename, basename) case "oadm", "osadm": cmd = admin.NewCommandAdmin(basename, basename, out) case "kubectl": cmd = cli.NewCmdKubectl(basename, out) case "kube-apiserver": cmd = kubernetes.NewAPIServerCommand(basename, basename, out) case "kube-controller-manager": cmd = kubernetes.NewControllersCommand(basename, basename, out) case "kubelet": cmd = kubernetes.NewKubeletCommand(basename, basename, out) case "kube-proxy": cmd = kubernetes.NewProxyCommand(basename, basename, out) case "kube-scheduler": cmd = kubernetes.NewSchedulerCommand(basename, basename, out) case "kubernetes": cmd = kubernetes.NewCommand(basename, basename, out) case "origin": cmd = NewCommandAtomicEnterprise("origin") default: cmd = NewCommandAtomicEnterprise("atomic-enterprise") } if cmd.UsageFunc() == nil { templates.ActsAsRootCommand(cmd) } flagtypes.GLog(cmd.PersistentFlags()) return cmd }
// NewCommandStartAllInOne provides a CLI handler for 'start' command func NewCommandStartAllInOne(fullName string, out io.Writer) (*cobra.Command, *AllInOneOptions) { options := &AllInOneOptions{Output: out} cmds := &cobra.Command{ Use: "start", Short: "Launch OpenShift All-In-One", Long: allInOneLong, Run: func(c *cobra.Command, args []string) { if err := options.Complete(); err != nil { fmt.Println(kcmdutil.UsageError(c, err.Error())) return } if err := options.Validate(args); err != nil { fmt.Println(kcmdutil.UsageError(c, err.Error())) return } startProfiler() if err := options.StartAllInOne(); err != nil { if kerrors.IsInvalid(err) { if details := err.(*kerrors.StatusError).ErrStatus.Details; details != nil { fmt.Fprintf(c.Out(), "Invalid %s %s\n", details.Kind, details.ID) for _, cause := range details.Causes { fmt.Fprintln(c.Out(), cause.Message) } os.Exit(255) } } glog.Fatalf("OpenShift could not start: %v", err) } }, } cmds.SetOutput(out) flags := cmds.Flags() flags.Var(&options.ConfigDir, "write-config", "Directory to write an initial config into. After writing, exit without starting the server.") flags.StringVar(&options.MasterConfigFile, "master-config", "", "Location of the master configuration file to run from. When running from configuration files, all other command-line arguments are ignored.") flags.StringVar(&options.NodeConfigFile, "node-config", "", "Location of the node configuration file to run from. When running from configuration files, all other command-line arguments are ignored.") flags.BoolVar(&options.CreateCerts, "create-certs", true, "Indicates whether missing certs should be created") masterArgs, nodeArgs, listenArg, imageFormatArgs, _ := GetAllInOneArgs() options.MasterArgs, options.NodeArgs = masterArgs, nodeArgs // by default, all-in-ones all disabled docker. Set it here so that if we allow it to be bound later, bindings take precendence options.NodeArgs.AllowDisabledDocker = true BindMasterArgs(masterArgs, flags, "") BindNodeArgs(nodeArgs, flags, "") BindListenArg(listenArg, flags, "") BindImageFormatArgs(imageFormatArgs, flags, "") startMaster, _ := NewCommandStartMaster(out) startNode, _ := NewCommandStartNode(out) cmds.AddCommand(startMaster) cmds.AddCommand(startNode) startKube := kubernetes.NewCommand("kubernetes", fullName, out) cmds.AddCommand(startKube) return cmds, options }