Skip to content

Commit c31ff72

Browse files
committed
Address more comments
Signed-off-by: Mangirdas Judeikis <mangirdas@judeikis.lt> On-behalf-of: @SAP mangirdas.judeikis@sap.com
1 parent 3b83bce commit c31ff72

4 files changed

Lines changed: 21 additions & 17 deletions

File tree

backend/controllers/clusterbinding/clusterbinding_reconcile.go

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ package clusterbinding
1919
import (
2020
"context"
2121
"fmt"
22+
"maps"
2223
"reflect"
23-
"sort"
24+
"slices"
2425
"time"
2526

2627
corev1 "k8s.io/api/core/v1"
@@ -157,17 +158,13 @@ func (r *reconciler) ensureRBACClusterRole(ctx context.Context, client client.Cl
157158
key := res.ResourceGroupName()
158159
grSet[key] = kubebindv1alpha2.GroupResource{Group: res.Group, Resource: res.Resource}
159160
}
160-
keys := make([]string, 0, len(grSet))
161-
for k := range grSet {
162-
keys = append(keys, k)
163-
}
164-
sort.Strings(keys)
161+
keys := slices.Collect(maps.Keys(grSet))
162+
slices.Sort(keys)
165163
for _, k := range keys {
166-
gr := grSet[k]
167-
name := gr.Resource + "." + gr.Group
168-
schema, err := r.getBoundSchema(ctx, cache, clusterBinding.Namespace, name)
164+
// k is already normalized (e.g., "pods.core" for empty group).
165+
schema, err := r.getBoundSchema(ctx, cache, clusterBinding.Namespace, k)
169166
if err != nil {
170-
return fmt.Errorf("failed to get BoundSchema %q: %w", name, err)
167+
return fmt.Errorf("failed to get BoundSchema %q: %w", k, err)
171168
}
172169
expected.Rules = append(expected.Rules,
173170
rbacv1.PolicyRule{

backend/controllers/serviceexport/serviceexport_reconcile.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,15 +51,16 @@ func (r *reconciler) ensureSchema(ctx context.Context, cache cache.Cache, export
5151
schemas := make([]*kubebindv1alpha2.BoundSchema, 0, len(export.Spec.Resources))
5252

5353
for _, res := range export.Spec.Resources {
54-
schema, err := r.getBoundSchema(ctx, cache, export.Namespace, res.ResourceGroupName())
54+
name := res.ResourceGroupName()
55+
schema, err := r.getBoundSchema(ctx, cache, export.Namespace, name)
5556
if err != nil {
5657
if errors.IsNotFound(err) {
5758
conditions.MarkFalse(
5859
export,
5960
kubebindv1alpha2.APIServiceExportConditionProviderInSync,
6061
"BoundSchemaMissing",
6162
conditionsapi.ConditionSeverityError,
62-
"BoundSchemas are not available: %v", schema.Name)
63+
"BoundSchema %q is not available: %v", name, err)
6364
return nil
6465
}
6566
return err
@@ -68,7 +69,10 @@ func (r *reconciler) ensureSchema(ctx context.Context, cache cache.Cache, export
6869
schemas = append(schemas, schema)
6970
}
7071

71-
hash := helpers.BoundSchemasSpecHash(schemas)
72+
hash, err := helpers.BoundSchemasSpecHash(schemas)
73+
if err != nil {
74+
return err
75+
}
7276

7377
if export.Annotations[kubebindv1alpha2.SourceSpecHashAnnotationKey] != hash {
7478
// both exist, update APIServiceExport

backend/controllers/serviceexportrequest/serviceexportrequest_reconcile.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,10 @@ func (r *reconciler) ensureExports(ctx context.Context, cl client.Client, cache
189189
return nil
190190
}
191191

192-
hash := helpers.BoundSchemasSpecHash(schemas)
192+
hash, err := helpers.BoundSchemasSpecHash(schemas)
193+
if err != nil {
194+
return err
195+
}
193196
export := &kubebindv1alpha2.APIServiceExport{
194197
ObjectMeta: metav1.ObjectMeta{
195198
Name: req.Name,

sdk/apis/kubebind/v1alpha2/helpers/boundschema.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,14 +114,14 @@ func UnstructuredToBoundSchema(u unstructured.Unstructured) (*kubebindv1alpha2.B
114114
return boundSchema, nil
115115
}
116116

117-
func BoundSchemasSpecHash(schemas []*kubebindv1alpha2.BoundSchema) string {
117+
func BoundSchemasSpecHash(schemas []*kubebindv1alpha2.BoundSchema) (string, error) {
118118
hash := sha256.New()
119119
for _, schema := range schemas {
120120
if err := json.NewEncoder(hash).Encode(schema); err != nil {
121-
continue
121+
return "", fmt.Errorf("failed to encode schema %s: %w", schema.Name, err)
122122
}
123123
}
124-
return fmt.Sprintf("%x", hash.Sum(nil))
124+
return fmt.Sprintf("%x", hash.Sum(nil)), nil
125125
}
126126

127127
func BoundSchemaToCRD(schema *kubebindv1alpha2.BoundSchema) *apiextensionsv1.CustomResourceDefinition {

0 commit comments

Comments
 (0)