Skip to content

Commit 787f4e2

Browse files
authored
Merge pull request #15354 from liggitt/sdn-register-order-3.6
Register SDN informers synchronously
2 parents b7540a5 + 04fdc79 commit 787f4e2

File tree

3 files changed

+66
-15
lines changed

3 files changed

+66
-15
lines changed

pkg/cmd/server/origin/controller/network.go

+17-14
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ import (
55
"net"
66
"time"
77

8-
"github.com/golang/glog"
8+
kclientsetinternal "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
9+
910
osclient "github.com/openshift/origin/pkg/client"
1011
configapi "github.com/openshift/origin/pkg/cmd/server/api"
1112
"github.com/openshift/origin/pkg/cmd/server/bootstrappolicy"
@@ -19,25 +20,27 @@ type SDNControllerConfig struct {
1920

2021
func (c *SDNControllerConfig) RunController(ctx ControllerContext) (bool, error) {
2122
// TODO: Switch SDN to use client.Interface
22-
osClientConfig, err := ctx.ClientBuilder.Config(bootstrappolicy.InfraSDNControllerServiceAccountName)
23+
clientConfig, err := ctx.ClientBuilder.Config(bootstrappolicy.InfraSDNControllerServiceAccountName)
24+
if err != nil {
25+
return false, err
26+
}
27+
osClient, err := osclient.New(clientConfig)
2328
if err != nil {
2429
return false, err
2530
}
26-
osClient, err := osclient.New(osClientConfig)
31+
kClient, err := kclientsetinternal.NewForConfig(clientConfig)
2732
if err != nil {
2833
return false, err
2934
}
30-
go func() {
31-
err := sdnplugin.StartMaster(
32-
c.NetworkConfig,
33-
osClient,
34-
ctx.ClientBuilder.KubeInternalClientOrDie(bootstrappolicy.InfraSDNControllerServiceAccountName),
35-
ctx.InternalKubeInformers,
36-
)
37-
if err != nil {
38-
glog.Errorf("failed to start SDN plugin controller: %v", err)
39-
}
40-
}()
35+
err = sdnplugin.StartMaster(
36+
c.NetworkConfig,
37+
osClient,
38+
kClient,
39+
ctx.InternalKubeInformers,
40+
)
41+
if err != nil {
42+
return false, fmt.Errorf("failed to start SDN plugin controller: %v", err)
43+
}
4144
return true, nil
4245
}
4346

pkg/cmd/server/origin/ensure.go

+48
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,54 @@ func (c *MasterConfig) ensureOpenShiftInfraNamespace() {
5454
return
5555
}
5656

57+
controllerRoles := []authorizationapi.ClusterRole{}
58+
if roles, err := bootstrappolicy.GetKubeControllerBootstrapClusterRoles(); err != nil {
59+
glog.Error(err)
60+
} else {
61+
controllerRoles = append(controllerRoles, roles...)
62+
}
63+
if roles, err := bootstrappolicy.GetOpenshiftControllerBootstrapClusterRoles(); err != nil {
64+
glog.Error(err)
65+
} else {
66+
controllerRoles = append(controllerRoles, roles...)
67+
}
68+
for _, role := range controllerRoles {
69+
reconcileRole := &policy.ReconcileClusterRolesOptions{
70+
RolesToReconcile: []string{role.Name},
71+
Confirmed: true,
72+
Union: true,
73+
Out: ioutil.Discard,
74+
RoleClient: c.PrivilegedLoopbackOpenShiftClient.ClusterRoles(),
75+
}
76+
if err := reconcileRole.RunReconcileClusterRoles(nil, nil); err != nil {
77+
glog.Errorf("Could not reconcile %v: %v\n", role.Name, err)
78+
}
79+
}
80+
81+
controllerRoleBindings := []authorizationapi.ClusterRoleBinding{}
82+
if bindings, err := bootstrappolicy.GetKubeControllerBootstrapClusterRoleBindings(); err != nil {
83+
glog.Error(err)
84+
} else {
85+
controllerRoleBindings = append(controllerRoleBindings, bindings...)
86+
}
87+
if bindings, err := bootstrappolicy.GetOpenshiftControllerBootstrapClusterRoleBindings(); err != nil {
88+
glog.Error(err)
89+
} else {
90+
controllerRoleBindings = append(controllerRoleBindings, bindings...)
91+
}
92+
for _, binding := range controllerRoleBindings {
93+
reconcileRoleBinding := &policy.ReconcileClusterRoleBindingsOptions{
94+
RolesToReconcile: []string{binding.RoleRef.Name},
95+
Confirmed: true,
96+
Union: true,
97+
Out: ioutil.Discard,
98+
RoleBindingClient: c.PrivilegedLoopbackOpenShiftClient.ClusterRoleBindings(),
99+
}
100+
if err := reconcileRoleBinding.RunReconcileClusterRoleBindings(nil, nil); err != nil {
101+
glog.Errorf("Could not reconcile %v: %v\n", binding.RoleRef.Name, err)
102+
}
103+
}
104+
57105
roleAccessor := policy.NewClusterRoleBindingAccessor(c.ServiceAccountRoleBindingClient())
58106
for _, saName := range bootstrappolicy.InfraSAs.GetServiceAccounts() {
59107
_, err := c.KubeClientsetInternal().Core().ServiceAccounts(ns).Create(&kapi.ServiceAccount{ObjectMeta: metav1.ObjectMeta{Name: saName}})

pkg/sdn/plugin/master.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ func StartMaster(networkConfig osconfigapi.MasterNetworkConfig, osClient *osclie
6767

6868
// try this for a while before just dying
6969
var getError error
70-
err = wait.PollImmediate(1*time.Second, 30*time.Second, func() (bool, error) {
70+
err = wait.PollImmediate(1*time.Second, time.Minute, func() (bool, error) {
7171
// reset this so that failures come through correctly.
7272
getError = nil
7373
existingCN, err := master.osClient.ClusterNetwork().Get(osapi.ClusterNetworkDefault, metav1.GetOptions{})

0 commit comments

Comments
 (0)