@@ -23,12 +23,14 @@ import (
2323 "encoding/json"
2424 "fmt"
2525 "os"
26+ "strings"
2627 "time"
2728
2829 "github.com/red-hat-storage/ocs-client-operator/api/v1alpha1"
2930 "github.com/red-hat-storage/ocs-client-operator/pkg/utils"
3031
3132 configv1 "github.com/openshift/api/config/v1"
33+ opv1a1 "github.com/operator-framework/api/pkg/operators/v1alpha1"
3234 providerClient "github.com/red-hat-storage/ocs-operator/v4/services/provider/client"
3335 "google.golang.org/grpc/codes"
3436 "google.golang.org/grpc/status"
@@ -59,6 +61,8 @@ const (
5961 storageClientNameLabel = "ocs.openshift.io/storageclient.name"
6062 storageClientNamespaceLabel = "ocs.openshift.io/storageclient.namespace"
6163 storageClientFinalizer = "storageclient.ocs.openshift.io"
64+
65+ csvPrefix = "ocs-client-operator"
6266)
6367
6468// StorageClientReconciler reconciles a StorageClient object
@@ -110,6 +114,7 @@ func (s *StorageClientReconciler) SetupWithManager(mgr ctrl.Manager) error {
110114//+kubebuilder:rbac:groups=ocs.openshift.io,resources=storageclients/finalizers,verbs=update
111115//+kubebuilder:rbac:groups=config.openshift.io,resources=clusterversions,verbs=get;list;watch
112116//+kubebuilder:rbac:groups=batch,resources=cronjobs,verbs=get;list;create;update;watch;delete
117+ //+kubebuilder:rbac:groups=operators.coreos.com,resources=clusterserviceversions,verbs=get;list;watch
113118
114119func (s * StorageClientReconciler ) Reconcile (ctx context.Context , req ctrl.Request ) (ctrl.Result , error ) {
115120 var err error
@@ -266,9 +271,23 @@ func (s *StorageClientReconciler) onboardConsumer(instance *v1alpha1.StorageClie
266271 return reconcile.Result {}, fmt .Errorf ("failed to get the clusterVersion version of the OCP cluster: %v" , err )
267272 }
268273
274+ // TODO Have a version file corresponding to the release
275+ csvList := opv1a1.ClusterServiceVersionList {}
276+ if err = s .list (& csvList , client .InNamespace (s .OperatorNamespace )); err != nil {
277+ return reconcile.Result {}, fmt .Errorf ("failed to list csv resources in ns: %v, err: %v" , s .OperatorNamespace , err )
278+ }
279+ csv := utils .Find (csvList .Items , func (csv * opv1a1.ClusterServiceVersion ) bool {
280+ return strings .HasPrefix (csv .Name , csvPrefix )
281+ })
282+ if csv == nil {
283+ return reconcile.Result {}, fmt .Errorf ("unable to find csv with prefix %q" , csvPrefix )
284+ }
269285 name := fmt .Sprintf ("storageconsumer-%s" , clusterVersion .Spec .ClusterID )
270- response , err := externalClusterClient .OnboardConsumer (
271- s .ctx , instance .Spec .OnboardingTicket , name )
286+ onboardRequest := providerClient .NewOnboardConsumerRequest ().
287+ SetConsumerName (name ).
288+ SetOnboardingTicket (instance .Spec .OnboardingTicket ).
289+ SetClientOperatorVersion (csv .Spec .Version .String ())
290+ response , err := externalClusterClient .OnboardConsumer (s .ctx , onboardRequest )
272291 if err != nil {
273292 if st , ok := status .FromError (err ); ok {
274293 s .logGrpcErrorAndReportEvent (instance , OnboardConsumer , err , st .Code ())
@@ -436,17 +455,16 @@ func (s *StorageClientReconciler) reconcileClientStatusReporterJob(instance *v1a
436455 var podDeadLineSeconds int64 = 120
437456 jobDeadLineSeconds := podDeadLineSeconds + 35
438457 var keepJobResourceSeconds int32 = 600
439- var reducedKeptSuccecsful int32 = 1
440-
458+ var reducedKeptSuccecsful int32 = 1
441459
442460 _ , err := controllerutil .CreateOrUpdate (s .ctx , s .Client , cronJob , func () error {
443461 cronJob .Spec = batchv1.CronJobSpec {
444- Schedule : "* * * * *" ,
445- ConcurrencyPolicy : batchv1 .ForbidConcurrent ,
462+ Schedule : "* * * * *" ,
463+ ConcurrencyPolicy : batchv1 .ForbidConcurrent ,
446464 SuccessfulJobsHistoryLimit : & reducedKeptSuccecsful ,
447465 JobTemplate : batchv1.JobTemplateSpec {
448466 Spec : batchv1.JobSpec {
449- ActiveDeadlineSeconds : & jobDeadLineSeconds ,
467+ ActiveDeadlineSeconds : & jobDeadLineSeconds ,
450468 TTLSecondsAfterFinished : & keepJobResourceSeconds ,
451469 Template : corev1.PodTemplateSpec {
452470 Spec : corev1.PodSpec {
@@ -488,3 +506,7 @@ func (s *StorageClientReconciler) reconcileClientStatusReporterJob(instance *v1a
488506 }
489507 return reconcile.Result {}, nil
490508}
509+
510+ func (s * StorageClientReconciler ) list (obj client.ObjectList , listOptions ... client.ListOption ) error {
511+ return s .Client .List (s .ctx , obj , listOptions ... )
512+ }
0 commit comments