func executeAllInOneCommandWithConfigs(args []string) (*MasterArgs, *configapi.MasterConfig, error, *NodeArgs, *configapi.NodeConfig, error) { argsToUse := make([]string, 0, 4+len(args)) argsToUse = append(argsToUse, "start") argsToUse = append(argsToUse, args...) argsToUse = append(argsToUse, "--write-config="+getCleanAllInOneConfigDir()) argsToUse = append(argsToUse, "--create-certs=false") root := &cobra.Command{ Use: "atomic-enterprise", Short: "test", Long: "", Run: func(c *cobra.Command, args []string) { c.Help() }, } openshiftStartCommand, cfg := NewCommandStartAllInOne("atomic-enterprise start", os.Stdout) root.AddCommand(openshiftStartCommand) root.SetArgs(argsToUse) root.Execute() masterCfg, masterErr := configapilatest.ReadAndResolveMasterConfig(path.Join(getAllInOneConfigDir(), "master", "master-config.yaml")) var nodeCfg *configapi.NodeConfig var nodeErr error nodeConfigs, nodeErr := filepath.Glob(getNodeConfigGlob()) if nodeErr == nil { if len(nodeConfigs) != 1 { nodeErr = fmt.Errorf("found wrong number of node configs: %v", nodeConfigs) } else { nodeCfg, nodeErr = configapilatest.ReadAndResolveNodeConfig(nodeConfigs[0]) } } if nodeCfg == nil && nodeErr == nil { nodeErr = errors.New("did not find node config") } return cfg.MasterArgs, masterCfg, masterErr, cfg.NodeArgs, nodeCfg, nodeErr }
// RunNode takes the options and: // 1. Creates certs if needed // 2. Reads fully specified node config OR builds a fully specified node config from the args // 3. Writes the fully specified node config and exits if needed // 4. Starts the node based on the fully specified config func (o NodeOptions) RunNode() error { if !o.IsRunFromConfig() || o.IsWriteConfigOnly() { glog.V(2).Infof("Generating node configuration") if err := o.CreateNodeConfig(); err != nil { return err } } if o.IsWriteConfigOnly() { return nil } var nodeConfig *configapi.NodeConfig var err error if o.IsRunFromConfig() { nodeConfig, err = configapilatest.ReadAndResolveNodeConfig(o.ConfigFile) } else { nodeConfig, err = o.NodeArgs.BuildSerializeableNodeConfig() } if err != nil { return err } errs := validation.ValidateNodeConfig(nodeConfig) if len(errs) != 0 { return kerrors.NewInvalid("NodeConfig", o.ConfigFile, errs) } _, kubeClientConfig, err := configapi.GetKubeClient(nodeConfig.MasterKubeConfig) if err != nil { return err } glog.Infof("Starting an OpenShift node, connecting to %s", kubeClientConfig.Host) if err := StartNode(*nodeConfig); err != nil { return err } return nil }