Skip to content

Commit 2285b7b

Browse files
committed
update
1 parent d7da35c commit 2285b7b

File tree

2 files changed

+259
-119
lines changed

2 files changed

+259
-119
lines changed

cmd/manageDeploymentRepo.go

Lines changed: 28 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,10 @@ package cmd
22

33
import (
44
"fmt"
5-
"os"
6-
"path/filepath"
75

8-
"github.com/go-git/go-git/v5"
96
deploymentrepo "github.com/openmcp-project/bootstrapper/internal/deployment-repo"
107
"github.com/openmcp-project/bootstrapper/internal/log"
11-
ocmcli "github.com/openmcp-project/bootstrapper/internal/ocm-cli"
12-
"github.com/openmcp-project/bootstrapper/internal/util"
138
"github.com/spf13/cobra"
14-
15-
gitconfig "github.com/openmcp-project/bootstrapper/internal/git-config"
169
)
1710

1811
const (
@@ -64,140 +57,56 @@ openmcp-bootstrapper manageDeploymentRepo <componentLocation> <templateResourceL
6457
logger.Infof("Using platform services: %v", cmd.Flag(FlagPlatformService).Value.String())
6558
logger.Infof("Using image pull secrets: %v", cmd.Flag(FlagImagePullSecret).Value.String())
6659

67-
tempDir, err := util.CreateTempDir("openmcp-bootstrapper-")
68-
if err != nil {
69-
return fmt.Errorf("failed to create temporary directory for deployment repository: %w", err)
70-
}
71-
logger.Tracef("Created temp dir: %s", tempDir)
72-
defer func() {
73-
logger.Tracef("Deleting temp dir: %s", tempDir)
74-
if err := util.DeleteTempDir(tempDir); err != nil {
75-
logger.Errorf("failed to delete temporary directory %s: %v", tempDir, err)
76-
}
77-
}()
78-
79-
templateDir := filepath.Join(tempDir, "templates")
80-
err = os.Mkdir(templateDir, 0o755)
81-
if err != nil {
82-
return fmt.Errorf("failed to create template directory: %w", err)
83-
}
84-
logger.Tracef("Created template dir: %s", templateDir)
85-
86-
logger.Infof("Downloading component %s", componentLocation)
87-
88-
ocmGetter := ocmcli.NewComponentGetter(componentLocation, templateResourceLocation, cmd.Flag(FlagOcmConfig).Value.String())
89-
err = ocmGetter.InitializeComponents(cmd.Context())
90-
if err != nil {
91-
return fmt.Errorf("failed to initialize components: %w", err)
92-
}
93-
94-
logger.Infof("Downloading templates resource %s", templateResourceLocation)
95-
96-
err = ocmGetter.DownloadTemplatesResource(cmd.Context(), templateDir)
97-
if err != nil {
98-
return fmt.Errorf("failed to download templates resource: %w", err)
99-
}
100-
101-
logger.Debug("parsing git config file from flag:", cmd.Flag(FlagGitConfig).Value.String())
102-
103-
gitDir := filepath.Join(tempDir, "repo")
104-
err = os.Mkdir(gitDir, 0o755)
105-
if err != nil {
106-
return fmt.Errorf("failed to create git directory: %w", err)
107-
}
108-
logger.Tracef("Created git dir: %s", gitDir)
109-
110-
gitConfig, err := gitconfig.ParseConfig(cmd.Flag(FlagGitConfig).Value.String())
60+
clusterProviders, err := cmd.Flags().GetStringArray(FlagClusterProvider)
11161
if err != nil {
112-
return fmt.Errorf("failed to parse git config: %w", err)
113-
}
114-
if err := gitConfig.Validate(); err != nil {
115-
return fmt.Errorf("invalid git config: %w", err)
116-
}
117-
118-
cloneOptions := &git.CloneOptions{
119-
URL: deploymentRepository,
120-
Progress: LogWriter{},
62+
return fmt.Errorf("failed to get cluster providers: %w", err)
12163
}
122-
if err := gitConfig.ConfigureCloneOptions(cloneOptions); err != nil {
123-
return fmt.Errorf("failed to configure git clone options: %w", err)
124-
}
125-
126-
logger.Infof("Cloning deployment repository %s", deploymentRepository)
127-
128-
repo, err := deploymentrepo.CloneRepo(deploymentRepository, gitDir, gitConfig)
64+
serviceProviders, err := cmd.Flags().GetStringArray(FlagServiceProvider)
12965
if err != nil {
130-
return fmt.Errorf("failed to clone deployment repository: %w", err)
66+
return fmt.Errorf("failed to get service providers: %w", err)
13167
}
132-
133-
logger.Infof("Checking out or creating branch %s", deploymentRepositoryBranch)
134-
135-
err = deploymentrepo.CheckoutAndCreateBranchIfNotExists(repo, deploymentRepositoryBranch, gitConfig)
68+
platformServices, err := cmd.Flags().GetStringArray(FlagPlatformService)
13669
if err != nil {
137-
return fmt.Errorf("failed to checkout or create branch %s: %w", deploymentRepositoryBranch, err)
70+
return fmt.Errorf("failed to get platform services: %w", err)
13871
}
139-
140-
logger.Infof("Applying templates from %s to deployment repository", templateResourceLocation)
141-
14272
imagePullSecrets, err := cmd.Flags().GetStringArray(FlagImagePullSecret)
14373
if err != nil {
144-
return fmt.Errorf("failed to get image pull secrets flag: %w", err)
145-
}
146-
147-
templateInput := make(map[string]interface{})
148-
openMCPOperatorCV, err := ocmGetter.GetReferencedComponentVersion(cmd.Context(), "openmcp-operator")
149-
if err == nil {
150-
logger.Infof("Found openmcp-operator component version: %s:%s", openMCPOperatorCV.Component.Name, openMCPOperatorCV.Component.Version)
151-
152-
imageResources := openMCPOperatorCV.GetResourcesByType(ocmcli.OCIImageResourceType)
153-
if len(imageResources) == 0 || imageResources[0].Access.ImageReference == nil {
154-
return fmt.Errorf("no image resource found for openmcp-operator component version %s:%s", openMCPOperatorCV.Component.Name, openMCPOperatorCV.Component.Version)
155-
}
156-
157-
templateInput["openmcpOperator"] = map[string]interface{}{
158-
"version": openMCPOperatorCV.Component.Version,
159-
"image": *imageResources[0].Access.ImageReference,
160-
"imagePullSecrets": imagePullSecrets,
161-
}
74+
return fmt.Errorf("failed to get image pull secrets: %w", err)
16275
}
16376

164-
err = deploymentrepo.TemplateDir(templateDir, templateInput, repo)
165-
if err != nil {
166-
return fmt.Errorf("failed to apply templates from directory %s: %w", templateDir, err)
167-
}
77+
deploymentRepoManager, err := deploymentrepo.NewDeploymentRepoManager(
78+
componentLocation,
79+
templateResourceLocation,
80+
deploymentRepository,
81+
deploymentRepositoryBranch,
82+
cmd.Flag(FlagGitConfig).Value.String(),
83+
).WithOcmConfig(cmd.Flag(FlagOcmConfig).Value.String()).
84+
WithClusterProviders(clusterProviders).
85+
WithServiceProviders(serviceProviders).
86+
WithPlatformServices(platformServices).
87+
WithImagePullSecrets(imagePullSecrets).Complete(cmd.Context())
16888

169-
clusterProviders, err := cmd.Flags().GetStringArray(FlagClusterProvider)
170-
if err != nil {
171-
return fmt.Errorf("failed to get cluster providers flag: %w", err)
172-
}
173-
174-
serviceProviders, err := cmd.Flags().GetStringArray(FlagServiceProvider)
175-
if err != nil {
176-
return fmt.Errorf("failed to get service providers flag: %w", err)
177-
}
89+
defer func() {
90+
deploymentRepoManager.Cleanup()
91+
}()
17892

179-
platformServices, err := cmd.Flags().GetStringArray(FlagPlatformService)
18093
if err != nil {
181-
return fmt.Errorf("failed to get platform services flag: %w", err)
94+
return fmt.Errorf("failed to initialize deployment repo manager: %w", err)
18295
}
18396

184-
logger.Infof("Templating providers: clusterProviders=%v, serviceProviders=%v, platformServices=%v, imagePullSecrets=%v", clusterProviders, serviceProviders, platformServices, imagePullSecrets)
185-
186-
err = deploymentrepo.TemplateProviders(cmd.Context(), clusterProviders, serviceProviders, platformServices, imagePullSecrets, ocmGetter, repo)
97+
err = deploymentRepoManager.ApplyTemplates(cmd.Context())
18798
if err != nil {
188-
return fmt.Errorf("failed to template providers: %w", err)
99+
return fmt.Errorf("failed to apply templates: %w", err)
189100
}
190101

191-
logger.Info("Committing and pushing changes to deployment repository")
192-
193-
err = deploymentrepo.CommitChanges(repo, "apply templates", "openmcp", "[email protected]")
102+
err = deploymentRepoManager.ApplyProviders(cmd.Context())
194103
if err != nil {
195-
return fmt.Errorf("failed to commit changes: %w", err)
104+
return fmt.Errorf("failed to apply providers: %w", err)
196105
}
197106

198-
err = deploymentrepo.PushRepo(repo, deploymentRepositoryBranch, gitConfig)
107+
err = deploymentRepoManager.CommitAndPushChanges(cmd.Context())
199108
if err != nil {
200-
return fmt.Errorf("failed to push changes to deployment repository: %w", err)
109+
return fmt.Errorf("failed to commit and push changes: %w", err)
201110
}
202111

203112
return nil

0 commit comments

Comments
 (0)