Skip to content

Commit

Permalink
fix dedupe access keys
Browse files Browse the repository at this point in the history
  • Loading branch information
Brian Mendoza committed Feb 27, 2024
1 parent 4a93b3f commit 36f51dd
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 40 deletions.
37 changes: 18 additions & 19 deletions cloud/services/object_storage_buckets.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,22 @@ func CreateObjectStorageBucket(ctx context.Context, bucketScope *scope.ObjectSto

func CreateObjectStorageKeys(ctx context.Context, bucketScope *scope.ObjectStorageBucketScope, logger logr.Logger) ([2]linodego.ObjectStorageKey, error) {
var newKeys [2]linodego.ObjectStorageKey
var existingKeys []linodego.ObjectStorageKey
var err error

if existingKeys, err = bucketScope.LinodeClient.ListObjectStorageKeys(
ctx,
linodego.NewListOptions(1, "{}"),
); err != nil {
logger.Info("Failed to list object storage keys", "error", err.Error())

return newKeys, err
}

keysSet := make(map[string]struct{})
for _, key := range existingKeys {
keysSet[key.Label] = struct{}{}
}

for i, e := range []struct {
permission string
Expand All @@ -66,26 +82,9 @@ func CreateObjectStorageKeys(ctx context.Context, bucketScope *scope.ObjectStora
{"read_only", "ro"},
} {
keyLabel := fmt.Sprintf("%s-%s-%s", bucketScope.Object.Spec.Cluster, bucketScope.Object.Spec.Label, e.suffix)
filter := map[string]string{
"label": keyLabel,
}

rawFilter, err := json.Marshal(filter)
if err != nil {
return newKeys, err
}

var existingKeys []linodego.ObjectStorageKey
if existingKeys, err = bucketScope.LinodeClient.ListObjectStorageKeys(
ctx,
linodego.NewListOptions(1, string(rawFilter)),
); err != nil {
logger.Info("Failed to list object storage keys", "error", err.Error())

return newKeys, err
}
if len(existingKeys) == 1 {
logger.Info(fmt.Sprintf("ObjectStorageBucket %s already exists", existingKeys[0].Label))
if _, ok := keysSet[keyLabel]; ok {
logger.Info(fmt.Sprintf("Object storage key %s already exists", keyLabel))

newKeys[i] = existingKeys[0]
continue
Expand Down
6 changes: 3 additions & 3 deletions controller/linodeobjectstoragebucket_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,9 +121,9 @@ func (r *LinodeObjectStorageBucketReconciler) reconcile(
return res, r.reconcileDelete(ctx, logger, bucketScope)
}

if err := bucketScope.AddFinalizer(ctx); err != nil {
return res, err
}
// if err := bucketScope.AddFinalizer(ctx); err != nil {
// return res, err
// }

// Created
if bucketScope.Object.Status.LastKeyGeneration == nil {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,6 @@ spec:
label: sample
cluster: us-sea-1
keyGeneration: 0
apiKeySecretRef:
name: linodeobjectstoragebucket-sample
key: apiToken
status:
ready: true
keySecretName: linodeobjectstoragebucket-sample-access-keys
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,3 @@ metadata:
spec:
label: sample
cluster: us-sea-1
apiKeySecretRef:
name: linodeobjectstoragebucket-sample
key: apiToken

0 comments on commit 36f51dd

Please sign in to comment.