diff --git a/staging/src/k8s.io/legacy-cloud-providers/gce/BUILD b/staging/src/k8s.io/legacy-cloud-providers/gce/BUILD index 0ce0a4f618b..ac5e44c148a 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/gce/BUILD +++ b/staging/src/k8s.io/legacy-cloud-providers/gce/BUILD @@ -50,7 +50,6 @@ go_library( "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/errors:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", - "//staging/src/k8s.io/apimachinery/pkg/util/strategicpatch:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/version:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", diff --git a/staging/src/k8s.io/legacy-cloud-providers/gce/gce_util.go b/staging/src/k8s.io/legacy-cloud-providers/gce/gce_util.go index 3b0ba36edc7..32d5a68a76f 100644 --- a/staging/src/k8s.io/legacy-cloud-providers/gce/gce_util.go +++ b/staging/src/k8s.io/legacy-cloud-providers/gce/gce_util.go @@ -33,18 +33,15 @@ import ( "github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/meta" "github.com/GoogleCloudPlatform/k8s-cloud-provider/pkg/cloud/mock" "k8s.io/api/core/v1" - metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/sets" - "k8s.io/apimachinery/pkg/util/strategicpatch" - - "encoding/json" "cloud.google.com/go/compute/metadata" compute "google.golang.org/api/compute/v1" "google.golang.org/api/googleapi" "k8s.io/client-go/kubernetes/fake" v1core "k8s.io/client-go/kubernetes/typed/core/v1" + servicehelper "k8s.io/cloud-provider/service/helpers" ) func fakeGCECloud(vals TestClusterValues) (*Cloud, error) { @@ -362,8 +359,7 @@ func addFinalizer(service *v1.Service, kubeClient v1core.CoreV1Interface, key st updated := service.DeepCopy() updated.ObjectMeta.Finalizers = append(updated.ObjectMeta.Finalizers, key) - // TODO(87447) use PatchService from k8s.io/cloud-provider/service/helpers - _, err := patchService(kubeClient, service, updated) + _, err := servicehelper.PatchService(kubeClient, service, updated) return err } @@ -377,7 +373,7 @@ func removeFinalizer(service *v1.Service, kubeClient v1core.CoreV1Interface, key updated := service.DeepCopy() updated.ObjectMeta.Finalizers = removeString(updated.ObjectMeta.Finalizers, key) - _, err := patchService(kubeClient, service, updated) + _, err := servicehelper.PatchService(kubeClient, service, updated) return err } @@ -402,35 +398,3 @@ func removeString(slice []string, s string) []string { } return newSlice } - -// patchService patches service's Status or ObjectMeta given the origin and -// updated ones. Change to spec will be ignored. -func patchService(c v1core.CoreV1Interface, oldSvc *v1.Service, newSvc *v1.Service) (*v1.Service, error) { - // Reset spec to make sure only patch for Status or ObjectMeta. - newSvc.Spec = oldSvc.Spec - - patchBytes, err := getPatchBytes(oldSvc, newSvc) - if err != nil { - return nil, err - } - - return c.Services(oldSvc.Namespace).Patch(context.TODO(), oldSvc.Name, types.StrategicMergePatchType, patchBytes, metav1.PatchOptions{}, "status") -} - -func getPatchBytes(oldSvc *v1.Service, newSvc *v1.Service) ([]byte, error) { - oldData, err := json.Marshal(oldSvc) - if err != nil { - return nil, fmt.Errorf("failed to Marshal oldData for svc %s/%s: %v", oldSvc.Namespace, oldSvc.Name, err) - } - - newData, err := json.Marshal(newSvc) - if err != nil { - return nil, fmt.Errorf("failed to Marshal newData for svc %s/%s: %v", newSvc.Namespace, newSvc.Name, err) - } - - patchBytes, err := strategicpatch.CreateTwoWayMergePatch(oldData, newData, v1.Service{}) - if err != nil { - return nil, fmt.Errorf("failed to CreateTwoWayMergePatch for svc %s/%s: %v", oldSvc.Namespace, oldSvc.Name, err) - } - return patchBytes, nil -}