diff --git a/pkg/controller/volume/attachdetach/statusupdater/BUILD b/pkg/controller/volume/attachdetach/statusupdater/BUILD index f24a70b3fd5..c3a9b2180a9 100644 --- a/pkg/controller/volume/attachdetach/statusupdater/BUILD +++ b/pkg/controller/volume/attachdetach/statusupdater/BUILD @@ -22,6 +22,7 @@ go_library( "//pkg/client/cache:go_default_library", "//pkg/client/clientset_generated/internalclientset: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 5cad0af1d43..7a12dcacef6 100644 --- a/pkg/controller/volume/attachdetach/statusupdater/node_status_updater.go +++ b/pkg/controller/volume/attachdetach/statusupdater/node_status_updater.go @@ -28,6 +28,7 @@ import ( kcache "k8s.io/kubernetes/pkg/client/cache" "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" "k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache" + "k8s.io/kubernetes/pkg/conversion" "k8s.io/kubernetes/pkg/util/strategicpatch" ) @@ -70,12 +71,19 @@ func (nsu *nodeStatusUpdater) UpdateNodeStatuses() error { continue } - node, ok := nodeObj.(*api.Node) + clonedNode, err := conversion.NewCloner().DeepCopy(nodeObj) + if err != nil { + return fmt.Errorf("error cloning node %q: %v", + nodeName, + err) + } + + node, ok := clonedNode.(*api.Node) if !ok || node == nil { return fmt.Errorf( "failed to cast %q object %#v to Node", nodeName, - nodeObj) + clonedNode) } oldData, err := json.Marshal(node)