Skip to content

Commit f141fe2

Browse files
committed
migrate to patch for nnc spec updates
1 parent 3f313ad commit f141fe2

File tree

3 files changed

+15
-13
lines changed

3 files changed

+15
-13
lines changed

cns/ipampool/monitor.go

+6-4
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,14 @@ const (
2424
DefaultRefreshDelay = 1 * time.Second
2525
// DefaultMaxIPs default maximum allocatable IPs
2626
DefaultMaxIPs = 250
27+
// fieldManager is the field manager used when patching the NodeNetworkConfig.
28+
fieldManager = "azure-cns"
2729
// Subnet ARM ID /subscriptions/$(SUB)/resourceGroups/$(GROUP)/providers/Microsoft.Network/virtualNetworks/$(VNET)/subnets/$(SUBNET)
2830
subnetARMIDTemplate = "/subscriptions/%s/resourceGroups/%s/providers/Microsoft.Network/virtualNetworks/%s/subnets/%s"
2931
)
3032

3133
type nodeNetworkConfigSpecUpdater interface {
32-
UpdateSpec(context.Context, *v1alpha.NodeNetworkConfigSpec) (*v1alpha.NodeNetworkConfig, error)
34+
PatchSpec(context.Context, *v1alpha.NodeNetworkConfigSpec, string) (*v1alpha.NodeNetworkConfig, error)
3335
}
3436

3537
// metaState is the Monitor's configuration state for the IP pool.
@@ -281,7 +283,7 @@ func (pm *Monitor) increasePoolSize(ctx context.Context, meta metaState, state i
281283

282284
logger.Printf("[ipam-pool-monitor] Increasing pool size, pool %+v, spec %+v", state, tempNNCSpec)
283285

284-
if _, err := pm.nnccli.UpdateSpec(ctx, &tempNNCSpec); err != nil {
286+
if _, err := pm.nnccli.PatchSpec(ctx, &tempNNCSpec, fieldManager); err != nil {
285287
// caller will retry to update the CRD again
286288
return errors.Wrap(err, "executing UpdateSpec with NNC client")
287289
}
@@ -347,7 +349,7 @@ func (pm *Monitor) decreasePoolSize(ctx context.Context, meta metaState, state i
347349
attempts := 0
348350
if err := retry.Do(func() error {
349351
attempts++
350-
_, err := pm.nnccli.UpdateSpec(ctx, &tempNNCSpec)
352+
_, err := pm.nnccli.PatchSpec(ctx, &tempNNCSpec, fieldManager)
351353
if err != nil {
352354
// caller will retry to update the CRD again
353355
logger.Printf("failed to update NNC spec attempt #%d, err: %v", attempts, err)
@@ -378,7 +380,7 @@ func (pm *Monitor) decreasePoolSize(ctx context.Context, meta metaState, state i
378380
func (pm *Monitor) cleanPendingRelease(ctx context.Context) error {
379381
tempNNCSpec := pm.createNNCSpecForCRD()
380382

381-
_, err := pm.nnccli.UpdateSpec(ctx, &tempNNCSpec)
383+
_, err := pm.nnccli.PatchSpec(ctx, &tempNNCSpec, fieldManager)
382384
if err != nil {
383385
// caller will retry to update the CRD again
384386
return errors.Wrap(err, "executing UpdateSpec with NNC client")

cns/ipampool/monitor_test.go

+5-5
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,15 @@ type fakeNodeNetworkConfigUpdater struct {
1717
nnc *v1alpha.NodeNetworkConfig
1818
}
1919

20-
func (f *fakeNodeNetworkConfigUpdater) UpdateSpec(ctx context.Context, spec *v1alpha.NodeNetworkConfigSpec) (*v1alpha.NodeNetworkConfig, error) {
20+
func (f *fakeNodeNetworkConfigUpdater) PatchSpec(_ context.Context, spec *v1alpha.NodeNetworkConfigSpec, _ string) (*v1alpha.NodeNetworkConfig, error) {
2121
f.nnc.Spec = *spec
2222
return f.nnc, nil
2323
}
2424

25-
type fakeNodeNetworkConfigUpdaterFunc func(ctx context.Context, spec *v1alpha.NodeNetworkConfigSpec) (*v1alpha.NodeNetworkConfig, error)
25+
type fakeNodeNetworkConfigUpdaterFunc func(context.Context, *v1alpha.NodeNetworkConfigSpec, string) (*v1alpha.NodeNetworkConfig, error)
2626

27-
func (f fakeNodeNetworkConfigUpdaterFunc) UpdateSpec(ctx context.Context, spec *v1alpha.NodeNetworkConfigSpec) (*v1alpha.NodeNetworkConfig, error) {
28-
return f(ctx, spec)
27+
func (f fakeNodeNetworkConfigUpdaterFunc) PatchSpec(ctx context.Context, spec *v1alpha.NodeNetworkConfigSpec, owner string) (*v1alpha.NodeNetworkConfig, error) {
28+
return f(ctx, spec, owner)
2929
}
3030

3131
type directUpdatePoolMonitor struct {
@@ -568,7 +568,7 @@ func TestDecreaseWithAPIServerFailure(t *testing.T) {
568568
totalIPs: 64,
569569
max: 250,
570570
}
571-
var errNNCCLi fakeNodeNetworkConfigUpdaterFunc = func(ctx context.Context, spec *v1alpha.NodeNetworkConfigSpec) (*v1alpha.NodeNetworkConfig, error) {
571+
var errNNCCLi fakeNodeNetworkConfigUpdaterFunc = func(context.Context, *v1alpha.NodeNetworkConfigSpec, string) (*v1alpha.NodeNetworkConfig, error) {
572572
return nil, errors.New("fake APIServer failure") //nolint:goerr113 // this is a fake error
573573
}
574574

cns/kubecontroller/nodenetworkconfig/scopedclient.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ func (sc *ScopedClient) Get(ctx context.Context) (*v1alpha.NodeNetworkConfig, er
2929
return nnc, errors.Wrapf(err, "failed to get nnc %v", sc.NamespacedName)
3030
}
3131

32-
// UpdateSpec updates the associated NodeNetworkConfig with the passed NodeNetworkConfigSpec.
33-
func (sc *ScopedClient) UpdateSpec(ctx context.Context, spec *v1alpha.NodeNetworkConfigSpec) (*v1alpha.NodeNetworkConfig, error) {
34-
nnc, err := sc.Client.UpdateSpec(ctx, sc.NamespacedName, spec)
35-
return nnc, errors.Wrapf(err, "failed to update nnc %v", sc.NamespacedName)
32+
// PatchSpec updates the associated NodeNetworkConfig with the passed NodeNetworkConfigSpec.
33+
func (sc *ScopedClient) PatchSpec(ctx context.Context, spec *v1alpha.NodeNetworkConfigSpec, fieldManager string) (*v1alpha.NodeNetworkConfig, error) {
34+
nnc, err := sc.Client.PatchSpec(ctx, sc.NamespacedName, spec, fieldManager)
35+
return nnc, errors.Wrapf(err, "failed to patch nnc %v", sc.NamespacedName)
3636
}

0 commit comments

Comments
 (0)