Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions pkg/app/piped/driftdetector/detector.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ func NewDetector(

for _, cp := range cfg.CloudProviders {
switch cp.Type {
case model.ApplicationKind_KUBERNETES:
case model.CloudProviderKubernetes:
sg, ok := stateGetter.KubernetesGetter(cp.Name)
if !ok {
return nil, fmt.Errorf(format, cp.Name)
Expand All @@ -113,7 +113,7 @@ func NewDetector(
logger,
))

case model.ApplicationKind_CLOUDRUN:
case model.CloudProviderCloudRun:
sg, ok := stateGetter.CloudRunGetter(cp.Name)
if !ok {
return nil, fmt.Errorf(format, cp.Name)
Expand Down
4 changes: 2 additions & 2 deletions pkg/app/piped/livestatereporter/reporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.ApplicationKind_KUBERNETES:
case model.CloudProviderKubernetes:
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.ApplicationKind_CLOUDRUN:
case model.CloudProviderCloudRun:
sg, ok := stateGetter.CloudRunGetter(cp.Name)
if !ok {
r.logger.Error(errFmt)
Expand Down
10 changes: 5 additions & 5 deletions pkg/app/piped/livestatestore/livestatestore.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,27 +105,27 @@ func NewStore(ctx context.Context, cfg *config.PipedSpec, appLister applicationL
}
for _, cp := range cfg.CloudProviders {
switch cp.Type {
case model.ApplicationKind_KUBERNETES:
case model.CloudProviderKubernetes:
store := kubernetes.NewStore(cp.KubernetesConfig, cfg, cp.Name, logger)
s.kubernetesStores[cp.Name] = store

case model.ApplicationKind_TERRAFORM:
case model.CloudProviderTerraform:
store := terraform.NewStore(cp.TerraformConfig, cp.Name, appLister, logger)
s.terraformStores[cp.Name] = store

case model.ApplicationKind_CLOUDRUN:
case model.CloudProviderCloudRun:
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))
continue
}
s.cloudrunStores[cp.Name] = store

case model.ApplicationKind_LAMBDA:
case model.CloudProviderLambda:
store := lambda.NewStore(cp.LambdaConfig, cp.Name, appLister, logger)
s.lambdaStores[cp.Name] = store

case model.ApplicationKind_ECS:
case model.CloudProviderECS:
store := ecs.NewStore(cp.ECSConfig, cp.Name, appLister, logger)
s.ecsStores[cp.Name] = store
}
Expand Down
30 changes: 16 additions & 14 deletions pkg/config/piped.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ const (

var defaultKubernetesCloudProvider = PipedCloudProvider{
Name: "kubernetes-default",
Type: model.ApplicationKind_KUBERNETES,
Type: model.CloudProviderKubernetes,
KubernetesConfig: &CloudProviderKubernetesConfig{},
}

Expand Down Expand Up @@ -180,11 +180,12 @@ func (s *PipedSpec) EnableDefaultKubernetesCloudProvider() {

// 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 != t {
if cp.Type != requiredProviderType {
continue
}
return true
Expand All @@ -194,11 +195,12 @@ func (s *PipedSpec) HasCloudProvider(name string, t model.ApplicationKind) bool

// FindCloudProvider finds and returns a Cloud Provider by name and type.
func (s *PipedSpec) FindCloudProvider(name string, t model.ApplicationKind) (PipedCloudProvider, bool) {
requiredProviderType := t.CompatibleCloudProviderType()
for _, p := range s.CloudProviders {
if p.Name != name {
continue
}
if p.Type != t {
if p.Type != requiredProviderType {
continue
}
return p, true
Expand Down Expand Up @@ -450,8 +452,8 @@ func (r *HelmChartRegistry) Mask() {
}

type PipedCloudProvider struct {
Name string `json:"name,omitempty"`
Type model.ApplicationKind `json:"type,string,omitempty"`
Name string `json:"name"`
Type model.CloudProviderType `json:"type"`

KubernetesConfig *CloudProviderKubernetesConfig `json:"kubernetesConfig,omitempty"`
TerraformConfig *CloudProviderTerraformConfig `json:"terraformConfig,omitempty"`
Expand All @@ -461,9 +463,9 @@ type PipedCloudProvider struct {
}

type genericPipedCloudProvider struct {
Name string `json:"name"`
Type string `json:"type"`
Config json.RawMessage `json:"config"`
Name string `json:"name"`
Type model.CloudProviderType `json:"type"`
Config json.RawMessage `json:"config"`
}

func (p *PipedCloudProvider) UnmarshalJSON(data []byte) error {
Expand All @@ -473,30 +475,30 @@ func (p *PipedCloudProvider) UnmarshalJSON(data []byte) error {
return err
}
p.Name = gp.Name
p.Type = model.ApplicationKind(model.ApplicationKind_value[gp.Type])
p.Type = gp.Type

switch p.Type {
case model.ApplicationKind_KUBERNETES:
case model.CloudProviderKubernetes:
p.KubernetesConfig = &CloudProviderKubernetesConfig{}
if len(gp.Config) > 0 {
err = json.Unmarshal(gp.Config, p.KubernetesConfig)
}
case model.ApplicationKind_TERRAFORM:
case model.CloudProviderTerraform:
p.TerraformConfig = &CloudProviderTerraformConfig{}
if len(gp.Config) > 0 {
err = json.Unmarshal(gp.Config, p.TerraformConfig)
}
case model.ApplicationKind_CLOUDRUN:
case model.CloudProviderCloudRun:
p.CloudRunConfig = &CloudProviderCloudRunConfig{}
if len(gp.Config) > 0 {
err = json.Unmarshal(gp.Config, p.CloudRunConfig)
}
case model.ApplicationKind_LAMBDA:
case model.CloudProviderLambda:
p.LambdaConfig = &CloudProviderLambdaConfig{}
if len(gp.Config) > 0 {
err = json.Unmarshal(gp.Config, p.LambdaConfig)
}
case model.ApplicationKind_ECS:
case model.CloudProviderECS:
p.ECSConfig = &CloudProviderECSConfig{}
if len(gp.Config) > 0 {
err = json.Unmarshal(gp.Config, p.ECSConfig)
Expand Down
58 changes: 7 additions & 51 deletions pkg/config/piped_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ func TestPipedConfig(t *testing.T) {
CloudProviders: []PipedCloudProvider{
{
Name: "kubernetes-default",
Type: model.ApplicationKind_KUBERNETES,
Type: model.CloudProviderKubernetes,
KubernetesConfig: &CloudProviderKubernetesConfig{
AppStateInformer: KubernetesAppStateInformer{
IncludeResources: []KubernetesResourceMatcher{
Expand All @@ -110,12 +110,12 @@ func TestPipedConfig(t *testing.T) {
},
{
Name: "kubernetes-dev",
Type: model.ApplicationKind_KUBERNETES,
Type: model.CloudProviderKubernetes,
KubernetesConfig: &CloudProviderKubernetesConfig{},
},
{
Name: "terraform",
Type: model.ApplicationKind_TERRAFORM,
Type: model.CloudProviderTerraform,
TerraformConfig: &CloudProviderTerraformConfig{
Vars: []string{
"project=gcp-project",
Expand All @@ -125,7 +125,7 @@ func TestPipedConfig(t *testing.T) {
},
{
Name: "cloudrun",
Type: model.ApplicationKind_CLOUDRUN,
Type: model.CloudProviderCloudRun,
CloudRunConfig: &CloudProviderCloudRunConfig{
Project: "gcp-project-id",
Region: "cloud-run-region",
Expand All @@ -134,7 +134,7 @@ func TestPipedConfig(t *testing.T) {
},
{
Name: "lambda",
Type: model.ApplicationKind_LAMBDA,
Type: model.CloudProviderLambda,
LambdaConfig: &CloudProviderLambdaConfig{
Region: "us-east-1",
},
Expand Down Expand Up @@ -431,7 +431,7 @@ func TestPipedConfigMask(t *testing.T) {
CloudProviders: []PipedCloudProvider{
{
Name: "foo",
Type: 1,
Type: model.CloudProviderKubernetes,
KubernetesConfig: &CloudProviderKubernetesConfig{
MasterURL: "foo",
KubeConfigPath: "foo",
Expand All @@ -451,28 +451,6 @@ func TestPipedConfigMask(t *testing.T) {
},
},
},
TerraformConfig: &CloudProviderTerraformConfig{
Vars: []string{"foo"},
},
CloudRunConfig: &CloudProviderCloudRunConfig{
Project: "foo",
Region: "foo",
CredentialsFile: "foo",
},
LambdaConfig: &CloudProviderLambdaConfig{
Region: "foo",
CredentialsFile: "foo",
RoleARN: "foo",
TokenFile: "foo",
Profile: "foo",
},
ECSConfig: &CloudProviderECSConfig{
Region: "foo",
CredentialsFile: "foo",
RoleARN: "foo",
TokenFile: "foo",
Profile: "foo",
},
},
},
AnalysisProviders: []PipedAnalysisProvider{
Expand Down Expand Up @@ -604,7 +582,7 @@ func TestPipedConfigMask(t *testing.T) {
CloudProviders: []PipedCloudProvider{
{
Name: "foo",
Type: 1,
Type: model.CloudProviderKubernetes,
KubernetesConfig: &CloudProviderKubernetesConfig{
MasterURL: "foo",
KubeConfigPath: "foo",
Expand All @@ -624,28 +602,6 @@ func TestPipedConfigMask(t *testing.T) {
},
},
},
TerraformConfig: &CloudProviderTerraformConfig{
Vars: []string{"foo"},
},
CloudRunConfig: &CloudProviderCloudRunConfig{
Project: "foo",
Region: "foo",
CredentialsFile: maskString,
},
LambdaConfig: &CloudProviderLambdaConfig{
Region: "foo",
CredentialsFile: maskString,
RoleARN: maskString,
TokenFile: maskString,
Profile: "foo",
},
ECSConfig: &CloudProviderECSConfig{
Region: "foo",
CredentialsFile: maskString,
RoleARN: maskString,
TokenFile: maskString,
Profile: "foo",
},
},
},
AnalysisProviders: []PipedAnalysisProvider{
Expand Down
17 changes: 17 additions & 0 deletions pkg/model/application.go
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,23 @@ func (a *Application) SetUpdatedAt(t int64) {
a.UpdatedAt = t
}

func (k *ApplicationKind) CompatibleCloudProviderType() CloudProviderType {
switch *k {
case ApplicationKind_KUBERNETES:
return CloudProviderKubernetes
case ApplicationKind_TERRAFORM:
return CloudProviderTerraform
case ApplicationKind_LAMBDA:
return CloudProviderLambda
case ApplicationKind_CLOUDRUN:
return CloudProviderCloudRun
case ApplicationKind_ECS:
return CloudProviderECS
default:
return CloudProviderKubernetes
}
}

func IsApplicationConfigFile(filename string) bool {
return filename == DefaultApplicationConfigFilename || strings.HasSuffix(filename, applicationConfigFileExtention) || filename == oldDefaultApplicationConfigFilename
}
29 changes: 29 additions & 0 deletions pkg/model/cloudprovider.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
// Copyright 2022 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"
CloudProviderLambda CloudProviderType = "LAMBDA"
CloudProviderCloudRun CloudProviderType = "CLOUDRUN"
CloudProviderECS CloudProviderType = "ECS"
)

func (t CloudProviderType) String() string {
return string(t)
}