Skip to content

Commit 3704f7f

Browse files
Merge pull request #14817 from smarterclayton/client
Move the router to use generated clientsets
2 parents 1fb12f6 + bc83309 commit 3704f7f

File tree

10 files changed

+168
-77
lines changed

10 files changed

+168
-77
lines changed

pkg/cmd/infra/router/f5.go

+13-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ import (
1515
"github.com/openshift/origin/pkg/cmd/templates"
1616
"github.com/openshift/origin/pkg/cmd/util"
1717
"github.com/openshift/origin/pkg/cmd/util/clientcmd"
18+
projectinternalclientset "github.com/openshift/origin/pkg/project/generated/internalclientset"
1819
routeapi "github.com/openshift/origin/pkg/route/apis/route"
20+
routeinternalclientset "github.com/openshift/origin/pkg/route/generated/internalclientset"
1921
"github.com/openshift/origin/pkg/router/controller"
2022
f5plugin "github.com/openshift/origin/pkg/router/f5"
2123
)
@@ -214,16 +216,24 @@ func (o *F5RouterOptions) Run() error {
214216
return err
215217
}
216218

217-
oc, kc, err := o.Config.Clients()
219+
_, kc, err := o.Config.Clients()
220+
if err != nil {
221+
return err
222+
}
223+
routeclient, err := routeinternalclientset.NewForConfig(o.Config.OpenShiftConfig())
224+
if err != nil {
225+
return err
226+
}
227+
projectclient, err := projectinternalclientset.NewForConfig(o.Config.OpenShiftConfig())
218228
if err != nil {
219229
return err
220230
}
221231

222-
statusPlugin := controller.NewStatusAdmitter(f5Plugin, oc, o.RouterName, "")
232+
statusPlugin := controller.NewStatusAdmitter(f5Plugin, routeclient, o.RouterName, "")
223233
uniqueHostPlugin := controller.NewUniqueHost(statusPlugin, o.RouteSelectionFunc(), o.RouterSelection.DisableNamespaceOwnershipCheck, statusPlugin)
224234
plugin := controller.NewHostAdmitter(uniqueHostPlugin, o.F5RouteAdmitterFunc(), false, o.RouterSelection.DisableNamespaceOwnershipCheck, statusPlugin)
225235

226-
factory := o.RouterSelection.NewFactory(oc, kc)
236+
factory := o.RouterSelection.NewFactory(routeclient, projectclient.Projects(), kc)
227237
watchNodes := (len(o.InternalAddress) != 0 && len(o.VxlanGateway) != 0)
228238
controller := factory.Create(plugin, watchNodes, o.EnableIngress)
229239
controller.Run()

pkg/cmd/infra/router/router.go

+6-5
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@ import (
1515
kclientset "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
1616
kcoreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
1717

18-
oclient "github.com/openshift/origin/pkg/client"
1918
cmdutil "github.com/openshift/origin/pkg/cmd/util"
2019
"github.com/openshift/origin/pkg/cmd/util/variable"
20+
projectclient "github.com/openshift/origin/pkg/project/generated/internalclientset/typed/project/internalversion"
2121
routeapi "github.com/openshift/origin/pkg/route/apis/route"
22+
routeclient "github.com/openshift/origin/pkg/route/generated/internalclientset/typed/route/internalversion"
2223
"github.com/openshift/origin/pkg/router/controller"
2324
controllerfactory "github.com/openshift/origin/pkg/router/controller/factory"
2425
)
@@ -220,8 +221,8 @@ func (o *RouterSelection) Complete() error {
220221
}
221222

