@@ -500,55 +500,25 @@ func (r *CeilometerReconciler) reconcileNormal(ctx context.Context, instance *te
500500 return rbacResult , nil
501501 }
502502
503- //
504- // Handle Topology
505- //
506- // TODO: Either move the topology into reconcileCeilometer and use the serviceLabels defined there
507- // or modify ceilometer CRD and the ceilometer controller to handle topology for ceilometer, ksm, mysqld-exporter
508- // separately (each has different service labels).
509- ceilometerServiceLabels := map [string ]string {
510- common .AppSelector : ceilometer .ServiceName ,
511- common .OwnerSelector : instance .Name ,
512- }
513-
514- topology , err := ensureTopology (
515- ctx ,
516- helper ,
517- instance , // topologyHandler
518- instance .Name , // finalizer
519- & instance .Status .Conditions ,
520- labels .GetLabelSelector (ceilometerServiceLabels ),
521- )
522- if err != nil {
523- instance .Status .Conditions .Set (condition .FalseCondition (
524- condition .TopologyReadyCondition ,
525- condition .ErrorReason ,
526- condition .SeverityWarning ,
527- condition .TopologyReadyErrorMessage ,
528- err .Error ()))
529- return ctrl.Result {}, fmt .Errorf ("waiting for Topology requirements: %w" , err )
530- }
531-
532- ksmRes , err := r .reconcileKSM (ctx , instance , helper , topology )
503+ ksmRes , err := r .reconcileKSM (ctx , instance , helper )
533504 if err != nil {
534505 return ksmRes , err
535506 }
536507
537- mysqldRes , err := r .reconcileMysqldExporter (ctx , instance , helper , topology )
508+ mysqldRes , err := r .reconcileMysqldExporter (ctx , instance , helper )
538509 if (err != nil || mysqldRes != ctrl.Result {}) {
539510 return mysqldRes , err
540511 }
541512
542513 // NOTE(mmagr): Ceilometer reconciliation has to be the last as this is the (only) place
543514 // where condition ReadyCondition is/should be evaluated
544- return r .reconcileCeilometer (ctx , instance , helper , topology )
515+ return r .reconcileCeilometer (ctx , instance , helper )
545516}
546517
547518func (r * CeilometerReconciler ) reconcileCeilometer (
548519 ctx context.Context ,
549520 instance * telemetryv1.Ceilometer ,
550521 helper * helper.Helper ,
551- topology * topologyv1.Topology ,
552522) (ctrl.Result , error ) {
553523 // ConfigMap
554524 configMapVars := make (map [string ]env.Setter )
@@ -760,6 +730,24 @@ func (r *CeilometerReconciler) reconcileCeilometer(
760730 common .OwnerSelector : instance .Name ,
761731 }
762732
733+ topology , err := ensureTopology (
734+ ctx ,
735+ helper ,
736+ instance , // topologyHandler
737+ instance .Name , // finalizer
738+ & instance .Status .Conditions ,
739+ labels .GetLabelSelector (serviceLabels ),
740+ )
741+ if err != nil {
742+ instance .Status .Conditions .Set (condition .FalseCondition (
743+ condition .TopologyReadyCondition ,
744+ condition .ErrorReason ,
745+ condition .SeverityWarning ,
746+ condition .TopologyReadyErrorMessage , // Topology config create error occured %s
747+ fmt .Sprintf ("for ceilometer topology: %s" , err .Error ())))
748+ return ctrl.Result {}, fmt .Errorf ("waiting for Topology requirements (ceilometer): %w" , err )
749+ }
750+
763751 // Handle service init
764752 ctrlResult , err = r .reconcileInit (ctx , instance , helper , serviceLabels )
765753 if err != nil {
@@ -828,7 +816,6 @@ func (r *CeilometerReconciler) reconcileMysqldExporter(
828816 ctx context.Context ,
829817 instance * telemetryv1.Ceilometer ,
830818 helper * helper.Helper ,
831- topology * topologyv1.Topology ,
832819) (ctrl.Result , error ) {
833820 Log := r .GetLogger (ctx )
834821 Log .Info (fmt .Sprintf (msgReconcileStart , mysqldexporter .ServiceName ))
@@ -952,6 +939,24 @@ func (r *CeilometerReconciler) reconcileMysqldExporter(
952939 common .OwnerSelector : instance .Name ,
953940 }
954941
942+ topology , err := ensureTopology (
943+ ctx ,
944+ helper ,
945+ instance , // topologyHandler
946+ instance .Name , // finalizer
947+ & instance .Status .Conditions ,
948+ labels .GetLabelSelector (serviceLabels ),
949+ )
950+ if err != nil {
951+ instance .Status .Conditions .Set (condition .FalseCondition (
952+ condition .TopologyReadyCondition ,
953+ condition .ErrorReason ,
954+ condition .SeverityWarning ,
955+ condition .TopologyReadyErrorMessage , // Topology config create error occured %s
956+ fmt .Sprintf ("for mysqld-exporter topology: %s" , err .Error ())))
957+ return ctrl.Result {}, fmt .Errorf ("waiting for Topology requirements (mysqld-exporter): %w" , err )
958+ }
959+
955960 // Define a new StatefulSet object
956961 sfsetDef , err := mysqldexporter .StatefulSet (instance , inputHash , serviceLabels , topology )
957962 if err != nil {
@@ -1008,7 +1013,6 @@ func (r *CeilometerReconciler) reconcileKSM(
10081013 ctx context.Context ,
10091014 instance * telemetryv1.Ceilometer ,
10101015 helper * helper.Helper ,
1011- topology * topologyv1.Topology ,
10121016) (ctrl.Result , error ) {
10131017 Log := r .GetLogger (ctx )
10141018 Log .Info (fmt .Sprintf (msgReconcileStart , availability .KSMServiceName ))
@@ -1114,6 +1118,24 @@ func (r *CeilometerReconciler) reconcileKSM(
11141118 instance .Status .KSMHash [common .InputHashName ] = inputHash
11151119 instance .Status .Conditions .MarkTrue (telemetryv1 .KSMServiceConfigReadyCondition , condition .InputReadyMessage )
11161120
1121+ topology , err := ensureTopology (
1122+ ctx ,
1123+ helper ,
1124+ instance , // topologyHandler
1125+ instance .Name , // finalizer
1126+ & instance .Status .Conditions ,
1127+ labels .GetLabelSelector (serviceLabels ),
1128+ )
1129+ if err != nil {
1130+ instance .Status .Conditions .Set (condition .FalseCondition (
1131+ condition .TopologyReadyCondition ,
1132+ condition .ErrorReason ,
1133+ condition .SeverityWarning ,
1134+ condition .TopologyReadyErrorMessage , // Topology config create error occured %s
1135+ fmt .Sprintf ("for kube-state-metrics topology: %s" , err .Error ())))
1136+ return ctrl.Result {}, fmt .Errorf ("waiting for Topology requirements (kube-state-metrics): %w" , err )
1137+ }
1138+
11171139 // create the kube-state-metrics statefulset
11181140 ssDef , err := availability .KSMStatefulSet (instance , tlsConfName , serviceLabels , topology )
11191141 if err != nil {
0 commit comments