Skip to content

Commit 1e9c860

Browse files
Merge pull request #341 from openshift-cherrypick-robot/cherry-pick-339-to-cert-manager-1.18
[cert-manager-1.18] CM-763: Fix unconditional update in user-defined network policy reconciliation
2 parents 7731743 + 1f54e93 commit 1e9c860

File tree

1 file changed

+12
-22
lines changed

1 file changed

+12
-22
lines changed

pkg/controller/deployment/cert_manager_networkpolicy.go

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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

8990
func 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

230233
func (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

Comments
 (0)