222223
// NewFactory initializes a factory that will watch the requested routes
223-
func (o *RouterSelection) NewFactory(oc oclient.Interface, kc kclientset.Interface) *controllerfactory.RouterControllerFactory {
224-
factory := controllerfactory.NewDefaultRouterControllerFactory(oc, kc)
224+
func (o *RouterSelection) NewFactory(routeclient routeclient.RoutesGetter, projectclient projectclient.ProjectResourceInterface, kc kclientset.Interface) *controllerfactory.RouterControllerFactory {
225+
factory := controllerfactory.NewDefaultRouterControllerFactory(routeclient, kc)
225226
factory.Labels = o.Labels
226227
factory.Fields = o.Fields
227228
factory.Namespace = o.Namespace
@@ -232,7 +233,7 @@ func (o *RouterSelection) NewFactory(oc oclient.Interface, kc kclientset.Interfa
232233
factory.Namespaces = namespaceNames{kc.Core().Namespaces(), o.NamespaceLabels}
233234
case o.ProjectLabels != nil:
234235
glog.Infof("Router is only using routes in projects matching %s", o.ProjectLabels)
235-
factory.Namespaces = projectNames{oc.Projects(), o.ProjectLabels}
236+
factory.Namespaces = projectNames{projectclient, o.ProjectLabels}
236237
case len(factory.Namespace) > 0:
237238
glog.Infof("Router is only using resources in namespace %s", factory.Namespace)
238239
default:
@@ -243,7 +244,7 @@ func (o *RouterSelection) NewFactory(oc oclient.Interface, kc kclientset.Interfa
243244

244245
// projectNames returns the names of projects matching the label selector
245246
type projectNames struct {
246-
client oclient.ProjectInterface
247+
client projectclient.ProjectResourceInterface
247248
selector labels.Selector
248249
}
249250

pkg/cmd/infra/router/template.go

+16-4
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,15 @@ import (
2323
"github.com/openshift/origin/pkg/cmd/templates"
2424
"github.com/openshift/origin/pkg/cmd/util"
2525
"github.com/openshift/origin/pkg/cmd/util/clientcmd"
26+
projectinternalclientset "github.com/openshift/origin/pkg/project/generated/internalclientset"
27+
routeinternalclientset "github.com/openshift/origin/pkg/route/generated/internalclientset"
2628
"github.com/openshift/origin/pkg/router"
2729
"github.com/openshift/origin/pkg/router/controller"
2830
"github.com/openshift/origin/pkg/router/metrics"
2931
"github.com/openshift/origin/pkg/router/metrics/haproxy"
3032
templateplugin "github.com/openshift/origin/pkg/router/template"
3133
"github.com/openshift/origin/pkg/util/proc"
34+
"github.com/openshift/origin/pkg/version"
3235
)
3336

3437
// defaultReloadInterval is how often to do reloads in seconds.
@@ -240,8 +243,9 @@ func (o *TemplateRouterOptions) Validate() error {
240243

241244
// Run launches a template router using the provided options. It never exits.
242245
func (o *TemplateRouterOptions) Run() error {
243-
statsPort := o.StatsPort
246+
glog.Infof("Starting template router (%s)", version.Get())
244247

248+
statsPort := o.StatsPort
245249
switch {
246250
case o.MetricsType == "haproxy":
247251
if len(o.StatsUsername) == 0 || len(o.StatsPassword) == 0 {
@@ -336,7 +340,15 @@ func (o *TemplateRouterOptions) Run() error {
336340
StrictSNI: o.StrictSNI,
337341
}
338342

339-
oc, kc, err := o.Config.Clients()
343+
_, kc, err := o.Config.Clients()
344+
if err != nil {
345+
return err
346+
}
347+
routeclient, err := routeinternalclientset.NewForConfig(o.Config.OpenShiftConfig())
348+
if err != nil {
349+
return err
350+
}
351+
projectclient, err := projectinternalclientset.NewForConfig(o.Config.OpenShiftConfig())
340352
if err != nil {
341353
return err
342354
}
@@ -347,15 +359,15 @@ func (o *TemplateRouterOptions) Run() error {
347359
return err
348360
}
349361

350-
statusPlugin := controller.NewStatusAdmitter(templatePlugin, oc, o.RouterName, o.RouterCanonicalHostname)
362+
statusPlugin := controller.NewStatusAdmitter(templatePlugin, routeclient, o.RouterName, o.RouterCanonicalHostname)
351363
var nextPlugin router.Plugin = statusPlugin
352364
if o.ExtendedValidation {
353365
nextPlugin = controller.NewExtendedValidator(nextPlugin, controller.RejectionRecorder(statusPlugin))
354366
}
355367
uniqueHostPlugin := controller.NewUniqueHost(nextPlugin, o.RouteSelectionFunc(), o.RouterSelection.DisableNamespaceOwnershipCheck, controller.RejectionRecorder(statusPlugin))
356368
plugin := controller.NewHostAdmitter(uniqueHostPlugin, o.RouteAdmissionFunc(), o.AllowWildcardRoutes, o.RouterSelection.DisableNamespaceOwnershipCheck, controller.RejectionRecorder(statusPlugin))
357369

358-
factory := o.RouterSelection.NewFactory(oc, kc)
370+
factory := o.RouterSelection.NewFactory(routeclient, projectclient.Projects(), kc)
359371
controller := factory.Create(plugin, false, o.EnableIngress)
360372
controller.Run()
361373

pkg/router/controller/factory/factory.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ import (
1919
kcoreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
2020
kextensionsclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion"
2121

22-
osclient "github.com/openshift/origin/pkg/client"
2322
oscache "github.com/openshift/origin/pkg/client/cache"
2423
routeapi "github.com/openshift/origin/pkg/route/apis/route"
24+
osclient "github.com/openshift/origin/pkg/route/generated/internalclientset/typed/route/internalversion"
2525
"github.com/openshift/origin/pkg/router"
2626
routercontroller "github.com/openshift/origin/pkg/router/controller"
2727
)
@@ -31,7 +31,7 @@ import (
3131
// If Namespace is empty, it means "all namespaces".
3232
type RouterControllerFactory struct {
3333
KClient kcoreclient.EndpointsGetter
34-
OSClient osclient.RoutesNamespacer
34+
OSClient osclient.RoutesGetter
3535
IngressClient kextensionsclient.IngressesGetter
3636
SecretClient kcoreclient.SecretsGetter
3737
NodeClient kcoreclient.NodesGetter
@@ -43,7 +43,7 @@ type RouterControllerFactory struct {
4343
}
4444

4545
// NewDefaultRouterControllerFactory initializes a default router controller factory.
46-
func NewDefaultRouterControllerFactory(oc osclient.RoutesNamespacer, kc kclientset.Interface) *RouterControllerFactory {
46+
func NewDefaultRouterControllerFactory(oc osclient.RoutesGetter, kc kclientset.Interface) *RouterControllerFactory {
4747
return &RouterControllerFactory{
4848
KClient: kc.Core(),
4949
OSClient: oc,
@@ -321,7 +321,7 @@ func hostIndexFunc(obj interface{}) ([]string, error) {
321321
// routeLW is a ListWatcher for routes that can be filtered to a label, field, or
322322
// namespace.
323323
type routeLW struct {
324-
client osclient.RoutesNamespacer
324+
client osclient.RoutesGetter
325325
label labels.Selector
326326
field fields.Selector
327327
namespace string

pkg/router/controller/host_admitter_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ import (
1313
"k8s.io/apimachinery/pkg/watch"
1414
kapi "k8s.io/kubernetes/pkg/api"
1515

16-
"github.com/openshift/origin/pkg/client/testclient"
1716
routeapi "github.com/openshift/origin/pkg/route/apis/route"
17+
"github.com/openshift/origin/pkg/route/generated/internalclientset/fake"
1818
)
1919

2020
const (
@@ -772,7 +772,7 @@ func TestStatusWildcardPolicyNoOp(t *testing.T) {
772772
now := nowFn()
773773
touched := metav1.Time{Time: now.Add(-time.Minute)}
774774
p := &fakePlugin{}
775-
c := testclient.NewSimpleFake()
775+
c := fake.NewSimpleClientset()
776776
recorder := rejectionRecorder{rejections: make(map[string]string)}
777777
admitter := NewHostAdmitter(p, wildcardAdmitter, true, false, recorder)
778778
err := admitter.HandleRoute(watch.Added, &routeapi.Route{
@@ -810,7 +810,7 @@ func TestStatusWildcardPolicyNotAllowedNoOp(t *testing.T) {
810810
now := nowFn()
811811
touched := metav1.Time{Time: now.Add(-time.Minute)}
812812
p := &fakePlugin{}
813-
c := testclient.NewSimpleFake()
813+
c := fake.NewSimpleClientset()
814814
recorder := rejectionRecorder{rejections: make(map[string]string)}
815815
admitter := NewHostAdmitter(p, wildcardAdmitter, false, false, recorder)
816816
err := admitter.HandleRoute(watch.Added, &routeapi.Route{

pkg/router/controller/status.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ import (
1414
"k8s.io/apimachinery/pkg/watch"
1515
kapi "k8s.io/kubernetes/pkg/api"
1616

17-
"github.com/openshift/origin/pkg/client"
1817
routeapi "github.com/openshift/origin/pkg/route/apis/route"
18+
client "github.com/openshift/origin/pkg/route/generated/internalclientset/typed/route/internalversion"
1919
"github.com/openshift/origin/pkg/router"
2020
)
2121

@@ -27,7 +27,7 @@ type RejectionRecorder interface {
2727
// StatusAdmitter ensures routes added to the plugin have status set.
2828
type StatusAdmitter struct {
2929
plugin router.Plugin
30-
client client.RoutesNamespacer
30+
client client.RoutesGetter
3131
routerName string
3232
routerCanonicalHostname string
3333

@@ -39,7 +39,7 @@ type StatusAdmitter struct {
3939
// route has a status field set that matches this router. The admitter manages
4040
// an LRU of recently seen conflicting updates to handle when two router processes
4141
// with differing configurations are writing updates at the same time.
42-
func NewStatusAdmitter(plugin router.Plugin, client client.RoutesNamespacer, name, hostName string) *StatusAdmitter {
42+
func NewStatusAdmitter(plugin router.Plugin, client client.RoutesGetter, name, hostName string) *StatusAdmitter {
4343
expected, _ := lru.New(1024)
4444
return &StatusAdmitter{
4545
plugin: plugin,
@@ -227,7 +227,7 @@ func (a *StatusAdmitter) recordIngressTouch(route *routeapi.Route, touch *metav1
227227
// admitRoute returns true if the route has already been accepted to this router, or
228228
// updates the route to contain an accepted condition. Returns an error if the route could
229229
// not be admitted due to a failure, or false if the route can't be admitted at this time.
230-
func (a *StatusAdmitter) admitRoute(oc client.RoutesNamespacer, route *routeapi.Route, name, hostName string) (bool, error) {
230+
func (a *StatusAdmitter) admitRoute(oc client.RoutesGetter, route *routeapi.Route, name, hostName string) (bool, error) {
231231
ingress, updated := findOrCreateIngress(route, name, hostName)
232232

233233
// keep lastTouch around

0 commit comments

Comments
 (0)