Skip to content

Commit

Permalink
Add platformProviders config to piped (#3814)
Browse files Browse the repository at this point in the history
* Add platformProviders config to piped

* Fix lint
  • Loading branch information
khanhtc1202 authored Jul 21, 2022
1 parent d712deb commit 9572cb7
Show file tree
Hide file tree
Showing 31 changed files with 123 additions and 120 deletions.
4 changes: 2 additions & 2 deletions pkg/app/piped/cloudprovider/cloudrun/cloudrun.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ type ListRevisionsOptions struct {
}

type Registry interface {
Client(ctx context.Context, name string, cfg *config.CloudProviderCloudRunConfig, logger *zap.Logger) (Client, error)
Client(ctx context.Context, name string, cfg *config.PlatformProviderCloudRunConfig, logger *zap.Logger) (Client, error)
}

func LoadServiceManifest(appDir, serviceFilename string) (ServiceManifest, error) {
Expand All @@ -101,7 +101,7 @@ type registry struct {
newGroup *singleflight.Group
}

func (r *registry) Client(ctx context.Context, name string, cfg *config.CloudProviderCloudRunConfig, logger *zap.Logger) (Client, error) {
func (r *registry) Client(ctx context.Context, name string, cfg *config.PlatformProviderCloudRunConfig, logger *zap.Logger) (Client, error) {
r.mu.RLock()
client, ok := r.clients[name]
r.mu.RUnlock()
Expand Down
4 changes: 2 additions & 2 deletions pkg/app/piped/cloudprovider/ecs/ecs.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ type ELB interface {

// Registry holds a pool of aws client wrappers.
type Registry interface {
Client(name string, cfg *config.CloudProviderECSConfig, logger *zap.Logger) (Client, error)
Client(name string, cfg *config.PlatformProviderECSConfig, logger *zap.Logger) (Client, error)
}

// LoadServiceDefinition returns ServiceDefinition object from a given service definition file.
Expand All @@ -76,7 +76,7 @@ type registry struct {
newGroup *singleflight.Group
}

func (r *registry) Client(name string, cfg *config.CloudProviderECSConfig, logger *zap.Logger) (Client, error) {
func (r *registry) Client(name string, cfg *config.PlatformProviderECSConfig, logger *zap.Logger) (Client, error) {
r.mu.RLock()
client, ok := r.clients[name]
r.mu.RUnlock()
Expand Down
4 changes: 2 additions & 2 deletions pkg/app/piped/cloudprovider/kubernetes/applier.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,15 @@ type Applier interface {

type applier struct {
input config.KubernetesDeploymentInput
cloudProvider config.CloudProviderKubernetesConfig
cloudProvider config.PlatformProviderKubernetesConfig
logger *zap.Logger

kubectl *Kubectl
initOnce sync.Once
initErr error
}

func NewApplier(input config.KubernetesDeploymentInput, cp config.CloudProviderKubernetesConfig, logger *zap.Logger) Applier {
func NewApplier(input config.KubernetesDeploymentInput, cp config.PlatformProviderKubernetesConfig, logger *zap.Logger) Applier {
return &applier{
input: input,
cloudProvider: cp,
Expand Down
4 changes: 2 additions & 2 deletions pkg/app/piped/cloudprovider/lambda/lambda.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ type Client interface {

// Registry holds a pool of aws client wrappers.
type Registry interface {
Client(name string, cfg *config.CloudProviderLambdaConfig, logger *zap.Logger) (Client, error)
Client(name string, cfg *config.PlatformProviderLambdaConfig, logger *zap.Logger) (Client, error)
}

// LoadFunctionManifest returns FunctionManifest object from a given Function config manifest file.
Expand All @@ -56,7 +56,7 @@ type registry struct {
newGroup *singleflight.Group
}

func (r *registry) Client(name string, cfg *config.CloudProviderLambdaConfig, logger *zap.Logger) (Client, error) {
func (r *registry) Client(name string, cfg *config.PlatformProviderLambdaConfig, logger *zap.Logger) (Client, error) {
r.mu.RLock()
client, ok := r.clients[name]
r.mu.RUnlock()
Expand Down
4 changes: 2 additions & 2 deletions pkg/app/piped/driftdetector/cloudrun/detector.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ type Detector interface {
}

type detector struct {
provider config.PipedCloudProvider
provider config.PipedPlatformProvider
appLister applicationLister
gitClient gitClient
stateGetter cloudrun.Getter
Expand All @@ -71,7 +71,7 @@ type detector struct {
}

func NewDetector(
cp config.PipedCloudProvider,
cp config.PipedPlatformProvider,
appLister applicationLister,
gitClient gitClient,
stateGetter cloudrun.Getter,
Expand Down
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.CloudProviderKubernetes:
case model.PlatformProviderKubernetes:
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.CloudProviderCloudRun:
case model.PlatformProviderCloudRun:
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/driftdetector/kubernetes/detector.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ type Detector interface {
}

type detector struct {
provider config.PipedCloudProvider
provider config.PipedPlatformProvider
appLister applicationLister
gitClient gitClient
stateGetter kubernetes.Getter
Expand All @@ -72,7 +72,7 @@ type detector struct {
}

func NewDetector(
cp config.PipedCloudProvider,
cp config.PipedPlatformProvider,
appLister applicationLister,
gitClient gitClient,
stateGetter kubernetes.Getter,
Expand Down
2 changes: 1 addition & 1 deletion pkg/app/piped/executor/cloudrun/cloudrun.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func loadServiceManifest(in *executor.Input, serviceManifestFile string, ds *dep
return sm, true
}

func findCloudProvider(in *executor.Input) (name string, cfg *config.CloudProviderCloudRunConfig, found bool) {
func findCloudProvider(in *executor.Input) (name string, cfg *config.PlatformProviderCloudRunConfig, found bool) {
name = in.Application.CloudProvider
if name == "" {
in.LogPersister.Error("Missing the CloudProvider name in the application configuration")
Expand Down
2 changes: 1 addition & 1 deletion pkg/app/piped/executor/ecs/deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ type deployExecutor struct {
deploySource *deploysource.DeploySource
appCfg *config.ECSApplicationSpec
cloudProviderName string
cloudProviderCfg *config.CloudProviderECSConfig
cloudProviderCfg *config.PlatformProviderECSConfig
}

func (e *deployExecutor) Execute(sig executor.StopSignal) model.StageStatus {
Expand Down
10 changes: 5 additions & 5 deletions pkg/app/piped/executor/ecs/ecs.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ func Register(r registerer) {
})
}

func findCloudProvider(in *executor.Input) (name string, cfg *config.CloudProviderECSConfig, found bool) {
func findCloudProvider(in *executor.Input) (name string, cfg *config.PlatformProviderECSConfig, found bool) {
name = in.Application.CloudProvider
if name == "" {
in.LogPersister.Errorf("Missing the CloudProvider name in the application configuration")
Expand Down Expand Up @@ -184,7 +184,7 @@ func createPrimaryTaskSet(ctx context.Context, client provider.Client, service t
return nil
}

func sync(ctx context.Context, in *executor.Input, cloudProviderName string, cloudProviderCfg *config.CloudProviderECSConfig, taskDefinition types.TaskDefinition, serviceDefinition types.Service, targetGroup types.LoadBalancer) bool {
func sync(ctx context.Context, in *executor.Input, cloudProviderName string, cloudProviderCfg *config.PlatformProviderECSConfig, taskDefinition types.TaskDefinition, serviceDefinition types.Service, targetGroup types.LoadBalancer) bool {
client, err := provider.DefaultRegistry().Client(cloudProviderName, cloudProviderCfg, in.Logger)
if err != nil {
in.LogPersister.Errorf("Unable to create ECS client for the provider %s: %v", cloudProviderName, err)
Expand Down Expand Up @@ -215,7 +215,7 @@ func sync(ctx context.Context, in *executor.Input, cloudProviderName string, clo
return true
}

func rollout(ctx context.Context, in *executor.Input, cloudProviderName string, cloudProviderCfg *config.CloudProviderECSConfig, taskDefinition types.TaskDefinition, serviceDefinition types.Service, targetGroup types.LoadBalancer) bool {
func rollout(ctx context.Context, in *executor.Input, cloudProviderName string, cloudProviderCfg *config.PlatformProviderECSConfig, taskDefinition types.TaskDefinition, serviceDefinition types.Service, targetGroup types.LoadBalancer) bool {
client, err := provider.DefaultRegistry().Client(cloudProviderName, cloudProviderCfg, in.Logger)
if err != nil {
in.LogPersister.Errorf("Unable to create ECS client for the provider %s: %v", cloudProviderName, err)
Expand Down Expand Up @@ -286,7 +286,7 @@ func rollout(ctx context.Context, in *executor.Input, cloudProviderName string,
return true
}

func clean(ctx context.Context, in *executor.Input, cloudProviderName string, cloudProviderCfg *config.CloudProviderECSConfig) bool {
func clean(ctx context.Context, in *executor.Input, cloudProviderName string, cloudProviderCfg *config.PlatformProviderECSConfig) bool {
client, err := provider.DefaultRegistry().Client(cloudProviderName, cloudProviderCfg, in.Logger)
if err != nil {
in.LogPersister.Errorf("Unable to create ECS client for the provider %s: %v", cloudProviderName, err)
Expand Down Expand Up @@ -317,7 +317,7 @@ func clean(ctx context.Context, in *executor.Input, cloudProviderName string, cl
return true
}

func routing(ctx context.Context, in *executor.Input, cloudProviderName string, cloudProviderCfg *config.CloudProviderECSConfig, primaryTargetGroup types.LoadBalancer, canaryTargetGroup types.LoadBalancer) bool {
func routing(ctx context.Context, in *executor.Input, cloudProviderName string, cloudProviderCfg *config.PlatformProviderECSConfig, primaryTargetGroup types.LoadBalancer, canaryTargetGroup types.LoadBalancer) bool {
client, err := provider.DefaultRegistry().Client(cloudProviderName, cloudProviderCfg, in.Logger)
if err != nil {
in.LogPersister.Errorf("Unable to create ECS client for the provider %s: %v", cloudProviderName, err)
Expand Down
2 changes: 1 addition & 1 deletion pkg/app/piped/executor/ecs/rollback.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ func (e *rollbackExecutor) ensureRollback(ctx context.Context) model.StageStatus
return model.StageStatus_STAGE_SUCCESS
}

func rollback(ctx context.Context, in *executor.Input, cloudProviderName string, cloudProviderCfg *config.CloudProviderECSConfig, taskDefinition types.TaskDefinition, serviceDefinition types.Service, targetGroup types.LoadBalancer) bool {
func rollback(ctx context.Context, in *executor.Input, cloudProviderName string, cloudProviderCfg *config.PlatformProviderECSConfig, taskDefinition types.TaskDefinition, serviceDefinition types.Service, targetGroup types.LoadBalancer) bool {
in.LogPersister.Infof("Start rollback the ECS service and task family: %s and %s to original stage", *serviceDefinition.ServiceName, *taskDefinition.Family)
client, err := provider.DefaultRegistry().Client(cloudProviderName, cloudProviderCfg, in.Logger)
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion pkg/app/piped/executor/lambda/deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ type deployExecutor struct {
deploySource *deploysource.DeploySource
appCfg *config.LambdaApplicationSpec
cloudProviderName string
cloudProviderCfg *config.CloudProviderLambdaConfig
cloudProviderCfg *config.PlatformProviderLambdaConfig
}

func (e *deployExecutor) Execute(sig executor.StopSignal) model.StageStatus {
Expand Down
8 changes: 4 additions & 4 deletions pkg/app/piped/executor/lambda/lambda.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ func Register(r registerer) {
})
}

func findCloudProvider(in *executor.Input) (name string, cfg *config.CloudProviderLambdaConfig, found bool) {
func findCloudProvider(in *executor.Input) (name string, cfg *config.PlatformProviderLambdaConfig, found bool) {
name = in.Application.CloudProvider
if name == "" {
in.LogPersister.Errorf("Missing the CloudProvider name in the application configuration")
Expand Down Expand Up @@ -86,7 +86,7 @@ func loadFunctionManifest(in *executor.Input, functionManifestFile string, ds *d
return fm, true
}

func sync(ctx context.Context, in *executor.Input, cloudProviderName string, cloudProviderCfg *config.CloudProviderLambdaConfig, fm provider.FunctionManifest) bool {
func sync(ctx context.Context, in *executor.Input, cloudProviderName string, cloudProviderCfg *config.PlatformProviderLambdaConfig, fm provider.FunctionManifest) bool {
in.LogPersister.Infof("Start applying the lambda function manifest")
client, err := provider.DefaultRegistry().Client(cloudProviderName, cloudProviderCfg, in.Logger)
if err != nil {
Expand Down Expand Up @@ -144,7 +144,7 @@ func sync(ctx context.Context, in *executor.Input, cloudProviderName string, clo
return true
}

func rollout(ctx context.Context, in *executor.Input, cloudProviderName string, cloudProviderCfg *config.CloudProviderLambdaConfig, fm provider.FunctionManifest) bool {
func rollout(ctx context.Context, in *executor.Input, cloudProviderName string, cloudProviderCfg *config.PlatformProviderLambdaConfig, fm provider.FunctionManifest) bool {
in.LogPersister.Infof("Start rolling out the lambda function: %s", fm.Spec.Name)
client, err := provider.DefaultRegistry().Client(cloudProviderName, cloudProviderCfg, in.Logger)
if err != nil {
Expand Down Expand Up @@ -184,7 +184,7 @@ func rollout(ctx context.Context, in *executor.Input, cloudProviderName string,
return true
}

func promote(ctx context.Context, in *executor.Input, cloudProviderName string, cloudProviderCfg *config.CloudProviderLambdaConfig, fm provider.FunctionManifest) bool {
func promote(ctx context.Context, in *executor.Input, cloudProviderName string, cloudProviderCfg *config.PlatformProviderLambdaConfig, fm provider.FunctionManifest) bool {
in.LogPersister.Infof("Start promote new version of the lambda function: %s", fm.Spec.Name)
client, err := provider.DefaultRegistry().Client(cloudProviderName, cloudProviderCfg, in.Logger)
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion pkg/app/piped/executor/lambda/rollback.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ func (e *rollbackExecutor) ensureRollback(ctx context.Context) model.StageStatus
return model.StageStatus_STAGE_SUCCESS
}

func rollback(ctx context.Context, in *executor.Input, cloudProviderName string, cloudProviderCfg *config.CloudProviderLambdaConfig, fm provider.FunctionManifest) bool {
func rollback(ctx context.Context, in *executor.Input, cloudProviderName string, cloudProviderCfg *config.PlatformProviderLambdaConfig, fm provider.FunctionManifest) bool {
in.LogPersister.Infof("Start rollback the lambda function: %s to original stage", fm.Spec.Name)
client, err := provider.DefaultRegistry().Client(cloudProviderName, cloudProviderCfg, in.Logger)
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion pkg/app/piped/executor/terraform/deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ type deployExecutor struct {
}

func (e *deployExecutor) Execute(sig executor.StopSignal) model.StageStatus {
_, cloudProviderCfg, found := findCloudProvider(&e.Input)
cloudProviderCfg, found := findCloudProvider(&e.Input)
if !found {
return model.StageStatus_STAGE_FAILURE
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/app/piped/executor/terraform/rollback.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ func (e *rollbackExecutor) ensureRollback(ctx context.Context) model.StageStatus
return model.StageStatus_STAGE_FAILURE
}

_, cloudProviderCfg, found := findCloudProvider(&e.Input)
cloudProviderCfg, found := findCloudProvider(&e.Input)
if !found {
return model.StageStatus_STAGE_FAILURE
}
Expand Down
4 changes: 2 additions & 2 deletions pkg/app/piped/executor/terraform/terraform.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@ func findTerraform(ctx context.Context, version string, lp executor.LogPersister
return path, true
}

func findCloudProvider(in *executor.Input) (name string, cfg *config.CloudProviderTerraformConfig, found bool) {
name = in.Application.CloudProvider
func findCloudProvider(in *executor.Input) (cfg *config.PlatformProviderTerraformConfig, found bool) {
var name = in.Application.CloudProvider
if name == "" {
in.LogPersister.Error("Missing the CloudProvider name in the application configuration")
return
Expand Down
4 changes: 2 additions & 2 deletions pkg/app/piped/livestatereporter/cloudrun/report.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ type Reporter interface {
}

type reporter struct {
provider config.PipedCloudProvider
provider config.PipedPlatformProvider
appLister applicationLister
stateGetter cloudrun.Getter
apiClient apiClient
Expand All @@ -53,7 +53,7 @@ type reporter struct {
snapshotVersions map[string]model.ApplicationLiveStateVersion
}

func NewReporter(cp config.PipedCloudProvider, appLister applicationLister, stateGetter cloudrun.Getter, apiClient apiClient, logger *zap.Logger) Reporter {
func NewReporter(cp config.PipedPlatformProvider, appLister applicationLister, stateGetter cloudrun.Getter, apiClient apiClient, logger *zap.Logger) Reporter {
logger = logger.Named("cloudrun-reporter").With(
zap.String("cloud-provider", cp.Name),
)
Expand Down
4 changes: 2 additions & 2 deletions pkg/app/piped/livestatereporter/kubernetes/reporter.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ type Reporter interface {
}

type reporter struct {
provider config.PipedCloudProvider
provider config.PipedPlatformProvider
appLister applicationLister
stateGetter kubernetes.Getter
eventIterator kubernetes.EventIterator
Expand All @@ -59,7 +59,7 @@ type reporter struct {
snapshotVersions map[string]model.ApplicationLiveStateVersion
}

func NewReporter(cp config.PipedCloudProvider, appLister applicationLister, stateGetter kubernetes.Getter, apiClient apiClient, logger *zap.Logger) Reporter {
func NewReporter(cp config.PipedPlatformProvider, appLister applicationLister, stateGetter kubernetes.Getter, apiClient apiClient, logger *zap.Logger) Reporter {
logger = logger.Named("kubernetes-reporter").With(
zap.String("cloud-provider", 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.CloudProviderKubernetes:
case model.PlatformProviderKubernetes:
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.PlatformProviderCloudRun:
sg, ok := stateGetter.CloudRunGetter(cp.Name)
if !ok {
r.logger.Error(errFmt)
Expand Down
2 changes: 1 addition & 1 deletion pkg/app/piped/livestatestore/cloudrun/cloudrun.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ type State struct {
Version model.ApplicationLiveStateVersion
}

func NewStore(ctx context.Context, cfg *config.CloudProviderCloudRunConfig, cloudProvider string, logger *zap.Logger) (*Store, error) {
func NewStore(ctx context.Context, cfg *config.PlatformProviderCloudRunConfig, cloudProvider string, logger *zap.Logger) (*Store, error) {
logger = logger.Named("cloudrun").
With(zap.String("cloud-provider", cloudProvider))

Expand Down
2 changes: 1 addition & 1 deletion pkg/app/piped/livestatestore/ecs/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ type Store struct {
type Getter interface {
}

func NewStore(cfg *config.CloudProviderECSConfig, cloudProvider string, appLister applicationLister, logger *zap.Logger) *Store {
func NewStore(cfg *config.PlatformProviderECSConfig, cloudProvider string, appLister applicationLister, logger *zap.Logger) *Store {
logger = logger.Named("ecs").
With(zap.String("cloud-provider", cloudProvider))

Expand Down
4 changes: 2 additions & 2 deletions pkg/app/piped/livestatestore/kubernetes/kubernetes.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ import (
)

type Store struct {
config *config.CloudProviderKubernetesConfig
config *config.PlatformProviderKubernetesConfig
pipedConfig *config.PipedSpec
kubeConfig *restclient.Config
store *store
Expand Down Expand Up @@ -64,7 +64,7 @@ func (it EventIterator) Next(maxNum int) []model.KubernetesResourceStateEvent {
return it.store.nextEvents(it.id, maxNum)
}

func NewStore(cfg *config.CloudProviderKubernetesConfig, pipedConfig *config.PipedSpec, cloudProvider string, logger *zap.Logger) *Store {
func NewStore(cfg *config.PlatformProviderKubernetesConfig, pipedConfig *config.PipedSpec, cloudProvider string, logger *zap.Logger) *Store {
logger = logger.Named("kubernetes").
With(zap.String("cloud-provider", cloudProvider))

Expand Down
2 changes: 1 addition & 1 deletion pkg/app/piped/livestatestore/kubernetes/reflector.go
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ var (
// reflector watches the live state of application with the cluster
// and triggers the specified callbacks.
type reflector struct {
config *config.CloudProviderKubernetesConfig
config *config.PlatformProviderKubernetesConfig
kubeConfig *restclient.Config
pipedConfig *config.PipedSpec

Expand Down
2 changes: 1 addition & 1 deletion pkg/app/piped/livestatestore/lambda/store.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ type Store struct {
type Getter interface {
}

func NewStore(cfg *config.CloudProviderLambdaConfig, cloudProvider string, appLister applicationLister, logger *zap.Logger) *Store {
func NewStore(cfg *config.PlatformProviderLambdaConfig, cloudProvider string, appLister applicationLister, logger *zap.Logger) *Store {
logger = logger.Named("lambda").
With(zap.String("cloud-provider", cloudProvider))

Expand Down
Loading

0 comments on commit 9572cb7

Please sign in to comment.