Skip to content

Commit 6ad6ff2

Browse files
committed
create hypershift openshift-controller-manager
1 parent c0aba64 commit 6ad6ff2

23 files changed

+438
-304
lines changed

cmd/hypershift/main.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"k8s.io/apiserver/pkg/util/logs"
1616

1717
"github.com/openshift/origin/pkg/cmd/openshift-apiserver"
18+
"github.com/openshift/origin/pkg/cmd/openshift-controller-manager"
1819
"github.com/openshift/origin/pkg/cmd/openshift-kube-apiserver"
1920
"github.com/openshift/origin/pkg/cmd/server/start"
2021
"github.com/openshift/origin/pkg/cmd/util/serviceability"
@@ -63,5 +64,8 @@ func NewHyperShiftCommand() *cobra.Command {
6364
startOpenShiftKubeAPIServer := openshift_kube_apiserver.NewOpenShiftKubeAPIServerServerCommand(openshift_kube_apiserver.RecommendedStartAPIServerName, "hypershift", os.Stdout, os.Stderr)
6465
cmd.AddCommand(startOpenShiftKubeAPIServer)
6566

67+
startOpenShiftControllerManager := openshift_controller_manager.NewOpenShiftControllerManagerCommand(openshift_controller_manager.RecommendedStartControllerManagerName, "hypershift", os.Stdout, os.Stderr)
68+
cmd.AddCommand(startOpenShiftControllerManager)
69+
6670
return cmd
6771
}
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
package openshift_controller_manager
2+
3+
import (
4+
"errors"
5+
"fmt"
6+
"io"
7+
"os"
8+
9+
"github.com/coreos/go-systemd/daemon"
10+
"github.com/golang/glog"
11+
"github.com/spf13/cobra"
12+
13+
kerrors "k8s.io/apimachinery/pkg/api/errors"
14+
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
15+
kcmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
16+
17+
configapi "github.com/openshift/origin/pkg/cmd/server/apis/config"
18+
configapilatest "github.com/openshift/origin/pkg/cmd/server/apis/config/latest"
19+
"github.com/openshift/origin/pkg/cmd/server/apis/config/validation"
20+
"github.com/openshift/origin/pkg/cmd/server/origin"
21+
)
22+
23+
const RecommendedStartControllerManagerName = "openshift-controller-manager"
24+
25+
type OpenShiftControllerManager struct {
26+
ConfigFile string
27+
Output io.Writer
28+
}
29+
30+
var longDescription = templates.LongDesc(`
31+
Start the OpenShift controllers`)
32+
33+
func NewOpenShiftControllerManagerCommand(name, basename string, out, errout io.Writer) *cobra.Command {
34+
options := &OpenShiftControllerManager{Output: out}
35+
36+
cmd := &cobra.Command{
37+
Use: name,
38+
Short: "Start the OpenShift controllers",
39+
Long: longDescription,
40+
Run: func(c *cobra.Command, args []string) {
41+
kcmdutil.CheckErr(options.Validate())
42+
43+
origin.StartProfiler()
44+
45+
if err := options.StartControllerManager(); err != nil {
46+
if kerrors.IsInvalid(err) {
47+
if details := err.(*kerrors.StatusError).ErrStatus.Details; details != nil {
48+
fmt.Fprintf(errout, "Invalid %s %s\n", details.Kind, details.Name)
49+
for _, cause := range details.Causes {
50+
fmt.Fprintf(errout, " %s: %s\n", cause.Field, cause.Message)
51+
}
52+
os.Exit(255)
53+
}
54+
}
55+
glog.Fatal(err)
56+
}
57+
},
58+
}
59+
60+
flags := cmd.Flags()
61+
// This command only supports reading from config
62+
flags.StringVar(&options.ConfigFile, "config", "", "Location of the master configuration file to run from.")
63+
cmd.MarkFlagFilename("config", "yaml", "yml")
64+
cmd.MarkFlagRequired("config")
65+
66+
return cmd
67+
}
68+
69+
func (o *OpenShiftControllerManager) Validate() error {
70+
if len(o.ConfigFile) == 0 {
71+
return errors.New("--config is required for this command")
72+
}
73+
74+
return nil
75+
}
76+
77+
// StartAPIServer calls RunAPIServer and then waits forever
78+
func (o *OpenShiftControllerManager) StartControllerManager() error {
79+
if err := o.RunControllerManager(); err != nil {
80+
return err
81+
}
82+
83+
go daemon.SdNotify(false, "READY=1")
84+
select {}
85+
}
86+
87+
// RunAPIServer takes the options and starts the etcd server
88+
func (o *OpenShiftControllerManager) RunControllerManager() error {
89+
masterConfig, err := configapilatest.ReadAndResolveMasterConfig(o.ConfigFile)
90+
if err != nil {
91+
return err
92+
}
93+
94+
validationResults := validation.ValidateMasterConfig(masterConfig, nil)
95+
if len(validationResults.Warnings) != 0 {
96+
for _, warning := range validationResults.Warnings {
97+
glog.Warningf("%v", warning)
98+
}
99+
}
100+
if len(validationResults.Errors) != 0 {
101+
return kerrors.NewInvalid(configapi.Kind("MasterConfig"), "master-config.yaml", validationResults.Errors)
102+
}
103+
104+
return RunOpenShiftControllerManager(masterConfig)
105+
}
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)