Skip to content

WIP: use generated clientset for deployment controllers and add expansion for instantiate #15981

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 2 additions & 11 deletions pkg/cmd/server/origin/controller/apps.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,15 +51,11 @@ func (c *DeploymentConfigControllerConfig) RunController(ctx ControllerContext)
if err != nil {
return true, err
}
deprecatedOcDcClient, err := ctx.ClientBuilder.DeprecatedOpenshiftClient(saName)
if err != nil {
return true, err
}

go deployconfigcontroller.NewDeploymentConfigController(
ctx.AppInformers.Apps().InternalVersion().DeploymentConfigs().Informer(),
ctx.ExternalKubeInformers.Core().V1().ReplicationControllers(),
deprecatedOcDcClient,
ctx.ClientBuilder.AppsInternalClientOrDie(saName),
kubeClient,
c.Codec,
).Run(5, ctx.Stop)
Expand All @@ -70,16 +66,11 @@ func (c *DeploymentConfigControllerConfig) RunController(ctx ControllerContext)
func (c *DeploymentTriggerControllerConfig) RunController(ctx ControllerContext) (bool, error) {
saName := bootstrappolicy.InfraDeploymentTriggerControllerServiceAccountName

deprecatedOcTriggerClient, err := ctx.ClientBuilder.DeprecatedOpenshiftClient(saName)
if err != nil {
return true, err
}

go triggercontroller.NewDeploymentTriggerController(
ctx.AppInformers.Apps().InternalVersion().DeploymentConfigs().Informer(),
ctx.ExternalKubeInformers.Core().V1().ReplicationControllers().Informer(),
ctx.ImageInformers.Image().InternalVersion().ImageStreams().Informer(),
deprecatedOcTriggerClient,
ctx.ClientBuilder.AppsInternalClientOrDie(saName),
c.Codec,
).Run(5, ctx.Stop)

Expand Down
23 changes: 23 additions & 0 deletions pkg/cmd/server/origin/controller/interfaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
buildinformer "github.com/openshift/origin/pkg/build/generated/informers/internalversion"
osclient "github.com/openshift/origin/pkg/client"
appinformer "github.com/openshift/origin/pkg/deploy/generated/informers/internalversion"
appsclientinternal "github.com/openshift/origin/pkg/deploy/generated/internalclientset"
imageinformer "github.com/openshift/origin/pkg/image/generated/informers/internalversion"
quotainformer "github.com/openshift/origin/pkg/quota/generated/informers/internalversion"
securityinformer "github.com/openshift/origin/pkg/security/generated/informers/internalversion"
Expand Down Expand Up @@ -49,9 +50,15 @@ type ControllerClientBuilder interface {
controller.ControllerClientBuilder
KubeInternalClient(name string) (kclientsetinternal.Interface, error)
KubeInternalClientOrDie(name string) kclientsetinternal.Interface

// Legacy OpenShift client (pkg/client)
DeprecatedOpenshiftClient(name string) (osclient.Interface, error)
DeprecatedOpenshiftClientOrDie(name string) osclient.Interface

// OpenShift clients based on generated internal clientsets
OpenshiftTemplateClient(name string) (templateclient.Interface, error)
AppsInternalClient(name string) (appsclientinternal.Interface, error)
AppsInternalClientOrDie(name string) appsclientinternal.Interface
}

// InitFunc is used to launch a particular controller. It may run additional "should I activate checks".
Expand Down Expand Up @@ -103,6 +110,22 @@ func (b OpenshiftControllerClientBuilder) OpenshiftTemplateClient(name string) (
return templateclient.NewForConfig(clientConfig)
}

func (b OpenshiftControllerClientBuilder) AppsInternalClient(name string) (appsclientinternal.Interface, error) {
clientConfig, err := b.Config(name)
if err != nil {
return nil, err
}
return appsclientinternal.NewForConfig(clientConfig)
}

func (b OpenshiftControllerClientBuilder) AppsInternalClientOrDie(name string) appsclientinternal.Interface {
client, err := b.AppsInternalClient(name)
if err != nil {
glog.Fatal(err)
}
return client
}

// FromKubeInitFunc adapts a kube init func to an openshift one
func FromKubeInitFunc(initFn kubecontroller.InitFunc) InitFunc {
return func(ctx ControllerContext) (bool, error) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@ import (
"k8s.io/kubernetes/pkg/client/retry"
kcontroller "k8s.io/kubernetes/pkg/controller"

osclient "github.com/openshift/origin/pkg/client"
oscache "github.com/openshift/origin/pkg/client/cache"
deployapi "github.com/openshift/origin/pkg/deploy/apis/apps"
appsclient "github.com/openshift/origin/pkg/deploy/generated/internalclientset/typed/apps/internalversion"
deployutil "github.com/openshift/origin/pkg/deploy/util"
)

Expand Down Expand Up @@ -56,7 +56,7 @@ func (e fatalError) Error() string {
// running deployments.
type DeploymentConfigController struct {
// dn provides access to deploymentconfigs.
dn osclient.DeploymentConfigsNamespacer
dn appsclient.DeploymentConfigsGetter
// rn provides access to replication controllers.
rn kcoreclient.ReplicationControllersGetter

Expand Down
6 changes: 3 additions & 3 deletions pkg/deploy/controller/deploymentconfig/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ import (
kcoreinformers "k8s.io/kubernetes/pkg/client/informers/informers_generated/externalversions/core/v1"
kcontroller "k8s.io/kubernetes/pkg/controller"

osclient "github.com/openshift/origin/pkg/client"
deployapi "github.com/openshift/origin/pkg/deploy/apis/apps"
appsclient "github.com/openshift/origin/pkg/deploy/generated/internalclientset"
)

const (
Expand All @@ -34,7 +34,7 @@ const (
func NewDeploymentConfigController(
dcInformer cache.SharedIndexInformer,
rcInformer kcoreinformers.ReplicationControllerInformer,
oc osclient.Interface,
appsClientset appsclient.Interface,
kubeClientset kclientset.Interface,
codec runtime.Codec,
) *DeploymentConfigController {
Expand All @@ -43,7 +43,7 @@ func NewDeploymentConfigController(
recorder := eventBroadcaster.NewRecorder(kapi.Scheme, kclientv1.EventSource{Component: "deploymentconfig-controller"})

c := &DeploymentConfigController{
dn: oc,
dn: appsClientset.Apps(),
rn: kubeClientset.Core(),

queue: workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter()),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import (
kcorelister "k8s.io/kubernetes/pkg/client/listers/core/v1"

"github.com/golang/glog"
osclient "github.com/openshift/origin/pkg/client"
oscache "github.com/openshift/origin/pkg/client/cache"
deployapi "github.com/openshift/origin/pkg/deploy/apis/apps"
appsclient "github.com/openshift/origin/pkg/deploy/generated/internalclientset/typed/apps/internalversion"
)

const (
Expand All @@ -26,7 +26,7 @@ type DeploymentTriggerController struct {
triggerFromImages bool

// dn is used to update deployment configs.
dn osclient.DeploymentConfigsNamespacer
dn appsclient.DeploymentConfigsGetter

// queue contains deployment configs that need to be synced.
queue workqueue.RateLimitingInterface
Expand Down
8 changes: 3 additions & 5 deletions pkg/deploy/controller/generictrigger/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ import (
kcorelisters "k8s.io/kubernetes/pkg/client/listers/core/v1"
kcontroller "k8s.io/kubernetes/pkg/controller"

osclient "github.com/openshift/origin/pkg/client"
deployapi "github.com/openshift/origin/pkg/deploy/apis/apps"
appsclient "github.com/openshift/origin/pkg/deploy/generated/internalclientset"
deployutil "github.com/openshift/origin/pkg/deploy/util"
imageapi "github.com/openshift/origin/pkg/image/apis/image"
)
Expand All @@ -29,12 +29,10 @@ const (
)

// NewDeploymentTriggerController returns a new DeploymentTriggerController.
func NewDeploymentTriggerController(dcInformer, rcInformer, streamInformer cache.SharedIndexInformer, oc osclient.Interface, codec runtime.Codec) *DeploymentTriggerController {
func NewDeploymentTriggerController(dcInformer, rcInformer, streamInformer cache.SharedIndexInformer, appsClientset appsclient.Interface, codec runtime.Codec) *DeploymentTriggerController {
c := &DeploymentTriggerController{
dn: oc,

dn: appsClientset.Apps(),
queue: workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter()),

codec: codec,
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package internalversion

import (
apps "github.com/openshift/origin/pkg/deploy/apis/apps"
)

type DeploymentConfigExpansion interface {
Instantiate(request *apps.DeploymentRequest) (*apps.DeploymentConfig, error)
}

// Instantiate instantiates a new build from build config returning new object or an error
func (c *deploymentConfigs) Instantiate(request *apps.DeploymentRequest) (*apps.DeploymentConfig, error) {
result := &apps.DeploymentConfig{}
resp := c.client.Post().Namespace(c.ns).Resource("deploymentConfigs").Name(request.Name).SubResource("instantiate").Body(request).Do()
var statusCode int
if resp.StatusCode(&statusCode); statusCode == 204 {
return nil, nil
}
err := resp.Into(result)
return result, err
}
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
package internalversion
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Delete this file?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no, clientgen will recreate it :-) without interface...


type DeploymentConfigExpansion interface{}