Skip to content

Commit ce7b39a

Browse files
authored
Merge pull request vmware-tanzu#45 from bryanv/bryanv/vmpub-api-reader
Use APIReader client to Get() VirtualMachinePublishRequest
2 parents 0703ea9 + faae228 commit ce7b39a

File tree

3 files changed

+10
-9
lines changed

3 files changed

+10
-9
lines changed

controllers/virtualmachinepublishrequest/virtualmachinepublishrequest_controller.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ func AddToManager(ctx *context.ControllerManagerContext, mgr manager.Manager) er
7070

7171
r := NewReconciler(
7272
mgr.GetClient(),
73+
mgr.GetAPIReader(),
7374
ctrl.Log.WithName("controllers").WithName(controlledTypeName),
7475
record.New(mgr.GetEventRecorderFor(controllerNameLong)),
7576
ctx.VMProvider,
@@ -124,12 +125,14 @@ func vmiToVMPubMapperFn(ctx *context.ControllerManagerContext, c client.Client)
124125

125126
func NewReconciler(
126127
client client.Client,
128+
apiReader client.Reader,
127129
logger logr.Logger,
128130
recorder record.Recorder,
129131
vmProvider vmprovider.VirtualMachineProviderInterface) *Reconciler {
130132

131133
return &Reconciler{
132134
Client: client,
135+
apiReader: apiReader,
133136
Logger: logger,
134137
Recorder: recorder,
135138
VMProvider: vmProvider,
@@ -140,6 +143,7 @@ func NewReconciler(
140143
// Reconciler reconciles a VirtualMachinePublishRequest object.
141144
type Reconciler struct {
142145
client.Client
146+
apiReader client.Reader
143147
Logger logr.Logger
144148
Recorder record.Recorder
145149
VMProvider vmprovider.VirtualMachineProviderInterface
@@ -167,7 +171,11 @@ func requeueDelay(ctx *context.VirtualMachinePublishRequestContext) time.Duratio
167171

168172
func (r *Reconciler) Reconcile(ctx goctx.Context, req ctrl.Request) (_ ctrl.Result, reterr error) {
169173
vmPublishReq := &vmopv1alpha1.VirtualMachinePublishRequest{}
170-
err := r.Get(ctx, req.NamespacedName, vmPublishReq)
174+
// Get the VirtualMachinePublishRequest directly from the API server - bypassing the cache of the
175+
// regular client - to avoid potentially stale objects from cache. We rely on the up-to-date Status
176+
// when sending publish VM requests during reconciliation.
177+
// Update() of stale object will be rejected by API server and result in unnecessary reconciles.
178+
err := r.apiReader.Get(ctx, req.NamespacedName, vmPublishReq)
171179
if err != nil {
172180
// Delete registered metrics if the resource is not found.
173181
if apiErrors.IsNotFound(err) {

controllers/virtualmachinepublishrequest/virtualmachinepublishrequest_controller_unit_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ func unitTestsReconcile() {
6666
JustBeforeEach(func() {
6767
ctx = suite.NewUnitTestContextForController(initObjects...)
6868
reconciler = virtualmachinepublishrequest.NewReconciler(
69+
ctx.Client,
6970
ctx.Client,
7071
ctx.Logger,
7172
ctx.Recorder,

pkg/manager/manager.go

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import (
2626
netopv1alpha1 "github.com/vmware-tanzu/vm-operator/external/net-operator/api/v1alpha1"
2727
cnsv1alpha1 "github.com/vmware-tanzu/vm-operator/external/vsphere-csi-driver/pkg/syncer/cnsoperator/apis/cnsnodevmattachment/v1alpha1"
2828
"github.com/vmware-tanzu/vm-operator/pkg/context"
29-
"github.com/vmware-tanzu/vm-operator/pkg/lib"
3029
"github.com/vmware-tanzu/vm-operator/pkg/record"
3130
"github.com/vmware-tanzu/vm-operator/pkg/vmprovider/providers/vsphere"
3231
)
@@ -58,13 +57,6 @@ func New(opts Options) (Manager, error) {
5857
// the cache for ConfigMaps and Secrets so they are looked up from API sever directly.
5958
cacheDisabledObjects := []client.Object{&corev1.ConfigMap{}, &corev1.Secret{}}
6059

61-
// Look up VirtualMachinePublishRequest resources from API server directly to avoid get stale objects from cache,
62-
// We kind of rely on the up-to-date status when sending publish VM requests during reconciling VMPublishRequests.
63-
// Update stale object will be rejected by API server and result in unnecessary reconciles.
64-
if lib.IsWCPVMImageRegistryEnabled() {
65-
cacheDisabledObjects = append(cacheDisabledObjects, &vmopv1.VirtualMachinePublishRequest{})
66-
}
67-
6860
// Build the controller manager.
6961
mgr, err := ctrlmgr.New(opts.KubeConfig, ctrlmgr.Options{
7062
Scheme: opts.Scheme,

0 commit comments

Comments
 (0)