Skip to content

Commit 4f70f5d

Browse files
committed
replace usage of kapi.Scheme.DeepCopy() with .DeepCopy()
1 parent 88a6a98 commit 4f70f5d

File tree

31 files changed

+94
-260
lines changed

31 files changed

+94
-260
lines changed

pkg/apps/controller/deployer/deployer_controller.go

+1-10
Original file line numberDiff line numberDiff line change
@@ -490,16 +490,7 @@ func (c *DeploymentController) setDeployerPodsOwnerRef(deployment *v1.Replicatio
490490
continue
491491
}
492492
glog.V(4).Infof("setting ownerRef for pod %s/%s to deployment %s/%s", pod.Namespace, pod.Name, deployment.Namespace, deployment.Name)
493-
objCopy, err := kapi.Scheme.DeepCopy(pod)
494-
if err != nil {
495-
errors = append(errors, err)
496-
continue
497-
}
498-
newPod, ok := objCopy.(*v1.Pod)
499-
if !ok {
500-
errors = append(errors, fmt.Errorf("object %#+v is not a pod", objCopy))
501-
continue
502-
}
493+
newPod := pod.DeepCopy()
503494
newPod.SetOwnerReferences([]metav1.OwnerReference{{
504495
APIVersion: "v1",
505496
Name: deployment.Name,

pkg/apps/strategy/support/lifecycle.go

+2-14
Original file line numberDiff line numberDiff line change
@@ -381,20 +381,8 @@ func makeHookPod(hook *deployapi.LifecycleHook, rc *kapi.ReplicationController,
381381
}
382382

383383
gracePeriod := int64(10)
384-
385-
var podSecurityContextCopy *kapi.PodSecurityContext
386-
if ctx, err := kapi.Scheme.DeepCopy(rc.Spec.Template.Spec.SecurityContext); err != nil {
387-
return nil, fmt.Errorf("unable to copy pod securityContext: %v", err)
388-
} else {
389-
podSecurityContextCopy = ctx.(*kapi.PodSecurityContext)
390-
}
391-
392-
var securityContextCopy *kapi.SecurityContext
393-
if ctx, err := kapi.Scheme.DeepCopy(baseContainer.SecurityContext); err != nil {
394-
return nil, fmt.Errorf("unable to copy securityContext: %v", err)
395-
} else {
396-
securityContextCopy = ctx.(*kapi.SecurityContext)
397-
}
384+
podSecurityContextCopy := rc.Spec.Template.Spec.SecurityContext.DeepCopy()
385+
securityContextCopy := baseContainer.SecurityContext.DeepCopy()
398386

399387
pod := &kapi.Pod{
400388
ObjectMeta: metav1.ObjectMeta{

pkg/authorization/rulevalidation/compact_rules_test.go

+3-5
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77

88
"k8s.io/apimachinery/pkg/runtime/schema"
99
"k8s.io/apimachinery/pkg/util/sets"
10-
kapi "k8s.io/kubernetes/pkg/api"
1110

1211
authorizationapi "github.com/openshift/origin/pkg/authorization/apis/authorization"
1312
)
@@ -106,10 +105,9 @@ func TestCompactRules(t *testing.T) {
106105

107106
for k, tc := range testcases {
108107
rules := tc.Rules
109-
originalRules, err := kapi.Scheme.DeepCopy(tc.Rules)
110-
if err != nil {
111-
t.Errorf("%s: couldn't copy rules: %v", k, err)
112-
continue
108+
originalRules := make([]authorizationapi.PolicyRule, len(tc.Rules))
109+
for i, r := range tc.Rules {
110+
r.DeepCopyInto(&originalRules[i])
113111
}
114112
compacted, err := CompactRules(tc.Rules)
115113
if err != nil {

pkg/build/apis/build/validation/validation.go

+1-5
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,7 @@ func ValidateBuildUpdate(build *buildapi.Build, older *buildapi.Build) field.Err
4444
}
4545

4646
// lie about the old build's pushsecret value so we can allow it to be updated.
47-
olderCopy, err := buildutil.BuildDeepCopy(older)
48-
if err != nil {
49-
glog.V(2).Infof("Error copying build for update validation: %v", err)
50-
allErrs = append(allErrs, field.InternalError(field.NewPath(""), fmt.Errorf("Unable to copy build for update validation: %v", err)))
51-
}
47+
olderCopy := older.DeepCopy()
5248
olderCopy.Spec.Output.PushSecret = build.Spec.Output.PushSecret
5349

5450
if !kapihelper.Semantic.DeepEqual(build.Spec, olderCopy.Spec) {

pkg/build/controller/build/build_controller.go

+4-8
Original file line numberDiff line numberDiff line change
@@ -748,10 +748,9 @@ func (bc *BuildController) createBuildPod(build *buildapi.Build) (*buildUpdate,
748748

749749
// image reference resolution requires a copy of the build
750750
var err error
751-
build, err = buildutil.BuildDeepCopy(build)
752-
if err != nil {
753-
return nil, fmt.Errorf("unable to copy build %s: %v", buildDesc(build), err)
754-
}
751+
752+
// TODO: Rename this to buildCopy
753+
build = build.DeepCopy()
755754

756755
// Resolve all Docker image references to valid values.
757756
if err := bc.resolveImageReferences(build, update); err != nil {
@@ -1085,10 +1084,7 @@ func (bc *BuildController) handleBuildConfig(bcNamespace string, bcName string)
10851084
// and applies that patch using the REST client
10861085
func (bc *BuildController) patchBuild(build *buildapi.Build, update *buildUpdate) (*buildapi.Build, error) {
10871086
// Create a patch using the buildUpdate object
1088-
updatedBuild, err := buildutil.BuildDeepCopy(build)
1089-
if err != nil {
1090-
return nil, fmt.Errorf("cannot create a deep copy of build %s: %v", buildDesc(build), err)
1091-
}
1087+
updatedBuild := build.DeepCopy()
10921088
update.apply(updatedBuild)
10931089

10941090
patch, err := validation.CreateBuildPatch(build, updatedBuild)

pkg/build/util/util.go

+3-23
Original file line numberDiff line numberDiff line change
@@ -165,24 +165,8 @@ func VersionForBuild(build *buildapi.Build) int {
165165
return version
166166
}
167167

168-
func BuildDeepCopy(build *buildapi.Build) (*buildapi.Build, error) {
169-
objCopy, err := kapi.Scheme.DeepCopy(build)
170-
if err != nil {
171-
return nil, err
172-
}
173-
copied, ok := objCopy.(*buildapi.Build)
174-
if !ok {
175-
return nil, fmt.Errorf("expected Build, got %#v", objCopy)
176-
}
177-
return copied, nil
178-
}
179-
180168
func CopyApiResourcesToV1Resources(in *kapi.ResourceRequirements) corev1.ResourceRequirements {
181-
copied, err := kapi.Scheme.DeepCopy(in)
182-
if err != nil {
183-
panic(err)
184-
}
185-
in = copied.(*kapi.ResourceRequirements)
169+
in = in.DeepCopy()
186170
out := corev1.ResourceRequirements{}
187171
if err := kapiv1.Convert_api_ResourceRequirements_To_v1_ResourceRequirements(in, &out, nil); err != nil {
188172
panic(err)
@@ -191,14 +175,10 @@ func CopyApiResourcesToV1Resources(in *kapi.ResourceRequirements) corev1.Resourc
191175
}
192176

193177
func CopyApiEnvVarToV1EnvVar(in []kapi.EnvVar) []corev1.EnvVar {
194-
copied, err := kapi.Scheme.DeepCopy(in)
195-
if err != nil {
196-
panic(err)
197-
}
198-
in = copied.([]kapi.EnvVar)
199178
out := make([]corev1.EnvVar, len(in))
200179
for i := range in {
201-
if err := kapiv1.Convert_api_EnvVar_To_v1_EnvVar(&in[i], &out[i], nil); err != nil {
180+
item := in[i].DeepCopy()
181+
if err := kapiv1.Convert_api_EnvVar_To_v1_EnvVar(item, &out[i], nil); err != nil {
202182
panic(err)
203183
}
204184
}

pkg/image/controller/imagestream_controller_test.go

+1-4
Original file line numberDiff line numberDiff line change
@@ -233,10 +233,7 @@ func TestHandleImageStream(t *testing.T) {
233233

234234
for i, test := range testCases {
235235
fake := imageclient.NewSimpleClientset()
236-
other, err := kapi.Scheme.DeepCopy(test.stream)
237-
if err != nil {
238-
t.Fatal(err)
239-
}
236+
other = test.stream.DeepCopy()
240237

241238
if err := handleImageStream(test.stream, fake.Image(), nil); err != nil {
242239
t.Errorf("%d: unexpected error: %v", i, err)

pkg/image/controller/scheduled_image_controller.go

+1-6
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import (
99
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
1010
"k8s.io/client-go/tools/cache"
1111
"k8s.io/client-go/util/flowcontrol"
12-
kapi "k8s.io/kubernetes/pkg/api"
1312

1413
imageapi "github.com/openshift/origin/pkg/image/apis/image"
1514
imageclient "github.com/openshift/origin/pkg/image/generated/internalclientset/typed/image/internalversion"
@@ -169,11 +168,7 @@ func (s *ScheduledImageStreamController) syncTimedByName(namespace, name string)
169168
return ErrNotImportable
170169
}
171170

172-
copy, err := kapi.Scheme.DeepCopy(sharedStream)
173-
if err != nil {
174-
return err
175-
}
176-
stream := copy.(*imageapi.ImageStream)
171+
stream := sharedStream.DeepCopy()
177172
resetScheduledTags(stream)
178173

179174
glog.V(3).Infof("Scheduled import of stream %s/%s...", stream.Namespace, stream.Name)

pkg/image/controller/signature/signature_import_controller.go

+1-7
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"k8s.io/apimachinery/pkg/util/wait"
1212
"k8s.io/client-go/tools/cache"
1313
"k8s.io/client-go/util/workqueue"
14-
kapi "k8s.io/kubernetes/pkg/api"
1514
"k8s.io/kubernetes/pkg/controller"
1615

1716
imageapi "github.com/openshift/origin/pkg/image/apis/image"
@@ -154,12 +153,7 @@ func (s *SignatureImportController) syncImageSignatures(key string) error {
154153
return nil
155154
}
156155

157-
t, err := kapi.Scheme.DeepCopy(image)
158-
if err != nil {
159-
return err
160-
}
161-
newImage := t.(*imageapi.Image)
162-
156+
newImage := image.DeepCopy()
163157
shouldUpdate := false
164158

165159
// Only add new signatures, do not override existing stored signatures as that

pkg/image/controller/trigger/image_trigger_controller_test.go

+4-8
Original file line numberDiff line numberDiff line change
@@ -973,8 +973,7 @@ func updateBuildConfigImages(bc *buildapi.BuildConfig, tagRetriever trigger.TagR
973973
// changes passed to it and send it back on the watch as a modification.
974974
func alterBuildConfigFromTriggers(bcWatch *consistentWatch) imageReactorFunc {
975975
return imageReactorFunc(func(obj interface{}, tagRetriever trigger.TagRetriever) error {
976-
obj, _ = kapi.Scheme.DeepCopy(obj)
977-
bc := obj.(*buildapi.BuildConfig)
976+
bc := obj.DeepCopy()
978977

979978
updated, err := updateBuildConfigImages(bc, tagRetriever)
980979
if err != nil {
@@ -989,8 +988,7 @@ func alterBuildConfigFromTriggers(bcWatch *consistentWatch) imageReactorFunc {
989988

990989
func alterDeploymentConfigFromTriggers(dcWatch *consistentWatch) imageReactorFunc {
991990
return imageReactorFunc(func(obj interface{}, tagRetriever trigger.TagRetriever) error {
992-
obj, _ = kapi.Scheme.DeepCopy(obj)
993-
dc := obj.(*deployapi.DeploymentConfig)
991+
dc := obj.DeepCopy()
994992
updated, resolvable, err := deploymentconfigs.UpdateDeploymentConfigImages(dc, tagRetriever)
995993
if err != nil {
996994
return err
@@ -1007,8 +1005,7 @@ func alterDeploymentConfigFromTriggers(dcWatch *consistentWatch) imageReactorFun
10071005
func alterPodFromTriggers(podWatch *watch.RaceFreeFakeWatcher) imageReactorFunc {
10081006
count := 2
10091007
return imageReactorFunc(func(obj interface{}, tagRetriever trigger.TagRetriever) error {
1010-
obj, _ = kapi.Scheme.DeepCopy(obj)
1011-
pod := obj.(*kapi.Pod)
1008+
pod := obj.DeepCopy()
10121009

10131010
updated, err := annotations.UpdateObjectFromImages(pod, kapi.Scheme, tagRetriever)
10141011
if err != nil {
@@ -1227,8 +1224,7 @@ func TestTriggerController(t *testing.T) {
12271224
if len(items) == 0 {
12281225
continue
12291226
}
1230-
obj, _ := kapi.Scheme.DeepCopy(items[rnd.Int31n(int32(len(items)))])
1231-
bc := obj.(*buildapi.BuildConfig)
1227+
bc := items[rnd.Int31n(int32(len(items)))].DeepCopy()
12321228
if len(bc.Spec.Triggers) > 0 {
12331229
index := rnd.Int31n(int32(len(bc.Spec.Triggers)))
12341230
trigger := &bc.Spec.Triggers[index]

pkg/image/registry/image/strategy_test.go

+1-5
Original file line numberDiff line numberDiff line change
@@ -68,11 +68,7 @@ func TestStrategyPrepareForCreate(t *testing.T) {
6868

6969
seed := int64(2703387474910584091) //rand.Int63()
7070
fuzzed := fuzzImage(t, &original, seed)
71-
obj, err := kapi.Scheme.DeepCopy(fuzzed)
72-
if err != nil {
73-
t.Fatalf("faild to deep copy fuzzed image: %v", err)
74-
}
75-
image := obj.(*imageapi.Image)
71+
image := fuzzed.DeepCopy()
7672

7773
if len(image.Signatures) == 0 {
7874
t.Fatalf("fuzzifier failed to generate signatures")

pkg/image/registry/imagestream/strategy_test.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -1108,8 +1108,11 @@ func TestTagsChanged(t *testing.T) {
11081108
// we can't reuse the same map twice, it causes both to be modified during updates
11091109
var previousTagHistory = test.existingTagHistory
11101110
if previousTagHistory != nil {
1111-
obj, _ := kapi.Scheme.DeepCopy(previousTagHistory)
1112-
previousTagHistory, _ = obj.(map[string]imageapi.TagEventList)
1111+
previousTagHistoryCopy := map[string]imageapi.TagEventList{}
1112+
for k, v := range previousTagHistory {
1113+
previousTagHistory[k] = *v.DeepCopy()
1114+
}
1115+
previousTagHistory = previousTagHistoryCopy
11131116
}
11141117
previousStream := &imageapi.ImageStream{
11151118
ObjectMeta: metav1.ObjectMeta{

pkg/image/registry/imagestreamimport/rest.go

+3-6
Original file line numberDiff line numberDiff line change
@@ -235,10 +235,7 @@ func (r *REST) Create(ctx apirequest.Context, obj runtime.Object, _ bool) (runti
235235
_, hasAnnotation := stream.Annotations[imageapi.DockerImageRepositoryCheckAnnotation]
236236
nextGeneration := stream.Generation + 1
237237

238-
original, err := kapi.Scheme.DeepCopy(stream)
239-
if err != nil {
240-
return nil, err
241-
}
238+
original := stream.DeepCopy()
242239

243240
// walk the retrieved images, ensuring each one exists in etcd
244241
importedImages := make(map[string]error)
@@ -330,7 +327,7 @@ func (r *REST) Create(ctx apirequest.Context, obj runtime.Object, _ bool) (runti
330327
} else {
331328
if hasAnnotation && !hasChanges {
332329
glog.V(4).Infof("stream did not change: %#v", stream)
333-
obj, err = original.(*imageapi.ImageStream), nil
330+
obj, err = original, nil
334331
} else {
335332
if glog.V(4) {
336333
glog.V(4).Infof("updating stream %s", diff.ObjectDiff(original, stream))
@@ -344,7 +341,7 @@ func (r *REST) Create(ctx apirequest.Context, obj runtime.Object, _ bool) (runti
344341
// if we have am admission limit error then record the conditions on the original stream. Quota errors
345342
// will be recorded by the importer.
346343
if quotautil.IsErrorLimitExceeded(err) {
347-
originalStream := original.(*imageapi.ImageStream)
344+
originalStream := original
348345
recordLimitExceededStatus(originalStream, stream, err, now, nextGeneration)
349346
var limitErr error
350347
obj, _, limitErr = r.internalStreams.Update(ctx, stream.Name, rest.DefaultUpdatedObjectInfo(originalStream, kapi.Scheme))

pkg/image/trigger/annotations/annotations_test.go

+2-5
Original file line numberDiff line numberDiff line change
@@ -284,11 +284,8 @@ func TestAnnotationsReactor(t *testing.T) {
284284
for i, test := range testCases {
285285
u := &fakeUpdater{}
286286
r := AnnotationReactor{Copier: kapi.Scheme, Updater: u}
287-
initial, err := kapi.Scheme.DeepCopy(test.obj)
288-
if err != nil {
289-
t.Fatal(err)
290-
}
291-
err = r.ImageChanged(test.obj, fakeTagRetriever(test.tags))
287+
initial := test.obj.DeepCopy()
288+
err := r.ImageChanged(test.obj, fakeTagRetriever(test.tags))
292289
if !kapihelper.Semantic.DeepEqual(initial, test.obj) {
293290
t.Errorf("%d: should not have mutated: %s", i, diff.ObjectReflectDiff(initial, test.obj))
294291
}

pkg/image/trigger/buildconfigs/buildconfigs_test.go

+2-5
Original file line numberDiff line numberDiff line change
@@ -247,11 +247,8 @@ func TestBuildConfigReactor(t *testing.T) {
247247
for i, test := range testCases {
248248
instantiator := &instantiator{build: test.response}
249249
r := buildConfigReactor{instantiator: instantiator}
250-
initial, err := kapi.Scheme.DeepCopy(test.obj)
251-
if err != nil {
252-
t.Fatal(err)
253-
}
254-
err = r.ImageChanged(test.obj, fakeTagRetriever(test.tags))
250+
initial := test.obj.DeepCopy()
251+
err := r.ImageChanged(test.obj, fakeTagRetriever(test.tags))
255252
if !kapihelper.Semantic.DeepEqual(initial, test.obj) {
256253
t.Errorf("%d: should not have mutated: %s", i, diff.ObjectReflectDiff(initial, test.obj))
257254
}

pkg/image/trigger/deploymentconfigs/deploymentconfigs.go

+1-5
Original file line numberDiff line numberDiff line change
@@ -228,11 +228,7 @@ func UpdateDeploymentConfigImages(dc *appsapi.DeploymentConfig, tagRetriever tri
228228
// ImageChanged is passed a deployment config and a set of changes.
229229
func (r *DeploymentConfigReactor) ImageChanged(obj interface{}, tagRetriever trigger.TagRetriever) error {
230230
dc := obj.(*appsapi.DeploymentConfig)
231-
copied, err := kapi.Scheme.DeepCopy(dc)
232-
if err != nil {
233-
return err
234-
}
235-
newDC := copied.(*appsapi.DeploymentConfig)
231+
newDC := dc.DeepCopy()
236232

237233
updated, resolvable, err := UpdateDeploymentConfigImages(newDC, tagRetriever)
238234
if err != nil {

pkg/image/trigger/deploymentconfigs/deploymentconfigs_test.go

+2-5
Original file line numberDiff line numberDiff line change
@@ -398,11 +398,8 @@ func TestDeploymentConfigReactor(t *testing.T) {
398398
})
399399
}
400400
r := DeploymentConfigReactor{Client: c.Apps()}
401-
initial, err := kapi.Scheme.DeepCopy(test.obj)
402-
if err != nil {
403-
t.Fatal(err)
404-
}
405-
err = r.ImageChanged(test.obj, fakeTagRetriever(test.tags))
401+
initial := test.obj.DeepCopy()
402+
err := r.ImageChanged(test.obj, fakeTagRetriever(test.tags))
406403
if !kapihelper.Semantic.DeepEqual(initial, test.obj) {
407404
t.Errorf("should not have mutated: %s", diff.ObjectReflectDiff(initial, test.obj))
408405
}

pkg/oc/admin/groups/sync/groupsyncer_test.go

+1-3
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import (
1212
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1313
"k8s.io/apimachinery/pkg/runtime"
1414
clientgotesting "k8s.io/client-go/testing"
15-
kapi "k8s.io/kubernetes/pkg/api"
1615

1716
"github.com/openshift/origin/pkg/auth/ldaputil"
1817
"github.com/openshift/origin/pkg/oc/admin/groups/sync/interfaces"
@@ -243,8 +242,7 @@ func checkClientForGroups(tc *userfakeclient.Clientset, expectedGroups []*userap
243242

244243
func groupExists(haystack []*userapi.Group, needle *userapi.Group) bool {
245244
for _, actual := range haystack {
246-
t, _ := kapi.Scheme.DeepCopy(actual)
247-
actualGroup := t.(*userapi.Group)
245+
actualGroup := actual.DeepCopy()
248246
delete(actualGroup.Annotations, ldaputil.LDAPSyncTimeAnnotation)
249247

250248
if reflect.DeepEqual(needle, actualGroup) {

pkg/oc/cli/cmd/newapp.go

+1-6
Original file line numberDiff line numberDiff line change
@@ -651,12 +651,7 @@ func setLabels(labels map[string]string, result *newcmd.AppResult) error {
651651

652652
func hasLabel(labels map[string]string, result *newcmd.AppResult) (bool, error) {
653653
for _, obj := range result.List.Items {
654-
objCopy, err := kapi.Scheme.DeepCopy(obj)
655-
if err != nil {
656-
return false, err
657-
}
658-
err = util.AddObjectLabelsWithFlags(objCopy.(runtime.Object), labels, util.ErrorOnExistingDstKey)
659-
if err != nil {
654+
if err := util.AddObjectLabelsWithFlags(obj.DeepCopyObject(), labels, util.ErrorOnExistingDstKey); err != nil {
660655
return true, nil
661656
}
662657
}

pkg/quota/admission/clusterresourcequota/accessor.go

+2-5
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,8 @@ func (e *clusterQuotaAccessor) UpdateQuotaStatus(newQuota *kapi.ResourceQuota) e
8181

8282
// update per namespace totals
8383
oldNamespaceTotals, _ := clusterQuota.Status.Namespaces.Get(newQuota.Namespace)
84-
namespaceTotalCopy, err := kapi.Scheme.DeepCopy(oldNamespaceTotals)
85-
if err != nil {
86-
return err
87-
}
88-
newNamespaceTotals := namespaceTotalCopy.(kapi.ResourceQuotaStatus)
84+
namespaceTotalCopy := oldNamespaceTotals.DeepCopy()
85+
newNamespaceTotals := *namespaceTotalCopy
8986
newNamespaceTotals.Used = utilquota.Add(oldNamespaceTotals.Used, usageDiff)
9087
clusterQuota.Status.Namespaces.Insert(newQuota.Namespace, newNamespaceTotals)
9188

0 commit comments

Comments
 (0)