66 "github.com/go-git/go-git/v5"
77 deploymentrepo "github.com/openmcp-project/bootstrapper/internal/deployment-repo"
88 "github.com/openmcp-project/bootstrapper/internal/log"
9+ ocmcli "github.com/openmcp-project/bootstrapper/internal/ocm-cli"
910 "github.com/openmcp-project/bootstrapper/internal/util"
1011 "github.com/spf13/cobra"
1112
@@ -18,6 +19,7 @@ const (
1819 FlagClusterProvider = "cluster-provider"
1920 FlagServiceProvider = "service-provider"
2021 FlagPlatformService = "platform-service"
22+ FlagImagePullSecret = "image-pull-secret"
2123)
2224
2325type LogWriter struct {}
@@ -44,11 +46,16 @@ openmcp-bootstrapper manageDeploymentRepo <componentLocation> <templateDirectory
4446 },
4547 Example : ` openmcp-bootstrapper manageDeploymentRepo "ghcr.io/openmcp-project/components//github.com/openmcp-project/openmcp:${OPENMCP_VERSION}" ./templates "https://github.com/${GITHUB_USER}/deployment-repo.git" incoming-branch` ,
4648 RunE : func (cmd * cobra.Command , args []string ) error {
47- // componentLocation := args[0]
49+ componentLocation := args [0 ]
4850 templateDirectory := args [1 ]
4951 deploymentRepository := args [2 ]
5052 deploymentRepositoryBranch := args [3 ]
5153
54+ cv , err := ocmcli .GetComponentVersion (cmd .Context (), componentLocation , cmd .Flag (FlagOcmConfig ).Value .String ())
55+ if err != nil {
56+ return fmt .Errorf ("failed to get component version from %s: %w" , componentLocation , err )
57+ }
58+
5259 logger := log .GetLogger ()
5360 logger .Debug ("parsing git config file from flag:" , cmd .Flag (FlagGitConfig ).Value .String ())
5461
@@ -94,13 +101,46 @@ openmcp-bootstrapper manageDeploymentRepo <componentLocation> <templateDirectory
94101 return fmt .Errorf ("failed to apply templates from directory %s: %w" , templateDirectory , err )
95102 }
96103
104+ imagePullSecrets , err := cmd .Flags ().GetStringArray (FlagImagePullSecret )
105+ if err != nil {
106+ return fmt .Errorf ("failed to get image pull secrets flag: %w" , err )
107+ }
108+
97109 clusterProviders , err := cmd .Flags ().GetStringArray (FlagClusterProvider )
98110 if err != nil {
99111 return fmt .Errorf ("failed to get cluster providers flag: %w" , err )
100112 }
101113
102114 for _ , provider := range clusterProviders {
103- err = deploymentrepo .TemplateClusterProvider (provider , "foo:1.2.3" , repo )
115+ cr , err := cv .GetComponentReference ("cluster-provider-" + provider )
116+ if err != nil {
117+ return fmt .Errorf ("failed to get component reference for cluster provider %s: %w" , provider , err )
118+ }
119+
120+ providerCV , err := ocmcli .GetComponentVersion (cmd .Context (), cv .Repository + "//" + cr .ComponentName , cmd .Flag (FlagOcmConfig ).Value .String ())
121+ if err != nil {
122+ return fmt .Errorf ("failed to get component version for cluster provider %s: %w" , provider , err )
123+ }
124+
125+ var imageResource * ocmcli.Resource
126+
127+ for _ , resource := range providerCV .Component .Resources {
128+ if resource .Type == "ociImage" {
129+ imageResource = & resource
130+ break
131+ }
132+ }
133+
134+ if imageResource == nil || imageResource .Access .ImageReference == nil {
135+ return fmt .Errorf ("image resource not found for cluster provider %s" , provider )
136+ }
137+
138+ opts := & deploymentrepo.ProviderOptions {
139+ Name : provider ,
140+ Image : * imageResource .Access .ImageReference , // This should be replaced with the actual image location
141+ ImagePullSecrets : imagePullSecrets ,
142+ }
143+ err = deploymentrepo .TemplateClusterProvider (opts , repo )
104144 if err != nil {
105145 return fmt .Errorf ("failed to apply cluster provider %s: %w" , provider , err )
106146 }
@@ -111,7 +151,12 @@ openmcp-bootstrapper manageDeploymentRepo <componentLocation> <templateDirectory
111151 return fmt .Errorf ("failed to get service providers flag: %w" , err )
112152 }
113153 for _ , provider := range serviceProviders {
114- err = deploymentrepo .TemplateServiceProvider (provider , "foo:1.2.3" , repo )
154+ opts := & deploymentrepo.ProviderOptions {
155+ Name : provider ,
156+ Image : "foo:1.2.3" , // This should be replaced with the actual image location
157+ ImagePullSecrets : imagePullSecrets ,
158+ }
159+ err = deploymentrepo .TemplateServiceProvider (opts , repo )
115160 if err != nil {
116161 return fmt .Errorf ("failed to apply service provider %s: %w" , provider , err )
117162 }
@@ -122,7 +167,12 @@ openmcp-bootstrapper manageDeploymentRepo <componentLocation> <templateDirectory
122167 return fmt .Errorf ("failed to get platform services flag: %w" , err )
123168 }
124169 for _ , service := range platformServices {
125- err = deploymentrepo .TemplatePlatformService (service , "foo:1.2.3" , repo )
170+ opts := & deploymentrepo.ProviderOptions {
171+ Name : service ,
172+ Image : "foo:1.2.3" , // This should be replaced with the actual image location
173+ ImagePullSecrets : imagePullSecrets ,
174+ }
175+ err = deploymentrepo .TemplatePlatformService (opts , repo )
126176 if err != nil {
127177 return fmt .Errorf ("failed to apply platform service %s: %w" , service , err )
128178 }
@@ -154,6 +204,9 @@ func init() {
154204 manageDeploymentRepoCmd .Flags ().String (FlagOcmConfig , "" , "ocm configuration file" )
155205 manageDeploymentRepoCmd .Flags ().String (FlagGitConfig , "" , "Git configuration file" )
156206
207+ manageDeploymentRepoCmd .Flags ().StringArray (FlagImagePullSecret , nil ,
208+ "Image pull secret to use for the deployment repository (default: openmcp-pull-secret)" )
209+
157210 if err := manageDeploymentRepoCmd .MarkFlagRequired (FlagGitConfig ); err != nil {
158211 panic (err )
159212 }
0 commit comments