Skip to content

Commit 5c97290

Browse files
authored
Add VPC network check in SecurityPolicy License error Annotation (vmware-tanzu#772)
1 parent 4900e7d commit 5c97290

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

pkg/controllers/securitypolicy/securitypolicy_controller.go

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -86,29 +86,43 @@ func deleteSuccess(r *SecurityPolicyReconciler, _ context.Context, o *v1alpha1.S
8686
metrics.CounterInc(r.Service.NSXConfig, metrics.ControllerDeleteSuccessTotal, MetricResType)
8787
}
8888

89-
func setSecurityPolicyErrorAnnotation(ctx context.Context, securityPolicy *v1alpha1.SecurityPolicy, client client.Client, info string) {
89+
func setSecurityPolicyErrorAnnotation(ctx context.Context, securityPolicy *v1alpha1.SecurityPolicy, isVPCEanbled bool, client client.Client, info string) {
9090
if securityPolicy.Annotations == nil {
9191
securityPolicy.Annotations = make(map[string]string)
9292
}
9393
if securityPolicy.Annotations[common.NSXOperatorError] == info {
9494
return
9595
}
9696
securityPolicy.Annotations[common.NSXOperatorError] = info
97-
updateErr := client.Update(ctx, securityPolicy)
97+
98+
var updateErr error
99+
if isVPCEanbled {
100+
finalObj := securitypolicy.T1ToVPC(securityPolicy)
101+
updateErr = client.Update(ctx, finalObj)
102+
} else {
103+
updateErr = client.Update(ctx, securityPolicy)
104+
}
98105
if updateErr != nil {
99106
log.Error(updateErr, "Failed to update SecurityPolicy with error annotation")
100107
}
101108
log.Info("update SecurityPolicy with error annotation", "error", info)
102109
}
103110

104-
func cleanSecurityPolicyErrorAnnotation(ctx context.Context, securityPolicy *v1alpha1.SecurityPolicy, client client.Client) {
111+
func cleanSecurityPolicyErrorAnnotation(ctx context.Context, securityPolicy *v1alpha1.SecurityPolicy, isVPCEanbled bool, client client.Client) {
105112
if securityPolicy.Annotations == nil {
106113
return
107114
}
108115
if _, exists := securityPolicy.Annotations[common.NSXOperatorError]; exists {
109116
delete(securityPolicy.Annotations, common.NSXOperatorError)
110117
}
111-
updateErr := client.Update(ctx, securityPolicy)
118+
119+
var updateErr error
120+
if isVPCEanbled {
121+
finalObj := securitypolicy.T1ToVPC(securityPolicy)
122+
updateErr = client.Update(ctx, finalObj)
123+
} else {
124+
updateErr = client.Update(ctx, securityPolicy)
125+
}
112126
if updateErr != nil {
113127
log.Error(updateErr, "Failed to clean SecurityPolicy annotation")
114128
}
@@ -182,21 +196,21 @@ func (r *SecurityPolicyReconciler) Reconcile(ctx context.Context, req ctrl.Reque
182196
if err := r.Service.CreateOrUpdateSecurityPolicy(realObj); err != nil {
183197
if errors.As(err, &nsxutil.RestrictionError{}) {
184198
log.Error(err, err.Error(), "securitypolicy", req.NamespacedName)
185-
setSecurityPolicyErrorAnnotation(ctx, realObj, r.Client, common.ErrorNoDFWLicense)
199+
setSecurityPolicyErrorAnnotation(ctx, realObj, securitypolicy.IsVPCEnabled(r.Service), r.Client, common.ErrorNoDFWLicense)
186200
updateFail(r, ctx, realObj, &err)
187201
return ResultNormal, nil
188202
}
189203
if nsxutil.IsInvalidLicense(err) {
190204
log.Error(err, err.Error(), "securitypolicy", req.NamespacedName)
191-
setSecurityPolicyErrorAnnotation(ctx, realObj, r.Client, common.ErrorNoDFWLicense)
205+
setSecurityPolicyErrorAnnotation(ctx, realObj, securitypolicy.IsVPCEnabled(r.Service), r.Client, common.ErrorNoDFWLicense)
192206
os.Exit(1)
193207
}
194208
log.Error(err, "create or update failed, would retry exponentially", "securitypolicy", req.NamespacedName)
195209
updateFail(r, ctx, realObj, &err)
196210
return ResultRequeue, err
197211
}
198212
updateSuccess(r, ctx, realObj)
199-
cleanSecurityPolicyErrorAnnotation(ctx, realObj, r.Client)
213+
cleanSecurityPolicyErrorAnnotation(ctx, realObj, securitypolicy.IsVPCEnabled(r.Service), r.Client)
200214
} else {
201215
log.Info("reconciling CR to delete securitypolicy", "securitypolicy", req.NamespacedName)
202216
if controllerutil.ContainsFinalizer(obj, finalizerName) {

0 commit comments

Comments
 (0)