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

Commit 3004313

Browse files
committed
Improve code
1 parent 8cf7bdf commit 3004313

File tree

1 file changed

+20
-17
lines changed

1 file changed

+20
-17
lines changed

internal/hncconfig/reconciler.go

+20-17
Original file line numberDiff line numberDiff line change
@@ -236,22 +236,6 @@ func (r *Reconciler) writeSingleton(ctx context.Context, inst *api.HNCConfigurat
236236
}
237237

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

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

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

0 commit comments

Comments
 (0)