Skip to content

Commit

Permalink
Merge pull request #278 from heypnus/vpc/fix/subnet_properties
Browse files Browse the repository at this point in the history
Fix several subnet/subnetset issues
  • Loading branch information
heypnus committed Aug 14, 2023
2 parents 9864be7 + 1d2e592 commit 70d156a
Show file tree
Hide file tree
Showing 7 changed files with 30 additions and 19 deletions.
8 changes: 4 additions & 4 deletions pkg/controllers/securitypolicy/securitypolicy_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,8 @@ func (r *SecurityPolicyReconciler) Reconcile(ctx context.Context, req ctrl.Reque

if obj.ObjectMeta.DeletionTimestamp.IsZero() {
metrics.CounterInc(r.Service.NSXConfig, metrics.ControllerUpdateTotal, MetricResType)
if !controllerutil.ContainsFinalizer(obj, servicecommon.FinalizerName) {
controllerutil.AddFinalizer(obj, servicecommon.FinalizerName)
if !controllerutil.ContainsFinalizer(obj, servicecommon.SecurityPolicyFinalizerName) {
controllerutil.AddFinalizer(obj, servicecommon.SecurityPolicyFinalizerName)
if err := r.Client.Update(ctx, obj); err != nil {
log.Error(err, "add finalizer", "securitypolicy", req.NamespacedName)
updateFail(r, &ctx, obj, &err)
Expand Down Expand Up @@ -134,14 +134,14 @@ func (r *SecurityPolicyReconciler) Reconcile(ctx context.Context, req ctrl.Reque
}
updateSuccess(r, &ctx, obj)
} else {
if controllerutil.ContainsFinalizer(obj, servicecommon.FinalizerName) {
if controllerutil.ContainsFinalizer(obj, servicecommon.SecurityPolicyFinalizerName) {
metrics.CounterInc(r.Service.NSXConfig, metrics.ControllerDeleteTotal, MetricResType)
if err := r.Service.DeleteSecurityPolicy(obj.UID); err != nil {
log.Error(err, "deletion failed, would retry exponentially", "securitypolicy", req.NamespacedName)
deleteFail(r, &ctx, obj, &err)
return ResultRequeue, err
}
controllerutil.RemoveFinalizer(obj, servicecommon.FinalizerName)
controllerutil.RemoveFinalizer(obj, servicecommon.SecurityPolicyFinalizerName)
if err := r.Client.Update(ctx, obj); err != nil {
log.Error(err, "deletion failed, would retry exponentially", "securitypolicy", req.NamespacedName)
deleteFail(r, &ctx, obj, &err)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ func TestSecurityPolicyReconciler_Reconcile(t *testing.T) {
_, ret = r.Reconcile(ctx, req)
assert.Equal(t, err, ret)

// DeletionTimestamp.IsZero = false, Finalizers doesn't include util.FinalizerName
// DeletionTimestamp.IsZero = false, Finalizers doesn't include util.SecurityPolicyFinalizerName
k8sClient.EXPECT().Get(ctx, gomock.Any(), sp).Return(nil).Do(func(_ context.Context, _ client.ObjectKey, obj client.Object, option ...client.GetOption) error {
v1sp := obj.(*v1alpha1.SecurityPolicy)
time := metav1.Now()
Expand All @@ -191,12 +191,12 @@ func TestSecurityPolicyReconciler_Reconcile(t *testing.T) {
assert.Equal(t, ret, nil)
patch.Reset()

// DeletionTimestamp.IsZero = false, Finalizers include util.FinalizerName
// DeletionTimestamp.IsZero = false, Finalizers include util.SecurityPolicyFinalizerName
k8sClient.EXPECT().Get(ctx, gomock.Any(), sp).Return(nil).Do(func(_ context.Context, _ client.ObjectKey, obj client.Object, option ...client.GetOption) error {
v1sp := obj.(*v1alpha1.SecurityPolicy)
time := metav1.Now()
v1sp.ObjectMeta.DeletionTimestamp = &time
v1sp.Finalizers = []string{common.FinalizerName}
v1sp.Finalizers = []string{common.SecurityPolicyFinalizerName}
return nil
})
patch = gomonkey.ApplyMethod(reflect.TypeOf(service), "DeleteSecurityPolicy", func(_ *securitypolicy.SecurityPolicyService, UID interface{}) error {
Expand Down
8 changes: 4 additions & 4 deletions pkg/controllers/subnet/subnet_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ func (r *SubnetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr

if obj.ObjectMeta.DeletionTimestamp.IsZero() {
metrics.CounterInc(r.Service.NSXConfig, metrics.ControllerUpdateTotal, MetricResTypeSubnet)
if !controllerutil.ContainsFinalizer(obj, servicecommon.FinalizerName) {
controllerutil.AddFinalizer(obj, servicecommon.FinalizerName)
if !controllerutil.ContainsFinalizer(obj, servicecommon.SubnetFinalizerName) {
controllerutil.AddFinalizer(obj, servicecommon.SubnetFinalizerName)
if err := r.Client.Update(ctx, obj); err != nil {
log.Error(err, "add finalizer", "subnet", req.NamespacedName)
updateFail(r, &ctx, obj)
Expand All @@ -71,14 +71,14 @@ func (r *SubnetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctr
}
updateSuccess(r, &ctx, obj)
} else {
if controllerutil.ContainsFinalizer(obj, servicecommon.FinalizerName) {
if controllerutil.ContainsFinalizer(obj, servicecommon.SubnetFinalizerName) {
metrics.CounterInc(r.Service.NSXConfig, metrics.ControllerDeleteTotal, MetricResTypeSubnet)
if err := r.DeleteSubnet(*obj); err != nil {
log.Error(err, "deletion failed, would retry exponentially", "subnet", req.NamespacedName)
deleteFail(r, &ctx, obj)
return ResultRequeue, err
}
controllerutil.RemoveFinalizer(obj, servicecommon.FinalizerName)
controllerutil.RemoveFinalizer(obj, servicecommon.SubnetFinalizerName)
if err := r.Client.Update(ctx, obj); err != nil {
log.Error(err, "deletion failed, would retry exponentially", "subnet", req.NamespacedName)
deleteFail(r, &ctx, obj)
Expand Down
8 changes: 4 additions & 4 deletions pkg/controllers/subnetset/subnetset_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@ func (r *SubnetSetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (

if obj.ObjectMeta.DeletionTimestamp.IsZero() {
metrics.CounterInc(r.Service.NSXConfig, metrics.ControllerUpdateTotal, MetricResTypeSubnetSet)
if !controllerutil.ContainsFinalizer(obj, servicecommon.FinalizerName) {
controllerutil.AddFinalizer(obj, servicecommon.FinalizerName)
if !controllerutil.ContainsFinalizer(obj, servicecommon.SubnetSetFinalizerName) {
controllerutil.AddFinalizer(obj, servicecommon.SubnetSetFinalizerName)
if err := r.Client.Update(ctx, obj); err != nil {
log.Error(err, "add finalizer", "subnetset", req.NamespacedName)
updateFail(r, &ctx, obj)
Expand All @@ -64,14 +64,14 @@ func (r *SubnetSetReconciler) Reconcile(ctx context.Context, req ctrl.Request) (
}
updateSuccess(r, &ctx, obj)
} else {
if controllerutil.ContainsFinalizer(obj, servicecommon.FinalizerName) {
if controllerutil.ContainsFinalizer(obj, servicecommon.SubnetSetFinalizerName) {
metrics.CounterInc(r.Service.NSXConfig, metrics.ControllerDeleteTotal, MetricResTypeSubnetSet)
if err := r.DeleteSubnetForSubnetSet(*obj, false); err != nil {
log.Error(err, "deletion failed, would retry exponentially", "subnetset", req.NamespacedName)
deleteFail(r, &ctx, obj)
return ResultRequeue, err
}
controllerutil.RemoveFinalizer(obj, servicecommon.FinalizerName)
controllerutil.RemoveFinalizer(obj, servicecommon.SubnetSetFinalizerName)
if err := r.Client.Update(ctx, obj); err != nil {
log.Error(err, "deletion failed, would retry exponentially", "subnetset", req.NamespacedName)
deleteFail(r, &ctx, obj)
Expand Down
9 changes: 8 additions & 1 deletion pkg/controllers/subnetset/vpc_handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package subnetset

import (
"context"

"github.com/vmware-tanzu/nsx-operator/pkg/nsx/services/common"

"sigs.k8s.io/controller-runtime/pkg/predicate"
Expand Down Expand Up @@ -56,7 +57,13 @@ func (h *VPCHandler) Create(e event.CreateEvent, _ workqueue.RateLimitingInterfa
common.LabelDefaultSubnetSet: subnetSetType,
},
},
Spec: v1alpha1.SubnetSetSpec{},
Spec: v1alpha1.SubnetSetSpec{
AdvancedConfig: v1alpha1.AdvancedConfig{
StaticIPAllocation: v1alpha1.StaticIPAllocation{
Enable: true,
},
},
},
}
if err := h.Client.Create(context.Background(), obj); err != nil {
return err
Expand Down
4 changes: 3 additions & 1 deletion pkg/nsx/services/common/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,11 @@ const (
IPPoolTypePublic = "public"
IPPoolTypePrivate = "private"

FinalizerName = "securitypolicy.nsx.vmware.com/finalizer"
SecurityPolicyFinalizerName = "securitypolicy.nsx.vmware.com/finalizer"
StaticRouteFinalizerName = "staticroute.nsx.vmware.com/finalizer"
NSXServiceAccountFinalizerName = "nsxserviceaccount.nsx.vmware.com/finalizer"
SubnetFinalizerName = "subnet.nsx.vmware.com/finalizer"
SubnetSetFinalizerName = "subnetset.nsx.vmware.com/finalizer"
SubnetPortFinalizerName = "subnetport.nsx.vmware.com/finalizer"
VPCFinalizerName = "vpc.nsx.vmware.com/finalizer"

Expand Down
6 changes: 4 additions & 2 deletions pkg/nsx/services/subnet/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ func getCluster(service *SubnetService) string {
func (service *SubnetService) buildSubnet(obj client.Object, tags []model.Tag) (*model.VpcSubnet, error) {
tags = append(tags, service.buildBasicTags(obj)...)
var nsxSubnet *model.VpcSubnet
boolTrue := true
var staticIpAllocation bool
switch o := obj.(type) {
case *v1alpha1.Subnet:
nsxSubnet = &model.VpcSubnet{
Expand All @@ -33,6 +33,7 @@ func (service *SubnetService) buildSubnet(obj client.Object, tags []model.Tag) (
DhcpConfig: service.buildDHCPConfig(int64(o.Spec.IPv4SubnetSize - 4)),
DisplayName: String(fmt.Sprintf("%s-%s", obj.GetNamespace(), obj.GetName())),
}
staticIpAllocation = o.Spec.AdvancedConfig.StaticIPAllocation.Enable
case *v1alpha1.SubnetSet:
index := uuid.NewString()
nsxSubnet = &model.VpcSubnet{
Expand All @@ -41,13 +42,14 @@ func (service *SubnetService) buildSubnet(obj client.Object, tags []model.Tag) (
DhcpConfig: service.buildDHCPConfig(int64(o.Spec.IPv4SubnetSize - 4)),
DisplayName: String(fmt.Sprintf("%s-%s-%s", obj.GetNamespace(), obj.GetName(), index)),
}
staticIpAllocation = o.Spec.AdvancedConfig.StaticIPAllocation.Enable
default:
return nil, SubnetTypeError
}
nsxSubnet.Tags = tags
nsxSubnet.AdvancedConfig = &model.SubnetAdvancedConfig{
StaticIpAllocation: &model.StaticIpAllocation{
Enabled: &boolTrue,
Enabled: &staticIpAllocation,
},
}
return nsxSubnet, nil
Expand Down

0 comments on commit 70d156a

Please sign in to comment.