Skip to content

Commit

Permalink
Merge pull request #182 from openshift-cherrypick-robot/cherry-pick-1…
Browse files Browse the repository at this point in the history
…81-to-release-4.13

Bug 2223714: [release-4.13] Fix issue with empty s3 profile config
  • Loading branch information
openshift-ci[bot] authored Oct 31, 2023
2 parents 06e0176 + 91048ef commit 9a6272f
Showing 1 changed file with 53 additions and 0 deletions.
53 changes: 53 additions & 0 deletions controllers/mirrorpeersecret_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,21 @@ import (

"github.com/red-hat-storage/odf-multicluster-orchestrator/controllers/utils"

ramendrv1alpha1 "github.com/ramendr/ramen/api/v1alpha1"
corev1 "k8s.io/api/core/v1"
k8serrors "k8s.io/apimachinery/pkg/api/errors"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/selection"
"k8s.io/klog/v2"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/builder"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/handler"
"sigs.k8s.io/controller-runtime/pkg/log"
"sigs.k8s.io/controller-runtime/pkg/reconcile"
"sigs.k8s.io/controller-runtime/pkg/source"
"sigs.k8s.io/yaml"
)

// MirrorPeerSecretReconciler reconciles MirrorPeer CRs,
Expand Down Expand Up @@ -97,5 +105,50 @@ func mirrorPeerSecretReconcile(ctx context.Context, rc client.Client, req ctrl.R
func (r *MirrorPeerSecretReconciler) SetupWithManager(mgr ctrl.Manager) error {
return ctrl.NewControllerManagedBy(mgr).
For(&corev1.Secret{}, builder.WithPredicates(utils.SourceOrDestinationPredicate)).
Watches(&source.Kind{Type: &corev1.ConfigMap{}}, handler.EnqueueRequestsFromMapFunc(r.secretConfigMapFunc)).
Complete(r)
}

func (r *MirrorPeerSecretReconciler) secretConfigMapFunc(obj client.Object) []reconcile.Request {
ConfigMapRamenConfigKeyName := "ramen_manager_config.yaml"
var cm *corev1.ConfigMap
cm, ok := obj.(*corev1.ConfigMap)
if !ok {
return []reconcile.Request{}
}

if _, ok := cm.Data[ConfigMapRamenConfigKeyName]; !ok {
return []reconcile.Request{}
}

ramenConfig := &ramendrv1alpha1.RamenConfig{}
err := yaml.Unmarshal([]byte(cm.Data[ConfigMapRamenConfigKeyName]), ramenConfig)
if err != nil {
return []reconcile.Request{}
}

secrets := &corev1.SecretList{}
internalSecretLabel, err := labels.NewRequirement(utils.SecretLabelTypeKey, selection.Equals, []string{string(utils.InternalLabel)})
if err != nil {
klog.Error(err, "cannot parse new requirement")
return []reconcile.Request{}
}

internalSecretSelector := labels.NewSelector().Add(*internalSecretLabel)
listOpts := &client.ListOptions{
Namespace: "", //All Namespaces
LabelSelector: internalSecretSelector,
}

if err := r.Client.List(context.TODO(), secrets, listOpts); err != nil {
return []reconcile.Request{}
}

requests := make([]reconcile.Request, len(secrets.Items))
for i, secret := range secrets.Items {
requests[i].Name = secret.GetName()
requests[i].Namespace = secret.GetNamespace()
}

return requests
}

0 comments on commit 9a6272f

Please sign in to comment.