mirror of
https://github.com/rancher/rke.git
synced 2025-09-16 06:59:25 +00:00
Add cloud and network provider types
This commit is contained in:
@@ -2,8 +2,10 @@ package cluster
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"net"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/rancher/rke/authz"
|
||||
@@ -42,6 +44,7 @@ type Cluster struct {
|
||||
K8sWrapTransport k8s.WrapTransport
|
||||
UseKubectlDeploy bool
|
||||
UpdateWorkersOnly bool
|
||||
CloudConfigFile string
|
||||
}
|
||||
|
||||
const (
|
||||
@@ -54,6 +57,9 @@ const (
|
||||
LocalNodeAddress = "127.0.0.1"
|
||||
LocalNodeHostname = "localhost"
|
||||
LocalNodeUser = "root"
|
||||
CloudProvider = "CloudProvider"
|
||||
AzureCloudProvider = "azure"
|
||||
AWSCloudProvider = "aws"
|
||||
)
|
||||
|
||||
func (c *Cluster) DeployControlPlane(ctx context.Context) error {
|
||||
@@ -165,7 +171,11 @@ func ParseCluster(
|
||||
}
|
||||
c.PrivateRegistriesMap[pr.URL] = pr
|
||||
}
|
||||
|
||||
// parse the cluster config file
|
||||
c.CloudConfigFile, err = c.parseCloudConfig(ctx)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Failed to parse cloud config file: %v", err)
|
||||
}
|
||||
return c, nil
|
||||
}
|
||||
|
||||
@@ -317,7 +327,13 @@ func (c *Cluster) PrePullK8sImages(ctx context.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func ConfigureCluster(ctx context.Context, rkeConfig v3.RancherKubernetesEngineConfig, crtBundle map[string]pki.CertificatePKI, clusterFilePath, configDir string, k8sWrapTransport k8s.WrapTransport, useKubectl bool) error {
|
||||
func ConfigureCluster(
|
||||
ctx context.Context,
|
||||
rkeConfig v3.RancherKubernetesEngineConfig,
|
||||
crtBundle map[string]pki.CertificatePKI,
|
||||
clusterFilePath, configDir string,
|
||||
k8sWrapTransport k8s.WrapTransport,
|
||||
useKubectl bool) error {
|
||||
// dialer factories are not needed here since we are not uses docker only k8s jobs
|
||||
kubeCluster, err := ParseCluster(ctx, &rkeConfig, clusterFilePath, configDir, nil, nil, k8sWrapTransport)
|
||||
if err != nil {
|
||||
@@ -343,3 +359,43 @@ func (c *Cluster) getEtcdProcessHostMap(readyEtcdHosts []*hosts.Host) map[*hosts
|
||||
}
|
||||
return etcdProcessHostMap
|
||||
}
|
||||
|
||||
func (c *Cluster) parseCloudConfig(ctx context.Context) (string, error) {
|
||||
// check for azure cloud provider
|
||||
if c.AzureCloudProvider.TenantID != "" {
|
||||
c.CloudProvider.Name = AzureCloudProvider
|
||||
jsonString, err := json.MarshalIndent(c.AzureCloudProvider, "", "\n")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return string(jsonString), nil
|
||||
}
|
||||
if len(c.CloudProvider.CloudConfig) == 0 {
|
||||
return "", nil
|
||||
}
|
||||
// handle generic cloud config
|
||||
tmpMap := make(map[string]interface{})
|
||||
for key, value := range c.CloudProvider.CloudConfig {
|
||||
tmpBool, err := strconv.ParseBool(value)
|
||||
if err == nil {
|
||||
tmpMap[key] = tmpBool
|
||||
continue
|
||||
}
|
||||
tmpInt, err := strconv.ParseInt(value, 10, 64)
|
||||
if err == nil {
|
||||
tmpMap[key] = tmpInt
|
||||
continue
|
||||
}
|
||||
tmpFloat, err := strconv.ParseFloat(value, 64)
|
||||
if err == nil {
|
||||
tmpMap[key] = tmpFloat
|
||||
continue
|
||||
}
|
||||
tmpMap[key] = value
|
||||
}
|
||||
jsonString, err := json.MarshalIndent(tmpMap, "", "\n")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return string(jsonString), nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user