diff --git a/pkg/app/piped/cloudprovider/lambda/BUILD.bazel b/pkg/app/piped/cloudprovider/lambda/BUILD.bazel index 886e104372..9c35e42146 100644 --- a/pkg/app/piped/cloudprovider/lambda/BUILD.bazel +++ b/pkg/app/piped/cloudprovider/lambda/BUILD.bazel @@ -35,6 +35,7 @@ go_test( ], embed = [":go_default_library"], deps = [ + "//pkg/model:go_default_library", "@com_github_stretchr_testify//assert:go_default_library", ], ) diff --git a/pkg/app/piped/controller/scheduler.go b/pkg/app/piped/controller/scheduler.go index 32e4e77fb1..1a7ba4fa0f 100644 --- a/pkg/app/piped/controller/scheduler.go +++ b/pkg/app/piped/controller/scheduler.go @@ -434,7 +434,7 @@ 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.CloudProviderType()) { + 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 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 1fd204ccae..01d5f7aae5 100644 --- a/pkg/app/piped/driftdetector/detector.go +++ b/pkg/app/piped/driftdetector/detector.go @@ -96,7 +96,7 @@ func NewDetector( for _, cp := range cfg.CloudProviders { switch cp.Type { - case model.CloudProviderKubernetes: + case model.ApplicationKind_KUBERNETES: sg, ok := stateGetter.KubernetesGetter(cp.Name) if !ok { return nil, fmt.Errorf(format, cp.Name) @@ -113,7 +113,7 @@ func NewDetector( logger, )) - case model.CloudProviderCloudRun: + case model.ApplicationKind_CLOUDRUN: sg, ok := stateGetter.CloudRunGetter(cp.Name) if !ok { return nil, fmt.Errorf(format, cp.Name) diff --git a/pkg/app/piped/executor/cloudrun/cloudrun.go b/pkg/app/piped/executor/cloudrun/cloudrun.go index ba1cc06d1a..5c279685e1 100644 --- a/pkg/app/piped/executor/cloudrun/cloudrun.go +++ b/pkg/app/piped/executor/cloudrun/cloudrun.go @@ -65,7 +65,7 @@ func findCloudProvider(in *executor.Input) (name string, cfg *config.CloudProvid return } - cp, ok := in.PipedConfig.FindCloudProvider(name, model.CloudProviderCloudRun) + cp, ok := in.PipedConfig.FindCloudProvider(name, model.ApplicationKind_CLOUDRUN) if !ok { in.LogPersister.Errorf("The specified cloud provider %q was not found in piped configuration", name) return diff --git a/pkg/app/piped/executor/ecs/ecs.go b/pkg/app/piped/executor/ecs/ecs.go index 29ad75c008..e742cc6159 100644 --- a/pkg/app/piped/executor/ecs/ecs.go +++ b/pkg/app/piped/executor/ecs/ecs.go @@ -73,7 +73,7 @@ func findCloudProvider(in *executor.Input) (name string, cfg *config.CloudProvid return } - cp, ok := in.PipedConfig.FindCloudProvider(name, model.CloudProviderECS) + cp, ok := in.PipedConfig.FindCloudProvider(name, model.ApplicationKind_ECS) if !ok { in.LogPersister.Errorf("The specified cloud provider %q was not found in piped configuration", name) return diff --git a/pkg/app/piped/executor/lambda/lambda.go b/pkg/app/piped/executor/lambda/lambda.go index 96c64a363c..2dc1e3fba3 100644 --- a/pkg/app/piped/executor/lambda/lambda.go +++ b/pkg/app/piped/executor/lambda/lambda.go @@ -62,7 +62,7 @@ func findCloudProvider(in *executor.Input) (name string, cfg *config.CloudProvid return } - cp, ok := in.PipedConfig.FindCloudProvider(name, model.CloudProviderLambda) + cp, ok := in.PipedConfig.FindCloudProvider(name, model.ApplicationKind_LAMBDA) if !ok { in.LogPersister.Errorf("The specified cloud provider %q was not found in piped configuration", name) return diff --git a/pkg/app/piped/executor/terraform/terraform.go b/pkg/app/piped/executor/terraform/terraform.go index ae2d80ebd4..b6aa914a9e 100644 --- a/pkg/app/piped/executor/terraform/terraform.go +++ b/pkg/app/piped/executor/terraform/terraform.go @@ -87,7 +87,7 @@ func findCloudProvider(in *executor.Input) (name string, cfg *config.CloudProvid return } - cp, ok := in.PipedConfig.FindCloudProvider(name, model.CloudProviderTerraform) + cp, ok := in.PipedConfig.FindCloudProvider(name, model.ApplicationKind_TERRAFORM) if !ok { in.LogPersister.Errorf("The specified cloud 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 bbb33c548f..cbac723a65 100644 --- a/pkg/app/piped/livestatereporter/reporter.go +++ b/pkg/app/piped/livestatereporter/reporter.go @@ -65,14 +65,14 @@ func NewReporter(appLister applicationLister, stateGetter livestatestore.Getter, for _, cp := range cfg.CloudProviders { errFmt := fmt.Sprintf("unable to find live state getter for cloud provider: %s", cp.Name) switch cp.Type { - case model.CloudProviderKubernetes: + case model.ApplicationKind_KUBERNETES: sg, ok := stateGetter.KubernetesGetter(cp.Name) if !ok { r.logger.Error(errFmt) continue } r.reporters = append(r.reporters, kubernetes.NewReporter(cp, appLister, sg, apiClient, logger)) - case model.CloudProviderCloudRun: + case model.ApplicationKind_CLOUDRUN: sg, ok := stateGetter.CloudRunGetter(cp.Name) if !ok { r.logger.Error(errFmt) diff --git a/pkg/app/piped/livestatestore/livestatestore.go b/pkg/app/piped/livestatestore/livestatestore.go index 14bc2089e1..faf27b222c 100644 --- a/pkg/app/piped/livestatestore/livestatestore.go +++ b/pkg/app/piped/livestatestore/livestatestore.go @@ -105,15 +105,15 @@ func NewStore(ctx context.Context, cfg *config.PipedSpec, appLister applicationL } for _, cp := range cfg.CloudProviders { switch cp.Type { - case model.CloudProviderKubernetes: + case model.ApplicationKind_KUBERNETES: store := kubernetes.NewStore(cp.KubernetesConfig, cfg, cp.Name, logger) s.kubernetesStores[cp.Name] = store - case model.CloudProviderTerraform: + case model.ApplicationKind_TERRAFORM: store := terraform.NewStore(cp.TerraformConfig, cp.Name, appLister, logger) s.terraformStores[cp.Name] = store - case model.CloudProviderCloudRun: + case model.ApplicationKind_CLOUDRUN: store, err := cloudrun.NewStore(ctx, cp.CloudRunConfig, cp.Name, logger) if err != nil { logger.Error("failed to create a new cloudrun's livestatestore", zap.Error(err)) @@ -121,11 +121,11 @@ func NewStore(ctx context.Context, cfg *config.PipedSpec, appLister applicationL } s.cloudrunStores[cp.Name] = store - case model.CloudProviderLambda: + case model.ApplicationKind_LAMBDA: store := lambda.NewStore(cp.LambdaConfig, cp.Name, appLister, logger) s.lambdaStores[cp.Name] = store - case model.CloudProviderECS: + case model.ApplicationKind_ECS: store := ecs.NewStore(cp.ECSConfig, cp.Name, appLister, logger) s.ecsStores[cp.Name] = store } diff --git a/pkg/app/piped/planpreview/terraformdiff.go b/pkg/app/piped/planpreview/terraformdiff.go index f83d6599a6..c440e7f33d 100644 --- a/pkg/app/piped/planpreview/terraformdiff.go +++ b/pkg/app/piped/planpreview/terraformdiff.go @@ -33,7 +33,7 @@ func (b *builder) terraformDiff( buf *bytes.Buffer, ) (*diffResult, error) { - cp, ok := b.pipedCfg.FindCloudProvider(app.CloudProvider, model.CloudProviderTerraform) + cp, ok := b.pipedCfg.FindCloudProvider(app.CloudProvider, model.ApplicationKind_TERRAFORM) if !ok { err := fmt.Errorf("cloud provider %s was not found in Piped config", app.CloudProvider) fmt.Fprintln(buf, err.Error()) diff --git a/pkg/config/piped.go b/pkg/config/piped.go index de189ea209..8d51dd8d10 100644 --- a/pkg/config/piped.go +++ b/pkg/config/piped.go @@ -24,9 +24,9 @@ import ( "github.com/pipe-cd/pipecd/pkg/model" ) -var DefaultKubernetesCloudProvider = PipedCloudProvider{ +var defaultKubernetesCloudProvider = PipedCloudProvider{ Name: "kubernetes-default", - Type: model.CloudProviderKubernetes, + Type: model.ApplicationKind_KUBERNETES, KubernetesConfig: &CloudProviderKubernetesConfig{}, } @@ -116,15 +116,15 @@ func (s *PipedSpec) Validate() error { // EnableDefaultKubernetesCloudProvider adds the default kubernetes cloud provider if it was not specified. func (s *PipedSpec) EnableDefaultKubernetesCloudProvider() { for _, cp := range s.CloudProviders { - if cp.Name == DefaultKubernetesCloudProvider.Name { + if cp.Name == defaultKubernetesCloudProvider.Name { return } } - s.CloudProviders = append(s.CloudProviders, DefaultKubernetesCloudProvider) + s.CloudProviders = append(s.CloudProviders, defaultKubernetesCloudProvider) } // HasCloudProvider checks whether the given provider is configured or not. -func (s *PipedSpec) HasCloudProvider(name string, t model.CloudProviderType) bool { +func (s *PipedSpec) HasCloudProvider(name string, t model.ApplicationKind) bool { for _, cp := range s.CloudProviders { if cp.Name != name { continue @@ -138,7 +138,7 @@ func (s *PipedSpec) HasCloudProvider(name string, t model.CloudProviderType) boo } // FindCloudProvider finds and returns a Cloud Provider by name and type. -func (s *PipedSpec) FindCloudProvider(name string, t model.CloudProviderType) (PipedCloudProvider, bool) { +func (s *PipedSpec) FindCloudProvider(name string, t model.ApplicationKind) (PipedCloudProvider, bool) { for _, p := range s.CloudProviders { if p.Name != name { continue @@ -335,7 +335,7 @@ func (s *PipedSpec) GitHelmChartRepositories() []HelmChartRepository { type PipedCloudProvider struct { Name string - Type model.CloudProviderType + Type model.ApplicationKind KubernetesConfig *CloudProviderKubernetesConfig TerraformConfig *CloudProviderTerraformConfig @@ -345,9 +345,9 @@ type PipedCloudProvider struct { } type genericPipedCloudProvider struct { - Name string `json:"name"` - Type model.CloudProviderType `json:"type"` - Config json.RawMessage `json:"config"` + Name string `json:"name"` + Type string `json:"type"` + Config json.RawMessage `json:"config"` } func (p *PipedCloudProvider) UnmarshalJSON(data []byte) error { @@ -357,30 +357,30 @@ func (p *PipedCloudProvider) UnmarshalJSON(data []byte) error { return err } p.Name = gp.Name - p.Type = gp.Type + p.Type = model.ApplicationKind(model.ApplicationKind_value[gp.Type]) switch p.Type { - case model.CloudProviderKubernetes: + case model.ApplicationKind_KUBERNETES: p.KubernetesConfig = &CloudProviderKubernetesConfig{} if len(gp.Config) > 0 { err = json.Unmarshal(gp.Config, p.KubernetesConfig) } - case model.CloudProviderTerraform: + case model.ApplicationKind_TERRAFORM: p.TerraformConfig = &CloudProviderTerraformConfig{} if len(gp.Config) > 0 { err = json.Unmarshal(gp.Config, p.TerraformConfig) } - case model.CloudProviderCloudRun: + case model.ApplicationKind_CLOUDRUN: p.CloudRunConfig = &CloudProviderCloudRunConfig{} if len(gp.Config) > 0 { err = json.Unmarshal(gp.Config, p.CloudRunConfig) } - case model.CloudProviderLambda: + case model.ApplicationKind_LAMBDA: p.LambdaConfig = &CloudProviderLambdaConfig{} if len(gp.Config) > 0 { err = json.Unmarshal(gp.Config, p.LambdaConfig) } - case model.CloudProviderECS: + case model.ApplicationKind_ECS: p.ECSConfig = &CloudProviderECSConfig{} if len(gp.Config) > 0 { err = json.Unmarshal(gp.Config, p.ECSConfig) diff --git a/pkg/config/piped_test.go b/pkg/config/piped_test.go index fb4f77bc62..c462c60044 100644 --- a/pkg/config/piped_test.go +++ b/pkg/config/piped_test.go @@ -79,7 +79,7 @@ func TestPipedConfig(t *testing.T) { CloudProviders: []PipedCloudProvider{ { Name: "kubernetes-default", - Type: model.CloudProviderKubernetes, + Type: model.ApplicationKind_KUBERNETES, KubernetesConfig: &CloudProviderKubernetesConfig{ AppStateInformer: KubernetesAppStateInformer{ IncludeResources: []KubernetesResourceMatcher{ @@ -102,12 +102,12 @@ func TestPipedConfig(t *testing.T) { }, { Name: "kubernetes-dev", - Type: model.CloudProviderKubernetes, + Type: model.ApplicationKind_KUBERNETES, KubernetesConfig: &CloudProviderKubernetesConfig{}, }, { Name: "terraform", - Type: model.CloudProviderTerraform, + Type: model.ApplicationKind_TERRAFORM, TerraformConfig: &CloudProviderTerraformConfig{ Vars: []string{ "project=gcp-project", @@ -117,7 +117,7 @@ func TestPipedConfig(t *testing.T) { }, { Name: "cloudrun", - Type: model.CloudProviderCloudRun, + Type: model.ApplicationKind_CLOUDRUN, CloudRunConfig: &CloudProviderCloudRunConfig{ Project: "gcp-project-id", Region: "cloud-run-region", @@ -126,7 +126,7 @@ func TestPipedConfig(t *testing.T) { }, { Name: "lambda", - Type: model.CloudProviderLambda, + Type: model.ApplicationKind_LAMBDA, LambdaConfig: &CloudProviderLambdaConfig{ Region: "us-east-1", }, diff --git a/pkg/model/BUILD.bazel b/pkg/model/BUILD.bazel index 73142aa61a..456fa90d0e 100644 --- a/pkg/model/BUILD.bazel +++ b/pkg/model/BUILD.bazel @@ -15,7 +15,6 @@ go_library( "application_live_state.go", "application_live_state.pb.go", "application_live_state.pb.validate.go", - "cloudprovider.go", "command.go", "command.pb.go", "command.pb.validate.go", diff --git a/pkg/model/cloudprovider.go b/pkg/model/cloudprovider.go deleted file mode 100644 index fae4f8008f..0000000000 --- a/pkg/model/cloudprovider.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2020 The PipeCD Authors. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package model - -type CloudProviderType string - -const ( - CloudProviderKubernetes CloudProviderType = "KUBERNETES" - CloudProviderTerraform CloudProviderType = "TERRAFORM" - CloudProviderCloudRun CloudProviderType = "CLOUDRUN" - CloudProviderLambda CloudProviderType = "LAMBDA" - CloudProviderECS CloudProviderType = "ECS" -) - -func (t CloudProviderType) String() string { - return string(t) -} diff --git a/pkg/model/deployment.go b/pkg/model/deployment.go index da086093b6..3761bdfa59 100644 --- a/pkg/model/deployment.go +++ b/pkg/model/deployment.go @@ -152,24 +152,6 @@ func (d *Deployment) TriggerBefore(other *Deployment) bool { } -// CloudProviderType determines the cloud provider type from application kind. -func (d *Deployment) CloudProviderType() CloudProviderType { - switch d.Kind { - case ApplicationKind_KUBERNETES: - return CloudProviderKubernetes - case ApplicationKind_TERRAFORM: - return CloudProviderTerraform - case ApplicationKind_CLOUDRUN: - return CloudProviderCloudRun - case ApplicationKind_LAMBDA: - return CloudProviderLambda - case ApplicationKind_ECS: - return CloudProviderECS - default: - return CloudProviderType(d.Kind.String()) - } -} - // FindRollbackStage finds the rollback stage in stage list. func (d *Deployment) FindRollbackStage() (*PipelineStage, bool) { for i := len(d.Stages) - 1; i >= 0; i-- {