mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 12:43:23 +00:00
Merge pull request #38401 from liggitt/addressable-deep-copy
Automatic merge from submit-queue (batch tested with PRs 36071, 32752, 37998, 38350, 38401) Pass addressable values to DeepCopy Extracted from https://github.com/kubernetes/kubernetes/pull/35728 These are the places we are currently calling DeepCopy incorrectly, and we need to fix, even if we don't pick up the changes to DeepCopy in #35728: * creating a new cloner means we have no generated functions registered * passing non-addressable values doesn't pick up generated deep copy functions, and forces us into reflective mode
This commit is contained in:
commit
b0b6f3c256
@ -28,7 +28,6 @@ go_library(
|
|||||||
"//pkg/client/clientset_generated/release_1_5:go_default_library",
|
"//pkg/client/clientset_generated/release_1_5:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/conversion:go_default_library",
|
|
||||||
"//pkg/runtime:go_default_library",
|
"//pkg/runtime:go_default_library",
|
||||||
"//pkg/types:go_default_library",
|
"//pkg/types:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
"//pkg/util/flowcontrol:go_default_library",
|
||||||
|
@ -34,7 +34,6 @@ import (
|
|||||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
pkgruntime "k8s.io/kubernetes/pkg/runtime"
|
pkgruntime "k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/types"
|
"k8s.io/kubernetes/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
||||||
@ -350,7 +349,7 @@ func (daemonsetcontroller *DaemonSetController) reconcileDaemonSet(namespace str
|
|||||||
// Not federated daemonset, ignoring.
|
// Not federated daemonset, ignoring.
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
baseDaemonSetObj, err := conversion.NewCloner().DeepCopy(baseDaemonSetObjFromStore)
|
baseDaemonSetObj, err := api.Scheme.DeepCopy(baseDaemonSetObjFromStore)
|
||||||
baseDaemonSet, ok := baseDaemonSetObj.(*extensionsv1.DaemonSet)
|
baseDaemonSet, ok := baseDaemonSetObj.(*extensionsv1.DaemonSet)
|
||||||
if err != nil || !ok {
|
if err != nil || !ok {
|
||||||
glog.Errorf("Error in retrieving obj %s from store: %v, %v", daemonsetName, ok, err)
|
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.
|
// Do not modify. Otherwise make a deep copy.
|
||||||
desiredDaemonSet := &extensionsv1.DaemonSet{
|
desiredDaemonSet := &extensionsv1.DaemonSet{
|
||||||
ObjectMeta: util.DeepCopyRelevantObjectMeta(baseDaemonSet.ObjectMeta),
|
ObjectMeta: util.DeepCopyRelevantObjectMeta(baseDaemonSet.ObjectMeta),
|
||||||
Spec: util.DeepCopyApiTypeOrPanic(baseDaemonSet.Spec).(extensionsv1.DaemonSetSpec),
|
Spec: *(util.DeepCopyApiTypeOrPanic(&baseDaemonSet.Spec).(*extensionsv1.DaemonSetSpec)),
|
||||||
}
|
}
|
||||||
|
|
||||||
if !found {
|
if !found {
|
||||||
|
@ -31,7 +31,6 @@ go_library(
|
|||||||
"//pkg/client/clientset_generated/release_1_5:go_default_library",
|
"//pkg/client/clientset_generated/release_1_5:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/conversion:go_default_library",
|
|
||||||
"//pkg/runtime:go_default_library",
|
"//pkg/runtime:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
"//pkg/util/flowcontrol:go_default_library",
|
||||||
"//pkg/util/wait:go_default_library",
|
"//pkg/util/wait:go_default_library",
|
||||||
|
@ -41,7 +41,6 @@ import (
|
|||||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"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.
|
// don't delete local deployments for now. Do not reconcile it anymore.
|
||||||
return statusAllOk, nil
|
return statusAllOk, nil
|
||||||
}
|
}
|
||||||
obj, err := conversion.NewCloner().DeepCopy(objFromStore)
|
obj, err := api.Scheme.DeepCopy(objFromStore)
|
||||||
fd, ok := obj.(*extensionsv1.Deployment)
|
fd, ok := obj.(*extensionsv1.Deployment)
|
||||||
if err != nil || !ok {
|
if err != nil || !ok {
|
||||||
glog.Errorf("Error in retrieving obj from store: %v, %v", ok, err)
|
glog.Errorf("Error in retrieving obj from store: %v, %v", ok, err)
|
||||||
|
@ -28,7 +28,6 @@ go_library(
|
|||||||
"//pkg/client/clientset_generated/release_1_5:go_default_library",
|
"//pkg/client/clientset_generated/release_1_5:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/conversion:go_default_library",
|
|
||||||
"//pkg/runtime:go_default_library",
|
"//pkg/runtime:go_default_library",
|
||||||
"//pkg/runtime/schema:go_default_library",
|
"//pkg/runtime/schema:go_default_library",
|
||||||
"//pkg/types:go_default_library",
|
"//pkg/types:go_default_library",
|
||||||
|
@ -34,7 +34,6 @@ import (
|
|||||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
pkgruntime "k8s.io/kubernetes/pkg/runtime"
|
pkgruntime "k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/runtime/schema"
|
"k8s.io/kubernetes/pkg/runtime/schema"
|
||||||
"k8s.io/kubernetes/pkg/types"
|
"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) {
|
func (ic *IngressController) updateClusterIngressUIDToMasters(cluster *federationapi.Cluster, fallbackUID string) {
|
||||||
masterCluster, masterUID, err := ic.getMasterCluster()
|
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)
|
cluster, ok := clusterObj.(*federationapi.Cluster)
|
||||||
if clusterErr != nil || !ok {
|
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)
|
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)
|
glog.V(4).Infof("Ingress %q is not federated. Ignoring.", ingress)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
baseIngressObj, err := conversion.NewCloner().DeepCopy(baseIngressObjFromStore)
|
baseIngressObj, err := api.Scheme.DeepCopy(baseIngressObjFromStore)
|
||||||
baseIngress, ok := baseIngressObj.(*extensionsv1beta1.Ingress)
|
baseIngress, ok := baseIngressObj.(*extensionsv1beta1.Ingress)
|
||||||
if err != nil || !ok {
|
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)
|
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
|
return
|
||||||
}
|
}
|
||||||
desiredIngress := &extensionsv1beta1.Ingress{}
|
desiredIngress := &extensionsv1beta1.Ingress{}
|
||||||
objMeta, err := conversion.NewCloner().DeepCopy(baseIngress.ObjectMeta)
|
objMeta, err := api.Scheme.DeepCopy(&baseIngress.ObjectMeta)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Errorf("Error deep copying ObjectMeta: %v", err)
|
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 {
|
if err != nil {
|
||||||
glog.Errorf("Error deep copying Spec: %v", err)
|
glog.Errorf("Error deep copying Spec: %v", err)
|
||||||
}
|
}
|
||||||
desiredIngress.ObjectMeta, ok = objMeta.(v1.ObjectMeta)
|
objMetaCopy, ok := objMeta.(*v1.ObjectMeta)
|
||||||
if !ok {
|
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 {
|
if !ok {
|
||||||
glog.Errorf("Internal error: Failed to cast to extensionsv1beta1.Ingressespec: %v", objSpec)
|
glog.Errorf("Internal error: Failed to cast to extensionsv1beta1.Ingressespec: %v", objSpec)
|
||||||
}
|
}
|
||||||
|
desiredIngress.Spec = *objSpecCopy
|
||||||
glog.V(4).Infof("Desired Ingress: %v", desiredIngress)
|
glog.V(4).Infof("Desired Ingress: %v", desiredIngress)
|
||||||
|
|
||||||
if !clusterIngressFound {
|
if !clusterIngressFound {
|
||||||
@ -824,7 +825,7 @@ func (ic *IngressController) reconcileIngress(ingress types.NamespacedName) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !baseLBStatusExists && clusterLBStatusExists {
|
if !baseLBStatusExists && clusterLBStatusExists {
|
||||||
lbstatusObj, lbErr := conversion.NewCloner().DeepCopy(&clusterIngress.Status.LoadBalancer)
|
lbstatusObj, lbErr := api.Scheme.DeepCopy(&clusterIngress.Status.LoadBalancer)
|
||||||
lbstatus, ok := lbstatusObj.(*v1.LoadBalancerStatus)
|
lbstatus, ok := lbstatusObj.(*v1.LoadBalancerStatus)
|
||||||
if lbErr != nil || !ok {
|
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)
|
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)
|
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 {
|
} 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)
|
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 {
|
if err != nil {
|
||||||
glog.Errorf("Error deep copying ObjectMeta: %v", err)
|
glog.Errorf("Error deep copying ObjectMeta: %v", err)
|
||||||
ic.deliverIngress(ingress, ic.ingressReviewDelay, true)
|
ic.deliverIngress(ingress, ic.ingressReviewDelay, true)
|
||||||
|
|
||||||
}
|
}
|
||||||
desiredIngress.ObjectMeta, ok = objMeta.(v1.ObjectMeta)
|
objMetaCopy, ok := objMeta.(*v1.ObjectMeta)
|
||||||
if !ok {
|
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)
|
||||||
ic.deliverIngress(ingress, ic.ingressReviewDelay, true)
|
ic.deliverIngress(ingress, ic.ingressReviewDelay, true)
|
||||||
}
|
}
|
||||||
|
desiredIngress.ObjectMeta = *objMetaCopy
|
||||||
// Merge any annotations and labels on the federated ingress onto the underlying cluster ingress,
|
// Merge any annotations and labels on the federated ingress onto the underlying cluster ingress,
|
||||||
// overwriting duplicates.
|
// overwriting duplicates.
|
||||||
if desiredIngress.ObjectMeta.Annotations == nil {
|
if desiredIngress.ObjectMeta.Annotations == nil {
|
||||||
|
@ -27,7 +27,6 @@ go_library(
|
|||||||
"//pkg/client/clientset_generated/release_1_5:go_default_library",
|
"//pkg/client/clientset_generated/release_1_5:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/conversion:go_default_library",
|
|
||||||
"//pkg/runtime:go_default_library",
|
"//pkg/runtime:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
"//pkg/util/flowcontrol:go_default_library",
|
||||||
"//pkg/watch:go_default_library",
|
"//pkg/watch:go_default_library",
|
||||||
|
@ -32,7 +32,6 @@ import (
|
|||||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"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
|
// Create a copy before modifying the namespace to prevent race condition with
|
||||||
// other readers of namespace from store.
|
// other readers of namespace from store.
|
||||||
namespaceObj, err := conversion.NewCloner().DeepCopy(namespaceObjFromStore)
|
namespaceObj, err := api.Scheme.DeepCopy(namespaceObjFromStore)
|
||||||
baseNamespace, ok := namespaceObj.(*apiv1.Namespace)
|
baseNamespace, ok := namespaceObj.(*apiv1.Namespace)
|
||||||
if err != nil || !ok {
|
if err != nil || !ok {
|
||||||
glog.Errorf("Error in retrieving obj from store: %v, %v", ok, err)
|
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.
|
// The object should not be modified.
|
||||||
desiredNamespace := &apiv1.Namespace{
|
desiredNamespace := &apiv1.Namespace{
|
||||||
ObjectMeta: util.DeepCopyRelevantObjectMeta(baseNamespace.ObjectMeta),
|
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)
|
glog.V(5).Infof("Desired namespace in underlying clusters: %+v", desiredNamespace)
|
||||||
|
|
||||||
|
@ -31,7 +31,6 @@ go_library(
|
|||||||
"//pkg/client/clientset_generated/release_1_5:go_default_library",
|
"//pkg/client/clientset_generated/release_1_5:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/conversion:go_default_library",
|
|
||||||
"//pkg/runtime:go_default_library",
|
"//pkg/runtime:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
"//pkg/util/flowcontrol:go_default_library",
|
||||||
"//pkg/util/wait:go_default_library",
|
"//pkg/util/wait:go_default_library",
|
||||||
|
@ -41,7 +41,6 @@ import (
|
|||||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"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.
|
// don't delete local replicasets for now. Do not reconcile it anymore.
|
||||||
return statusAllOk, nil
|
return statusAllOk, nil
|
||||||
}
|
}
|
||||||
obj, err := conversion.NewCloner().DeepCopy(objFromStore)
|
obj, err := api.Scheme.DeepCopy(objFromStore)
|
||||||
frs, ok := obj.(*extensionsv1.ReplicaSet)
|
frs, ok := obj.(*extensionsv1.ReplicaSet)
|
||||||
if err != nil || !ok {
|
if err != nil || !ok {
|
||||||
glog.Errorf("Error in retrieving obj from store: %v, %v", ok, err)
|
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.
|
// The object can be modified.
|
||||||
lrs := &extensionsv1.ReplicaSet{
|
lrs := &extensionsv1.ReplicaSet{
|
||||||
ObjectMeta: fedutil.DeepCopyRelevantObjectMeta(frs.ObjectMeta),
|
ObjectMeta: fedutil.DeepCopyRelevantObjectMeta(frs.ObjectMeta),
|
||||||
Spec: fedutil.DeepCopyApiTypeOrPanic(frs.Spec).(extensionsv1.ReplicaSetSpec),
|
Spec: *fedutil.DeepCopyApiTypeOrPanic(&frs.Spec).(*extensionsv1.ReplicaSetSpec),
|
||||||
}
|
}
|
||||||
specReplicas := int32(replicas)
|
specReplicas := int32(replicas)
|
||||||
lrs.Spec.Replicas = &specReplicas
|
lrs.Spec.Replicas = &specReplicas
|
||||||
|
@ -27,7 +27,6 @@ go_library(
|
|||||||
"//pkg/client/clientset_generated/release_1_5:go_default_library",
|
"//pkg/client/clientset_generated/release_1_5:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/conversion:go_default_library",
|
|
||||||
"//pkg/runtime:go_default_library",
|
"//pkg/runtime:go_default_library",
|
||||||
"//pkg/types:go_default_library",
|
"//pkg/types:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
"//pkg/util/flowcontrol:go_default_library",
|
||||||
|
@ -32,7 +32,6 @@ import (
|
|||||||
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
kubeclientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
pkgruntime "k8s.io/kubernetes/pkg/runtime"
|
pkgruntime "k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/types"
|
"k8s.io/kubernetes/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
"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
|
// Create a copy before modifying the obj to prevent race condition with
|
||||||
// other readers of obj from store.
|
// other readers of obj from store.
|
||||||
baseSecretObj, err := conversion.NewCloner().DeepCopy(baseSecretObjFromStore)
|
baseSecretObj, err := api.Scheme.DeepCopy(baseSecretObjFromStore)
|
||||||
baseSecret, ok := baseSecretObj.(*apiv1.Secret)
|
baseSecret, ok := baseSecretObj.(*apiv1.Secret)
|
||||||
if err != nil || !ok {
|
if err != nil || !ok {
|
||||||
glog.Errorf("Error in retrieving obj from store: %v, %v", ok, err)
|
glog.Errorf("Error in retrieving obj from store: %v, %v", ok, err)
|
||||||
|
@ -28,6 +28,7 @@ go_library(
|
|||||||
"//federation/pkg/dnsprovider:go_default_library",
|
"//federation/pkg/dnsprovider:go_default_library",
|
||||||
"//federation/pkg/dnsprovider/rrstype:go_default_library",
|
"//federation/pkg/dnsprovider/rrstype:go_default_library",
|
||||||
"//federation/pkg/federation-controller/util:go_default_library",
|
"//federation/pkg/federation-controller/util:go_default_library",
|
||||||
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/errors:go_default_library",
|
"//pkg/api/errors:go_default_library",
|
||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
@ -35,7 +36,6 @@ go_library(
|
|||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/conversion:go_default_library",
|
|
||||||
"//pkg/runtime:go_default_library",
|
"//pkg/runtime:go_default_library",
|
||||||
"//pkg/util/runtime:go_default_library",
|
"//pkg/util/runtime:go_default_library",
|
||||||
"//pkg/util/sets:go_default_library",
|
"//pkg/util/sets:go_default_library",
|
||||||
|
@ -28,6 +28,7 @@ import (
|
|||||||
federationcache "k8s.io/kubernetes/federation/client/cache"
|
federationcache "k8s.io/kubernetes/federation/client/cache"
|
||||||
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
|
fedclientset "k8s.io/kubernetes/federation/client/clientset_generated/federation_release_1_5"
|
||||||
"k8s.io/kubernetes/federation/pkg/dnsprovider"
|
"k8s.io/kubernetes/federation/pkg/dnsprovider"
|
||||||
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/errors"
|
"k8s.io/kubernetes/pkg/api/errors"
|
||||||
v1 "k8s.io/kubernetes/pkg/api/v1"
|
v1 "k8s.io/kubernetes/pkg/api/v1"
|
||||||
cache "k8s.io/kubernetes/pkg/client/cache"
|
cache "k8s.io/kubernetes/pkg/client/cache"
|
||||||
@ -40,8 +41,6 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
"k8s.io/kubernetes/pkg/util/workqueue"
|
"k8s.io/kubernetes/pkg/util/workqueue"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -361,7 +360,7 @@ func (s *ServiceController) processServiceForCluster(cachedService *cachedServic
|
|||||||
// should be retried.
|
// should be retried.
|
||||||
func (s *ServiceController) updateFederationService(key string, cachedService *cachedService) (error, bool) {
|
func (s *ServiceController) updateFederationService(key string, cachedService *cachedService) (error, bool) {
|
||||||
// Clone federation service, and create them in underlying k8s cluster
|
// 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 {
|
if err != nil {
|
||||||
return err, !retryable
|
return err, !retryable
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,6 @@ go_library(
|
|||||||
"//pkg/client/unversioned/clientcmd:go_default_library",
|
"//pkg/client/unversioned/clientcmd:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
||||||
"//pkg/controller/deployment/util:go_default_library",
|
"//pkg/controller/deployment/util:go_default_library",
|
||||||
"//pkg/conversion:go_default_library",
|
|
||||||
"//pkg/runtime:go_default_library",
|
"//pkg/runtime:go_default_library",
|
||||||
"//pkg/util/flowcontrol:go_default_library",
|
"//pkg/util/flowcontrol:go_default_library",
|
||||||
"//pkg/util/net:go_default_library",
|
"//pkg/util/net:go_default_library",
|
||||||
|
@ -70,6 +70,6 @@ func DeepCopyDeploymentObjectMeta(meta api_v1.ObjectMeta) api_v1.ObjectMeta {
|
|||||||
func DeepCopyDeployment(a *extensions_v1.Deployment) *extensions_v1.Deployment {
|
func DeepCopyDeployment(a *extensions_v1.Deployment) *extensions_v1.Deployment {
|
||||||
return &extensions_v1.Deployment{
|
return &extensions_v1.Deployment{
|
||||||
ObjectMeta: DeepCopyDeploymentObjectMeta(a.ObjectMeta),
|
ObjectMeta: DeepCopyDeploymentObjectMeta(a.ObjectMeta),
|
||||||
Spec: DeepCopyApiTypeOrPanic(a.Spec).(extensions_v1.DeploymentSpec),
|
Spec: *(DeepCopyApiTypeOrPanic(&a.Spec).(*extensions_v1.DeploymentSpec)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,8 +19,8 @@ package util
|
|||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/pkg/api"
|
||||||
api_v1 "k8s.io/kubernetes/pkg/api/v1"
|
api_v1 "k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -86,7 +86,7 @@ func ObjectMetaAndSpecEquivalent(a, b runtime.Object) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func DeepCopyApiTypeOrPanic(item interface{}) interface{} {
|
func DeepCopyApiTypeOrPanic(item interface{}) interface{} {
|
||||||
result, err := conversion.NewCloner().DeepCopy(item)
|
result, err := api.Scheme.DeepCopy(item)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,6 @@ go_library(
|
|||||||
"//pkg/client/clientset_generated/release_1_5/typed/core/v1:go_default_library",
|
"//pkg/client/clientset_generated/release_1_5/typed/core/v1:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/conversion:go_default_library",
|
|
||||||
"//pkg/fields:go_default_library",
|
"//pkg/fields:go_default_library",
|
||||||
"//pkg/labels:go_default_library",
|
"//pkg/labels:go_default_library",
|
||||||
"//pkg/runtime:go_default_library",
|
"//pkg/runtime:go_default_library",
|
||||||
|
@ -32,7 +32,6 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/cache"
|
"k8s.io/kubernetes/pkg/client/cache"
|
||||||
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/runtime/schema"
|
"k8s.io/kubernetes/pkg/runtime/schema"
|
||||||
@ -486,7 +485,7 @@ func GetPodFromTemplate(template *v1.PodTemplateSpec, parentObject runtime.Objec
|
|||||||
if controllerRef != nil {
|
if controllerRef != nil {
|
||||||
pod.OwnerReferences = append(pod.OwnerReferences, *controllerRef)
|
pod.OwnerReferences = append(pod.OwnerReferences, *controllerRef)
|
||||||
}
|
}
|
||||||
clone, err := conversion.NewCloner().DeepCopy(&template.Spec)
|
clone, err := api.Scheme.DeepCopy(&template.Spec)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -431,7 +431,7 @@ func TestEqualIgnoreHash(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
runTest := func(t1, t2 v1.PodTemplateSpec, reversed bool) {
|
runTest := func(t1, t2 *v1.PodTemplateSpec, reversed bool) {
|
||||||
// Set up
|
// Set up
|
||||||
t1Copy, err := api.Scheme.DeepCopy(t1)
|
t1Copy, err := api.Scheme.DeepCopy(t1)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -446,7 +446,7 @@ func TestEqualIgnoreHash(t *testing.T) {
|
|||||||
reverseString = " (reverse order)"
|
reverseString = " (reverse order)"
|
||||||
}
|
}
|
||||||
// Run
|
// Run
|
||||||
equal, err := equalIgnoreHash(t1, t2)
|
equal, err := equalIgnoreHash(*t1, *t2)
|
||||||
// Check
|
// Check
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("In test case %q%s, expected no error, returned %v", test.test, reverseString, err)
|
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)
|
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
|
// Test the same case in reverse order
|
||||||
runTest(test.latter, test.former, true)
|
runTest(&test.latter, &test.former, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
// this field correctly, we will prevent the /evict handler from approving an
|
||||||
// eviction when it may be unsafe to do so.
|
// eviction when it may be unsafe to do so.
|
||||||
func (dc *DisruptionController) failSafe(pdb *policy.PodDisruptionBudget) error {
|
func (dc *DisruptionController) failSafe(pdb *policy.PodDisruptionBudget) error {
|
||||||
obj, err := api.Scheme.DeepCopy(*pdb)
|
obj, err := api.Scheme.DeepCopy(pdb)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
newPdb := obj.(policy.PodDisruptionBudget)
|
newPdb := obj.(*policy.PodDisruptionBudget)
|
||||||
newPdb.Status.PodDisruptionsAllowed = 0
|
newPdb.Status.PodDisruptionsAllowed = 0
|
||||||
|
|
||||||
return dc.getUpdater()(&newPdb)
|
return dc.getUpdater()(newPdb)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dc *DisruptionController) updatePdbStatus(pdb *policy.PodDisruptionBudget, currentHealthy, desiredHealthy, expectedCount int32,
|
func (dc *DisruptionController) updatePdbStatus(pdb *policy.PodDisruptionBudget, currentHealthy, desiredHealthy, expectedCount int32,
|
||||||
@ -675,11 +675,11 @@ func (dc *DisruptionController) updatePdbStatus(pdb *policy.PodDisruptionBudget,
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
obj, err := api.Scheme.DeepCopy(*pdb)
|
obj, err := api.Scheme.DeepCopy(pdb)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
newPdb := obj.(policy.PodDisruptionBudget)
|
newPdb := obj.(*policy.PodDisruptionBudget)
|
||||||
|
|
||||||
newPdb.Status = policy.PodDisruptionBudgetStatus{
|
newPdb.Status = policy.PodDisruptionBudgetStatus{
|
||||||
CurrentHealthy: currentHealthy,
|
CurrentHealthy: currentHealthy,
|
||||||
@ -690,7 +690,7 @@ func (dc *DisruptionController) updatePdbStatus(pdb *policy.PodDisruptionBudget,
|
|||||||
ObservedGeneration: pdb.Generation,
|
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
|
// refresh tries to re-GET the given PDB. If there are any errors, it just
|
||||||
|
@ -44,11 +44,11 @@ func (ps *pdbStates) Set(pdb *policy.PodDisruptionBudget) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
obj, err := api.Scheme.DeepCopy(*pdb)
|
obj, err := api.Scheme.DeepCopy(pdb)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
(*ps)[key] = obj.(policy.PodDisruptionBudget)
|
(*ps)[key] = *obj.(*policy.PodDisruptionBudget)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -48,11 +48,11 @@ func updateReplicaSetStatus(c unversionedextensions.ReplicaSetInterface, rs exte
|
|||||||
|
|
||||||
// deep copy to avoid mutation now.
|
// 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
|
// 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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
rs = copyObj.(extensions.ReplicaSet)
|
rs = *copyObj.(*extensions.ReplicaSet)
|
||||||
|
|
||||||
// Save the generation number we acted on, otherwise we might wrongfully indicate
|
// Save the generation number we acted on, otherwise we might wrongfully indicate
|
||||||
// that we've seen a spec update when we retry.
|
// that we've seen a spec update when we retry.
|
||||||
|
@ -434,18 +434,18 @@ func (adc *attachDetachController) createVolumeSpec(
|
|||||||
|
|
||||||
// Do not return the original volume object, since it's from the shared
|
// Do not return the original volume object, since it's from the shared
|
||||||
// informer it may be mutated by another consumer.
|
// 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 {
|
if err != nil || clonedPodVolumeObj == nil {
|
||||||
return nil, fmt.Errorf(
|
return nil, fmt.Errorf(
|
||||||
"failed to deep copy %q volume object. err=%v", podVolume.Name, err)
|
"failed to deep copy %q volume object. err=%v", podVolume.Name, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
clonedPodVolume, ok := clonedPodVolumeObj.(v1.Volume)
|
clonedPodVolume, ok := clonedPodVolumeObj.(*v1.Volume)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("failed to cast clonedPodVolume %#v to v1.Volume", clonedPodVolumeObj)
|
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
|
// 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
|
// Do not return the object from the informer, since the store is shared it
|
||||||
// may be mutated by another consumer.
|
// may be mutated by another consumer.
|
||||||
clonedPVObj, err := api.Scheme.DeepCopy(*pv)
|
clonedPVObj, err := api.Scheme.DeepCopy(pv)
|
||||||
if err != nil || clonedPVObj == nil {
|
if err != nil || clonedPVObj == nil {
|
||||||
return nil, fmt.Errorf(
|
return nil, fmt.Errorf(
|
||||||
"failed to deep copy %q PV object. err=%v", name, err)
|
"failed to deep copy %q PV object. err=%v", name, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
clonedPV, ok := clonedPVObj.(v1.PersistentVolume)
|
clonedPV, ok := clonedPVObj.(*v1.PersistentVolume)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf(
|
return nil, fmt.Errorf(
|
||||||
"failed to cast %q clonedPV %#v to PersistentVolume", name, pvObj)
|
"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"
|
// processVolumesInUse processes the list of volumes marked as "in-use"
|
||||||
|
@ -18,11 +18,11 @@ go_library(
|
|||||||
],
|
],
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
deps = [
|
deps = [
|
||||||
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
"//pkg/client/clientset_generated/release_1_5:go_default_library",
|
"//pkg/client/clientset_generated/release_1_5:go_default_library",
|
||||||
"//pkg/controller/volume/attachdetach/cache:go_default_library",
|
"//pkg/controller/volume/attachdetach/cache:go_default_library",
|
||||||
"//pkg/conversion:go_default_library",
|
|
||||||
"//pkg/util/strategicpatch:go_default_library",
|
"//pkg/util/strategicpatch:go_default_library",
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
],
|
],
|
||||||
|
@ -24,11 +24,11 @@ import (
|
|||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
kcache "k8s.io/kubernetes/pkg/client/cache"
|
kcache "k8s.io/kubernetes/pkg/client/cache"
|
||||||
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
||||||
"k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache"
|
"k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
"k8s.io/kubernetes/pkg/util/strategicpatch"
|
"k8s.io/kubernetes/pkg/util/strategicpatch"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ func (nsu *nodeStatusUpdater) UpdateNodeStatuses() error {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
clonedNode, err := conversion.NewCloner().DeepCopy(nodeObj)
|
clonedNode, err := api.Scheme.DeepCopy(nodeObj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error cloning node %q: %v",
|
return fmt.Errorf("error cloning node %q: %v",
|
||||||
nodeName,
|
nodeName,
|
||||||
|
@ -20,6 +20,7 @@ go_library(
|
|||||||
],
|
],
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
deps = [
|
deps = [
|
||||||
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/errors:go_default_library",
|
"//pkg/api/errors:go_default_library",
|
||||||
"//pkg/api/meta:go_default_library",
|
"//pkg/api/meta:go_default_library",
|
||||||
"//pkg/api/v1: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/clientset_generated/release_1_5/typed/core/v1:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/cloudprovider:go_default_library",
|
"//pkg/cloudprovider:go_default_library",
|
||||||
"//pkg/conversion:go_default_library",
|
|
||||||
"//pkg/labels:go_default_library",
|
"//pkg/labels:go_default_library",
|
||||||
"//pkg/runtime:go_default_library",
|
"//pkg/runtime:go_default_library",
|
||||||
"//pkg/types:go_default_library",
|
"//pkg/types:go_default_library",
|
||||||
@ -58,6 +58,7 @@ go_test(
|
|||||||
library = "go_default_library",
|
library = "go_default_library",
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
deps = [
|
deps = [
|
||||||
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/resource:go_default_library",
|
"//pkg/api/resource:go_default_library",
|
||||||
"//pkg/api/testapi:go_default_library",
|
"//pkg/api/testapi:go_default_library",
|
||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
@ -70,7 +71,6 @@ go_test(
|
|||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/client/testing/cache:go_default_library",
|
"//pkg/client/testing/cache:go_default_library",
|
||||||
"//pkg/client/testing/core:go_default_library",
|
"//pkg/client/testing/core:go_default_library",
|
||||||
"//pkg/conversion:go_default_library",
|
|
||||||
"//pkg/runtime:go_default_library",
|
"//pkg/runtime:go_default_library",
|
||||||
"//pkg/types:go_default_library",
|
"//pkg/types:go_default_library",
|
||||||
"//pkg/util/diff:go_default_library",
|
"//pkg/util/diff:go_default_library",
|
||||||
|
@ -29,6 +29,7 @@ import (
|
|||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/resource"
|
"k8s.io/kubernetes/pkg/api/resource"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
@ -41,7 +42,6 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
fcache "k8s.io/kubernetes/pkg/client/testing/cache"
|
fcache "k8s.io/kubernetes/pkg/client/testing/cache"
|
||||||
"k8s.io/kubernetes/pkg/client/testing/core"
|
"k8s.io/kubernetes/pkg/client/testing/core"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/types"
|
"k8s.io/kubernetes/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/util/diff"
|
"k8s.io/kubernetes/pkg/util/diff"
|
||||||
@ -314,7 +314,7 @@ func (r *volumeReactor) checkVolumes(expectedVolumes []*v1.PersistentVolume) err
|
|||||||
for _, v := range r.volumes {
|
for _, v := range r.volumes {
|
||||||
// We must clone the volume because of golang race check - it was
|
// We must clone the volume because of golang race check - it was
|
||||||
// written by the controller without any locks on it.
|
// written by the controller without any locks on it.
|
||||||
clone, _ := conversion.NewCloner().DeepCopy(v)
|
clone, _ := api.Scheme.DeepCopy(v)
|
||||||
v = clone.(*v1.PersistentVolume)
|
v = clone.(*v1.PersistentVolume)
|
||||||
v.ResourceVersion = ""
|
v.ResourceVersion = ""
|
||||||
if v.Spec.ClaimRef != nil {
|
if v.Spec.ClaimRef != nil {
|
||||||
@ -345,7 +345,7 @@ func (r *volumeReactor) checkClaims(expectedClaims []*v1.PersistentVolumeClaim)
|
|||||||
for _, c := range r.claims {
|
for _, c := range r.claims {
|
||||||
// We must clone the claim because of golang race check - it was
|
// We must clone the claim because of golang race check - it was
|
||||||
// written by the controller without any locks on it.
|
// written by the controller without any locks on it.
|
||||||
clone, _ := conversion.NewCloner().DeepCopy(c)
|
clone, _ := api.Scheme.DeepCopy(c)
|
||||||
c = clone.(*v1.PersistentVolumeClaim)
|
c = clone.(*v1.PersistentVolumeClaim)
|
||||||
c.ResourceVersion = ""
|
c.ResourceVersion = ""
|
||||||
gotMap[c.Name] = c
|
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
|
// Generate deletion event. Cloned volume is needed to prevent races (and we
|
||||||
// would get a clone from etcd too).
|
// would get a clone from etcd too).
|
||||||
clone, _ := conversion.NewCloner().DeepCopy(volume)
|
clone, _ := api.Scheme.DeepCopy(volume)
|
||||||
volumeClone := clone.(*v1.PersistentVolume)
|
volumeClone := clone.(*v1.PersistentVolume)
|
||||||
r.volumeSource.Delete(volumeClone)
|
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
|
// Generate deletion event. Cloned volume is needed to prevent races (and we
|
||||||
// would get a clone from etcd too).
|
// would get a clone from etcd too).
|
||||||
clone, _ := conversion.NewCloner().DeepCopy(claim)
|
clone, _ := api.Scheme.DeepCopy(claim)
|
||||||
claimClone := clone.(*v1.PersistentVolumeClaim)
|
claimClone := clone.(*v1.PersistentVolumeClaim)
|
||||||
r.claimSource.Delete(claimClone)
|
r.claimSource.Delete(claimClone)
|
||||||
}
|
}
|
||||||
@ -555,7 +555,7 @@ func (r *volumeReactor) modifyVolumeEvent(volume *v1.PersistentVolume) {
|
|||||||
r.volumes[volume.Name] = volume
|
r.volumes[volume.Name] = volume
|
||||||
// Generate deletion event. Cloned volume is needed to prevent races (and we
|
// Generate deletion event. Cloned volume is needed to prevent races (and we
|
||||||
// would get a clone from etcd too).
|
// would get a clone from etcd too).
|
||||||
clone, _ := conversion.NewCloner().DeepCopy(volume)
|
clone, _ := api.Scheme.DeepCopy(volume)
|
||||||
volumeClone := clone.(*v1.PersistentVolume)
|
volumeClone := clone.(*v1.PersistentVolume)
|
||||||
r.volumeSource.Modify(volumeClone)
|
r.volumeSource.Modify(volumeClone)
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
||||||
storage "k8s.io/kubernetes/pkg/apis/storage/v1beta1"
|
storage "k8s.io/kubernetes/pkg/apis/storage/v1beta1"
|
||||||
@ -30,7 +31,6 @@ import (
|
|||||||
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
clientset "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider"
|
"k8s.io/kubernetes/pkg/cloudprovider"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
"k8s.io/kubernetes/pkg/util/goroutinemap"
|
"k8s.io/kubernetes/pkg/util/goroutinemap"
|
||||||
vol "k8s.io/kubernetes/pkg/volume"
|
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
|
// This speeds up binding of provisioned volumes - provisioner saves
|
||||||
// only the new PV and it expects that next syncClaim will bind the
|
// only the new PV and it expects that next syncClaim will bind the
|
||||||
// claim to it.
|
// claim to it.
|
||||||
clone, err := conversion.NewCloner().DeepCopy(claim)
|
clone, err := api.Scheme.DeepCopy(claim)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("error cloning claim %q: %v", claimToClaimKey(claim), err)
|
return fmt.Errorf("error cloning claim %q: %v", claimToClaimKey(claim), err)
|
||||||
}
|
}
|
||||||
@ -547,7 +547,7 @@ func (ctrl *PersistentVolumeController) updateClaimStatus(claim *v1.PersistentVo
|
|||||||
|
|
||||||
dirty := false
|
dirty := false
|
||||||
|
|
||||||
clone, err := conversion.NewCloner().DeepCopy(claim)
|
clone, err := api.Scheme.DeepCopy(claim)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Error cloning claim: %v", err)
|
return nil, fmt.Errorf("Error cloning claim: %v", err)
|
||||||
}
|
}
|
||||||
@ -647,7 +647,7 @@ func (ctrl *PersistentVolumeController) updateVolumePhase(volume *v1.PersistentV
|
|||||||
return volume, nil
|
return volume, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
clone, err := conversion.NewCloner().DeepCopy(volume)
|
clone, err := api.Scheme.DeepCopy(volume)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Error cloning claim: %v", err)
|
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
|
// The volume from method args can be pointing to watcher cache. We must not
|
||||||
// modify these, therefore create a copy.
|
// modify these, therefore create a copy.
|
||||||
clone, err := conversion.NewCloner().DeepCopy(volume)
|
clone, err := api.Scheme.DeepCopy(volume)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Error cloning pv: %v", err)
|
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
|
// The claim from method args can be pointing to watcher cache. We must not
|
||||||
// modify these, therefore create a copy.
|
// modify these, therefore create a copy.
|
||||||
clone, err := conversion.NewCloner().DeepCopy(claim)
|
clone, err := api.Scheme.DeepCopy(claim)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Error cloning claim: %v", err)
|
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))
|
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.
|
// Save the PV only when any modification is neccessary.
|
||||||
clone, err := conversion.NewCloner().DeepCopy(volume)
|
clone, err := api.Scheme.DeepCopy(volume)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("Error cloning pv: %v", err)
|
return fmt.Errorf("Error cloning pv: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/errors"
|
"k8s.io/kubernetes/pkg/api/errors"
|
||||||
"k8s.io/kubernetes/pkg/api/meta"
|
"k8s.io/kubernetes/pkg/api/meta"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"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"
|
unversionedcore "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5/typed/core/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/cloudprovider"
|
"k8s.io/kubernetes/pkg/cloudprovider"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util/goroutinemap"
|
"k8s.io/kubernetes/pkg/util/goroutinemap"
|
||||||
vol "k8s.io/kubernetes/pkg/volume"
|
vol "k8s.io/kubernetes/pkg/volume"
|
||||||
@ -178,7 +178,7 @@ func (ctrl *PersistentVolumeController) initializeCaches(volumeSource, claimSour
|
|||||||
// Ignore template volumes from kubernetes 1.2
|
// Ignore template volumes from kubernetes 1.2
|
||||||
deleted := ctrl.upgradeVolumeFrom1_2(&volume)
|
deleted := ctrl.upgradeVolumeFrom1_2(&volume)
|
||||||
if !deleted {
|
if !deleted {
|
||||||
clone, err := conversion.NewCloner().DeepCopy(&volume)
|
clone, err := api.Scheme.DeepCopy(&volume)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Errorf("error cloning volume %q: %v", volume.Name, err)
|
glog.Errorf("error cloning volume %q: %v", volume.Name, err)
|
||||||
continue
|
continue
|
||||||
@ -199,7 +199,7 @@ func (ctrl *PersistentVolumeController) initializeCaches(volumeSource, claimSour
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
for _, claim := range claimList.Items {
|
for _, claim := range claimList.Items {
|
||||||
clone, err := conversion.NewCloner().DeepCopy(&claim)
|
clone, err := api.Scheme.DeepCopy(&claim)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Errorf("error cloning claim %q: %v", claimToClaimKey(&claim), err)
|
glog.Errorf("error cloning claim %q: %v", claimToClaimKey(&claim), err)
|
||||||
continue
|
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
|
// The volume from method args can be pointing to watcher cache. We must not
|
||||||
// modify these, therefore create a copy.
|
// modify these, therefore create a copy.
|
||||||
clone, err := conversion.NewCloner().DeepCopy(claim)
|
clone, err := api.Scheme.DeepCopy(claim)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Error cloning pv: %v", err)
|
return nil, fmt.Errorf("Error cloning pv: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -188,7 +188,6 @@ go_test(
|
|||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/client/restclient/fake:go_default_library",
|
"//pkg/client/restclient/fake:go_default_library",
|
||||||
"//pkg/client/typed/dynamic:go_default_library",
|
"//pkg/client/typed/dynamic:go_default_library",
|
||||||
"//pkg/conversion:go_default_library",
|
|
||||||
"//pkg/kubectl:go_default_library",
|
"//pkg/kubectl:go_default_library",
|
||||||
"//pkg/kubectl/cmd/testing:go_default_library",
|
"//pkg/kubectl/cmd/testing:go_default_library",
|
||||||
"//pkg/kubectl/cmd/util:go_default_library",
|
"//pkg/kubectl/cmd/util:go_default_library",
|
||||||
|
@ -41,7 +41,6 @@ import (
|
|||||||
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
||||||
"k8s.io/kubernetes/pkg/apis/policy"
|
"k8s.io/kubernetes/pkg/apis/policy"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient/fake"
|
"k8s.io/kubernetes/pkg/client/restclient/fake"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
@ -70,7 +69,7 @@ func TestMain(m *testing.M) {
|
|||||||
},
|
},
|
||||||
Status: api.NodeStatus{},
|
Status: api.NodeStatus{},
|
||||||
}
|
}
|
||||||
clone, _ := conversion.NewCloner().DeepCopy(node)
|
clone, _ := api.Scheme.DeepCopy(node)
|
||||||
|
|
||||||
// A copy of the same node, but cordoned.
|
// A copy of the same node, but cordoned.
|
||||||
cordoned_node = clone.(*api.Node)
|
cordoned_node = clone.(*api.Node)
|
||||||
|
@ -28,7 +28,6 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient/fake"
|
"k8s.io/kubernetes/pkg/client/restclient/fake"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
@ -52,7 +51,7 @@ func generateNodeAndTaintedNode(oldTaints []api.Taint, newTaints []api.Taint) (*
|
|||||||
},
|
},
|
||||||
Status: api.NodeStatus{},
|
Status: api.NodeStatus{},
|
||||||
}
|
}
|
||||||
clone, _ := conversion.NewCloner().DeepCopy(node)
|
clone, _ := api.Scheme.DeepCopy(node)
|
||||||
|
|
||||||
newTaintsData, _ := json.Marshal(newTaints)
|
newTaintsData, _ := json.Marshal(newTaints)
|
||||||
// A copy of the same node, but tainted.
|
// A copy of the same node, but tainted.
|
||||||
|
@ -70,7 +70,6 @@ go_test(
|
|||||||
"//pkg/apis/meta/v1:go_default_library",
|
"//pkg/apis/meta/v1:go_default_library",
|
||||||
"//pkg/client/cache:go_default_library",
|
"//pkg/client/cache:go_default_library",
|
||||||
"//pkg/client/record:go_default_library",
|
"//pkg/client/record:go_default_library",
|
||||||
"//pkg/conversion:go_default_library",
|
|
||||||
"//pkg/kubelet/types:go_default_library",
|
"//pkg/kubelet/types:go_default_library",
|
||||||
"//pkg/runtime:go_default_library",
|
"//pkg/runtime:go_default_library",
|
||||||
"//pkg/securitycontext:go_default_library",
|
"//pkg/securitycontext:go_default_library",
|
||||||
|
@ -28,7 +28,6 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
|
kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
|
||||||
"k8s.io/kubernetes/pkg/securitycontext"
|
"k8s.io/kubernetes/pkg/securitycontext"
|
||||||
"k8s.io/kubernetes/pkg/types"
|
"k8s.io/kubernetes/pkg/types"
|
||||||
@ -369,7 +368,7 @@ func TestPodUpdateAnnotations(t *testing.T) {
|
|||||||
pod.Annotations = make(map[string]string, 0)
|
pod.Annotations = make(map[string]string, 0)
|
||||||
pod.Annotations["kubernetes.io/blah"] = "blah"
|
pod.Annotations["kubernetes.io/blah"] = "blah"
|
||||||
|
|
||||||
clone, err := conversion.NewCloner().DeepCopy(pod)
|
clone, err := api.Scheme.DeepCopy(pod)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("%v", err)
|
t.Fatalf("%v", err)
|
||||||
}
|
}
|
||||||
@ -401,7 +400,7 @@ func TestPodUpdateLabels(t *testing.T) {
|
|||||||
pod.Labels = make(map[string]string, 0)
|
pod.Labels = make(map[string]string, 0)
|
||||||
pod.Labels["key"] = "value"
|
pod.Labels["key"] = "value"
|
||||||
|
|
||||||
clone, err := conversion.NewCloner().DeepCopy(pod)
|
clone, err := api.Scheme.DeepCopy(pod)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("%v", err)
|
t.Fatalf("%v", err)
|
||||||
}
|
}
|
||||||
|
@ -344,20 +344,20 @@ func (dswp *desiredStateOfWorldPopulator) createVolumeSpec(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Do not return the original volume object, since the source could mutate it
|
// 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 {
|
if err != nil || clonedPodVolumeObj == nil {
|
||||||
return nil, "", fmt.Errorf(
|
return nil, "", fmt.Errorf(
|
||||||
"failed to deep copy %q volume object. err=%v", podVolume.Name, err)
|
"failed to deep copy %q volume object. err=%v", podVolume.Name, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
clonedPodVolume, ok := clonedPodVolumeObj.(v1.Volume)
|
clonedPodVolume, ok := clonedPodVolumeObj.(*v1.Volume)
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, "", fmt.Errorf(
|
return nil, "", fmt.Errorf(
|
||||||
"failed to cast clonedPodVolume %#v to v1.Volume",
|
"failed to cast clonedPodVolume %#v to v1.Volume",
|
||||||
clonedPodVolumeObj)
|
clonedPodVolumeObj)
|
||||||
}
|
}
|
||||||
|
|
||||||
return volume.NewSpecFromVolume(&clonedPodVolume), "", nil
|
return volume.NewSpecFromVolume(clonedPodVolume), "", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// getPVCExtractPV fetches the PVC object with the given namespace and name from
|
// getPVCExtractPV fetches the PVC object with the given namespace and name from
|
||||||
|
@ -18,8 +18,8 @@ go_library(
|
|||||||
],
|
],
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
deps = [
|
deps = [
|
||||||
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
"//pkg/conversion:go_default_library",
|
|
||||||
"//pkg/types:go_default_library",
|
"//pkg/types:go_default_library",
|
||||||
"//pkg/util/uuid:go_default_library",
|
"//pkg/util/uuid:go_default_library",
|
||||||
"//pkg/volume:go_default_library",
|
"//pkg/volume:go_default_library",
|
||||||
|
@ -21,8 +21,8 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
"k8s.io/kubernetes/pkg/types"
|
"k8s.io/kubernetes/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/util/uuid"
|
"k8s.io/kubernetes/pkg/util/uuid"
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"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.
|
// 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.
|
// HostPath recycling only works in single node clusters and is meant for testing purposes only.
|
||||||
func (r *hostPathRecycler) Recycle() error {
|
func (r *hostPathRecycler) Recycle() error {
|
||||||
templateClone, err := conversion.NewCloner().DeepCopy(r.config.RecyclerPodTemplate)
|
templateClone, err := api.Scheme.DeepCopy(r.config.RecyclerPodTemplate)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -18,8 +18,8 @@ go_library(
|
|||||||
],
|
],
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
deps = [
|
deps = [
|
||||||
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
"//pkg/conversion:go_default_library",
|
|
||||||
"//pkg/types:go_default_library",
|
"//pkg/types:go_default_library",
|
||||||
"//pkg/util/exec:go_default_library",
|
"//pkg/util/exec:go_default_library",
|
||||||
"//pkg/util/mount:go_default_library",
|
"//pkg/util/mount:go_default_library",
|
||||||
|
@ -22,8 +22,8 @@ import (
|
|||||||
"runtime"
|
"runtime"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
"k8s.io/kubernetes/pkg/types"
|
"k8s.io/kubernetes/pkg/types"
|
||||||
"k8s.io/kubernetes/pkg/util/exec"
|
"k8s.io/kubernetes/pkg/util/exec"
|
||||||
"k8s.io/kubernetes/pkg/util/mount"
|
"k8s.io/kubernetes/pkg/util/mount"
|
||||||
@ -333,7 +333,7 @@ func (r *nfsRecycler) GetPath() string {
|
|||||||
// Recycle recycles/scrubs clean an NFS volume.
|
// Recycle recycles/scrubs clean an NFS volume.
|
||||||
// Recycle blocks until the pod has completed or any error occurs.
|
// Recycle blocks until the pod has completed or any error occurs.
|
||||||
func (r *nfsRecycler) Recycle() error {
|
func (r *nfsRecycler) Recycle() error {
|
||||||
templateClone, err := conversion.NewCloner().DeepCopy(r.config.RecyclerPodTemplate)
|
templateClone, err := api.Scheme.DeepCopy(r.config.RecyclerPodTemplate)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,6 @@ go_test(
|
|||||||
"//pkg/apis/meta/v1:go_default_library",
|
"//pkg/apis/meta/v1:go_default_library",
|
||||||
"//pkg/apis/storage:go_default_library",
|
"//pkg/apis/storage:go_default_library",
|
||||||
"//pkg/apis/storage/util:go_default_library",
|
"//pkg/apis/storage/util:go_default_library",
|
||||||
"//pkg/conversion:go_default_library",
|
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
@ -26,7 +26,6 @@ import (
|
|||||||
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
||||||
"k8s.io/kubernetes/pkg/apis/storage"
|
"k8s.io/kubernetes/pkg/apis/storage"
|
||||||
storageutil "k8s.io/kubernetes/pkg/apis/storage/util"
|
storageutil "k8s.io/kubernetes/pkg/apis/storage/util"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestAdmission(t *testing.T) {
|
func TestAdmission(t *testing.T) {
|
||||||
@ -187,7 +186,7 @@ func TestAdmission(t *testing.T) {
|
|||||||
glog.V(4).Infof("starting test %q", test.name)
|
glog.V(4).Infof("starting test %q", test.name)
|
||||||
|
|
||||||
// clone the claim, it's going to be modified
|
// 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 {
|
if err != nil {
|
||||||
t.Fatalf("Cannot clone claim: %v", err)
|
t.Fatalf("Cannot clone claim: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -150,7 +150,6 @@ go_library(
|
|||||||
"//pkg/controller/petset:go_default_library",
|
"//pkg/controller/petset:go_default_library",
|
||||||
"//pkg/controller/replicaset:go_default_library",
|
"//pkg/controller/replicaset:go_default_library",
|
||||||
"//pkg/controller/replication:go_default_library",
|
"//pkg/controller/replication:go_default_library",
|
||||||
"//pkg/conversion:go_default_library",
|
|
||||||
"//pkg/dns/federation:go_default_library",
|
"//pkg/dns/federation:go_default_library",
|
||||||
"//pkg/fields:go_default_library",
|
"//pkg/fields:go_default_library",
|
||||||
"//pkg/kubectl:go_default_library",
|
"//pkg/kubectl:go_default_library",
|
||||||
|
@ -23,8 +23,8 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
|
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
@ -172,7 +172,7 @@ var _ = framework.KubeDescribe("[Feature:Federation]", func() {
|
|||||||
createBackendPodsOrFail(clusters, nsName, FederatedServicePodName)
|
createBackendPodsOrFail(clusters, nsName, FederatedServicePodName)
|
||||||
|
|
||||||
service = createServiceOrFail(f.FederationClientset_1_5, nsName, FederatedServiceName)
|
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
|
// Cloning shouldn't fail. On the off-chance it does, we
|
||||||
// should shallow copy service to serviceShard before
|
// should shallow copy service to serviceShard before
|
||||||
// failing. If we don't do this we will never really
|
// failing. If we don't do this we will never really
|
||||||
|
@ -27,6 +27,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/resource"
|
"k8s.io/kubernetes/pkg/api/resource"
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/apimachinery/registered"
|
"k8s.io/kubernetes/pkg/apimachinery/registered"
|
||||||
@ -37,7 +38,6 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
fakecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
|
fakecloud "k8s.io/kubernetes/pkg/cloudprovider/providers/fake"
|
||||||
persistentvolumecontroller "k8s.io/kubernetes/pkg/controller/volume/persistentvolume"
|
persistentvolumecontroller "k8s.io/kubernetes/pkg/controller/volume/persistentvolume"
|
||||||
"k8s.io/kubernetes/pkg/conversion"
|
|
||||||
"k8s.io/kubernetes/pkg/volume"
|
"k8s.io/kubernetes/pkg/volume"
|
||||||
volumetest "k8s.io/kubernetes/pkg/volume/testing"
|
volumetest "k8s.io/kubernetes/pkg/volume/testing"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
@ -243,7 +243,7 @@ func TestPersistentVolumeBindRace(t *testing.T) {
|
|||||||
claims := []*v1.PersistentVolumeClaim{}
|
claims := []*v1.PersistentVolumeClaim{}
|
||||||
for counter <= maxClaims {
|
for counter <= maxClaims {
|
||||||
counter += 1
|
counter += 1
|
||||||
clone, _ := conversion.NewCloner().DeepCopy(pvc)
|
clone, _ := api.Scheme.DeepCopy(pvc)
|
||||||
newPvc, _ := clone.(*v1.PersistentVolumeClaim)
|
newPvc, _ := clone.(*v1.PersistentVolumeClaim)
|
||||||
newPvc.ObjectMeta = v1.ObjectMeta{Name: fmt.Sprintf("fake-pvc-race-%d", counter)}
|
newPvc.ObjectMeta = v1.ObjectMeta{Name: fmt.Sprintf("fake-pvc-race-%d", counter)}
|
||||||
claim, err := testClient.PersistentVolumeClaims(ns.Name).Create(newPvc)
|
claim, err := testClient.PersistentVolumeClaims(ns.Name).Create(newPvc)
|
||||||
|
@ -738,7 +738,7 @@ func (s *LabelNodePrepareStrategy) PreparePatch(*v1.Node) []byte {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *LabelNodePrepareStrategy) CleanupNode(node *v1.Node) *v1.Node {
|
func (s *LabelNodePrepareStrategy) CleanupNode(node *v1.Node) *v1.Node {
|
||||||
objCopy, err := api.Scheme.DeepCopy(*node)
|
objCopy, err := api.Scheme.Copy(node)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &v1.Node{}
|
return &v1.Node{}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user