Skip to content

Commit 97faaae

Browse files
committed
Enhances VirtualMachineSetResourcePolicy reconcile
Thie patch ensures that the vSphereCluster owner reference is always set at every reconcile. This ensures that even after a manual removal, the vSphereCluster owner ref link will be reset at the next reconcile.
1 parent 5941928 commit 97faaae

File tree

2 files changed

+10
-22
lines changed

2 files changed

+10
-22
lines changed

pkg/services/vmoperator/resource_policy.go

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121

2222
"github.com/pkg/errors"
2323
vmoprv1 "github.com/vmware-tanzu/vm-operator/api/v1alpha2"
24-
apierrors "k8s.io/apimachinery/pkg/api/errors"
2524
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2625
"sigs.k8s.io/controller-runtime/pkg/client"
2726
ctrlutil "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
@@ -37,17 +36,10 @@ type RPService struct {
3736
// ReconcileResourcePolicy ensures that a VirtualMachineSetResourcePolicy exists for the cluster
3837
// Returns the name of a policy if it exists, otherwise returns an error.
3938
func (s *RPService) ReconcileResourcePolicy(ctx context.Context, clusterCtx *vmware.ClusterContext) (string, error) {
40-
resourcePolicy, err := s.getVirtualMachineSetResourcePolicy(ctx, clusterCtx)
39+
resourcePolicy, err := s.createOrPatchVirtualMachineSetResourcePolicy(ctx, clusterCtx)
4140
if err != nil {
42-
if !apierrors.IsNotFound(err) {
43-
return "", errors.Errorf("unexpected error in getting the Resource policy: %+v", err)
44-
}
45-
resourcePolicy, err = s.createVirtualMachineSetResourcePolicy(ctx, clusterCtx)
46-
if err != nil {
47-
return "", errors.Errorf("failed to create Resource Policy: %+v", err)
48-
}
41+
return "", errors.Errorf("failed to create Resource Policy: %+v", err)
4942
}
50-
5143
return resourcePolicy.Name, nil
5244
}
5345

@@ -60,17 +52,7 @@ func (s *RPService) newVirtualMachineSetResourcePolicy(clusterCtx *vmware.Cluste
6052
}
6153
}
6254

63-
func (s *RPService) getVirtualMachineSetResourcePolicy(ctx context.Context, clusterCtx *vmware.ClusterContext) (*vmoprv1.VirtualMachineSetResourcePolicy, error) {
64-
vmResourcePolicy := &vmoprv1.VirtualMachineSetResourcePolicy{}
65-
vmResourcePolicyName := client.ObjectKey{
66-
Namespace: clusterCtx.Cluster.Namespace,
67-
Name: clusterCtx.Cluster.Name,
68-
}
69-
err := s.Client.Get(ctx, vmResourcePolicyName, vmResourcePolicy)
70-
return vmResourcePolicy, err
71-
}
72-
73-
func (s *RPService) createVirtualMachineSetResourcePolicy(ctx context.Context, clusterCtx *vmware.ClusterContext) (*vmoprv1.VirtualMachineSetResourcePolicy, error) {
55+
func (s *RPService) createOrPatchVirtualMachineSetResourcePolicy(ctx context.Context, clusterCtx *vmware.ClusterContext) (*vmoprv1.VirtualMachineSetResourcePolicy, error) {
7456
vmResourcePolicy := s.newVirtualMachineSetResourcePolicy(clusterCtx)
7557

7658
_, err := ctrlutil.CreateOrPatch(ctx, s.Client, vmResourcePolicy, func() error {

pkg/services/vmoperator/resource_policy_test.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ import (
2222
"testing"
2323

2424
. "github.com/onsi/gomega"
25+
vmoprv1 "github.com/vmware-tanzu/vm-operator/api/v1alpha2"
2526
capi_util "sigs.k8s.io/cluster-api/util"
27+
"sigs.k8s.io/controller-runtime/pkg/client"
2628

2729
"sigs.k8s.io/cluster-api-provider-vsphere/pkg/util"
2830
)
@@ -44,7 +46,11 @@ func TestRPService(t *testing.T) {
4446
g.Expect(err).NotTo(HaveOccurred())
4547
g.Expect(name).To(Equal(clusterName))
4648

47-
resourcePolicy, err := rpService.getVirtualMachineSetResourcePolicy(ctx, clusterCtx)
49+
resourcePolicy := &vmoprv1.VirtualMachineSetResourcePolicy{}
50+
err = rpService.Client.Get(ctx, client.ObjectKey{
51+
Namespace: clusterCtx.Cluster.Namespace,
52+
Name: clusterCtx.Cluster.Name,
53+
}, resourcePolicy)
4854
g.Expect(err).NotTo(HaveOccurred())
4955
g.Expect(resourcePolicy.Spec.ResourcePool.Name).To(Equal(clusterName))
5056
g.Expect(resourcePolicy.Spec.Folder).To(Equal(clusterName))

0 commit comments

Comments
 (0)