@@ -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