diff --git a/pkg/app/piped/cmd/piped/piped.go b/pkg/app/piped/cmd/piped/piped.go index 124d5adae0..585afb9671 100644 --- a/pkg/app/piped/cmd/piped/piped.go +++ b/pkg/app/piped/cmd/piped/piped.go @@ -116,7 +116,7 @@ func NewCommand() *cobra.Command { cmd.Flags().IntVar(&p.adminPort, "admin-port", p.adminPort, "The port number used to run a HTTP server for admin tasks such as metrics, healthz.") cmd.Flags().StringVar(&p.toolsDir, "tools-dir", p.toolsDir, "The path to directory where to install needed tools such as kubectl, helm, kustomize.") - cmd.Flags().BoolVar(&p.enableDefaultKubernetesCloudProvider, "enable-default-kubernetes-cloud-provider", p.enableDefaultKubernetesCloudProvider, "Whether the default kubernetes provider is enabled or not.") + cmd.Flags().BoolVar(&p.enableDefaultKubernetesCloudProvider, "enable-default-kubernetes-cloud-provider", p.enableDefaultKubernetesCloudProvider, "Whether the default kubernetes provider is enabled or not. This feature is deprecated.") cmd.Flags().BoolVar(&p.addLoginUserToPasswd, "add-login-user-to-passwd", p.addLoginUserToPasswd, "Whether to add login user to $HOME/passwd. This is typically for applications running as a random user ID.") cmd.Flags().DurationVar(&p.gracePeriod, "grace-period", p.gracePeriod, "How long to wait for graceful shutdown.") @@ -542,7 +542,7 @@ func (p *piped) loadConfig(ctx context.Context) (*config.PipedSpec, error) { return nil, fmt.Errorf("wrong configuration kind for piped: %v", cfg.Kind) } if p.enableDefaultKubernetesCloudProvider { - cfg.PipedSpec.EnableDefaultKubernetesCloudProvider() + cfg.PipedSpec.EnableDefaultKubernetesPlatformProvider() } return cfg.PipedSpec, nil } @@ -638,17 +638,17 @@ func (p *piped) sendPipedMeta(ctx context.Context, client pipedservice.Client, c var ( req = &pipedservice.ReportPipedMetaRequest{ - Version: version.Get().Version, - Config: string(maskedCfg), - Repositories: repos, - CloudProviders: make([]*model.Piped_CloudProvider, 0, len(cfg.CloudProviders)), + Version: version.Get().Version, + Config: string(maskedCfg), + Repositories: repos, + PlatformProviders: make([]*model.Piped_PlatformProvider, 0, len(cfg.PlatformProviders)), } retry = pipedservice.NewRetry(5) ) - // Configure the list of specified cloud providers. - for _, cp := range cfg.CloudProviders { - req.CloudProviders = append(req.CloudProviders, &model.Piped_CloudProvider{ + // Configure the list of specified platform providers. + for _, cp := range cfg.PlatformProviders { + req.PlatformProviders = append(req.PlatformProviders, &model.Piped_PlatformProvider{ Name: cp.Name, Type: cp.Type.String(), }) diff --git a/pkg/app/piped/controller/scheduler.go b/pkg/app/piped/controller/scheduler.go index 98a04c8e8f..42f7a6945d 100644 --- a/pkg/app/piped/controller/scheduler.go +++ b/pkg/app/piped/controller/scheduler.go @@ -434,8 +434,8 @@ func (s *scheduler) executeStage(sig executor.StopSignal, ps model.PipelineStage } // Check the existence of the specified cloud provider. - if !s.pipedConfig.HasCloudProvider(s.deployment.CloudProvider, s.deployment.Kind) { - lp.Errorf("This piped is not having the specified cloud provider in this deployment: %v", s.deployment.CloudProvider) + if !s.pipedConfig.HasPlatformProvider(s.deployment.PlatformProvider, s.deployment.Kind) { + lp.Errorf("This piped is not having the specified platform provider in this deployment: %v", s.deployment.PlatformProvider) if err := s.reportStageStatus(ctx, ps.Id, model.StageStatus_STAGE_FAILURE, ps.Requires); err != nil { s.logger.Error("failed to report stage status", zap.Error(err)) } diff --git a/pkg/app/piped/driftdetector/detector.go b/pkg/app/piped/driftdetector/detector.go index 4738aab8d9..c20b8b5ffb 100644 --- a/pkg/app/piped/driftdetector/detector.go +++ b/pkg/app/piped/driftdetector/detector.go @@ -87,14 +87,14 @@ func NewDetector( d := &detector{ apiClient: apiClient, - detectors: make([]providerDetector, 0, len(cfg.CloudProviders)), + detectors: make([]providerDetector, 0, len(cfg.PlatformProviders)), syncStates: make(map[string]model.ApplicationSyncState), logger: logger.Named("drift-detector"), } - const format = "unable to find live state getter for cloud provider: %s" + const format = "unable to find live state getter for platform provider: %s" - for _, cp := range cfg.CloudProviders { + for _, cp := range cfg.PlatformProviders { switch cp.Type { case model.PlatformProviderKubernetes: sg, ok := stateGetter.KubernetesGetter(cp.Name) diff --git a/pkg/app/piped/executor/cloudrun/cloudrun.go b/pkg/app/piped/executor/cloudrun/cloudrun.go index a665c5317c..9be0030c7f 100644 --- a/pkg/app/piped/executor/cloudrun/cloudrun.go +++ b/pkg/app/piped/executor/cloudrun/cloudrun.go @@ -58,16 +58,16 @@ func loadServiceManifest(in *executor.Input, serviceManifestFile string, ds *dep return sm, true } -func findCloudProvider(in *executor.Input) (name string, cfg *config.PlatformProviderCloudRunConfig, found bool) { - name = in.Application.CloudProvider +func findPlatformProvider(in *executor.Input) (name string, cfg *config.PlatformProviderCloudRunConfig, found bool) { + name = in.Application.PlatformProvider if name == "" { - in.LogPersister.Error("Missing the CloudProvider name in the application configuration") + in.LogPersister.Error("Missing the PlatformProvider name in the application configuration") return } - cp, ok := in.PipedConfig.FindCloudProvider(name, model.ApplicationKind_CLOUDRUN) + cp, ok := in.PipedConfig.FindPlatformProvider(name, model.ApplicationKind_CLOUDRUN) if !ok { - in.LogPersister.Errorf("The specified cloud provider %q was not found in piped configuration", name) + in.LogPersister.Errorf("The specified platform provider %q was not found in piped configuration", name) return } diff --git a/pkg/app/piped/executor/cloudrun/deploy.go b/pkg/app/piped/executor/cloudrun/deploy.go index 146a81b965..5b81b6bf7d 100644 --- a/pkg/app/piped/executor/cloudrun/deploy.go +++ b/pkg/app/piped/executor/cloudrun/deploy.go @@ -52,7 +52,7 @@ func (e *deployExecutor) Execute(sig executor.StopSignal) model.StageStatus { return model.StageStatus_STAGE_FAILURE } - cpName, cpCfg, found := findCloudProvider(&e.Input) + cpName, cpCfg, found := findPlatformProvider(&e.Input) if !found { return model.StageStatus_STAGE_FAILURE } diff --git a/pkg/app/piped/executor/cloudrun/rollback.go b/pkg/app/piped/executor/cloudrun/rollback.go index 892e232fa7..9a5facf6ce 100644 --- a/pkg/app/piped/executor/cloudrun/rollback.go +++ b/pkg/app/piped/executor/cloudrun/rollback.go @@ -34,7 +34,7 @@ func (e *rollbackExecutor) Execute(sig executor.StopSignal) model.StageStatus { status model.StageStatus ) - cpName, cpCfg, found := findCloudProvider(&e.Input) + cpName, cpCfg, found := findPlatformProvider(&e.Input) if !found { return model.StageStatus_STAGE_FAILURE } diff --git a/pkg/app/piped/executor/ecs/deploy.go b/pkg/app/piped/executor/ecs/deploy.go index 4933d67a74..289fe3b386 100644 --- a/pkg/app/piped/executor/ecs/deploy.go +++ b/pkg/app/piped/executor/ecs/deploy.go @@ -48,7 +48,7 @@ func (e *deployExecutor) Execute(sig executor.StopSignal) model.StageStatus { } var found bool - e.cloudProviderName, e.cloudProviderCfg, found = findCloudProvider(&e.Input) + e.cloudProviderName, e.cloudProviderCfg, found = findPlatformProvider(&e.Input) if !found { return model.StageStatus_STAGE_FAILURE } diff --git a/pkg/app/piped/executor/ecs/ecs.go b/pkg/app/piped/executor/ecs/ecs.go index 71dd6187de..cb553b3198 100644 --- a/pkg/app/piped/executor/ecs/ecs.go +++ b/pkg/app/piped/executor/ecs/ecs.go @@ -66,16 +66,16 @@ func Register(r registerer) { }) } -func findCloudProvider(in *executor.Input) (name string, cfg *config.PlatformProviderECSConfig, found bool) { - name = in.Application.CloudProvider +func findPlatformProvider(in *executor.Input) (name string, cfg *config.PlatformProviderECSConfig, found bool) { + name = in.Application.PlatformProvider if name == "" { - in.LogPersister.Errorf("Missing the CloudProvider name in the application configuration") + in.LogPersister.Errorf("Missing the PlatformProvider name in the application configuration") return } - cp, ok := in.PipedConfig.FindCloudProvider(name, model.ApplicationKind_ECS) + cp, ok := in.PipedConfig.FindPlatformProvider(name, model.ApplicationKind_ECS) if !ok { - in.LogPersister.Errorf("The specified cloud provider %q was not found in piped configuration", name) + in.LogPersister.Errorf("The specified platform provider %q was not found in piped configuration", name) return } diff --git a/pkg/app/piped/executor/ecs/rollback.go b/pkg/app/piped/executor/ecs/rollback.go index 302ec18abf..b6aa9135c6 100644 --- a/pkg/app/piped/executor/ecs/rollback.go +++ b/pkg/app/piped/executor/ecs/rollback.go @@ -68,7 +68,7 @@ func (e *rollbackExecutor) ensureRollback(ctx context.Context) model.StageStatus return model.StageStatus_STAGE_FAILURE } - cloudProviderName, cloudProviderCfg, found := findCloudProvider(&e.Input) + cloudProviderName, cloudProviderCfg, found := findPlatformProvider(&e.Input) if !found { return model.StageStatus_STAGE_FAILURE } diff --git a/pkg/app/piped/executor/kubernetes/applier_group.go b/pkg/app/piped/executor/kubernetes/applier_group.go index 3441cb7e16..5fcb7f4d43 100644 --- a/pkg/app/piped/executor/kubernetes/applier_group.go +++ b/pkg/app/piped/executor/kubernetes/applier_group.go @@ -35,7 +35,7 @@ type applierGroup struct { } func newApplierGroup(defaultProvider string, appCfg config.KubernetesApplicationSpec, pipedCfg *config.PipedSpec, logger *zap.Logger) (*applierGroup, error) { - cp, ok := pipedCfg.FindCloudProvider(defaultProvider, model.ApplicationKind_KUBERNETES) + cp, ok := pipedCfg.FindPlatformProvider(defaultProvider, model.ApplicationKind_KUBERNETES) if !ok { return nil, fmt.Errorf("provider %s was not found", defaultProvider) } @@ -56,7 +56,7 @@ func newApplierGroup(defaultProvider string, appCfg config.KubernetesApplication continue } - cp, ok := pipedCfg.FindCloudProvider(r.Provider, model.ApplicationKind_KUBERNETES) + cp, ok := pipedCfg.FindPlatformProvider(r.Provider, model.ApplicationKind_KUBERNETES) if !ok { return nil, fmt.Errorf("provider %s specified in resourceRoutes was not found", r.Provider) } diff --git a/pkg/app/piped/executor/kubernetes/kubernetes.go b/pkg/app/piped/executor/kubernetes/kubernetes.go index 5a48a13b37..89a7b58d35 100644 --- a/pkg/app/piped/executor/kubernetes/kubernetes.go +++ b/pkg/app/piped/executor/kubernetes/kubernetes.go @@ -94,7 +94,7 @@ func (e *deployExecutor) Execute(sig executor.StopSignal) model.StageStatus { } } - e.applierGetter, err = newApplierGroup(e.Deployment.CloudProvider, *e.appCfg, e.PipedConfig, e.Logger) + e.applierGetter, err = newApplierGroup(e.Deployment.PlatformProvider, *e.appCfg, e.PipedConfig, e.Logger) if err != nil { e.LogPersister.Error(err.Error()) return model.StageStatus_STAGE_FAILURE diff --git a/pkg/app/piped/executor/kubernetes/rollback.go b/pkg/app/piped/executor/kubernetes/rollback.go index 5a1e76676c..46726942c6 100644 --- a/pkg/app/piped/executor/kubernetes/rollback.go +++ b/pkg/app/piped/executor/kubernetes/rollback.go @@ -135,7 +135,7 @@ func (e *rollbackExecutor) ensureRollback(ctx context.Context) model.StageStatus return model.StageStatus_STAGE_FAILURE } - ag, err := newApplierGroup(e.Deployment.CloudProvider, *appCfg, e.PipedConfig, e.Logger) + ag, err := newApplierGroup(e.Deployment.PlatformProvider, *appCfg, e.PipedConfig, e.Logger) if err != nil { e.LogPersister.Error(err.Error()) return model.StageStatus_STAGE_FAILURE diff --git a/pkg/app/piped/executor/lambda/deploy.go b/pkg/app/piped/executor/lambda/deploy.go index 92413230a6..16cf7efa3a 100644 --- a/pkg/app/piped/executor/lambda/deploy.go +++ b/pkg/app/piped/executor/lambda/deploy.go @@ -53,7 +53,7 @@ func (e *deployExecutor) Execute(sig executor.StopSignal) model.StageStatus { } var found bool - e.cloudProviderName, e.cloudProviderCfg, found = findCloudProvider(&e.Input) + e.cloudProviderName, e.cloudProviderCfg, found = findPlatformProvider(&e.Input) if !found { return model.StageStatus_STAGE_FAILURE } diff --git a/pkg/app/piped/executor/lambda/lambda.go b/pkg/app/piped/executor/lambda/lambda.go index 4d5110ed6c..040e0c7898 100644 --- a/pkg/app/piped/executor/lambda/lambda.go +++ b/pkg/app/piped/executor/lambda/lambda.go @@ -55,16 +55,16 @@ func Register(r registerer) { }) } -func findCloudProvider(in *executor.Input) (name string, cfg *config.PlatformProviderLambdaConfig, found bool) { - name = in.Application.CloudProvider +func findPlatformProvider(in *executor.Input) (name string, cfg *config.PlatformProviderLambdaConfig, found bool) { + name = in.Application.PlatformProvider if name == "" { - in.LogPersister.Errorf("Missing the CloudProvider name in the application configuration") + in.LogPersister.Errorf("Missing the PlatformProvider name in the application configuration") return } - cp, ok := in.PipedConfig.FindCloudProvider(name, model.ApplicationKind_LAMBDA) + cp, ok := in.PipedConfig.FindPlatformProvider(name, model.ApplicationKind_LAMBDA) if !ok { - in.LogPersister.Errorf("The specified cloud provider %q was not found in piped configuration", name) + in.LogPersister.Errorf("The specified platform provider %q was not found in piped configuration", name) return } diff --git a/pkg/app/piped/executor/lambda/rollback.go b/pkg/app/piped/executor/lambda/rollback.go index 69594754f6..ce3a3e6844 100644 --- a/pkg/app/piped/executor/lambda/rollback.go +++ b/pkg/app/piped/executor/lambda/rollback.go @@ -65,7 +65,7 @@ func (e *rollbackExecutor) ensureRollback(ctx context.Context) model.StageStatus return model.StageStatus_STAGE_FAILURE } - cloudProviderName, cloudProviderCfg, found := findCloudProvider(&e.Input) + cloudProviderName, cloudProviderCfg, found := findPlatformProvider(&e.Input) if !found { return model.StageStatus_STAGE_FAILURE } diff --git a/pkg/app/piped/executor/terraform/deploy.go b/pkg/app/piped/executor/terraform/deploy.go index c09546f397..dccdc419a2 100644 --- a/pkg/app/piped/executor/terraform/deploy.go +++ b/pkg/app/piped/executor/terraform/deploy.go @@ -34,7 +34,7 @@ type deployExecutor struct { } func (e *deployExecutor) Execute(sig executor.StopSignal) model.StageStatus { - cloudProviderCfg, found := findCloudProvider(&e.Input) + providerCfg, found := findPlatformProvider(&e.Input) if !found { return model.StageStatus_STAGE_FAILURE } @@ -55,8 +55,8 @@ func (e *deployExecutor) Execute(sig executor.StopSignal) model.StageStatus { e.repoDir = ds.RepoDir e.appDir = ds.AppDir - e.vars = make([]string, 0, len(cloudProviderCfg.Vars)+len(e.appCfg.Input.Vars)) - e.vars = append(e.vars, cloudProviderCfg.Vars...) + e.vars = make([]string, 0, len(providerCfg.Vars)+len(e.appCfg.Input.Vars)) + e.vars = append(e.vars, providerCfg.Vars...) e.vars = append(e.vars, e.appCfg.Input.Vars...) var ( diff --git a/pkg/app/piped/executor/terraform/rollback.go b/pkg/app/piped/executor/terraform/rollback.go index ec33b7359e..2634279d3a 100644 --- a/pkg/app/piped/executor/terraform/rollback.go +++ b/pkg/app/piped/executor/terraform/rollback.go @@ -52,7 +52,7 @@ func (e *rollbackExecutor) ensureRollback(ctx context.Context) model.StageStatus return model.StageStatus_STAGE_FAILURE } - cloudProviderCfg, found := findCloudProvider(&e.Input) + providerCfg, found := findPlatformProvider(&e.Input) if !found { return model.StageStatus_STAGE_FAILURE } @@ -74,8 +74,8 @@ func (e *rollbackExecutor) ensureRollback(ctx context.Context) model.StageStatus return model.StageStatus_STAGE_FAILURE } - vars := make([]string, 0, len(cloudProviderCfg.Vars)+len(appCfg.Input.Vars)) - vars = append(vars, cloudProviderCfg.Vars...) + vars := make([]string, 0, len(providerCfg.Vars)+len(appCfg.Input.Vars)) + vars = append(vars, providerCfg.Vars...) vars = append(vars, appCfg.Input.Vars...) e.LogPersister.Infof("Start rolling back to the state defined at commit %s", e.Deployment.RunningCommitHash) diff --git a/pkg/app/piped/executor/terraform/terraform.go b/pkg/app/piped/executor/terraform/terraform.go index 881fbe9c06..d5ab201ecc 100644 --- a/pkg/app/piped/executor/terraform/terraform.go +++ b/pkg/app/piped/executor/terraform/terraform.go @@ -80,16 +80,16 @@ func findTerraform(ctx context.Context, version string, lp executor.LogPersister return path, true } -func findCloudProvider(in *executor.Input) (cfg *config.PlatformProviderTerraformConfig, found bool) { - var name = in.Application.CloudProvider +func findPlatformProvider(in *executor.Input) (cfg *config.PlatformProviderTerraformConfig, found bool) { + var name = in.Application.PlatformProvider if name == "" { - in.LogPersister.Error("Missing the CloudProvider name in the application configuration") + in.LogPersister.Error("Missing the PlatformProvider name in the application configuration") return } - cp, ok := in.PipedConfig.FindCloudProvider(name, model.ApplicationKind_TERRAFORM) + cp, ok := in.PipedConfig.FindPlatformProvider(name, model.ApplicationKind_TERRAFORM) if !ok { - in.LogPersister.Errorf("The specified cloud provider %q was not found in piped configuration", name) + in.LogPersister.Errorf("The specified platform provider %q was not found in piped configuration", name) return } diff --git a/pkg/app/piped/livestatereporter/reporter.go b/pkg/app/piped/livestatereporter/reporter.go index 64c91c73fd..7d0df6c6a3 100644 --- a/pkg/app/piped/livestatereporter/reporter.go +++ b/pkg/app/piped/livestatereporter/reporter.go @@ -58,24 +58,24 @@ type providerReporter interface { func NewReporter(appLister applicationLister, stateGetter livestatestore.Getter, apiClient apiClient, cfg *config.PipedSpec, logger *zap.Logger) Reporter { r := &reporter{ - reporters: make([]providerReporter, 0, len(cfg.CloudProviders)), + reporters: make([]providerReporter, 0, len(cfg.PlatformProviders)), logger: logger.Named("live-state-reporter"), } - for _, cp := range cfg.CloudProviders { - errFmt := fmt.Sprintf("unable to find live state getter for cloud provider: %s", cp.Name) + const errFmt = "unable to find live state getter for platform provider: %s" + for _, cp := range cfg.PlatformProviders { switch cp.Type { case model.PlatformProviderKubernetes: sg, ok := stateGetter.KubernetesGetter(cp.Name) if !ok { - r.logger.Error(errFmt) + r.logger.Error(fmt.Sprintf(errFmt, cp.Name)) continue } r.reporters = append(r.reporters, kubernetes.NewReporter(cp, appLister, sg, apiClient, logger)) case model.PlatformProviderCloudRun: sg, ok := stateGetter.CloudRunGetter(cp.Name) if !ok { - r.logger.Error(errFmt) + r.logger.Error(fmt.Sprintf(errFmt, cp.Name)) continue } r.reporters = append(r.reporters, cloudrun.NewReporter(cp, appLister, sg, apiClient, logger)) diff --git a/pkg/app/piped/livestatestore/livestatestore.go b/pkg/app/piped/livestatestore/livestatestore.go index 9e4f3487b8..3b0f257768 100644 --- a/pkg/app/piped/livestatestore/livestatestore.go +++ b/pkg/app/piped/livestatestore/livestatestore.go @@ -103,7 +103,7 @@ func NewStore(ctx context.Context, cfg *config.PipedSpec, appLister applicationL gracePeriod: gracePeriod, logger: logger, } - for _, cp := range cfg.CloudProviders { + for _, cp := range cfg.PlatformProviders { switch cp.Type { case model.PlatformProviderKubernetes: store := kubernetes.NewStore(cp.KubernetesConfig, cfg, cp.Name, logger) diff --git a/pkg/app/piped/planpreview/terraformdiff.go b/pkg/app/piped/planpreview/terraformdiff.go index c440e7f33d..d76ce3622c 100644 --- a/pkg/app/piped/planpreview/terraformdiff.go +++ b/pkg/app/piped/planpreview/terraformdiff.go @@ -33,9 +33,9 @@ func (b *builder) terraformDiff( buf *bytes.Buffer, ) (*diffResult, error) { - cp, ok := b.pipedCfg.FindCloudProvider(app.CloudProvider, model.ApplicationKind_TERRAFORM) + cp, ok := b.pipedCfg.FindPlatformProvider(app.PlatformProvider, model.ApplicationKind_TERRAFORM) if !ok { - err := fmt.Errorf("cloud provider %s was not found in Piped config", app.CloudProvider) + err := fmt.Errorf("platform provider %s was not found in Piped config", app.PlatformProvider) fmt.Fprintln(buf, err.Error()) return nil, err } diff --git a/pkg/app/server/grpcapi/piped_api.go b/pkg/app/server/grpcapi/piped_api.go index 0aace83cde..3391202735 100644 --- a/pkg/app/server/grpcapi/piped_api.go +++ b/pkg/app/server/grpcapi/piped_api.go @@ -69,7 +69,7 @@ type pipedApiDeploymentChainStore interface { type pipedApiPipedStore interface { Get(ctx context.Context, id string) (*model.Piped, error) - UpdateMetadata(ctx context.Context, id, version, config string, cps []*model.Piped_CloudProvider, repos []*model.ApplicationGitRepository, se *model.Piped_SecretEncryption, startedAt int64) error + UpdateMetadata(ctx context.Context, id, version, config string, pps []*model.Piped_PlatformProvider, repos []*model.ApplicationGitRepository, se *model.Piped_SecretEncryption, startedAt int64) error } type pipedApiEventStore interface { @@ -170,13 +170,22 @@ func (a *PipedAPI) ReportPipedMeta(ctx context.Context, req *pipedservice.Report return nil, err } + platformProviders := make([]*model.Piped_PlatformProvider, 0, len(req.CloudProviders)+len(req.PlatformProviders)) + for _, cp := range req.CloudProviders { + platformProviders = append(platformProviders, &model.Piped_PlatformProvider{ + Name: cp.Name, + Type: cp.Type, + }) + } + platformProviders = append(platformProviders, req.PlatformProviders...) + now := time.Now().Unix() if err = a.pipedStore.UpdateMetadata( ctx, pipedID, req.Version, req.Config, - req.CloudProviders, + platformProviders, req.Repositories, req.SecretEncryption, now, diff --git a/pkg/config/piped.go b/pkg/config/piped.go index 54077f35ff..c7ddb340c5 100644 --- a/pkg/config/piped.go +++ b/pkg/config/piped.go @@ -82,6 +82,23 @@ type PipedSpec struct { AppSelector map[string]string `json:"appSelector,omitempty"` } +func (s *PipedSpec) UnmarshalJSON(data []byte) error { + type Alias PipedSpec + ps := &struct { + *Alias + }{ + Alias: (*Alias)(s), + } + if err := json.Unmarshal(data, &ps); err != nil { + return err + } + + // Add all CloudProviders configuration as PlatformProviders configuration. + s.PlatformProviders = append(s.PlatformProviders, ps.CloudProviders...) + s.CloudProviders = nil + return nil +} + // Validate validates configured data of all fields. func (s *PipedSpec) Validate() error { if s.ProjectID == "" { @@ -159,7 +176,7 @@ func (s *PipedSpec) Mask() { for i := 0; i < len(s.ChartRegistries); i++ { s.ChartRegistries[i].Mask() } - for _, p := range s.CloudProviders { + for _, p := range s.PlatformProviders { p.Mask() } for _, p := range s.AnalysisProviders { @@ -171,35 +188,26 @@ func (s *PipedSpec) Mask() { } } -// EnableDefaultKubernetesCloudProvider adds the default kubernetes cloud provider if it was not specified. -func (s *PipedSpec) EnableDefaultKubernetesCloudProvider() { - for _, cp := range s.CloudProviders { +// EnableDefaultKubernetesPlatformProvider adds the default kubernetes cloud provider if it was not specified. +func (s *PipedSpec) EnableDefaultKubernetesPlatformProvider() { + for _, cp := range s.PlatformProviders { if cp.Name == defaultKubernetesPlatformProvider.Name { return } } - s.CloudProviders = append(s.CloudProviders, defaultKubernetesPlatformProvider) + s.PlatformProviders = append(s.PlatformProviders, defaultKubernetesPlatformProvider) } -// HasCloudProvider checks whether the given provider is configured or not. -func (s *PipedSpec) HasCloudProvider(name string, t model.ApplicationKind) bool { - requiredProviderType := t.CompatibleCloudProviderType() - for _, cp := range s.CloudProviders { - if cp.Name != name { - continue - } - if cp.Type != requiredProviderType { - continue - } - return true - } - return false +// HasPlatformProvider checks whether the given provider is configured or not. +func (s *PipedSpec) HasPlatformProvider(name string, t model.ApplicationKind) bool { + _, contains := s.FindPlatformProvider(name, t) + return contains } -// FindCloudProvider finds and returns a Cloud Provider by name and type. -func (s *PipedSpec) FindCloudProvider(name string, t model.ApplicationKind) (PipedPlatformProvider, bool) { - requiredProviderType := t.CompatibleCloudProviderType() - for _, p := range s.CloudProviders { +// FindPlatformProvider finds and returns a Platform Provider by name and type. +func (s *PipedSpec) FindPlatformProvider(name string, t model.ApplicationKind) (PipedPlatformProvider, bool) { + requiredProviderType := t.CompatiblePlatformProviderType() + for _, p := range s.PlatformProviders { if p.Name != name { continue } diff --git a/pkg/config/piped_test.go b/pkg/config/piped_test.go index 6ac9eb6252..a5b66d2f00 100644 --- a/pkg/config/piped_test.go +++ b/pkg/config/piped_test.go @@ -84,7 +84,7 @@ func TestPipedConfig(t *testing.T) { Password: "sample-password", }, }, - CloudProviders: []PipedPlatformProvider{ + PlatformProviders: []PipedPlatformProvider{ { Name: "kubernetes-default", Type: model.PlatformProviderKubernetes, @@ -428,7 +428,7 @@ func TestPipedConfigMask(t *testing.T) { Password: "foo", }, }, - CloudProviders: []PipedPlatformProvider{ + PlatformProviders: []PipedPlatformProvider{ { Name: "foo", Type: model.PlatformProviderKubernetes, @@ -579,7 +579,7 @@ func TestPipedConfigMask(t *testing.T) { Password: maskString, }, }, - CloudProviders: []PipedPlatformProvider{ + PlatformProviders: []PipedPlatformProvider{ { Name: "foo", Type: model.PlatformProviderKubernetes, diff --git a/pkg/datastore/datastoretest/datastore.mock.go b/pkg/datastore/datastoretest/datastore.mock.go index f4e2958983..4a20b5febe 100644 --- a/pkg/datastore/datastoretest/datastore.mock.go +++ b/pkg/datastore/datastoretest/datastore.mock.go @@ -403,7 +403,7 @@ func (mr *MockPipedStoreMockRecorder) UpdateInfo(arg0, arg1, arg2, arg3 interfac } // UpdateMetadata mocks base method. -func (m *MockPipedStore) UpdateMetadata(arg0 context.Context, arg1, arg2, arg3 string, arg4 []*model.Piped_CloudProvider, arg5 []*model.ApplicationGitRepository, arg6 *model.Piped_SecretEncryption, arg7 int64) error { +func (m *MockPipedStore) UpdateMetadata(arg0 context.Context, arg1, arg2, arg3 string, arg4 []*model.Piped_PlatformProvider, arg5 []*model.ApplicationGitRepository, arg6 *model.Piped_SecretEncryption, arg7 int64) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "UpdateMetadata", arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) ret0, _ := ret[0].(error) diff --git a/pkg/datastore/pipedstore.go b/pkg/datastore/pipedstore.go index dd142a5304..2e651e46e0 100644 --- a/pkg/datastore/pipedstore.go +++ b/pkg/datastore/pipedstore.go @@ -115,7 +115,7 @@ type PipedStore interface { EnablePiped(ctx context.Context, id string) error DisablePiped(ctx context.Context, id string) error UpdateDesiredVersion(ctx context.Context, id, version string) error - UpdateMetadata(ctx context.Context, id, version, config string, cps []*model.Piped_CloudProvider, repos []*model.ApplicationGitRepository, se *model.Piped_SecretEncryption, startedAt int64) error + UpdateMetadata(ctx context.Context, id, version, config string, pps []*model.Piped_PlatformProvider, repos []*model.ApplicationGitRepository, se *model.Piped_SecretEncryption, startedAt int64) error AddKey(ctx context.Context, id, keyHash, creator string, createdAt time.Time) error DeleteOldKeys(ctx context.Context, id string) error } @@ -222,9 +222,9 @@ func (s *pipedStore) UpdateDesiredVersion(ctx context.Context, id, version strin }) } -func (s *pipedStore) UpdateMetadata(ctx context.Context, id, version, config string, cps []*model.Piped_CloudProvider, repos []*model.ApplicationGitRepository, se *model.Piped_SecretEncryption, startedAt int64) error { +func (s *pipedStore) UpdateMetadata(ctx context.Context, id, version, config string, pps []*model.Piped_PlatformProvider, repos []*model.ApplicationGitRepository, se *model.Piped_SecretEncryption, startedAt int64) error { return s.update(ctx, id, func(piped *model.Piped) error { - piped.CloudProviders = cps + piped.PlatformProviders = pps piped.Repositories = repos piped.SecretEncryption = se piped.Version = version diff --git a/pkg/model/application.go b/pkg/model/application.go index 2b4c8f235a..d6448b144f 100644 --- a/pkg/model/application.go +++ b/pkg/model/application.go @@ -89,7 +89,7 @@ func (a *Application) SetUpdatedAt(t int64) { a.UpdatedAt = t } -func (k *ApplicationKind) CompatibleCloudProviderType() PlatformProviderType { +func (k *ApplicationKind) CompatiblePlatformProviderType() PlatformProviderType { switch *k { case ApplicationKind_KUBERNETES: return PlatformProviderKubernetes