mirror of
https://github.com/rancher/rke.git
synced 2025-04-27 11:21:08 +00:00
54 lines
1.1 KiB
Go
54 lines
1.1 KiB
Go
package aws
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
|
|
"github.com/go-ini/ini"
|
|
|
|
v3 "github.com/rancher/rke/types"
|
|
)
|
|
|
|
const (
|
|
AWSCloudProviderName = "aws"
|
|
AWSConfig = "AWSConfig"
|
|
)
|
|
|
|
type CloudProvider struct {
|
|
Config *v3.AWSCloudProvider
|
|
Name string
|
|
}
|
|
|
|
func GetInstance() *CloudProvider {
|
|
return &CloudProvider{}
|
|
}
|
|
|
|
func (p *CloudProvider) Init(cloudProviderConfig v3.CloudProvider) error {
|
|
p.Name = AWSCloudProviderName
|
|
if cloudProviderConfig.AWSCloudProvider == nil {
|
|
return nil
|
|
}
|
|
p.Config = cloudProviderConfig.AWSCloudProvider
|
|
|
|
return nil
|
|
}
|
|
func (p *CloudProvider) GetName() string {
|
|
return p.Name
|
|
}
|
|
|
|
func (p *CloudProvider) GenerateCloudConfigFile() (string, error) {
|
|
if p.Config == nil {
|
|
return "", nil
|
|
}
|
|
// Generate INI style configuration
|
|
buf := new(bytes.Buffer)
|
|
cloudConfig, _ := ini.LoadSources(ini.LoadOptions{IgnoreInlineComment: true}, []byte(""))
|
|
if err := ini.ReflectFrom(cloudConfig, p.Config); err != nil {
|
|
return "", fmt.Errorf("Failed to parse AWS cloud config")
|
|
}
|
|
if _, err := cloudConfig.WriteTo(buf); err != nil {
|
|
return "", err
|
|
}
|
|
return buf.String(), nil
|
|
}
|