diff --git a/federation/pkg/federation-controller/daemonset/BUILD b/federation/pkg/federation-controller/daemonset/BUILD index 624ca2b24af..36a0f65d243 100644 --- a/federation/pkg/federation-controller/daemonset/BUILD +++ b/federation/pkg/federation-controller/daemonset/BUILD @@ -28,7 +28,6 @@ go_library( "//pkg/client/clientset_generated/release_1_5:go_default_library", "//pkg/client/record:go_default_library", "//pkg/controller:go_default_library", - "//pkg/conversion:go_default_library", "//pkg/runtime:go_default_library", "//pkg/types:go_default_library", "//pkg/util/flowcontrol:go_default_library", diff --git a/federation/pkg/federation-controller/daemonset/daemonset_controller.go b/federation/pkg/federation-controller/daemonset/daemonset_controller.go index f6e62ac3529..01bf7efebd7 100644 --- a/federation/pkg/federation-controller/daemonset/daemonset_controller.go +++ b/federation/pkg/federation-controller/daemonset/daemonset_controller.go @@ -34,7 +34,6 @@ import ( kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/controller" - "k8s.io/kubernetes/pkg/conversion" pkgruntime "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/types" "k8s.io/kubernetes/pkg/util/flowcontrol" @@ -350,7 +349,7 @@ func (daemonsetcontroller *DaemonSetController) reconcileDaemonSet(namespace str // Not federated daemonset, ignoring. return } - baseDaemonSetObj, err := conversion.NewCloner().DeepCopy(baseDaemonSetObjFromStore) + baseDaemonSetObj, err := api.Scheme.DeepCopy(baseDaemonSetObjFromStore) baseDaemonSet, ok := baseDaemonSetObj.(*extensionsv1.DaemonSet) if err != nil || !ok { glog.Errorf("Error in retrieving obj %s from store: %v, %v", daemonsetName, ok, err) @@ -400,7 +399,7 @@ func (daemonsetcontroller *DaemonSetController) reconcileDaemonSet(namespace str // Do not modify. Otherwise make a deep copy. desiredDaemonSet := &extensionsv1.DaemonSet{ ObjectMeta: util.DeepCopyRelevantObjectMeta(baseDaemonSet.ObjectMeta), - Spec: util.DeepCopyApiTypeOrPanic(baseDaemonSet.Spec).(extensionsv1.DaemonSetSpec), + Spec: *(util.DeepCopyApiTypeOrPanic(&baseDaemonSet.Spec).(*extensionsv1.DaemonSetSpec)), } if !found { diff --git a/federation/pkg/federation-controller/deployment/BUILD b/federation/pkg/federation-controller/deployment/BUILD index ec6684394c6..62fc0e6fe9b 100644 --- a/federation/pkg/federation-controller/deployment/BUILD +++ b/federation/pkg/federation-controller/deployment/BUILD @@ -31,7 +31,6 @@ go_library( "//pkg/client/clientset_generated/release_1_5:go_default_library", "//pkg/client/record:go_default_library", "//pkg/controller:go_default_library", - "//pkg/conversion:go_default_library", "//pkg/runtime:go_default_library", "//pkg/util/flowcontrol:go_default_library", "//pkg/util/wait:go_default_library", diff --git a/federation/pkg/federation-controller/deployment/deploymentcontroller.go b/federation/pkg/federation-controller/deployment/deploymentcontroller.go index 90f04e2f9da..9ccd87cf471 100644 --- a/federation/pkg/federation-controller/deployment/deploymentcontroller.go +++ b/federation/pkg/federation-controller/deployment/deploymentcontroller.go @@ -41,7 +41,6 @@ import ( kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/controller" - "k8s.io/kubernetes/pkg/conversion" "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/util/flowcontrol" "k8s.io/kubernetes/pkg/util/wait" @@ -484,7 +483,7 @@ func (fdc *DeploymentController) reconcileDeployment(key string) (reconciliation // don't delete local deployments for now. Do not reconcile it anymore. return statusAllOk, nil } - obj, err := conversion.NewCloner().DeepCopy(objFromStore) + obj, err := api.Scheme.DeepCopy(objFromStore) fd, ok := obj.(*extensionsv1.Deployment) if err != nil || !ok { glog.Errorf("Error in retrieving obj from store: %v, %v", ok, err) diff --git a/federation/pkg/federation-controller/ingress/BUILD b/federation/pkg/federation-controller/ingress/BUILD index 5334078fa2f..ee4e4f4b0d0 100644 --- a/federation/pkg/federation-controller/ingress/BUILD +++ b/federation/pkg/federation-controller/ingress/BUILD @@ -28,7 +28,6 @@ go_library( "//pkg/client/clientset_generated/release_1_5:go_default_library", "//pkg/client/record:go_default_library", "//pkg/controller:go_default_library", - "//pkg/conversion:go_default_library", "//pkg/runtime:go_default_library", "//pkg/runtime/schema:go_default_library", "//pkg/types:go_default_library", diff --git a/federation/pkg/federation-controller/ingress/ingress_controller.go b/federation/pkg/federation-controller/ingress/ingress_controller.go index 4e244ebc334..57888dda709 100644 --- a/federation/pkg/federation-controller/ingress/ingress_controller.go +++ b/federation/pkg/federation-controller/ingress/ingress_controller.go @@ -34,7 +34,6 @@ import ( kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/controller" - "k8s.io/kubernetes/pkg/conversion" pkgruntime "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime/schema" "k8s.io/kubernetes/pkg/types" @@ -621,7 +620,7 @@ func (ic *IngressController) getMasterCluster() (master *federationapi.Cluster, */ func (ic *IngressController) updateClusterIngressUIDToMasters(cluster *federationapi.Cluster, fallbackUID string) { masterCluster, masterUID, err := ic.getMasterCluster() - clusterObj, clusterErr := conversion.NewCloner().DeepCopy(cluster) // Make a clone so that we don't clobber our input param + clusterObj, clusterErr := api.Scheme.DeepCopy(cluster) // Make a clone so that we don't clobber our input param cluster, ok := clusterObj.(*federationapi.Cluster) if clusterErr != nil || !ok { glog.Errorf("Internal error: Failed clone cluster resource while attempting to add master ingress UID annotation (%q = %q) from master cluster %q to cluster %q, will try again later: %v", uidAnnotationKey, masterUID, masterCluster.Name, cluster.Name, err) @@ -704,7 +703,7 @@ func (ic *IngressController) reconcileIngress(ingress types.NamespacedName) { glog.V(4).Infof("Ingress %q is not federated. Ignoring.", ingress) return } - baseIngressObj, err := conversion.NewCloner().DeepCopy(baseIngressObjFromStore) + baseIngressObj, err := api.Scheme.DeepCopy(baseIngressObjFromStore) baseIngress, ok := baseIngressObj.(*extensionsv1beta1.Ingress) if err != nil || !ok { glog.Errorf("Internal Error %v : Object retrieved from ingressInformerStore with key %q is not of correct type *extensionsv1beta1.Ingress: %v", err, key, baseIngressObj) @@ -757,22 +756,24 @@ func (ic *IngressController) reconcileIngress(ingress types.NamespacedName) { return } desiredIngress := &extensionsv1beta1.Ingress{} - objMeta, err := conversion.NewCloner().DeepCopy(baseIngress.ObjectMeta) + objMeta, err := api.Scheme.DeepCopy(&baseIngress.ObjectMeta) if err != nil { glog.Errorf("Error deep copying ObjectMeta: %v", err) } - objSpec, err := conversion.NewCloner().DeepCopy(baseIngress.Spec) + objSpec, err := api.Scheme.DeepCopy(&baseIngress.Spec) if err != nil { glog.Errorf("Error deep copying Spec: %v", err) } - desiredIngress.ObjectMeta, ok = objMeta.(v1.ObjectMeta) + objMetaCopy, ok := objMeta.(*v1.ObjectMeta) if !ok { - glog.Errorf("Internal error: Failed to cast to v1.ObjectMeta: %v", objMeta) + glog.Errorf("Internal error: Failed to cast to *v1.ObjectMeta: %v", objMeta) } - desiredIngress.Spec = objSpec.(extensionsv1beta1.IngressSpec) + desiredIngress.ObjectMeta = *objMetaCopy + objSpecCopy, ok := objSpec.(*extensionsv1beta1.IngressSpec) if !ok { glog.Errorf("Internal error: Failed to cast to extensionsv1beta1.Ingressespec: %v", objSpec) } + desiredIngress.Spec = *objSpecCopy glog.V(4).Infof("Desired Ingress: %v", desiredIngress) if !clusterIngressFound { @@ -824,7 +825,7 @@ func (ic *IngressController) reconcileIngress(ingress types.NamespacedName) { return } if !baseLBStatusExists && clusterLBStatusExists { - lbstatusObj, lbErr := conversion.NewCloner().DeepCopy(&clusterIngress.Status.LoadBalancer) + lbstatusObj, lbErr := api.Scheme.DeepCopy(&clusterIngress.Status.LoadBalancer) lbstatus, ok := lbstatusObj.(*v1.LoadBalancerStatus) if lbErr != nil || !ok { glog.Errorf("Internal error: Failed to clone LoadBalancerStatus of %q in cluster %q while attempting to update master loadbalancer ingress status, will try again later. error: %v, Object to be cloned: %v", ingress, cluster.Name, lbErr, lbstatusObj) @@ -851,17 +852,17 @@ func (ic *IngressController) reconcileIngress(ingress types.NamespacedName) { glog.V(4).Infof("Ingress %q in cluster %q does not need an update: cluster ingress is equivalent to federated ingress", ingress, cluster.Name) } else { glog.V(4).Infof("Ingress %s in cluster %s needs an update: cluster ingress %v is not equivalent to federated ingress %v", ingress, cluster.Name, clusterIngress, desiredIngress) - objMeta, err := conversion.NewCloner().DeepCopy(clusterIngress.ObjectMeta) + objMeta, err := api.Scheme.DeepCopy(&clusterIngress.ObjectMeta) if err != nil { glog.Errorf("Error deep copying ObjectMeta: %v", err) ic.deliverIngress(ingress, ic.ingressReviewDelay, true) - } - desiredIngress.ObjectMeta, ok = objMeta.(v1.ObjectMeta) + objMetaCopy, ok := objMeta.(*v1.ObjectMeta) if !ok { glog.Errorf("Internal error: Failed to cast to v1.ObjectMeta: %v", objMeta) ic.deliverIngress(ingress, ic.ingressReviewDelay, true) } + desiredIngress.ObjectMeta = *objMetaCopy // Merge any annotations and labels on the federated ingress onto the underlying cluster ingress, // overwriting duplicates. if desiredIngress.ObjectMeta.Annotations == nil { diff --git a/federation/pkg/federation-controller/namespace/BUILD b/federation/pkg/federation-controller/namespace/BUILD index 8aee96b9d8b..d822c3c762e 100644 --- a/federation/pkg/federation-controller/namespace/BUILD +++ b/federation/pkg/federation-controller/namespace/BUILD @@ -27,7 +27,6 @@ go_library( "//pkg/client/clientset_generated/release_1_5:go_default_library", "//pkg/client/record:go_default_library", "//pkg/controller:go_default_library", - "//pkg/conversion:go_default_library", "//pkg/runtime:go_default_library", "//pkg/util/flowcontrol:go_default_library", "//pkg/watch:go_default_library", diff --git a/federation/pkg/federation-controller/namespace/namespace_controller.go b/federation/pkg/federation-controller/namespace/namespace_controller.go index ef097d5a392..6faffac42d3 100644 --- a/federation/pkg/federation-controller/namespace/namespace_controller.go +++ b/federation/pkg/federation-controller/namespace/namespace_controller.go @@ -32,7 +32,6 @@ import ( kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/controller" - "k8s.io/kubernetes/pkg/conversion" "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/util/flowcontrol" "k8s.io/kubernetes/pkg/watch" @@ -338,7 +337,7 @@ func (nc *NamespaceController) reconcileNamespace(namespace string) { } // Create a copy before modifying the namespace to prevent race condition with // other readers of namespace from store. - namespaceObj, err := conversion.NewCloner().DeepCopy(namespaceObjFromStore) + namespaceObj, err := api.Scheme.DeepCopy(namespaceObjFromStore) baseNamespace, ok := namespaceObj.(*apiv1.Namespace) if err != nil || !ok { glog.Errorf("Error in retrieving obj from store: %v, %v", ok, err) @@ -390,7 +389,7 @@ func (nc *NamespaceController) reconcileNamespace(namespace string) { // The object should not be modified. desiredNamespace := &apiv1.Namespace{ ObjectMeta: util.DeepCopyRelevantObjectMeta(baseNamespace.ObjectMeta), - Spec: util.DeepCopyApiTypeOrPanic(baseNamespace.Spec).(apiv1.NamespaceSpec), + Spec: *(util.DeepCopyApiTypeOrPanic(&baseNamespace.Spec).(*apiv1.NamespaceSpec)), } glog.V(5).Infof("Desired namespace in underlying clusters: %+v", desiredNamespace) diff --git a/federation/pkg/federation-controller/replicaset/BUILD b/federation/pkg/federation-controller/replicaset/BUILD index 76c47142d6b..371472ad95a 100644 --- a/federation/pkg/federation-controller/replicaset/BUILD +++ b/federation/pkg/federation-controller/replicaset/BUILD @@ -31,7 +31,6 @@ go_library( "//pkg/client/clientset_generated/release_1_5:go_default_library", "//pkg/client/record:go_default_library", "//pkg/controller:go_default_library", - "//pkg/conversion:go_default_library", "//pkg/runtime:go_default_library", "//pkg/util/flowcontrol:go_default_library", "//pkg/util/wait:go_default_library", diff --git a/federation/pkg/federation-controller/replicaset/replicasetcontroller.go b/federation/pkg/federation-controller/replicaset/replicasetcontroller.go index 5929ca7e088..34bc6a49b02 100644 --- a/federation/pkg/federation-controller/replicaset/replicasetcontroller.go +++ b/federation/pkg/federation-controller/replicaset/replicasetcontroller.go @@ -41,7 +41,6 @@ import ( kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/controller" - "k8s.io/kubernetes/pkg/conversion" "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/util/flowcontrol" "k8s.io/kubernetes/pkg/util/wait" @@ -483,7 +482,7 @@ func (frsc *ReplicaSetController) reconcileReplicaSet(key string) (reconciliatio // don't delete local replicasets for now. Do not reconcile it anymore. return statusAllOk, nil } - obj, err := conversion.NewCloner().DeepCopy(objFromStore) + obj, err := api.Scheme.DeepCopy(objFromStore) frs, ok := obj.(*extensionsv1.ReplicaSet) if err != nil || !ok { glog.Errorf("Error in retrieving obj from store: %v, %v", ok, err) @@ -559,7 +558,7 @@ func (frsc *ReplicaSetController) reconcileReplicaSet(key string) (reconciliatio // The object can be modified. lrs := &extensionsv1.ReplicaSet{ ObjectMeta: fedutil.DeepCopyRelevantObjectMeta(frs.ObjectMeta), - Spec: fedutil.DeepCopyApiTypeOrPanic(frs.Spec).(extensionsv1.ReplicaSetSpec), + Spec: *fedutil.DeepCopyApiTypeOrPanic(&frs.Spec).(*extensionsv1.ReplicaSetSpec), } specReplicas := int32(replicas) lrs.Spec.Replicas = &specReplicas diff --git a/federation/pkg/federation-controller/secret/BUILD b/federation/pkg/federation-controller/secret/BUILD index 9250f0b1b0b..49e2a5f70a6 100644 --- a/federation/pkg/federation-controller/secret/BUILD +++ b/federation/pkg/federation-controller/secret/BUILD @@ -27,7 +27,6 @@ go_library( "//pkg/client/clientset_generated/release_1_5:go_default_library", "//pkg/client/record:go_default_library", "//pkg/controller:go_default_library", - "//pkg/conversion:go_default_library", "//pkg/runtime:go_default_library", "//pkg/types:go_default_library", "//pkg/util/flowcontrol:go_default_library", diff --git a/federation/pkg/federation-controller/secret/secret_controller.go b/federation/pkg/federation-controller/secret/secret_controller.go index c0a9a946f69..864f64da41d 100644 --- a/federation/pkg/federation-controller/secret/secret_controller.go +++ b/federation/pkg/federation-controller/secret/secret_controller.go @@ -32,7 +32,6 @@ import ( kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/controller" - "k8s.io/kubernetes/pkg/conversion" pkgruntime "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/types" "k8s.io/kubernetes/pkg/util/flowcontrol" @@ -315,7 +314,7 @@ func (secretcontroller *SecretController) reconcileSecret(secret types.Namespace // Create a copy before modifying the obj to prevent race condition with // other readers of obj from store. - baseSecretObj, err := conversion.NewCloner().DeepCopy(baseSecretObjFromStore) + baseSecretObj, err := api.Scheme.DeepCopy(baseSecretObjFromStore) baseSecret, ok := baseSecretObj.(*apiv1.Secret) if err != nil || !ok { glog.Errorf("Error in retrieving obj from store: %v, %v", ok, err) diff --git a/federation/pkg/federation-controller/service/BUILD b/federation/pkg/federation-controller/service/BUILD index e429e663da7..e15c21faf3c 100644 --- a/federation/pkg/federation-controller/service/BUILD +++ b/federation/pkg/federation-controller/service/BUILD @@ -28,6 +28,7 @@ go_library( "//federation/pkg/dnsprovider:go_default_library", "//federation/pkg/dnsprovider/rrstype:go_default_library", "//federation/pkg/federation-controller/util:go_default_library", + "//pkg/api:go_default_library", "//pkg/api/errors:go_default_library", "//pkg/api/v1:go_default_library", "//pkg/client/cache:go_default_library", @@ -35,7 +36,6 @@ go_library( "//pkg/client/record:go_default_library", "//pkg/client/restclient:go_default_library", "//pkg/controller:go_default_library", - "//pkg/conversion:go_default_library", "//pkg/runtime:go_default_library", "//pkg/util/runtime:go_default_library", "//pkg/util/sets:go_default_library", diff --git a/federation/pkg/federation-controller/service/servicecontroller.go b/federation/pkg/federation-controller/service/servicecontroller.go index 8d822d90776..66aff482f74 100644 --- a/federation/pkg/federation-controller/service/servicecontroller.go +++ b/federation/pkg/federation-controller/service/servicecontroller.go @@ -28,6 +28,7 @@ import ( federationcache "k8s.io/kubernetes/federation/client/cache" fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5" "k8s.io/kubernetes/federation/pkg/dnsprovider" + "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/errors" v1 "k8s.io/kubernetes/pkg/api/v1" cache "k8s.io/kubernetes/pkg/client/cache" @@ -40,8 +41,6 @@ import ( "k8s.io/kubernetes/pkg/util/wait" "k8s.io/kubernetes/pkg/util/workqueue" "k8s.io/kubernetes/pkg/watch" - - "k8s.io/kubernetes/pkg/conversion" ) const ( @@ -361,7 +360,7 @@ func (s *ServiceController) processServiceForCluster(cachedService *cachedServic // should be retried. func (s *ServiceController) updateFederationService(key string, cachedService *cachedService) (error, bool) { // Clone federation service, and create them in underlying k8s cluster - clone, err := conversion.NewCloner().DeepCopy(cachedService.lastState) + clone, err := api.Scheme.DeepCopy(cachedService.lastState) if err != nil { return err, !retryable } diff --git a/federation/pkg/federation-controller/util/BUILD b/federation/pkg/federation-controller/util/BUILD index 9f88e9d7653..6a61d6ccb26 100644 --- a/federation/pkg/federation-controller/util/BUILD +++ b/federation/pkg/federation-controller/util/BUILD @@ -39,7 +39,6 @@ go_library( "//pkg/client/unversioned/clientcmd:go_default_library", "//pkg/client/unversioned/clientcmd/api:go_default_library", "//pkg/controller/deployment/util:go_default_library", - "//pkg/conversion:go_default_library", "//pkg/runtime:go_default_library", "//pkg/util/flowcontrol:go_default_library", "//pkg/util/net:go_default_library", diff --git a/federation/pkg/federation-controller/util/deployment.go b/federation/pkg/federation-controller/util/deployment.go index e13ed23b789..e5030c4ad9d 100644 --- a/federation/pkg/federation-controller/util/deployment.go +++ b/federation/pkg/federation-controller/util/deployment.go @@ -70,6 +70,6 @@ func DeepCopyDeploymentObjectMeta(meta api_v1.ObjectMeta) api_v1.ObjectMeta { func DeepCopyDeployment(a *extensions_v1.Deployment) *extensions_v1.Deployment { return &extensions_v1.Deployment{ ObjectMeta: DeepCopyDeploymentObjectMeta(a.ObjectMeta), - Spec: DeepCopyApiTypeOrPanic(a.Spec).(extensions_v1.DeploymentSpec), + Spec: *(DeepCopyApiTypeOrPanic(&a.Spec).(*extensions_v1.DeploymentSpec)), } } diff --git a/federation/pkg/federation-controller/util/meta.go b/federation/pkg/federation-controller/util/meta.go index 75c7fa141fc..eebd12d685b 100644 --- a/federation/pkg/federation-controller/util/meta.go +++ b/federation/pkg/federation-controller/util/meta.go @@ -19,8 +19,8 @@ package util import ( "reflect" + "k8s.io/kubernetes/pkg/api" api_v1 "k8s.io/kubernetes/pkg/api/v1" - "k8s.io/kubernetes/pkg/conversion" "k8s.io/kubernetes/pkg/runtime" ) @@ -86,7 +86,7 @@ func ObjectMetaAndSpecEquivalent(a, b runtime.Object) bool { } func DeepCopyApiTypeOrPanic(item interface{}) interface{} { - result, err := conversion.NewCloner().DeepCopy(item) + result, err := api.Scheme.DeepCopy(item) if err != nil { panic(err) } diff --git a/pkg/controller/BUILD b/pkg/controller/BUILD index 2e23dfddc2b..b259d892091 100644 --- a/pkg/controller/BUILD +++ b/pkg/controller/BUILD @@ -33,7 +33,6 @@ go_library( "//pkg/client/clientset_generated/release_1_5/typed/core/v1:go_default_library", "//pkg/client/record:go_default_library", "//pkg/client/restclient:go_default_library", - "//pkg/conversion:go_default_library", "//pkg/fields:go_default_library", "//pkg/labels:go_default_library", "//pkg/runtime:go_default_library", diff --git a/pkg/controller/controller_utils.go b/pkg/controller/controller_utils.go index 21ce04df305..5041ebfdcb7 100644 --- a/pkg/controller/controller_utils.go +++ b/pkg/controller/controller_utils.go @@ -32,7 +32,6 @@ import ( "k8s.io/kubernetes/pkg/client/cache" clientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5" "k8s.io/kubernetes/pkg/client/record" - "k8s.io/kubernetes/pkg/conversion" "k8s.io/kubernetes/pkg/labels" "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime/schema" @@ -486,7 +485,7 @@ func GetPodFromTemplate(template *v1.PodTemplateSpec, parentObject runtime.Objec if controllerRef != nil { pod.OwnerReferences = append(pod.OwnerReferences, *controllerRef) } - clone, err := conversion.NewCloner().DeepCopy(&template.Spec) + clone, err := api.Scheme.DeepCopy(&template.Spec) if err != nil { return nil, err } diff --git a/pkg/controller/deployment/util/deployment_util_test.go b/pkg/controller/deployment/util/deployment_util_test.go index a9016262ca7..3c1d01acc3c 100644 --- a/pkg/controller/deployment/util/deployment_util_test.go +++ b/pkg/controller/deployment/util/deployment_util_test.go @@ -431,7 +431,7 @@ func TestEqualIgnoreHash(t *testing.T) { } for _, test := range tests { - runTest := func(t1, t2 v1.PodTemplateSpec, reversed bool) { + runTest := func(t1, t2 *v1.PodTemplateSpec, reversed bool) { // Set up t1Copy, err := api.Scheme.DeepCopy(t1) if err != nil { @@ -446,7 +446,7 @@ func TestEqualIgnoreHash(t *testing.T) { reverseString = " (reverse order)" } // Run - equal, err := equalIgnoreHash(t1, t2) + equal, err := equalIgnoreHash(*t1, *t2) // Check if err != nil { t.Errorf("In test case %q%s, expected no error, returned %v", test.test, reverseString, err) @@ -461,9 +461,9 @@ func TestEqualIgnoreHash(t *testing.T) { t.Errorf("In test case %q%s, unexpected input template modified", test.test, reverseString) } } - runTest(test.former, test.latter, false) + runTest(&test.former, &test.latter, false) // Test the same case in reverse order - runTest(test.latter, test.former, true) + runTest(&test.latter, &test.former, true) } } diff --git a/pkg/controller/disruption/disruption.go b/pkg/controller/disruption/disruption.go index 017b5f8ca4a..2cfc8e785ea 100644 --- a/pkg/controller/disruption/disruption.go +++ b/pkg/controller/disruption/disruption.go @@ -644,14 +644,14 @@ func (dc *DisruptionController) buildDisruptedPodMap(pods []*v1.Pod, pdb *policy // this field correctly, we will prevent the /evict handler from approving an // eviction when it may be unsafe to do so. func (dc *DisruptionController) failSafe(pdb *policy.PodDisruptionBudget) error { - obj, err := api.Scheme.DeepCopy(*pdb) + obj, err := api.Scheme.DeepCopy(pdb) if err != nil { return err } - newPdb := obj.(policy.PodDisruptionBudget) + newPdb := obj.(*policy.PodDisruptionBudget) newPdb.Status.PodDisruptionsAllowed = 0 - return dc.getUpdater()(&newPdb) + return dc.getUpdater()(newPdb) } func (dc *DisruptionController) updatePdbStatus(pdb *policy.PodDisruptionBudget, currentHealthy, desiredHealthy, expectedCount int32, @@ -675,11 +675,11 @@ func (dc *DisruptionController) updatePdbStatus(pdb *policy.PodDisruptionBudget, return nil } - obj, err := api.Scheme.DeepCopy(*pdb) + obj, err := api.Scheme.DeepCopy(pdb) if err != nil { return err } - newPdb := obj.(policy.PodDisruptionBudget) + newPdb := obj.(*policy.PodDisruptionBudget) newPdb.Status = policy.PodDisruptionBudgetStatus{ CurrentHealthy: currentHealthy, @@ -690,7 +690,7 @@ func (dc *DisruptionController) updatePdbStatus(pdb *policy.PodDisruptionBudget, ObservedGeneration: pdb.Generation, } - return dc.getUpdater()(&newPdb) + return dc.getUpdater()(newPdb) } // refresh tries to re-GET the given PDB. If there are any errors, it just diff --git a/pkg/controller/disruption/disruption_test.go b/pkg/controller/disruption/disruption_test.go index 09f61e87d6b..39d20f1e22b 100644 --- a/pkg/controller/disruption/disruption_test.go +++ b/pkg/controller/disruption/disruption_test.go @@ -44,11 +44,11 @@ func (ps *pdbStates) Set(pdb *policy.PodDisruptionBudget) error { if err != nil { return err } - obj, err := api.Scheme.DeepCopy(*pdb) + obj, err := api.Scheme.DeepCopy(pdb) if err != nil { return err } - (*ps)[key] = obj.(policy.PodDisruptionBudget) + (*ps)[key] = *obj.(*policy.PodDisruptionBudget) return nil } diff --git a/pkg/controller/replicaset/replica_set_utils.go b/pkg/controller/replicaset/replica_set_utils.go index 7001595eb48..3c55f130873 100644 --- a/pkg/controller/replicaset/replica_set_utils.go +++ b/pkg/controller/replicaset/replica_set_utils.go @@ -48,11 +48,11 @@ func updateReplicaSetStatus(c unversionedextensions.ReplicaSetInterface, rs exte // deep copy to avoid mutation now. // TODO this method need some work. Retry on conflict probably, though I suspect this is stomping status to something it probably shouldn't - copyObj, err := api.Scheme.DeepCopy(rs) + copyObj, err := api.Scheme.DeepCopy(&rs) if err != nil { return err } - rs = copyObj.(extensions.ReplicaSet) + rs = *copyObj.(*extensions.ReplicaSet) // Save the generation number we acted on, otherwise we might wrongfully indicate // that we've seen a spec update when we retry. diff --git a/pkg/controller/volume/attachdetach/attach_detach_controller.go b/pkg/controller/volume/attachdetach/attach_detach_controller.go index 31892b031ba..95075490af5 100644 --- a/pkg/controller/volume/attachdetach/attach_detach_controller.go +++ b/pkg/controller/volume/attachdetach/attach_detach_controller.go @@ -434,18 +434,18 @@ func (adc *attachDetachController) createVolumeSpec( // Do not return the original volume object, since it's from the shared // informer it may be mutated by another consumer. - clonedPodVolumeObj, err := api.Scheme.DeepCopy(podVolume) + clonedPodVolumeObj, err := api.Scheme.DeepCopy(&podVolume) if err != nil || clonedPodVolumeObj == nil { return nil, fmt.Errorf( "failed to deep copy %q volume object. err=%v", podVolume.Name, err) } - clonedPodVolume, ok := clonedPodVolumeObj.(v1.Volume) + clonedPodVolume, ok := clonedPodVolumeObj.(*v1.Volume) if !ok { return nil, fmt.Errorf("failed to cast clonedPodVolume %#v to v1.Volume", clonedPodVolumeObj) } - return volume.NewSpecFromVolume(&clonedPodVolume), nil + return volume.NewSpecFromVolume(clonedPodVolume), nil } // getPVCFromCacheExtractPV fetches the PVC object with the given namespace and @@ -526,19 +526,19 @@ func (adc *attachDetachController) getPVSpecFromCache( // Do not return the object from the informer, since the store is shared it // may be mutated by another consumer. - clonedPVObj, err := api.Scheme.DeepCopy(*pv) + clonedPVObj, err := api.Scheme.DeepCopy(pv) if err != nil || clonedPVObj == nil { return nil, fmt.Errorf( "failed to deep copy %q PV object. err=%v", name, err) } - clonedPV, ok := clonedPVObj.(v1.PersistentVolume) + clonedPV, ok := clonedPVObj.(*v1.PersistentVolume) if !ok { return nil, fmt.Errorf( "failed to cast %q clonedPV %#v to PersistentVolume", name, pvObj) } - return volume.NewSpecFromPersistentVolume(&clonedPV, pvcReadOnly), nil + return volume.NewSpecFromPersistentVolume(clonedPV, pvcReadOnly), nil } // processVolumesInUse processes the list of volumes marked as "in-use" diff --git a/pkg/controller/volume/attachdetach/statusupdater/BUILD b/pkg/controller/volume/attachdetach/statusupdater/BUILD index 4c37c350520..2698dcc66d0 100644 --- a/pkg/controller/volume/attachdetach/statusupdater/BUILD +++ b/pkg/controller/volume/attachdetach/statusupdater/BUILD @@ -18,11 +18,11 @@ go_library( ], tags = ["automanaged"], deps = [ + "//pkg/api:go_default_library", "//pkg/api/v1:go_default_library", "//pkg/client/cache:go_default_library", "//pkg/client/clientset_generated/release_1_5:go_default_library", "//pkg/controller/volume/attachdetach/cache:go_default_library", - "//pkg/conversion:go_default_library", "//pkg/util/strategicpatch:go_default_library", "//vendor:github.com/golang/glog", ], diff --git a/pkg/controller/volume/attachdetach/statusupdater/node_status_updater.go b/pkg/controller/volume/attachdetach/statusupdater/node_status_updater.go index 9a7ffcd9a4f..02232a829fb 100644 --- a/pkg/controller/volume/attachdetach/statusupdater/node_status_updater.go +++ b/pkg/controller/volume/attachdetach/statusupdater/node_status_updater.go @@ -24,11 +24,11 @@ import ( "github.com/golang/glog" + "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/v1" kcache "k8s.io/kubernetes/pkg/client/cache" clientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5" "k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache" - "k8s.io/kubernetes/pkg/conversion" "k8s.io/kubernetes/pkg/util/strategicpatch" ) @@ -76,7 +76,7 @@ func (nsu *nodeStatusUpdater) UpdateNodeStatuses() error { continue } - clonedNode, err := conversion.NewCloner().DeepCopy(nodeObj) + clonedNode, err := api.Scheme.DeepCopy(nodeObj) if err != nil { return fmt.Errorf("error cloning node %q: %v", nodeName, diff --git a/pkg/controller/volume/persistentvolume/BUILD b/pkg/controller/volume/persistentvolume/BUILD index 773293927f3..f1d52f020a2 100644 --- a/pkg/controller/volume/persistentvolume/BUILD +++ b/pkg/controller/volume/persistentvolume/BUILD @@ -20,6 +20,7 @@ go_library( ], tags = ["automanaged"], deps = [ + "//pkg/api:go_default_library", "//pkg/api/errors:go_default_library", "//pkg/api/meta:go_default_library", "//pkg/api/v1:go_default_library", @@ -31,7 +32,6 @@ go_library( "//pkg/client/clientset_generated/release_1_5/typed/core/v1:go_default_library", "//pkg/client/record:go_default_library", "//pkg/cloudprovider:go_default_library", - "//pkg/conversion:go_default_library", "//pkg/labels:go_default_library", "//pkg/runtime:go_default_library", "//pkg/types:go_default_library", @@ -58,6 +58,7 @@ go_test( library = "go_default_library", tags = ["automanaged"], deps = [ + "//pkg/api:go_default_library", "//pkg/api/resource:go_default_library", "//pkg/api/testapi:go_default_library", "//pkg/api/v1:go_default_library", @@ -70,7 +71,6 @@ go_test( "//pkg/client/record:go_default_library", "//pkg/client/testing/cache:go_default_library", "//pkg/client/testing/core:go_default_library", - "//pkg/conversion:go_default_library", "//pkg/runtime:go_default_library", "//pkg/types:go_default_library", "//pkg/util/diff:go_default_library", diff --git a/pkg/controller/volume/persistentvolume/framework_test.go b/pkg/controller/volume/persistentvolume/framework_test.go index dc847669aa6..ed3125366b9 100644 --- a/pkg/controller/volume/persistentvolume/framework_test.go +++ b/pkg/controller/volume/persistentvolume/framework_test.go @@ -29,6 +29,7 @@ import ( "github.com/golang/glog" + "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/resource" "k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/api/v1" @@ -41,7 +42,6 @@ import ( "k8s.io/kubernetes/pkg/client/record" fcache "k8s.io/kubernetes/pkg/client/testing/cache" "k8s.io/kubernetes/pkg/client/testing/core" - "k8s.io/kubernetes/pkg/conversion" "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/types" "k8s.io/kubernetes/pkg/util/diff" @@ -314,7 +314,7 @@ func (r *volumeReactor) checkVolumes(expectedVolumes []*v1.PersistentVolume) err for _, v := range r.volumes { // We must clone the volume because of golang race check - it was // written by the controller without any locks on it. - clone, _ := conversion.NewCloner().DeepCopy(v) + clone, _ := api.Scheme.DeepCopy(v) v = clone.(*v1.PersistentVolume) v.ResourceVersion = "" if v.Spec.ClaimRef != nil { @@ -345,7 +345,7 @@ func (r *volumeReactor) checkClaims(expectedClaims []*v1.PersistentVolumeClaim) for _, c := range r.claims { // We must clone the claim because of golang race check - it was // written by the controller without any locks on it. - clone, _ := conversion.NewCloner().DeepCopy(c) + clone, _ := api.Scheme.DeepCopy(c) c = clone.(*v1.PersistentVolumeClaim) c.ResourceVersion = "" gotMap[c.Name] = c @@ -513,7 +513,7 @@ func (r *volumeReactor) deleteVolumeEvent(volume *v1.PersistentVolume) { // Generate deletion event. Cloned volume is needed to prevent races (and we // would get a clone from etcd too). - clone, _ := conversion.NewCloner().DeepCopy(volume) + clone, _ := api.Scheme.DeepCopy(volume) volumeClone := clone.(*v1.PersistentVolume) r.volumeSource.Delete(volumeClone) } @@ -529,7 +529,7 @@ func (r *volumeReactor) deleteClaimEvent(claim *v1.PersistentVolumeClaim) { // Generate deletion event. Cloned volume is needed to prevent races (and we // would get a clone from etcd too). - clone, _ := conversion.NewCloner().DeepCopy(claim) + clone, _ := api.Scheme.DeepCopy(claim) claimClone := clone.(*v1.PersistentVolumeClaim) r.claimSource.Delete(claimClone) } @@ -555,7 +555,7 @@ func (r *volumeReactor) modifyVolumeEvent(volume *v1.PersistentVolume) { r.volumes[volume.Name] = volume // Generate deletion event. Cloned volume is needed to prevent races (and we // would get a clone from etcd too). - clone, _ := conversion.NewCloner().DeepCopy(volume) + clone, _ := api.Scheme.DeepCopy(volume) volumeClone := clone.(*v1.PersistentVolume) r.volumeSource.Modify(volumeClone) } diff --git a/pkg/controller/volume/persistentvolume/pv_controller.go b/pkg/controller/volume/persistentvolume/pv_controller.go index f3f9ab64e1d..a86e84cb354 100644 --- a/pkg/controller/volume/persistentvolume/pv_controller.go +++ b/pkg/controller/volume/persistentvolume/pv_controller.go @@ -22,6 +22,7 @@ import ( "strings" "time" + "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/v1" metav1 "k8s.io/kubernetes/pkg/apis/meta/v1" storage "k8s.io/kubernetes/pkg/apis/storage/v1beta1" @@ -30,7 +31,6 @@ import ( clientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/cloudprovider" - "k8s.io/kubernetes/pkg/conversion" "k8s.io/kubernetes/pkg/util/goroutinemap" vol "k8s.io/kubernetes/pkg/volume" @@ -467,7 +467,7 @@ func (ctrl *PersistentVolumeController) syncVolume(volume *v1.PersistentVolume) // This speeds up binding of provisioned volumes - provisioner saves // only the new PV and it expects that next syncClaim will bind the // claim to it. - clone, err := conversion.NewCloner().DeepCopy(claim) + clone, err := api.Scheme.DeepCopy(claim) if err != nil { return fmt.Errorf("error cloning claim %q: %v", claimToClaimKey(claim), err) } @@ -547,7 +547,7 @@ func (ctrl *PersistentVolumeController) updateClaimStatus(claim *v1.PersistentVo dirty := false - clone, err := conversion.NewCloner().DeepCopy(claim) + clone, err := api.Scheme.DeepCopy(claim) if err != nil { return nil, fmt.Errorf("Error cloning claim: %v", err) } @@ -647,7 +647,7 @@ func (ctrl *PersistentVolumeController) updateVolumePhase(volume *v1.PersistentV return volume, nil } - clone, err := conversion.NewCloner().DeepCopy(volume) + clone, err := api.Scheme.DeepCopy(volume) if err != nil { return nil, fmt.Errorf("Error cloning claim: %v", err) } @@ -712,7 +712,7 @@ func (ctrl *PersistentVolumeController) bindVolumeToClaim(volume *v1.PersistentV // The volume from method args can be pointing to watcher cache. We must not // modify these, therefore create a copy. - clone, err := conversion.NewCloner().DeepCopy(volume) + clone, err := api.Scheme.DeepCopy(volume) if err != nil { return nil, fmt.Errorf("Error cloning pv: %v", err) } @@ -777,7 +777,7 @@ func (ctrl *PersistentVolumeController) bindClaimToVolume(claim *v1.PersistentVo // The claim from method args can be pointing to watcher cache. We must not // modify these, therefore create a copy. - clone, err := conversion.NewCloner().DeepCopy(claim) + clone, err := api.Scheme.DeepCopy(claim) if err != nil { return nil, fmt.Errorf("Error cloning claim: %v", err) } @@ -877,7 +877,7 @@ func (ctrl *PersistentVolumeController) unbindVolume(volume *v1.PersistentVolume glog.V(4).Infof("updating PersistentVolume[%s]: rolling back binding from %q", volume.Name, claimrefToClaimKey(volume.Spec.ClaimRef)) // Save the PV only when any modification is neccessary. - clone, err := conversion.NewCloner().DeepCopy(volume) + clone, err := api.Scheme.DeepCopy(volume) if err != nil { return fmt.Errorf("Error cloning pv: %v", err) } diff --git a/pkg/controller/volume/persistentvolume/pv_controller_base.go b/pkg/controller/volume/persistentvolume/pv_controller_base.go index b1ded833133..62144e6d1b9 100644 --- a/pkg/controller/volume/persistentvolume/pv_controller_base.go +++ b/pkg/controller/volume/persistentvolume/pv_controller_base.go @@ -21,6 +21,7 @@ import ( "strconv" "time" + "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/errors" "k8s.io/kubernetes/pkg/api/meta" "k8s.io/kubernetes/pkg/api/v1" @@ -30,7 +31,6 @@ import ( unversionedcore "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5/typed/core/v1" "k8s.io/kubernetes/pkg/client/record" "k8s.io/kubernetes/pkg/cloudprovider" - "k8s.io/kubernetes/pkg/conversion" "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/util/goroutinemap" vol "k8s.io/kubernetes/pkg/volume" @@ -178,7 +178,7 @@ func (ctrl *PersistentVolumeController) initializeCaches(volumeSource, claimSour // Ignore template volumes from kubernetes 1.2 deleted := ctrl.upgradeVolumeFrom1_2(&volume) if !deleted { - clone, err := conversion.NewCloner().DeepCopy(&volume) + clone, err := api.Scheme.DeepCopy(&volume) if err != nil { glog.Errorf("error cloning volume %q: %v", volume.Name, err) continue @@ -199,7 +199,7 @@ func (ctrl *PersistentVolumeController) initializeCaches(volumeSource, claimSour return } for _, claim := range claimList.Items { - clone, err := conversion.NewCloner().DeepCopy(&claim) + clone, err := api.Scheme.DeepCopy(&claim) if err != nil { glog.Errorf("error cloning claim %q: %v", claimToClaimKey(&claim), err) continue @@ -504,7 +504,7 @@ func (ctrl *PersistentVolumeController) setClaimProvisioner(claim *v1.Persistent // The volume from method args can be pointing to watcher cache. We must not // modify these, therefore create a copy. - clone, err := conversion.NewCloner().DeepCopy(claim) + clone, err := api.Scheme.DeepCopy(claim) if err != nil { return nil, fmt.Errorf("Error cloning pv: %v", err) } diff --git a/pkg/kubectl/cmd/BUILD b/pkg/kubectl/cmd/BUILD index a561e34ded7..b289dc86ce8 100644 --- a/pkg/kubectl/cmd/BUILD +++ b/pkg/kubectl/cmd/BUILD @@ -188,7 +188,6 @@ go_test( "//pkg/client/restclient:go_default_library", "//pkg/client/restclient/fake:go_default_library", "//pkg/client/typed/dynamic:go_default_library", - "//pkg/conversion:go_default_library", "//pkg/kubectl:go_default_library", "//pkg/kubectl/cmd/testing:go_default_library", "//pkg/kubectl/cmd/util:go_default_library", diff --git a/pkg/kubectl/cmd/drain_test.go b/pkg/kubectl/cmd/drain_test.go index 262e1d37e41..0258fbc71ff 100644 --- a/pkg/kubectl/cmd/drain_test.go +++ b/pkg/kubectl/cmd/drain_test.go @@ -41,7 +41,6 @@ import ( metav1 "k8s.io/kubernetes/pkg/apis/meta/v1" "k8s.io/kubernetes/pkg/apis/policy" "k8s.io/kubernetes/pkg/client/restclient/fake" - "k8s.io/kubernetes/pkg/conversion" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/pkg/runtime" @@ -70,7 +69,7 @@ func TestMain(m *testing.M) { }, Status: api.NodeStatus{}, } - clone, _ := conversion.NewCloner().DeepCopy(node) + clone, _ := api.Scheme.DeepCopy(node) // A copy of the same node, but cordoned. cordoned_node = clone.(*api.Node) diff --git a/pkg/kubectl/cmd/taint_test.go b/pkg/kubectl/cmd/taint_test.go index c56a405d485..53f8c4c329e 100644 --- a/pkg/kubectl/cmd/taint_test.go +++ b/pkg/kubectl/cmd/taint_test.go @@ -28,7 +28,6 @@ import ( "k8s.io/kubernetes/pkg/api" metav1 "k8s.io/kubernetes/pkg/apis/meta/v1" "k8s.io/kubernetes/pkg/client/restclient/fake" - "k8s.io/kubernetes/pkg/conversion" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/pkg/runtime" @@ -52,7 +51,7 @@ func generateNodeAndTaintedNode(oldTaints []api.Taint, newTaints []api.Taint) (* }, Status: api.NodeStatus{}, } - clone, _ := conversion.NewCloner().DeepCopy(node) + clone, _ := api.Scheme.DeepCopy(node) newTaintsData, _ := json.Marshal(newTaints) // A copy of the same node, but tainted. diff --git a/pkg/kubelet/config/BUILD b/pkg/kubelet/config/BUILD index 2d325ba08fa..aef92539a9b 100644 --- a/pkg/kubelet/config/BUILD +++ b/pkg/kubelet/config/BUILD @@ -70,7 +70,6 @@ go_test( "//pkg/apis/meta/v1:go_default_library", "//pkg/client/cache:go_default_library", "//pkg/client/record:go_default_library", - "//pkg/conversion:go_default_library", "//pkg/kubelet/types:go_default_library", "//pkg/runtime:go_default_library", "//pkg/securitycontext:go_default_library", diff --git a/pkg/kubelet/config/config_test.go b/pkg/kubelet/config/config_test.go index 99d8066f046..50f0ee7b812 100644 --- a/pkg/kubelet/config/config_test.go +++ b/pkg/kubelet/config/config_test.go @@ -28,7 +28,6 @@ import ( "k8s.io/kubernetes/pkg/api/v1" metav1 "k8s.io/kubernetes/pkg/apis/meta/v1" "k8s.io/kubernetes/pkg/client/record" - "k8s.io/kubernetes/pkg/conversion" kubetypes "k8s.io/kubernetes/pkg/kubelet/types" "k8s.io/kubernetes/pkg/securitycontext" "k8s.io/kubernetes/pkg/types" @@ -369,7 +368,7 @@ func TestPodUpdateAnnotations(t *testing.T) { pod.Annotations = make(map[string]string, 0) pod.Annotations["kubernetes.io/blah"] = "blah" - clone, err := conversion.NewCloner().DeepCopy(pod) + clone, err := api.Scheme.DeepCopy(pod) if err != nil { t.Fatalf("%v", err) } @@ -401,7 +400,7 @@ func TestPodUpdateLabels(t *testing.T) { pod.Labels = make(map[string]string, 0) pod.Labels["key"] = "value" - clone, err := conversion.NewCloner().DeepCopy(pod) + clone, err := api.Scheme.DeepCopy(pod) if err != nil { t.Fatalf("%v", err) } diff --git a/pkg/kubelet/volumemanager/populator/desired_state_of_world_populator.go b/pkg/kubelet/volumemanager/populator/desired_state_of_world_populator.go index 9f3c14b6dae..84f10551c9d 100644 --- a/pkg/kubelet/volumemanager/populator/desired_state_of_world_populator.go +++ b/pkg/kubelet/volumemanager/populator/desired_state_of_world_populator.go @@ -344,20 +344,20 @@ func (dswp *desiredStateOfWorldPopulator) createVolumeSpec( } // Do not return the original volume object, since the source could mutate it - clonedPodVolumeObj, err := api.Scheme.DeepCopy(podVolume) + clonedPodVolumeObj, err := api.Scheme.DeepCopy(&podVolume) if err != nil || clonedPodVolumeObj == nil { return nil, "", fmt.Errorf( "failed to deep copy %q volume object. err=%v", podVolume.Name, err) } - clonedPodVolume, ok := clonedPodVolumeObj.(v1.Volume) + clonedPodVolume, ok := clonedPodVolumeObj.(*v1.Volume) if !ok { return nil, "", fmt.Errorf( "failed to cast clonedPodVolume %#v to v1.Volume", clonedPodVolumeObj) } - return volume.NewSpecFromVolume(&clonedPodVolume), "", nil + return volume.NewSpecFromVolume(clonedPodVolume), "", nil } // getPVCExtractPV fetches the PVC object with the given namespace and name from diff --git a/pkg/volume/host_path/BUILD b/pkg/volume/host_path/BUILD index ac5ac615655..1fab218115c 100644 --- a/pkg/volume/host_path/BUILD +++ b/pkg/volume/host_path/BUILD @@ -18,8 +18,8 @@ go_library( ], tags = ["automanaged"], deps = [ + "//pkg/api:go_default_library", "//pkg/api/v1:go_default_library", - "//pkg/conversion:go_default_library", "//pkg/types:go_default_library", "//pkg/util/uuid:go_default_library", "//pkg/volume:go_default_library", diff --git a/pkg/volume/host_path/host_path.go b/pkg/volume/host_path/host_path.go index 42d2e844c2b..305062cca8b 100644 --- a/pkg/volume/host_path/host_path.go +++ b/pkg/volume/host_path/host_path.go @@ -21,8 +21,8 @@ import ( "os" "regexp" + "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/v1" - "k8s.io/kubernetes/pkg/conversion" "k8s.io/kubernetes/pkg/types" "k8s.io/kubernetes/pkg/util/uuid" "k8s.io/kubernetes/pkg/volume" @@ -245,7 +245,7 @@ func (r *hostPathRecycler) GetPath() string { // Recycle blocks until the pod has completed or any error occurs. // HostPath recycling only works in single node clusters and is meant for testing purposes only. func (r *hostPathRecycler) Recycle() error { - templateClone, err := conversion.NewCloner().DeepCopy(r.config.RecyclerPodTemplate) + templateClone, err := api.Scheme.DeepCopy(r.config.RecyclerPodTemplate) if err != nil { return err } diff --git a/pkg/volume/nfs/BUILD b/pkg/volume/nfs/BUILD index 4bb365a6fcd..4d1baa565ef 100644 --- a/pkg/volume/nfs/BUILD +++ b/pkg/volume/nfs/BUILD @@ -18,8 +18,8 @@ go_library( ], tags = ["automanaged"], deps = [ + "//pkg/api:go_default_library", "//pkg/api/v1:go_default_library", - "//pkg/conversion:go_default_library", "//pkg/types:go_default_library", "//pkg/util/exec:go_default_library", "//pkg/util/mount:go_default_library", diff --git a/pkg/volume/nfs/nfs.go b/pkg/volume/nfs/nfs.go index 9afad5b1bfd..95fe7416da0 100644 --- a/pkg/volume/nfs/nfs.go +++ b/pkg/volume/nfs/nfs.go @@ -22,8 +22,8 @@ import ( "runtime" "github.com/golang/glog" + "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/v1" - "k8s.io/kubernetes/pkg/conversion" "k8s.io/kubernetes/pkg/types" "k8s.io/kubernetes/pkg/util/exec" "k8s.io/kubernetes/pkg/util/mount" @@ -333,7 +333,7 @@ func (r *nfsRecycler) GetPath() string { // Recycle recycles/scrubs clean an NFS volume. // Recycle blocks until the pod has completed or any error occurs. func (r *nfsRecycler) Recycle() error { - templateClone, err := conversion.NewCloner().DeepCopy(r.config.RecyclerPodTemplate) + templateClone, err := api.Scheme.DeepCopy(r.config.RecyclerPodTemplate) if err != nil { return err } diff --git a/plugin/pkg/admission/storageclass/default/BUILD b/plugin/pkg/admission/storageclass/default/BUILD index 6a2f6ba1f74..71f767f0c62 100644 --- a/plugin/pkg/admission/storageclass/default/BUILD +++ b/plugin/pkg/admission/storageclass/default/BUILD @@ -40,7 +40,6 @@ go_test( "//pkg/apis/meta/v1:go_default_library", "//pkg/apis/storage:go_default_library", "//pkg/apis/storage/util:go_default_library", - "//pkg/conversion:go_default_library", "//vendor:github.com/golang/glog", ], ) diff --git a/plugin/pkg/admission/storageclass/default/admission_test.go b/plugin/pkg/admission/storageclass/default/admission_test.go index 870e5ac0921..2661e5a3847 100644 --- a/plugin/pkg/admission/storageclass/default/admission_test.go +++ b/plugin/pkg/admission/storageclass/default/admission_test.go @@ -26,7 +26,6 @@ import ( metav1 "k8s.io/kubernetes/pkg/apis/meta/v1" "k8s.io/kubernetes/pkg/apis/storage" storageutil "k8s.io/kubernetes/pkg/apis/storage/util" - "k8s.io/kubernetes/pkg/conversion" ) func TestAdmission(t *testing.T) { @@ -187,7 +186,7 @@ func TestAdmission(t *testing.T) { glog.V(4).Infof("starting test %q", test.name) // clone the claim, it's going to be modified - clone, err := conversion.NewCloner().DeepCopy(test.claim) + clone, err := api.Scheme.DeepCopy(test.claim) if err != nil { t.Fatalf("Cannot clone claim: %v", err) } diff --git a/test/e2e/BUILD b/test/e2e/BUILD index 0990873610d..5649b55209a 100644 --- a/test/e2e/BUILD +++ b/test/e2e/BUILD @@ -150,7 +150,6 @@ go_library( "//pkg/controller/petset:go_default_library", "//pkg/controller/replicaset:go_default_library", "//pkg/controller/replication:go_default_library", - "//pkg/conversion:go_default_library", "//pkg/dns/federation:go_default_library", "//pkg/fields:go_default_library", "//pkg/kubectl:go_default_library", diff --git a/test/e2e/federated-service.go b/test/e2e/federated-service.go index dc38d163a9d..f232dcd3bb8 100644 --- a/test/e2e/federated-service.go +++ b/test/e2e/federated-service.go @@ -23,8 +23,8 @@ import ( "strconv" "time" + "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/v1" - "k8s.io/kubernetes/pkg/conversion" "k8s.io/kubernetes/test/e2e/framework" . "github.com/onsi/ginkgo" @@ -172,7 +172,7 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() { createBackendPodsOrFail(clusters, nsName, FederatedServicePodName) service = createServiceOrFail(f.FederationClientset_1_5, nsName, FederatedServiceName) - obj, err := conversion.NewCloner().DeepCopy(service) + obj, err := api.Scheme.DeepCopy(service) // Cloning shouldn't fail. On the off-chance it does, we // should shallow copy service to serviceShard before // failing. If we don't do this we will never really diff --git a/test/integration/volume/persistent_volumes_test.go b/test/integration/volume/persistent_volumes_test.go index 8b250bb5347..f776c0531c0 100644 --- a/test/integration/volume/persistent_volumes_test.go +++ b/test/integration/volume/persistent_volumes_test.go @@ -27,6 +27,7 @@ import ( "testing" "time" + "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/resource" "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/apimachinery/registered" @@ -37,7 +38,6 @@ import ( "k8s.io/kubernetes/pkg/client/restclient" fakecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/fake" persistentvolumecontroller "k8s.io/kubernetes/pkg/controller/volume/persistentvolume" - "k8s.io/kubernetes/pkg/conversion" "k8s.io/kubernetes/pkg/volume" volumetest "k8s.io/kubernetes/pkg/volume/testing" "k8s.io/kubernetes/pkg/watch" @@ -243,7 +243,7 @@ func TestPersistentVolumeBindRace(t *testing.T) { claims := []*v1.PersistentVolumeClaim{} for counter <= maxClaims { counter += 1 - clone, _ := conversion.NewCloner().DeepCopy(pvc) + clone, _ := api.Scheme.DeepCopy(pvc) newPvc, _ := clone.(*v1.PersistentVolumeClaim) newPvc.ObjectMeta = v1.ObjectMeta{Name: fmt.Sprintf("fake-pvc-race-%d", counter)} claim, err := testClient.PersistentVolumeClaims(ns.Name).Create(newPvc) diff --git a/test/utils/runners.go b/test/utils/runners.go index c61ce46d4c0..67c5469edfb 100644 --- a/test/utils/runners.go +++ b/test/utils/runners.go @@ -738,7 +738,7 @@ func (s *LabelNodePrepareStrategy) PreparePatch(*v1.Node) []byte { } func (s *LabelNodePrepareStrategy) CleanupNode(node *v1.Node) *v1.Node { - objCopy, err := api.Scheme.DeepCopy(*node) + objCopy, err := api.Scheme.Copy(node) if err != nil { return &v1.Node{} }