@@ -24,6 +24,7 @@ import (
2424 "strconv"
2525 "strings"
2626
27+ configv1 "github.com/openshift/api/config/v1"
2728 v1 "k8s.io/api/core/v1"
2829 "k8s.io/apimachinery/pkg/api/resource"
2930 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -347,7 +348,7 @@ func getArgoCD(client dynamic.Interface, name, namespace string) (*argooperator.
347348 return argo , err
348349}
349350
350- func newApplicationParameters (p * api.Pattern ) []argoapi.HelmParameter {
351+ func newApplicationParameters (p * api.Pattern , infra * configv1. Infrastructure ) []argoapi.HelmParameter {
351352 parameters := []argoapi.HelmParameter {
352353 {
353354 Name : "global.pattern" ,
@@ -411,6 +412,20 @@ func newApplicationParameters(p *api.Pattern) []argoapi.HelmParameter {
411412 Value : p .Spec .ExperimentalCapabilities ,
412413 },
413414 }
415+ if infra != nil {
416+ log .Printf ("Adding infrastructure parameters: clusterAPIServerURL=%s, controlPlaneTopology=%s" , infra .Status .APIServerURL , infra .Status .ControlPlaneTopology )
417+ parameters = append (parameters , argoapi.HelmParameter {
418+ Name : "global.clusterAPIServerURL" ,
419+ Value : infra .Status .APIServerURL ,
420+ },
421+ argoapi.HelmParameter {
422+ Name : "global.controlPlaneTopology" ,
423+ Value : string (infra .Status .ControlPlaneTopology ),
424+ },
425+ )
426+ } else {
427+ log .Printf ("Warning: infra is nil, skipping infrastructure parameters (global.clusterAPIServerURL and global.controlPlaneTopology)" )
428+ }
414429 parameters = append (parameters , argoapi.HelmParameter {
415430 Name : "global.multiSourceTargetRevision" ,
416431 Value : getClusterGroupChartVersion (p ),
@@ -491,7 +506,7 @@ func newApplicationValues(p *api.Pattern) string {
491506// libraries. E.g. a string '/overrides/values-{{ $.Values.global.clusterPlatform }}.yaml'
492507// will be converted to '/overrides/values-AWS.yaml'
493508// 4. We return the list of templated strings back as an array
494- func getSharedValueFiles (p * api.Pattern , prefix string ) ([]string , error ) {
509+ func getSharedValueFiles (p * api.Pattern , prefix string , infra * configv1. Infrastructure ) ([]string , error ) {
495510 gitDir := p .Status .LocalCheckoutPath
496511 if _ , err := os .Stat (gitDir ); err != nil {
497512 return nil , fmt .Errorf ("%s path does not exist" , gitDir )
@@ -521,7 +536,7 @@ func getSharedValueFiles(p *api.Pattern, prefix string) ([]string, error) {
521536 if ! ok {
522537 return nil , fmt .Errorf ("type assertion failed at index %d: Not a string" , i )
523538 }
524- valueMap := convertArgoHelmParametersToMap (newApplicationParameters (p ))
539+ valueMap := convertArgoHelmParametersToMap (newApplicationParameters (p , infra ))
525540 templatedString , err := helmTpl (str , valueFiles , valueMap )
526541
527542 // we only log an error, but try to keep going
@@ -595,9 +610,9 @@ func commonApplicationSpec(p *api.Pattern, sources []argoapi.ApplicationSource)
595610 return spec
596611}
597612
598- func commonApplicationSourceHelm (p * api.Pattern , prefix string ) * argoapi.ApplicationSourceHelm {
613+ func commonApplicationSourceHelm (p * api.Pattern , prefix string , infra * configv1. Infrastructure ) * argoapi.ApplicationSourceHelm {
599614 valueFiles := newApplicationValueFiles (p , prefix )
600- sharedValueFiles , err := getSharedValueFiles (p , prefix )
615+ sharedValueFiles , err := getSharedValueFiles (p , prefix , infra )
601616 if err != nil {
602617 fmt .Printf ("Could not fetch sharedValueFiles: %s" , err )
603618 }
@@ -607,7 +622,7 @@ func commonApplicationSourceHelm(p *api.Pattern, prefix string) *argoapi.Applica
607622 ValueFiles : valueFiles ,
608623
609624 // Parameters is a list of Helm parameters which are passed to the helm template command upon manifest generation
610- Parameters : newApplicationParameters (p ),
625+ Parameters : newApplicationParameters (p , infra ),
611626
612627 // This is to be able to pass down the extraParams to the single applications
613628 Values : newApplicationValues (p ),
@@ -644,7 +659,7 @@ func newArgoOperatorApplication(p *api.Pattern, spec *argoapi.ApplicationSpec) *
644659 return & app
645660}
646661
647- func newSourceApplication (p * api.Pattern ) * argoapi.Application {
662+ func newSourceApplication (p * api.Pattern , infra * configv1. Infrastructure ) * argoapi.Application {
648663 // Argo uses...
649664 // r := regexp.MustCompile("(/|:)")
650665 // root := filepath.Join(os.TempDir(), r.ReplaceAllString(NormalizeGitURL(rawRepoURL), "_"))
@@ -653,15 +668,15 @@ func newSourceApplication(p *api.Pattern) *argoapi.Application {
653668 RepoURL : p .Spec .GitConfig .TargetRepo ,
654669 Path : "common/clustergroup" ,
655670 TargetRevision : p .Spec .GitConfig .TargetRevision ,
656- Helm : commonApplicationSourceHelm (p , "" ),
671+ Helm : commonApplicationSourceHelm (p , "" , infra ),
657672 }
658673 spec := commonApplicationSpec (p , []argoapi.ApplicationSource {source })
659674
660675 spec .SyncPolicy = commonSyncPolicy (p )
661676 return newArgoOperatorApplication (p , spec )
662677}
663678
664- func newMultiSourceApplication (p * api.Pattern ) * argoapi.Application {
679+ func newMultiSourceApplication (p * api.Pattern , infra * configv1. Infrastructure ) * argoapi.Application {
665680 sources := []argoapi.ApplicationSource {}
666681 var baseSource * argoapi.ApplicationSource
667682
@@ -681,14 +696,14 @@ func newMultiSourceApplication(p *api.Pattern) *argoapi.Application {
681696 RepoURL : p .Spec .MultiSourceConfig .HelmRepoUrl ,
682697 Chart : "clustergroup" ,
683698 TargetRevision : getClusterGroupChartVersion (p ),
684- Helm : commonApplicationSourceHelm (p , "$patternref" ),
699+ Helm : commonApplicationSourceHelm (p , "$patternref" , infra ),
685700 }
686701 } else {
687702 baseSource = & argoapi.ApplicationSource {
688703 RepoURL : p .Spec .MultiSourceConfig .ClusterGroupGitRepoUrl ,
689704 Path : "." ,
690705 TargetRevision : p .Spec .MultiSourceConfig .ClusterGroupChartGitRevision ,
691- Helm : commonApplicationSourceHelm (p , "$patternref" ),
706+ Helm : commonApplicationSourceHelm (p , "$patternref" , infra ),
692707 }
693708 }
694709 sources = append (sources , * baseSource )
@@ -712,14 +727,14 @@ func getClusterGroupChartVersion(p *api.Pattern) string {
712727 return clusterGroupChartVersion
713728}
714729
715- func newArgoApplication (p * api.Pattern ) * argoapi.Application {
730+ func newArgoApplication (p * api.Pattern , infra * configv1. Infrastructure ) * argoapi.Application {
716731 // -- ArgoCD Application
717732 var targetApp * argoapi.Application
718733
719734 if * p .Spec .MultiSourceConfig .Enabled {
720- targetApp = newMultiSourceApplication (p )
735+ targetApp = newMultiSourceApplication (p , infra )
721736 } else {
722- targetApp = newSourceApplication (p )
737+ targetApp = newSourceApplication (p , infra )
723738 }
724739
725740 return targetApp
0 commit comments