mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-01-05 23:47:50 +00:00
Pass addressable values to DeepCopy
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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",
|
||||
],
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user