@@ -84,6 +84,7 @@ type CertManagerNetworkPolicyUserDefinedController struct {
8484 certManagerOperatorInformers certmanoperatorinformers.SharedInformerFactory
8585 kubeClient kubernetes.Interface
8686 eventRecorder events.Recorder
87+ resourceCache resourceapply.ResourceCache
8788}
8889
8990func NewCertManagerNetworkPolicyUserDefinedController (
@@ -97,6 +98,7 @@ func NewCertManagerNetworkPolicyUserDefinedController(
9798 certManagerOperatorInformers : certManagerOperatorInformers ,
9899 kubeClient : kubeClient ,
99100 eventRecorder : eventRecorder .WithComponentSuffix ("cert-manager-networkpolicy-user-defined" ),
101+ resourceCache : resourceapply .NewResourceCache (),
100102 }
101103
102104 return factory .New ().
@@ -138,7 +140,8 @@ func (c *CertManagerNetworkPolicyUserDefinedController) sync(ctx context.Context
138140 return fmt .Errorf ("failed to reconcile user network policies: %w" , err )
139141 }
140142
141- c .eventRecorder .Event ("UserNetworkPolicyReconcileSuccess" , "Successfully reconciled user-defined network policies" )
143+ // Success is indicated by not returning an error and not setting Degraded condition
144+ // Events are only fired for actual resource changes (via ApplyNetworkPolicy)
142145 return nil
143146}
144147
@@ -228,29 +231,16 @@ func (c *CertManagerNetworkPolicyUserDefinedController) getPodSelectorForCompone
228231}
229232
230233func (c * CertManagerNetworkPolicyUserDefinedController ) createOrUpdateNetworkPolicy (ctx context.Context , policy * networkingv1.NetworkPolicy ) error {
231- existing , err := c .kubeClient .NetworkingV1 ().NetworkPolicies (policy .Namespace ).Get (ctx , policy .Name , metav1.GetOptions {})
232- if err != nil {
233- if errors .IsNotFound (err ) {
234- // Create new policy
235- _ , err := c .kubeClient .NetworkingV1 ().NetworkPolicies (policy .Namespace ).Create (ctx , policy , metav1.CreateOptions {})
236- if err != nil {
237- return fmt .Errorf ("failed to create network policy: %w" , err )
238- }
239- c .eventRecorder .Eventf ("NetworkPolicyCreated" , "Created user-defined network policy %s" , policy .Name )
240- return nil
241- }
242- return fmt .Errorf ("failed to get existing network policy: %w" , err )
243- }
244-
245- // Update existing policy
246- existing .Spec = policy .Spec
247- existing .Labels = policy .Labels
248- _ , err = c .kubeClient .NetworkingV1 ().NetworkPolicies (policy .Namespace ).Update (ctx , existing , metav1.UpdateOptions {})
234+ _ , _ , err := resourceapply .ApplyNetworkPolicy (
235+ ctx ,
236+ c .kubeClient .NetworkingV1 (),
237+ c .eventRecorder ,
238+ policy ,
239+ c .resourceCache ,
240+ )
249241 if err != nil {
250- return fmt .Errorf ("failed to update network policy: %w" , err )
242+ return fmt .Errorf ("failed to apply network policy: %w" , err )
251243 }
252244
253- c .eventRecorder .Eventf ("NetworkPolicyUpdated" , "Updated user-defined network policy %s" , policy .Name )
254-
255245 return nil
256246}
0 commit comments