1- package redisbroker
1+ package common
22
33import (
44 "context"
@@ -20,33 +20,39 @@ import (
2020
2121 "github.com/triggermesh/brokers/pkg/config/broker"
2222
23- eventingv1alpha1 "github.com/triggermesh/triggermesh-core/pkg/apis/eventing/v1alpha1"
23+ "github.com/triggermesh/triggermesh-core/pkg/apis/eventing/v1alpha1"
2424 eventingv1alpha1listers "github.com/triggermesh/triggermesh-core/pkg/client/generated/listers/eventing/v1alpha1"
25- "github.com/triggermesh/triggermesh-core/pkg/reconciler"
2625 "github.com/triggermesh/triggermesh-core/pkg/reconciler/resources"
2726 "github.com/triggermesh/triggermesh-core/pkg/reconciler/semantic"
2827)
2928
3029const (
31- secretResourceSuffix = "rb-config"
32- configSecretKey = "config"
30+ ConfigSecretKey = "config"
3331)
3432
33+ var (
34+ secretResourceSuffix = "config"
35+ )
36+
37+ type SecretReconciler interface {
38+ Reconcile (ctx context.Context , rb v1alpha1.ReconcilableBroker ) (* corev1.Secret , error )
39+ }
40+
3541type secretReconciler struct {
3642 client kubernetes.Interface
3743 secretLister corev1listers.SecretLister
3844 triggerLister eventingv1alpha1listers.TriggerLister
3945}
4046
41- func newSecretReconciler (ctx context.Context , secretLister corev1listers.SecretLister , triggerLister eventingv1alpha1listers.TriggerLister ) secretReconciler {
42- return secretReconciler {
47+ func NewSecretReconciler (ctx context.Context , secretLister corev1listers.SecretLister , triggerLister eventingv1alpha1listers.TriggerLister ) SecretReconciler {
48+ return & secretReconciler {
4349 client : k8sclient .Get (ctx ),
4450 secretLister : secretLister ,
4551 triggerLister : triggerLister ,
4652 }
4753}
4854
49- func (r * secretReconciler ) reconcile (ctx context.Context , rb * eventingv1alpha1. RedisBroker ) (* corev1.Secret , error ) {
55+ func (r * secretReconciler ) Reconcile (ctx context.Context , rb v1alpha1. ReconcilableBroker ) (* corev1.Secret , error ) {
5056 desired , err := r .buildConfigSecret (ctx , rb )
5157 if err != nil {
5258 return nil , err
@@ -62,48 +68,51 @@ func (r *secretReconciler) reconcile(ctx context.Context, rb *eventingv1alpha1.R
6268 current , err = r .client .CoreV1 ().Secrets (desired .Namespace ).Update (ctx , desired , metav1.UpdateOptions {})
6369 if err != nil {
6470 fullname := types.NamespacedName {Namespace : desired .Namespace , Name : desired .Name }
65- logging .FromContext (ctx ).Error ("Unable to update the secret" , zap .String ("secret" , fullname .String ()), zap .Error (err ))
66- rb .Status . MarkRedisDeploymentFailed ( reconciler . ReasonFailedDeploymentUpdate , "Failed to update Redis deployment " )
71+ logging .FromContext (ctx ).Error ("Unable to update secret" , zap .String ("secret" , fullname .String ()), zap .Error (err ))
72+ rb .GetReconcilableBrokerStatus (). MarkConfigSecretFailed ( ReasonFailedSecretUpdate , "Failed to update config from secret " )
6773
68- return nil , pkgreconciler .NewEvent (corev1 .EventTypeWarning , reconciler . ReasonFailedDeploymentUpdate ,
69- "Failed to get Redis deployment %s: %w" , fullname , err )
74+ return nil , pkgreconciler .NewEvent (corev1 .EventTypeWarning , ReasonFailedSecretUpdate ,
75+ "Failed to update config from secret %s: %w" , fullname , err )
7076 }
7177 }
7278
7379 case ! apierrs .IsNotFound (err ):
74- // An error occurred retrieving current deployment .
80+ // An error occurred retrieving current secret .
7581 fullname := types.NamespacedName {Namespace : desired .Namespace , Name : desired .Name }
76- logging .FromContext (ctx ).Error ("Unable to get the deployment " , zap .String ("deployment " , fullname .String ()), zap .Error (err ))
77- rb .Status . MarkRedisDeploymentFailed ( reconciler . ReasonFailedDeploymentGet , "Failed to get Redis deployment " )
82+ logging .FromContext (ctx ).Error ("Unable to get secret " , zap .String ("secret " , fullname .String ()), zap .Error (err ))
83+ rb .GetReconcilableBrokerStatus (). MarkConfigSecretFailed ( ReasonFailedSecretGet , "Failed to get config from secret " )
7884
79- return nil , pkgreconciler .NewEvent (corev1 .EventTypeWarning , reconciler . ReasonFailedDeploymentGet ,
80- "Failed to get Redis deployment %s: %w" , fullname , err )
85+ return nil , pkgreconciler .NewEvent (corev1 .EventTypeWarning , ReasonFailedSecretGet ,
86+ "Failed to get config from secret %s: %w" , fullname , err )
8187
8288 default :
83- // The deployment has not been found, create it.
89+ // The secret has not been found, create it.
8490 current , err = r .client .CoreV1 ().Secrets (desired .Namespace ).Create (ctx , desired , metav1.CreateOptions {})
8591 if err != nil {
8692 fullname := types.NamespacedName {Namespace : desired .Namespace , Name : desired .Name }
87- logging .FromContext (ctx ).Error ("Unable to create the deployment " , zap .String ("deployment " , fullname .String ()), zap .Error (err ))
88- rb .Status . MarkRedisDeploymentFailed ( reconciler . ReasonFailedDeploymentCreate , "Failed to create Redis deployment " )
93+ logging .FromContext (ctx ).Error ("Unable to create secret " , zap .String ("secret " , fullname .String ()), zap .Error (err ))
94+ rb .GetReconcilableBrokerStatus (). MarkConfigSecretFailed ( ReasonFailedSecretCreate , "Failed to create secret for config " )
8995
90- return nil , pkgreconciler .NewEvent (corev1 .EventTypeWarning , reconciler . ReasonFailedDeploymentCreate ,
91- "Failed to create Redis deployment %s: %w" , fullname , err )
96+ return nil , pkgreconciler .NewEvent (corev1 .EventTypeWarning , ReasonFailedSecretCreate ,
97+ "Failed to create secret for config %s: %w" , fullname , err )
9298 }
9399 }
94100
95- rb .Status .MarkConfigSecretReady ()
101+ rb .GetReconcilableBrokerStatus () .MarkConfigSecretReady ()
96102
97103 return current , nil
98104}
99105
100- func (r * secretReconciler ) buildConfigSecret (ctx context.Context , rb * eventingv1alpha1.RedisBroker ) (* corev1.Secret , error ) {
101- triggers , err := r .triggerLister .Triggers (rb .Namespace ).List (labels .Everything ())
106+ func (r * secretReconciler ) buildConfigSecret (ctx context.Context , rb v1alpha1.ReconcilableBroker ) (* corev1.Secret , error ) {
107+ meta := rb .GetObjectMeta ()
108+ ns , name := meta .GetNamespace (), meta .GetName ()
109+
110+ triggers , err := r .triggerLister .Triggers (ns ).List (labels .Everything ())
102111 if err != nil {
103112 logging .FromContext (ctx ).Error ("Unable to list triggers at namespace" , zap .Error (err ))
104- rb .Status .MarkConfigSecretFailed (reconciler . ReasonFailedTriggerList , "Failed to list triggers" )
113+ rb .GetReconcilableBrokerStatus () .MarkConfigSecretFailed (ReasonFailedTriggerList , "Failed to list triggers" )
105114
106- return nil , pkgreconciler .NewEvent (corev1 .EventTypeWarning , reconciler . ReasonFailedTriggerList ,
115+ return nil , pkgreconciler .NewEvent (corev1 .EventTypeWarning , ReasonFailedTriggerList ,
107116 "Failed to list triggers: %w" , err )
108117 }
109118
@@ -166,19 +175,21 @@ func (r *secretReconciler) buildConfigSecret(ctx context.Context, rb *eventingv1
166175 b , err := yaml .Marshal (cfg )
167176 if err != nil {
168177 logging .FromContext (ctx ).Error ("Unable to marshal configuration into YAML" , zap .Error (err ))
169- rb .Status .MarkConfigSecretFailed (reconciler . ReasonFailedConfigSerialize , "Failed to serialize configuration" )
178+ rb .GetReconcilableBrokerStatus () .MarkConfigSecretFailed (ReasonFailedConfigSerialize , "Failed to serialize configuration" )
170179
171- return nil , pkgreconciler .NewEvent (corev1 .EventTypeWarning , reconciler . ReasonFailedConfigSerialize ,
180+ return nil , pkgreconciler .NewEvent (corev1 .EventTypeWarning , ReasonFailedConfigSerialize ,
172181 "Failed to serialize configuration: %w" , err )
173182 }
174183
175- return resources .NewSecret (rb .Namespace , rb .Name + "-" + secretResourceSuffix ,
184+ sn := name + "-" + rb .GetOwnedObjectsPrefix () + "-" + secretResourceSuffix
185+
186+ return resources .NewSecret (ns , sn ,
176187 resources .SecretWithMetaOptions (
177- resources .MetaAddLabel (resources .AppNameLabel , appAnnotationValue ),
188+ resources .MetaAddLabel (resources .AppNameLabel , AppAnnotationValue ( rb ) ),
178189 resources .MetaAddLabel (resources .AppComponentLabel , "broker-config" ),
179190 resources .MetaAddLabel (resources .AppPartOfLabel , resources .PartOf ),
180191 resources .MetaAddLabel (resources .AppManagedByLabel , resources .ManagedBy ),
181- resources .MetaAddLabel (resources .AppInstanceLabel , rb . Name + "-" + secretResourceSuffix ),
182- resources .MetaAddOwner (rb , rb .GetGroupVersionKind ())),
183- resources .SecretSetData (configSecretKey , b )), nil
192+ resources .MetaAddLabel (resources .AppInstanceLabel , sn ),
193+ resources .MetaAddOwner (meta , rb .GetGroupVersionKind ())),
194+ resources .SecretSetData (ConfigSecretKey , b )), nil
184195}
0 commit comments