@@ -627,15 +627,15 @@ func (m *instance) rebuildChartVersions(ctx context.Context, c client.Client) er
627627 m .chartMux .Lock ()
628628 defer m .chartMux .Unlock ()
629629
630- clusterSummaryList := & configv1beta1.ClusterSummaryList {}
631- err := c .List (ctx , clusterSummaryList )
630+ clusterConfigurations := & configv1beta1.ClusterConfigurationList {}
631+ err := c .List (ctx , clusterConfigurations )
632632 if err != nil {
633633 return err
634634 }
635635
636- for i := range clusterSummaryList .Items {
637- cs := & clusterSummaryList .Items [i ]
638- m .addHelmVersions (cs )
636+ for i := range clusterConfigurations .Items {
637+ cc := & clusterConfigurations .Items [i ]
638+ m .addHelmVersions (cc )
639639 }
640640
641641 return nil
@@ -676,32 +676,73 @@ func (m *instance) addNonManagers(clusterSummary *configv1beta1.ClusterSummary)
676676 }
677677}
678678
679- // addHelmVersions walks clusterSummary's status and register helm versions for each chart managed
680- func (m * instance ) addHelmVersions (clusterSummary * configv1beta1.ClusterSummary ) {
681- clusterKey := m .getClusterKey (clusterSummary .Spec .ClusterNamespace , clusterSummary .Spec .ClusterName ,
682- clusterSummary .Spec .ClusterType )
679+ // addHelmVersions walks clusterConfigurations's status and register helm versions for each chart managed
680+ func (m * instance ) addHelmVersions (clusterConfiguration * configv1beta1.ClusterConfiguration ) {
681+ lbls := clusterConfiguration .Labels
682+ if lbls == nil {
683+ m .logger .V (logs .LogInfo ).Info (fmt .Sprintf ("ClusterConfiguration %s/%s has no labels" ,
684+ clusterConfiguration .Namespace , clusterConfiguration .Name ))
685+ return
686+ }
683687
684- for i := range clusterSummary .Status .HelmReleaseSummaries {
685- summary := & clusterSummary .Status .HelmReleaseSummaries [i ]
686- if summary .Status == configv1beta1 .HelmChartStatusManaging {
687- chartVersion := m .getVersion (clusterSummary , summary .ReleaseNamespace , summary .ReleaseName )
688- releaseKey := m .GetReleaseKey (summary .ReleaseNamespace , summary .ReleaseName )
689- m .setChartVersion (clusterKey , releaseKey , chartVersion )
690- }
688+ clusterName , ok := clusterConfiguration .Labels [configv1beta1 .ClusterNameLabel ]
689+ if ! ok {
690+ m .logger .V (logs .LogInfo ).Info (fmt .Sprintf ("ClusterConfiguration %s/%s has no %s label" ,
691+ clusterConfiguration .Namespace , clusterConfiguration .Name , configv1beta1 .ClusterNameLabel ))
692+ return
691693 }
692- }
693694
694- func (m * instance ) getVersion (clusterSummary * configv1beta1.ClusterSummary ,
695- releaseNamespace , releaseName string ) string {
695+ var clusterKey string
696696
697- for i := range clusterSummary .Spec .ClusterProfileSpec .HelmCharts {
698- hc := & clusterSummary .Spec .ClusterProfileSpec .HelmCharts [i ]
699- if hc .ReleaseNamespace == releaseNamespace &&
700- hc .ReleaseName == releaseName {
697+ rawValueClusterType , ok := clusterConfiguration .Labels [configv1beta1 .ClusterTypeLabel ]
698+ if ! ok {
699+ m .logger .V (logs .LogInfo ).Info (fmt .Sprintf ("ClusterConfiguration %s/%s has no %s label" ,
700+ clusterConfiguration .Namespace , clusterConfiguration .Name , configv1beta1 .ClusterTypeLabel ))
701+ return
702+ }
701703
702- return hc .ChartVersion
703- }
704+ var clusterType libsveltosv1beta1.ClusterType
705+
706+ // Normalize the input to match your defined constants
707+ switch {
708+ case strings .EqualFold (rawValueClusterType , string (libsveltosv1beta1 .ClusterTypeCapi )):
709+ clusterType = libsveltosv1beta1 .ClusterTypeCapi
710+ case strings .EqualFold (rawValueClusterType , string (libsveltosv1beta1 .ClusterTypeSveltos )):
711+ clusterType = libsveltosv1beta1 .ClusterTypeSveltos
712+ default :
713+ m .logger .V (logs .LogInfo ).Info (fmt .Sprintf ("ClusterConfiguration %s/%s label %s has unknown value %s" ,
714+ clusterConfiguration .Namespace , clusterConfiguration .Name ,
715+ configv1beta1 .ClusterTypeLabel , rawValueClusterType ))
716+ return
717+ }
718+
719+ clusterKey = m .getClusterKey (clusterConfiguration .Namespace , clusterName , clusterType )
720+
721+ for i := range clusterConfiguration .Status .ClusterProfileResources {
722+ m .walkClusterConfigurationFeature (clusterKey ,
723+ clusterConfiguration .Status .ClusterProfileResources [i ].Features )
704724 }
705725
706- return ""
726+ for i := range clusterConfiguration .Status .ProfileResources {
727+ m .walkClusterConfigurationFeature (clusterKey ,
728+ clusterConfiguration .Status .ProfileResources [i ].Features )
729+ }
730+ }
731+
732+ func (m * instance ) walkClusterConfigurationFeature (clusterKey string , features []configv1beta1.Feature ) {
733+ for i := range features {
734+ m .walkClusterConfigurationCharts (clusterKey , features [i ])
735+ }
736+ }
737+
738+ func (m * instance ) walkClusterConfigurationCharts (clusterKey string , feature configv1beta1.Feature ) {
739+ for i := range feature .Charts {
740+ chartVersion := feature .Charts [i ].ChartVersion
741+ releaseKey := m .GetReleaseKey (feature .Charts [i ].Namespace ,
742+ feature .Charts [i ].ReleaseName )
743+
744+ m .logger .V (logs .LogDebug ).Info (fmt .Sprintf ("cluster %s %s %s %s" ,
745+ clusterKey , feature .Charts [i ].Namespace , feature .Charts [i ].ReleaseName , chartVersion ))
746+ m .setChartVersion (clusterKey , releaseKey , chartVersion )
747+ }
707748}
0 commit comments