diff --git a/cluster-autoscaler/cloudprovider/builder/cloud_provider_builder.go b/cluster-autoscaler/cloudprovider/builder/cloud_provider_builder.go index 64ab968022..56cb6c4ecb 100644 --- a/cluster-autoscaler/cloudprovider/builder/cloud_provider_builder.go +++ b/cluster-autoscaler/cloudprovider/builder/cloud_provider_builder.go @@ -61,7 +61,7 @@ func NewCloudProvider(opts config.AutoscalingOptions) cloudprovider.CloudProvide switch opts.CloudProviderName { case gce.ProviderNameGCE: - return buildGCE(opts, do, rl) + return gce.BuildGCE(opts, do, rl) case gke.ProviderNameGKE: return gke.BuildGKE(opts, do, rl) case aws.ProviderName: @@ -81,29 +81,6 @@ func NewCloudProvider(opts config.AutoscalingOptions) cloudprovider.CloudProvide return nil // This will never happen because the Fatalf will os.Exit } -func buildGCE(opts config.AutoscalingOptions, do cloudprovider.NodeGroupDiscoveryOptions, rl *cloudprovider.ResourceLimiter) cloudprovider.CloudProvider { - var config io.ReadCloser - if opts.CloudConfig != "" { - var err error - config, err = os.Open(opts.CloudConfig) - if err != nil { - glog.Fatalf("Couldn't open cloud provider configuration %s: %#v", opts.CloudConfig, err) - } - defer config.Close() - } - - manager, err := gce.CreateGceManager(config, do, opts.Regional) - if err != nil { - glog.Fatalf("Failed to create GCE Manager: %v", err) - } - - provider, err := gce.BuildGceCloudProvider(manager, rl) - if err != nil { - glog.Fatalf("Failed to create GCE cloud provider: %v", err) - } - return provider -} - func buildAWS(opts config.AutoscalingOptions, do cloudprovider.NodeGroupDiscoveryOptions, rl *cloudprovider.ResourceLimiter) cloudprovider.CloudProvider { var config io.ReadCloser if opts.CloudConfig != "" { diff --git a/cluster-autoscaler/cloudprovider/gce/gce_cloud_provider.go b/cluster-autoscaler/cloudprovider/gce/gce_cloud_provider.go index c28462ec7a..0c3e9eecaa 100644 --- a/cluster-autoscaler/cloudprovider/gce/gce_cloud_provider.go +++ b/cluster-autoscaler/cloudprovider/gce/gce_cloud_provider.go @@ -18,11 +18,15 @@ package gce import ( "fmt" + "io" + "os" "strings" + "github.com/golang/glog" apiv1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" "k8s.io/autoscaler/cluster-autoscaler/cloudprovider" + "k8s.io/autoscaler/cluster-autoscaler/config" "k8s.io/autoscaler/cluster-autoscaler/utils/errors" schedulercache "k8s.io/kubernetes/pkg/scheduler/cache" ) @@ -303,3 +307,27 @@ func (mig *gceMig) TemplateNodeInfo() (*schedulercache.NodeInfo, error) { nodeInfo.SetNode(node) return nodeInfo, nil } + +// BuildGCE builds GCE cloud provider, manager etc. +func BuildGCE(opts config.AutoscalingOptions, do cloudprovider.NodeGroupDiscoveryOptions, rl *cloudprovider.ResourceLimiter) cloudprovider.CloudProvider { + var config io.ReadCloser + if opts.CloudConfig != "" { + var err error + config, err = os.Open(opts.CloudConfig) + if err != nil { + glog.Fatalf("Couldn't open cloud provider configuration %s: %#v", opts.CloudConfig, err) + } + defer config.Close() + } + + manager, err := CreateGceManager(config, do, opts.Regional) + if err != nil { + glog.Fatalf("Failed to create GCE Manager: %v", err) + } + + provider, err := BuildGceCloudProvider(manager, rl) + if err != nil { + glog.Fatalf("Failed to create GCE cloud provider: %v", err) + } + return provider +}