Skip to content

Commit

Permalink
Support harvester cloud provider
Browse files Browse the repository at this point in the history
  • Loading branch information
yaocw2020 committed Nov 10, 2021
1 parent b66c7ff commit cc951ab
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 0 deletions.
4 changes: 4 additions & 0 deletions cloudprovider/cloudprovider.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"github.com/rancher/rke/cloudprovider/aws"
"github.com/rancher/rke/cloudprovider/azure"
"github.com/rancher/rke/cloudprovider/custom"
"github.com/rancher/rke/cloudprovider/harvester"
"github.com/rancher/rke/cloudprovider/openstack"
"github.com/rancher/rke/cloudprovider/vsphere"
v3 "github.com/rancher/rke/types"
Expand All @@ -29,6 +30,9 @@ func InitCloudProvider(cloudProviderConfig v3.CloudProvider) (CloudProvider, err
if cloudProviderConfig.VsphereCloudProvider != nil || cloudProviderConfig.Name == vsphere.VsphereCloudProviderName {
p = vsphere.GetInstance()
}
if cloudProviderConfig.HarvesterCloudProvider != nil || cloudProviderConfig.Name == harvester.HarvesterCloudProviderName {
p = harvester.GetInstance()
}
if cloudProviderConfig.CustomCloudProvider != "" {
p = custom.GetInstance()
}
Expand Down
29 changes: 29 additions & 0 deletions cloudprovider/harvester/harvester.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package harvester

import v3 "github.com/rancher/rke/types"

const HarvesterCloudProviderName = "harvester"

type CloudProvider struct {
Name string
Config string
}

func GetInstance() *CloudProvider {
return &CloudProvider{}
}

func (p *CloudProvider) Init(cloudProviderConfig v3.CloudProvider) error {
// Harvester cloud provider is an external cloud provider
p.Name = "external"
p.Config = cloudProviderConfig.HarvesterCloudProvider.CloudConfig
return nil
}

func (p *CloudProvider) GetName() string {
return p.Name
}

func (p *CloudProvider) GenerateCloudConfigFile() (string, error) {
return p.Config, nil
}
5 changes: 5 additions & 0 deletions types/rke_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -556,6 +556,8 @@ type CloudProvider struct {
OpenstackCloudProvider *OpenstackCloudProvider `yaml:"openstackCloudProvider,omitempty" json:"openstackCloudProvider,omitempty"`
// VsphereCloudProvider
VsphereCloudProvider *VsphereCloudProvider `yaml:"vsphereCloudProvider,omitempty" json:"vsphereCloudProvider,omitempty"`
// HarvesterCloudProvider
HarvesterCloudProvider *HarvesterCloudProvider `yaml:"harvesterCloudProvider,omitempty" json:"harvesterCloudProvider,omitempty"`
// CustomCloudProvider is a multiline string that represent a custom cloud config file
CustomCloudProvider string `yaml:"customCloudProvider,omitempty" json:"customCloudProvider,omitempty"`
}
Expand Down Expand Up @@ -848,6 +850,9 @@ type AWSCloudProvider struct {
ServiceOverride map[string]ServiceOverride `json:"serviceOverride,omitempty" yaml:"service_override,omitempty" ini:"ServiceOverride,omitempty"`
}

type HarvesterCloudProvider struct {
CloudConfig string `json:"cloudConfig" yaml:"cloud_config"`
}
type ServiceOverride struct {
Service string `json:"service" yaml:"service" ini:"Service,omitempty"`
Region string `json:"region" yaml:"region" ini:"Region,omitempty"`
Expand Down
21 changes: 21 additions & 0 deletions types/zz_generated_deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit cc951ab

Please sign in to comment.