1
0
mirror of https://github.com/rancher/rke.git synced 2025-06-22 05:27:07 +00:00
rke/cloudprovider/aws/aws.go

54 lines
1.1 KiB
Go
Raw Normal View History

2018-06-06 17:11:47 +00:00
package aws
2019-02-11 23:21:29 +00:00
import (
"bytes"
"fmt"
2018-06-06 17:11:47 +00:00
2019-02-11 23:21:29 +00:00
"github.com/go-ini/ini"
2020-07-11 16:24:19 +00:00
v3 "github.com/rancher/rke/types"
2019-02-11 23:21:29 +00:00
)
2018-06-06 17:11:47 +00:00
const (
AWSCloudProviderName = "aws"
2019-02-11 23:21:29 +00:00
AWSConfig = "AWSConfig"
2018-06-06 17:11:47 +00:00
)
2019-02-11 23:21:29 +00:00
type CloudProvider struct {
Config *v3.AWSCloudProvider
Name string
}
2018-06-06 17:11:47 +00:00
func GetInstance() *CloudProvider {
return &CloudProvider{}
}
func (p *CloudProvider) Init(cloudProviderConfig v3.CloudProvider) error {
p.Name = AWSCloudProviderName
2019-02-11 23:21:29 +00:00
if cloudProviderConfig.AWSCloudProvider == nil {
return nil
}
p.Config = cloudProviderConfig.AWSCloudProvider
2018-06-06 17:11:47 +00:00
return nil
}
func (p *CloudProvider) GetName() string {
return p.Name
}
func (p *CloudProvider) GenerateCloudConfigFile() (string, error) {
2019-02-11 23:21:29 +00:00
if p.Config == nil {
return "", nil
}
// Generate INI style configuration
buf := new(bytes.Buffer)
cloudConfig, _ := ini.LoadSources(ini.LoadOptions{IgnoreInlineComment: true}, []byte(""))
2019-02-11 23:21:29 +00:00
if err := ini.ReflectFrom(cloudConfig, p.Config); err != nil {
2019-09-23 19:32:38 +00:00
return "", fmt.Errorf("Failed to parse AWS cloud config")
2019-02-11 23:21:29 +00:00
}
if _, err := cloudConfig.WriteTo(buf); err != nil {
return "", err
}
return buf.String(), nil
2018-06-06 17:11:47 +00:00
}