Skip to content
This repository was archived by the owner on Apr 17, 2025. It is now read-only.

Commit ebe7df4

Browse files
committed
Improve code
1 parent db236ea commit ebe7df4

File tree

1 file changed

+20
-17
lines changed

1 file changed

+20
-17
lines changed

internal/hncconfig/reconciler.go

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -239,22 +239,6 @@ func (r *Reconciler) writeSingleton(ctx context.Context, inst *api.HNCConfigurat
239239
}
240240

241241
func (r *Reconciler) syncObjectWebhookConfigs(ctx context.Context) error {
242-
// Group GR by group
243-
groups := make(map[string][]string)
244-
for gr := range r.activeGVKMode {
245-
groups[gr.Group] = append(groups[gr.Group], gr.Resource)
246-
}
247-
248-
var rules []apiadmissionregistrationv1.RuleWithOperations
249-
for g, res := range groups {
250-
rule := apiadmissionregistrationv1.RuleWithOperations{}
251-
rule.APIGroups = []string{g}
252-
rule.Resources = res
253-
rule.APIVersions = []string{"*"}
254-
rule.Operations = []apiadmissionregistrationv1.OperationType{apiadmissionregistrationv1.Create, apiadmissionregistrationv1.Update, apiadmissionregistrationv1.Delete}
255-
rules = append(rules, rule)
256-
}
257-
258242
vwc := &apiadmissionregistrationv1.ValidatingWebhookConfiguration{}
259243
if err := r.Get(ctx, client.ObjectKey{Name: webhooks.ValidatingWebhookConfigurationName}, vwc); err != nil {
260244
if errors.IsNotFound(err) {
@@ -268,13 +252,32 @@ func (r *Reconciler) syncObjectWebhookConfigs(ctx context.Context) error {
268252

269253
for i, wh := range vwc.Webhooks {
270254
if wh.Name == webhooks.ObjectsWebhookName {
271-
vwc.Webhooks[i].Rules = rules
255+
vwc.Webhooks[i].Rules = objectWebhookRules(r.activeGVKMode)
272256
return r.Patch(ctx, vwc, client.MergeFrom(cleanVWC))
273257
}
274258
}
275259
return fmt.Errorf("webhook %q not found in ValidatingWebhookConfiguration %q", webhooks.ObjectsWebhookName, webhooks.ValidatingWebhookConfigurationName)
276260
}
277261

262+
func objectWebhookRules(mode gr2gvkMode) []apiadmissionregistrationv1.RuleWithOperations {
263+
// Group GR by group to make nicer rules
264+
g2r := make(map[string][]string)
265+
for gr := range mode {
266+
g2r[gr.Group] = append(g2r[gr.Group], gr.Resource)
267+
}
268+
269+
var rules []apiadmissionregistrationv1.RuleWithOperations
270+
for g, r := range g2r {
271+
rule := apiadmissionregistrationv1.RuleWithOperations{}
272+
rule.APIGroups = []string{g}
273+
rule.Resources = r
274+
rule.APIVersions = []string{"*"}
275+
rule.Operations = []apiadmissionregistrationv1.OperationType{apiadmissionregistrationv1.Create, apiadmissionregistrationv1.Update, apiadmissionregistrationv1.Delete}
276+
rules = append(rules, rule)
277+
}
278+
return rules
279+
}
280+
278281
// syncObjectReconcilers creates or syncs ObjectReconcilers.
279282
//
280283
// For newly added types in the HNC configuration, the method will create corresponding ObjectReconcilers and

0 commit comments

Comments
 (0)