Skip to content

Commit

Permalink
replace usage of kapi.Scheme.DeepCopy() with .DeepCopy()
Browse files Browse the repository at this point in the history
  • Loading branch information
mfojtik committed Nov 24, 2017
1 parent 88a6a98 commit 4f70f5d
Show file tree
Hide file tree
Showing 31 changed files with 94 additions and 260 deletions.
11 changes: 1 addition & 10 deletions pkg/apps/controller/deployer/deployer_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -490,16 +490,7 @@ func (c *DeploymentController) setDeployerPodsOwnerRef(deployment *v1.Replicatio
continue
}
glog.V(4).Infof("setting ownerRef for pod %s/%s to deployment %s/%s", pod.Namespace, pod.Name, deployment.Namespace, deployment.Name)
objCopy, err := kapi.Scheme.DeepCopy(pod)
if err != nil {
errors = append(errors, err)
continue
}
newPod, ok := objCopy.(*v1.Pod)
if !ok {
errors = append(errors, fmt.Errorf("object %#+v is not a pod", objCopy))
continue
}
newPod := pod.DeepCopy()
newPod.SetOwnerReferences([]metav1.OwnerReference{{
APIVersion: "v1",
Name: deployment.Name,
Expand Down
16 changes: 2 additions & 14 deletions pkg/apps/strategy/support/lifecycle.go
Original file line number Diff line number Diff line change
Expand Up @@ -381,20 +381,8 @@ func makeHookPod(hook *deployapi.LifecycleHook, rc *kapi.ReplicationController,
}

gracePeriod := int64(10)

var podSecurityContextCopy *kapi.PodSecurityContext
if ctx, err := kapi.Scheme.DeepCopy(rc.Spec.Template.Spec.SecurityContext); err != nil {
return nil, fmt.Errorf("unable to copy pod securityContext: %v", err)
} else {
podSecurityContextCopy = ctx.(*kapi.PodSecurityContext)
}

var securityContextCopy *kapi.SecurityContext
if ctx, err := kapi.Scheme.DeepCopy(baseContainer.SecurityContext); err != nil {
return nil, fmt.Errorf("unable to copy securityContext: %v", err)
} else {
securityContextCopy = ctx.(*kapi.SecurityContext)
}
podSecurityContextCopy := rc.Spec.Template.Spec.SecurityContext.DeepCopy()
securityContextCopy := baseContainer.SecurityContext.DeepCopy()

pod := &kapi.Pod{
ObjectMeta: metav1.ObjectMeta{
Expand Down
8 changes: 3 additions & 5 deletions pkg/authorization/rulevalidation/compact_rules_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (

"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/sets"
kapi "k8s.io/kubernetes/pkg/api"

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

for k, tc := range testcases {
rules := tc.Rules
originalRules, err := kapi.Scheme.DeepCopy(tc.Rules)
if err != nil {
t.Errorf("%s: couldn't copy rules: %v", k, err)
continue
originalRules := make([]authorizationapi.PolicyRule, len(tc.Rules))
for i, r := range tc.Rules {
r.DeepCopyInto(&originalRules[i])
}
compacted, err := CompactRules(tc.Rules)
if err != nil {
Expand Down
6 changes: 1 addition & 5 deletions pkg/build/apis/build/validation/validation.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,7 @@ func ValidateBuildUpdate(build *buildapi.Build, older *buildapi.Build) field.Err
}

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

if !kapihelper.Semantic.DeepEqual(build.Spec, olderCopy.Spec) {
Expand Down
12 changes: 4 additions & 8 deletions pkg/build/controller/build/build_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -748,10 +748,9 @@ func (bc *BuildController) createBuildPod(build *buildapi.Build) (*buildUpdate,

// image reference resolution requires a copy of the build
var err error
build, err = buildutil.BuildDeepCopy(build)
if err != nil {
return nil, fmt.Errorf("unable to copy build %s: %v", buildDesc(build), err)
}

// TODO: Rename this to buildCopy
build = build.DeepCopy()

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

patch, err := validation.CreateBuildPatch(build, updatedBuild)
Expand Down
26 changes: 3 additions & 23 deletions pkg/build/util/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,24 +165,8 @@ func VersionForBuild(build *buildapi.Build) int {
return version
}

func BuildDeepCopy(build *buildapi.Build) (*buildapi.Build, error) {
objCopy, err := kapi.Scheme.DeepCopy(build)
if err != nil {
return nil, err
}
copied, ok := objCopy.(*buildapi.Build)
if !ok {
return nil, fmt.Errorf("expected Build, got %#v", objCopy)
}
return copied, nil
}

func CopyApiResourcesToV1Resources(in *kapi.ResourceRequirements) corev1.ResourceRequirements {
copied, err := kapi.Scheme.DeepCopy(in)
if err != nil {
panic(err)
}
in = copied.(*kapi.ResourceRequirements)
in = in.DeepCopy()
out := corev1.ResourceRequirements{}
if err := kapiv1.Convert_api_ResourceRequirements_To_v1_ResourceRequirements(in, &out, nil); err != nil {
panic(err)
Expand All @@ -191,14 +175,10 @@ func CopyApiResourcesToV1Resources(in *kapi.ResourceRequirements) corev1.Resourc
}

func CopyApiEnvVarToV1EnvVar(in []kapi.EnvVar) []corev1.EnvVar {
copied, err := kapi.Scheme.DeepCopy(in)
if err != nil {
panic(err)
}
in = copied.([]kapi.EnvVar)
out := make([]corev1.EnvVar, len(in))
for i := range in {
if err := kapiv1.Convert_api_EnvVar_To_v1_EnvVar(&in[i], &out[i], nil); err != nil {
item := in[i].DeepCopy()
if err := kapiv1.Convert_api_EnvVar_To_v1_EnvVar(item, &out[i], nil); err != nil {
panic(err)
}
}
Expand Down
5 changes: 1 addition & 4 deletions pkg/image/controller/imagestream_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -233,10 +233,7 @@ func TestHandleImageStream(t *testing.T) {

for i, test := range testCases {
fake := imageclient.NewSimpleClientset()
other, err := kapi.Scheme.DeepCopy(test.stream)
if err != nil {
t.Fatal(err)
}
other = test.stream.DeepCopy()

if err := handleImageStream(test.stream, fake.Image(), nil); err != nil {
t.Errorf("%d: unexpected error: %v", i, err)
Expand Down
7 changes: 1 addition & 6 deletions pkg/image/controller/scheduled_image_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import (
utilruntime "k8s.io/apimachinery/pkg/util/runtime"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/util/flowcontrol"
kapi "k8s.io/kubernetes/pkg/api"

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

copy, err := kapi.Scheme.DeepCopy(sharedStream)
if err != nil {
return err
}
stream := copy.(*imageapi.ImageStream)
stream := sharedStream.DeepCopy()
resetScheduledTags(stream)

glog.V(3).Infof("Scheduled import of stream %s/%s...", stream.Namespace, stream.Name)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ import (
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/tools/cache"
"k8s.io/client-go/util/workqueue"
kapi "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/controller"

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

t, err := kapi.Scheme.DeepCopy(image)
if err != nil {
return err
}
newImage := t.(*imageapi.Image)

newImage := image.DeepCopy()
shouldUpdate := false

// Only add new signatures, do not override existing stored signatures as that
Expand Down
12 changes: 4 additions & 8 deletions pkg/image/controller/trigger/image_trigger_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -973,8 +973,7 @@ func updateBuildConfigImages(bc *buildapi.BuildConfig, tagRetriever trigger.TagR
// 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 {
obj, _ = kapi.Scheme.DeepCopy(obj)
bc := obj.(*buildapi.BuildConfig)
bc := obj.DeepCopy()

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

func alterDeploymentConfigFromTriggers(dcWatch *consistentWatch) imageReactorFunc {
return imageReactorFunc(func(obj interface{}, tagRetriever trigger.TagRetriever) error {
obj, _ = kapi.Scheme.DeepCopy(obj)
dc := obj.(*deployapi.DeploymentConfig)
dc := obj.DeepCopy()
updated, resolvable, err := deploymentconfigs.UpdateDeploymentConfigImages(dc, tagRetriever)
if err != nil {
return err
Expand All @@ -1007,8 +1005,7 @@ func alterDeploymentConfigFromTriggers(dcWatch *consistentWatch) imageReactorFun
func alterPodFromTriggers(podWatch *watch.RaceFreeFakeWatcher) imageReactorFunc {
count := 2
return imageReactorFunc(func(obj interface{}, tagRetriever trigger.TagRetriever) error {
obj, _ = kapi.Scheme.DeepCopy(obj)
pod := obj.(*kapi.Pod)
pod := obj.DeepCopy()

updated, err := annotations.UpdateObjectFromImages(pod, kapi.Scheme, tagRetriever)
if err != nil {
Expand Down Expand Up @@ -1227,8 +1224,7 @@ func TestTriggerController(t *testing.T) {
if len(items) == 0 {
continue
}
obj, _ := kapi.Scheme.DeepCopy(items[rnd.Int31n(int32(len(items)))])
bc := obj.(*buildapi.BuildConfig)
bc := items[rnd.Int31n(int32(len(items)))].DeepCopy()
if len(bc.Spec.Triggers) > 0 {
index := rnd.Int31n(int32(len(bc.Spec.Triggers)))
trigger := &bc.Spec.Triggers[index]
Expand Down
6 changes: 1 addition & 5 deletions pkg/image/registry/image/strategy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,7 @@ func TestStrategyPrepareForCreate(t *testing.T) {

seed := int64(2703387474910584091) //rand.Int63()
fuzzed := fuzzImage(t, &original, seed)
obj, err := kapi.Scheme.DeepCopy(fuzzed)
if err != nil {
t.Fatalf("faild to deep copy fuzzed image: %v", err)
}
image := obj.(*imageapi.Image)
image := fuzzed.DeepCopy()

if len(image.Signatures) == 0 {
t.Fatalf("fuzzifier failed to generate signatures")
Expand Down
7 changes: 5 additions & 2 deletions pkg/image/registry/imagestream/strategy_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1108,8 +1108,11 @@ func TestTagsChanged(t *testing.T) {
// we can't reuse the same map twice, it causes both to be modified during updates
var previousTagHistory = test.existingTagHistory
if previousTagHistory != nil {
obj, _ := kapi.Scheme.DeepCopy(previousTagHistory)
previousTagHistory, _ = obj.(map[string]imageapi.TagEventList)
previousTagHistoryCopy := map[string]imageapi.TagEventList{}
for k, v := range previousTagHistory {
previousTagHistory[k] = *v.DeepCopy()
}
previousTagHistory = previousTagHistoryCopy
}
previousStream := &imageapi.ImageStream{
ObjectMeta: metav1.ObjectMeta{
Expand Down
9 changes: 3 additions & 6 deletions pkg/image/registry/imagestreamimport/rest.go
Original file line number Diff line number Diff line change
Expand Up @@ -235,10 +235,7 @@ func (r *REST) Create(ctx apirequest.Context, obj runtime.Object, _ bool) (runti
_, hasAnnotation := stream.Annotations[imageapi.DockerImageRepositoryCheckAnnotation]
nextGeneration := stream.Generation + 1

original, err := kapi.Scheme.DeepCopy(stream)
if err != nil {
return nil, err
}
original := stream.DeepCopy()

// walk the retrieved images, ensuring each one exists in etcd
importedImages := make(map[string]error)
Expand Down Expand Up @@ -330,7 +327,7 @@ func (r *REST) Create(ctx apirequest.Context, obj runtime.Object, _ bool) (runti
} else {
if hasAnnotation && !hasChanges {
glog.V(4).Infof("stream did not change: %#v", stream)
obj, err = original.(*imageapi.ImageStream), nil
obj, err = original, nil
} else {
if glog.V(4) {
glog.V(4).Infof("updating stream %s", diff.ObjectDiff(original, stream))
Expand All @@ -344,7 +341,7 @@ func (r *REST) Create(ctx apirequest.Context, obj runtime.Object, _ bool) (runti
// if we have am admission limit error then record the conditions on the original stream. Quota errors
// will be recorded by the importer.
if quotautil.IsErrorLimitExceeded(err) {
originalStream := original.(*imageapi.ImageStream)
originalStream := original
recordLimitExceededStatus(originalStream, stream, err, now, nextGeneration)
var limitErr error
obj, _, limitErr = r.internalStreams.Update(ctx, stream.Name, rest.DefaultUpdatedObjectInfo(originalStream, kapi.Scheme))
Expand Down
7 changes: 2 additions & 5 deletions pkg/image/trigger/annotations/annotations_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -284,11 +284,8 @@ func TestAnnotationsReactor(t *testing.T) {
for i, test := range testCases {
u := &fakeUpdater{}
r := AnnotationReactor{Copier: kapi.Scheme, Updater: u}
initial, err := kapi.Scheme.DeepCopy(test.obj)
if err != nil {
t.Fatal(err)
}
err = r.ImageChanged(test.obj, fakeTagRetriever(test.tags))
initial := test.obj.DeepCopy()
err := r.ImageChanged(test.obj, fakeTagRetriever(test.tags))
if !kapihelper.Semantic.DeepEqual(initial, test.obj) {
t.Errorf("%d: should not have mutated: %s", i, diff.ObjectReflectDiff(initial, test.obj))
}
Expand Down
7 changes: 2 additions & 5 deletions pkg/image/trigger/buildconfigs/buildconfigs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -247,11 +247,8 @@ func TestBuildConfigReactor(t *testing.T) {
for i, test := range testCases {
instantiator := &instantiator{build: test.response}
r := buildConfigReactor{instantiator: instantiator}
initial, err := kapi.Scheme.DeepCopy(test.obj)
if err != nil {
t.Fatal(err)
}
err = r.ImageChanged(test.obj, fakeTagRetriever(test.tags))
initial := test.obj.DeepCopy()
err := r.ImageChanged(test.obj, fakeTagRetriever(test.tags))
if !kapihelper.Semantic.DeepEqual(initial, test.obj) {
t.Errorf("%d: should not have mutated: %s", i, diff.ObjectReflectDiff(initial, test.obj))
}
Expand Down
6 changes: 1 addition & 5 deletions pkg/image/trigger/deploymentconfigs/deploymentconfigs.go
Original file line number Diff line number Diff line change
Expand Up @@ -228,11 +228,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 {
dc := obj.(*appsapi.DeploymentConfig)
copied, err := kapi.Scheme.DeepCopy(dc)
if err != nil {
return err
}
newDC := copied.(*appsapi.DeploymentConfig)
newDC := dc.DeepCopy()

updated, resolvable, err := UpdateDeploymentConfigImages(newDC, tagRetriever)
if err != nil {
Expand Down
7 changes: 2 additions & 5 deletions pkg/image/trigger/deploymentconfigs/deploymentconfigs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -398,11 +398,8 @@ func TestDeploymentConfigReactor(t *testing.T) {
})
}
r := DeploymentConfigReactor{Client: c.Apps()}
initial, err := kapi.Scheme.DeepCopy(test.obj)
if err != nil {
t.Fatal(err)
}
err = r.ImageChanged(test.obj, fakeTagRetriever(test.tags))
initial := test.obj.DeepCopy()
err := r.ImageChanged(test.obj, fakeTagRetriever(test.tags))
if !kapihelper.Semantic.DeepEqual(initial, test.obj) {
t.Errorf("should not have mutated: %s", diff.ObjectReflectDiff(initial, test.obj))
}
Expand Down
4 changes: 1 addition & 3 deletions pkg/oc/admin/groups/sync/groupsyncer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
clientgotesting "k8s.io/client-go/testing"
kapi "k8s.io/kubernetes/pkg/api"

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

func groupExists(haystack []*userapi.Group, needle *userapi.Group) bool {
for _, actual := range haystack {
t, _ := kapi.Scheme.DeepCopy(actual)
actualGroup := t.(*userapi.Group)
actualGroup := actual.DeepCopy()
delete(actualGroup.Annotations, ldaputil.LDAPSyncTimeAnnotation)

if reflect.DeepEqual(needle, actualGroup) {
Expand Down
7 changes: 1 addition & 6 deletions pkg/oc/cli/cmd/newapp.go
Original file line number Diff line number Diff line change
Expand Up @@ -651,12 +651,7 @@ func setLabels(labels map[string]string, result *newcmd.AppResult) error {

func hasLabel(labels map[string]string, result *newcmd.AppResult) (bool, error) {
for _, obj := range result.List.Items {
objCopy, err := kapi.Scheme.DeepCopy(obj)
if err != nil {
return false, err
}
err = util.AddObjectLabelsWithFlags(objCopy.(runtime.Object), labels, util.ErrorOnExistingDstKey)
if err != nil {
if err := util.AddObjectLabelsWithFlags(obj.DeepCopyObject(), labels, util.ErrorOnExistingDstKey); err != nil {
return true, nil
}
}
Expand Down
7 changes: 2 additions & 5 deletions pkg/quota/admission/clusterresourcequota/accessor.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,11 +81,8 @@ func (e *clusterQuotaAccessor) UpdateQuotaStatus(newQuota *kapi.ResourceQuota) e

// update per namespace totals
oldNamespaceTotals, _ := clusterQuota.Status.Namespaces.Get(newQuota.Namespace)
namespaceTotalCopy, err := kapi.Scheme.DeepCopy(oldNamespaceTotals)
if err != nil {
return err
}
newNamespaceTotals := namespaceTotalCopy.(kapi.ResourceQuotaStatus)
namespaceTotalCopy := oldNamespaceTotals.DeepCopy()
newNamespaceTotals := *namespaceTotalCopy
newNamespaceTotals.Used = utilquota.Add(oldNamespaceTotals.Used, usageDiff)
clusterQuota.Status.Namespaces.Insert(newQuota.Namespace, newNamespaceTotals)

Expand Down
Loading

0 comments on commit 4f70f5d

Please sign in to comment.