Skip to content

Commit

Permalink
interesting: switch image change reactor to use runtime.Object
Browse files Browse the repository at this point in the history
  • Loading branch information
mfojtik committed Nov 23, 2017
1 parent 8ec53da commit e8e7b56
Show file tree
Hide file tree
Showing 8 changed files with 26 additions and 25 deletions.
5 changes: 1 addition & 4 deletions pkg/build/controller/build/build_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -371,10 +371,7 @@ func TestHandleBuild(t *testing.T) {
t.Errorf("%s: did not get an update. Expected: %v", tc.name, tc.expectUpdate)
return
}
expectedBuild, err := buildutil.BuildDeepCopy(tc.build)
if err != nil {
t.Fatalf("unexpected: %v", err)
}
expectedBuild := tc.build.DeepCopy()
tc.expectUpdate.apply(expectedBuild)

// For start/completion/duration fields, simply validate that they are set/not set
Expand Down
2 changes: 1 addition & 1 deletion pkg/image/controller/imagestream_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ func TestHandleImageStream(t *testing.T) {

for i, test := range testCases {
fake := imageclient.NewSimpleClientset()
other = test.stream.DeepCopy()
other := test.stream.DeepCopy()

if err := handleImageStream(test.stream, fake.Image(), nil); err != nil {
t.Errorf("%d: unexpected error: %v", i, err)
Expand Down
3 changes: 2 additions & 1 deletion pkg/image/controller/trigger/image_trigger_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"github.com/golang/glog"

"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/apimachinery/pkg/util/wait"
Expand Down Expand Up @@ -373,5 +374,5 @@ func (c *TriggerController) syncResource(key string) error {
return nil
}

return source.Reactor.ImageChanged(obj, c.tagRetriever)
return source.Reactor.ImageChanged(obj.(runtime.Object), c.tagRetriever)
}
28 changes: 14 additions & 14 deletions pkg/image/controller/trigger/image_trigger_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -811,13 +811,13 @@ type fakeImageReactor struct {
err error
}

type imageReactorFunc func(obj interface{}, tagRetriever trigger.TagRetriever) error
type imageReactorFunc func(obj runtime.Object, tagRetriever trigger.TagRetriever) error

func (fn imageReactorFunc) ImageChanged(obj interface{}, tagRetriever trigger.TagRetriever) error {
func (fn imageReactorFunc) ImageChanged(obj runtime.Object, tagRetriever trigger.TagRetriever) error {
return fn(obj, tagRetriever)
}

func (r *fakeImageReactor) ImageChanged(obj interface{}, tagRetriever trigger.TagRetriever) error {
func (r *fakeImageReactor) ImageChanged(obj runtime.Object, tagRetriever trigger.TagRetriever) error {
r.lock.Lock()
defer r.lock.Unlock()
err := r.err
Expand Down Expand Up @@ -972,10 +972,9 @@ func updateBuildConfigImages(bc *buildapi.BuildConfig, tagRetriever trigger.TagR
// alterBuildConfigFromTriggers will alter the incoming build config based on the trigger
// changes passed to it and send it back on the watch as a modification.
func alterBuildConfigFromTriggers(bcWatch *consistentWatch) imageReactorFunc {
return imageReactorFunc(func(obj interface{}, tagRetriever trigger.TagRetriever) error {
bc := obj.DeepCopy()

updated, err := updateBuildConfigImages(bc, tagRetriever)
return imageReactorFunc(func(obj runtime.Object, tagRetriever trigger.TagRetriever) error {
bc := obj.DeepCopyObject()
updated, err := updateBuildConfigImages(bc.(*buildapi.BuildConfig), tagRetriever)
if err != nil {
return err
}
Expand All @@ -987,9 +986,9 @@ func alterBuildConfigFromTriggers(bcWatch *consistentWatch) imageReactorFunc {
}

func alterDeploymentConfigFromTriggers(dcWatch *consistentWatch) imageReactorFunc {
return imageReactorFunc(func(obj interface{}, tagRetriever trigger.TagRetriever) error {
dc := obj.DeepCopy()
updated, resolvable, err := deploymentconfigs.UpdateDeploymentConfigImages(dc, tagRetriever)
return imageReactorFunc(func(obj runtime.Object, tagRetriever trigger.TagRetriever) error {
dc := obj.DeepCopyObject()
updated, resolvable, err := deploymentconfigs.UpdateDeploymentConfigImages(dc.(*deployapi.DeploymentConfig), tagRetriever)
if err != nil {
return err
}
Expand All @@ -1004,10 +1003,10 @@ func alterDeploymentConfigFromTriggers(dcWatch *consistentWatch) imageReactorFun
// changes passed to it and send it back on the watch as a modification.
func alterPodFromTriggers(podWatch *watch.RaceFreeFakeWatcher) imageReactorFunc {
count := 2
return imageReactorFunc(func(obj interface{}, tagRetriever trigger.TagRetriever) error {
pod := obj.DeepCopy()
return imageReactorFunc(func(obj runtime.Object, tagRetriever trigger.TagRetriever) error {
pod := obj.DeepCopyObject()

updated, err := annotations.UpdateObjectFromImages(pod, kapi.Scheme, tagRetriever)
updated, err := annotations.UpdateObjectFromImages(pod.(*kapi.Pod), kapi.Scheme, tagRetriever)
if err != nil {
return err
}
Expand Down Expand Up @@ -1224,7 +1223,8 @@ func TestTriggerController(t *testing.T) {
if len(items) == 0 {
continue
}
bc := items[rnd.Int31n(int32(len(items)))].DeepCopy()
originalBc := items[rnd.Int31n(int32(len(items)))].(*buildapi.BuildConfig)
bc := originalBc.DeepCopy()
if len(bc.Spec.Triggers) > 0 {
index := rnd.Int31n(int32(len(bc.Spec.Triggers)))
trigger := &bc.Spec.Triggers[index]
Expand Down
4 changes: 2 additions & 2 deletions pkg/image/trigger/annotations/annotations.go
Original file line number Diff line number Diff line change
Expand Up @@ -261,8 +261,8 @@ type AnnotationReactor struct {
Copier runtime.ObjectCopier
}

func (r *AnnotationReactor) ImageChanged(obj interface{}, tagRetriever trigger.TagRetriever) error {
changed, err := UpdateObjectFromImages(obj.(runtime.Object), r.Copier, tagRetriever)
func (r *AnnotationReactor) ImageChanged(obj runtime.Object, tagRetriever trigger.TagRetriever) error {
changed, err := UpdateObjectFromImages(obj, r.Copier, tagRetriever)
if err != nil {
return err
}
Expand Down
3 changes: 2 additions & 1 deletion pkg/image/trigger/buildconfigs/buildconfigs.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (

clientv1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
v1core "k8s.io/client-go/kubernetes/typed/core/v1"
"k8s.io/client-go/rest"
Expand Down Expand Up @@ -131,7 +132,7 @@ func NewBuildConfigReactor(instantiator BuildConfigInstantiator, restclient rest

// ImageChanged is passed a build config and a set of changes and updates the object if
// necessary.
func (r *buildConfigReactor) ImageChanged(obj interface{}, tagRetriever trigger.TagRetriever) error {
func (r *buildConfigReactor) ImageChanged(obj runtime.Object, tagRetriever trigger.TagRetriever) error {
bc := obj.(*buildapi.BuildConfig)

var request *buildapi.BuildRequest
Expand Down
3 changes: 2 additions & 1 deletion pkg/image/trigger/deploymentconfigs/deploymentconfigs.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (

"github.com/golang/glog"

"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/tools/cache"
kapi "k8s.io/kubernetes/pkg/api"

Expand Down Expand Up @@ -226,7 +227,7 @@ func UpdateDeploymentConfigImages(dc *appsapi.DeploymentConfig, tagRetriever tri
}

// ImageChanged is passed a deployment config and a set of changes.
func (r *DeploymentConfigReactor) ImageChanged(obj interface{}, tagRetriever trigger.TagRetriever) error {
func (r *DeploymentConfigReactor) ImageChanged(obj runtime.Object, tagRetriever trigger.TagRetriever) error {
dc := obj.(*appsapi.DeploymentConfig)
newDC := dc.DeepCopy()

Expand Down
3 changes: 2 additions & 1 deletion pkg/image/trigger/interfaces.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package trigger

import (
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/tools/cache"

"github.com/openshift/origin/pkg/image/apis/image/v1/trigger"
Expand All @@ -27,5 +28,5 @@ type TagRetriever interface {
}

type ImageReactor interface {
ImageChanged(obj interface{}, tagRetriever TagRetriever) error
ImageChanged(obj runtime.Object, tagRetriever TagRetriever) error
}

0 comments on commit e8e7b56

Please sign in to comment.