rgw: simplify map secret func
Signed-off-by: Artem Torubarov <artem.torubarov@sap.com>
This commit is contained in:
1 parent
dd0d500980
commit
e2f7caf193
1 file changed
+23
-20
@@ -221,39 +221,42 @@ func mapSecretToCR(k8sClient client.Client) func(context.Context, client.Object)
|
||||
err := k8sClient.List(ctx, &objStores, client.InNamespace(secret.Namespace))
|
||||
if err != nil {
|
||||
if kerrors.IsNotFound(err) {
|
||||
logger.Debugf("cephObjectStore resource for annotated secret %q not found. Ignoring since object must be deleted.", secret.Name)
|
||||
logger.Debugf("cephObjectStore resource for referenced secret %q not found. Ignoring since object must be deleted.", secret.Name)
|
||||
return nil
|
||||
}
|
||||
logger.Errorf("failed to list cephObjectStore resources for annotated secret %q", secret.Name)
|
||||
// Error reading the object - requeue the request.
|
||||
logger.Errorf("failed to list cephObjectStore resources for referenced secret %q", secret.Name)
|
||||
return nil
|
||||
}
|
||||
|
||||
var requests []reconcile.Request
|
||||
for _, objStore := range objStores.Items {
|
||||
found := false
|
||||
// check if secret is referred in object store rgwConfigFromSecret:
|
||||
for _, sec := range objStore.Spec.Gateway.RgwConfigFromSecret {
|
||||
if sec.Name == secret.Name {
|
||||
requests = append(requests, reconcile.Request{NamespacedName: types.NamespacedName{Name: objStore.Name, Namespace: objStore.Namespace}})
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if found {
|
||||
// secret reference found, ObjectStore added to reconcile list.
|
||||
// check next object store
|
||||
continue
|
||||
}
|
||||
if objStore.Spec.Auth.Keystone != nil && objStore.Spec.Auth.Keystone.ServiceUserSecretName == secret.Name {
|
||||
requests = append(requests, reconcile.Request{NamespacedName: types.NamespacedName{Name: objStore.Name, Namespace: objStore.Namespace}})
|
||||
continue
|
||||
// reconcile ObjectStore if it refers to the secret
|
||||
if isObjStoreSpecContainsSecret(&objStore.Spec, secret) {
|
||||
requests = append(requests, reconcile.Request{
|
||||
NamespacedName: types.NamespacedName{
|
||||
Name: objStore.Name,
|
||||
Namespace: objStore.Namespace,
|
||||
}})
|
||||
}
|
||||
}
|
||||
return requests
|
||||
}
|
||||
}
|
||||
|
||||
func isObjStoreSpecContainsSecret(spec *cephv1.ObjectStoreSpec, secret *corev1.Secret) bool {
|
||||
// check if secret is referred in object store rgwConfigFromSecret:
|
||||
for _, sec := range spec.Gateway.RgwConfigFromSecret {
|
||||
if sec.Name == secret.Name {
|
||||
return true
|
||||
}
|
||||
}
|
||||
// check if secret is referred in object store keystone service user secret:
|
||||
if spec.Auth.Keystone != nil && spec.Auth.Keystone.ServiceUserSecretName == secret.Name {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// Reconcile reads that state of the cluster for a cephObjectStore object and makes changes based on the state read
|
||||
// and what is in the cephObjectStore.Spec
|
||||
// The Controller will requeue the Request to be processed again if the returned error is non-nil or
|
||||
|
||||
Reference in new issue
Block a user