Use function to get cloud provider from cluster spec

This commit is contained in:
John Gardiner Myers 2021-12-29 14:40:53 -08:00
parent 503b73747d
commit 70f7d9bdb2
39 changed files with 118 additions and 114 deletions

View File

@ -669,7 +669,7 @@ func RunCreateCluster(ctx context.Context, f *util.Factory, out io.Writer, c *Cr
return err return err
} }
fullGroup.AddInstanceGroupNodeLabel() fullGroup.AddInstanceGroupNodeLabel()
if api.CloudProviderID(cluster.Spec.CloudProvider) == api.CloudProviderGCE { if cluster.Spec.GetCloudProvider() == api.CloudProviderGCE {
fullGroup.Spec.NodeLabels["cloud.google.com/metadata-proxy-ready"] = "true" fullGroup.Spec.NodeLabels["cloud.google.com/metadata-proxy-ready"] = "true"
} }
fullInstanceGroups = append(fullInstanceGroups, fullGroup) fullInstanceGroups = append(fullInstanceGroups, fullGroup)

View File

@ -199,7 +199,7 @@ func RunCreateInstanceGroup(ctx context.Context, f *util.Factory, out io.Writer,
} }
ig.AddInstanceGroupNodeLabel() ig.AddInstanceGroupNodeLabel()
if kopsapi.CloudProviderID(cluster.Spec.CloudProvider) == kopsapi.CloudProviderGCE { if cluster.Spec.GetCloudProvider() == kopsapi.CloudProviderGCE {
fmt.Println("detected a GCE cluster; labeling nodes to receive metadata-proxy.") fmt.Println("detected a GCE cluster; labeling nodes to receive metadata-proxy.")
ig.Spec.NodeLabels["cloud.google.com/metadata-proxy-ready"] = "true" ig.Spec.NodeLabels["cloud.google.com/metadata-proxy-ready"] = "true"
} }

View File

@ -218,7 +218,7 @@ func clusterOutputTable(clusters []*kopsapi.Cluster, out io.Writer) error {
return c.ObjectMeta.Name return c.ObjectMeta.Name
}) })
t.AddColumn("CLOUD", func(c *kopsapi.Cluster) string { t.AddColumn("CLOUD", func(c *kopsapi.Cluster) string {
return c.Spec.CloudProvider return string(c.Spec.GetCloudProvider())
}) })
t.AddColumn("ZONES", func(c *kopsapi.Cluster) string { t.AddColumn("ZONES", func(c *kopsapi.Cluster) string {
zones := sets.NewString() zones := sets.NewString()

View File

@ -239,7 +239,7 @@ func RunToolboxInstanceSelector(ctx context.Context, f *util.Factory, out io.Wri
return err return err
} }
if kops.CloudProviderID(cluster.Spec.CloudProvider) != kops.CloudProviderAWS { if cluster.Spec.GetCloudProvider() != kops.CloudProviderAWS {
return fmt.Errorf("cannot select instance types from non-aws cluster") return fmt.Errorf("cannot select instance types from non-aws cluster")
} }

View File

@ -488,11 +488,11 @@ func completeUpdateClusterTarget(f commandutils.Factory, options *UpdateClusterO
cloudup.TargetDryRun, cloudup.TargetDryRun,
} }
for _, cp := range cloudup.TerraformCloudProviders { for _, cp := range cloudup.TerraformCloudProviders {
if cluster.Spec.CloudProvider == string(cp) { if cluster.Spec.GetCloudProvider() == cp {
completions = append(completions, cloudup.TargetTerraform) completions = append(completions, cloudup.TargetTerraform)
} }
} }
if cluster.Spec.CloudProvider == string(kops.CloudProviderAWS) { if cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS {
completions = append(completions, cloudup.TargetCloudformation) completions = append(completions, cloudup.TargetCloudformation)
} }
return completions, cobra.ShellCompDirectiveNoFileComp return completions, cobra.ShellCompDirectiveNoFileComp

View File

@ -267,7 +267,7 @@ func BuildNodeupModelContext(model *testutils.Model) (*NodeupModelContext, error
nodeupModelContext := &NodeupModelContext{ nodeupModelContext := &NodeupModelContext{
Architecture: "amd64", Architecture: "amd64",
BootConfig: &nodeup.BootConfig{}, BootConfig: &nodeup.BootConfig{},
CloudProvider: kops.CloudProviderID(model.Cluster.Spec.CloudProvider), CloudProvider: model.Cluster.Spec.GetCloudProvider(),
NodeupConfig: &nodeup.Config{ NodeupConfig: &nodeup.Config{
CAs: map[string]string{}, CAs: map[string]string{},
KeypairIDs: map[string]string{}, KeypairIDs: map[string]string{},

View File

@ -35,7 +35,7 @@ var _ acls.ACLStrategy = &gcsAclStrategy{}
// GetACL returns the ACL to use if this is a google cloud storage path // GetACL returns the ACL to use if this is a google cloud storage path
func (s *gcsAclStrategy) GetACL(p vfs.Path, cluster *kops.Cluster) (vfs.ACL, error) { func (s *gcsAclStrategy) GetACL(p vfs.Path, cluster *kops.Cluster) (vfs.ACL, error) {
if kops.CloudProviderID(cluster.Spec.CloudProvider) != kops.CloudProviderGCE { if cluster.Spec.GetCloudProvider() != kops.CloudProviderGCE {
return nil, nil return nil, nil
} }
gcsPath, ok := p.(*vfs.GSPath) gcsPath, ok := p.(*vfs.GSPath)

View File

@ -849,6 +849,10 @@ func (c *ClusterSpec) IsKopsControllerIPAM() bool {
return c.IsIPv6Only() return c.IsIPv6Only()
} }
func (c *ClusterSpec) GetCloudProvider() CloudProviderID {
return CloudProviderID(c.CloudProvider)
}
// EnvVar represents an environment variable present in a Container. // EnvVar represents an environment variable present in a Container.
type EnvVar struct { type EnvVar struct {
// Name of the environment variable. Must be a C_IDENTIFIER. // Name of the environment variable. Must be a C_IDENTIFIER.

View File

@ -22,7 +22,7 @@ import (
// UseKopsControllerForNodeBootstrap is true if nodeup should use kops-controller for bootstrapping. // UseKopsControllerForNodeBootstrap is true if nodeup should use kops-controller for bootstrapping.
func UseKopsControllerForNodeBootstrap(cluster *kops.Cluster) bool { func UseKopsControllerForNodeBootstrap(cluster *kops.Cluster) bool {
switch kops.CloudProviderID(cluster.Spec.CloudProvider) { switch cluster.Spec.GetCloudProvider() {
case kops.CloudProviderAWS: case kops.CloudProviderAWS:
return true return true
case kops.CloudProviderGCE: case kops.CloudProviderGCE:

View File

@ -218,7 +218,7 @@ func CrossValidateInstanceGroup(g *kops.InstanceGroup, cluster *kops.Cluster, cl
allErrs = append(allErrs, ValidateMasterInstanceGroup(g, cluster)...) allErrs = append(allErrs, ValidateMasterInstanceGroup(g, cluster)...)
} }
if g.Spec.Role == kops.InstanceGroupRoleAPIServer && kops.CloudProviderID(cluster.Spec.CloudProvider) != kops.CloudProviderAWS { if g.Spec.Role == kops.InstanceGroupRoleAPIServer && cluster.Spec.GetCloudProvider() != kops.CloudProviderAWS {
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec", "role"), "Apiserver role only supported on AWS")) allErrs = append(allErrs, field.Forbidden(field.NewPath("spec", "role"), "Apiserver role only supported on AWS"))
} }
@ -237,7 +237,7 @@ func CrossValidateInstanceGroup(g *kops.InstanceGroup, cluster *kops.Cluster, cl
} }
} }
if kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderAWS { if cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS {
if g.Spec.RootVolumeType != nil { if g.Spec.RootVolumeType != nil {
allErrs = append(allErrs, IsValidValue(field.NewPath("spec", "rootVolumeType"), g.Spec.RootVolumeType, []string{"standard", "gp3", "gp2", "io1", "io2"})...) allErrs = append(allErrs, IsValidValue(field.NewPath("spec", "rootVolumeType"), g.Spec.RootVolumeType, []string{"standard", "gp3", "gp2", "io1", "io2"})...)
} }

View File

@ -55,7 +55,7 @@ func ValidateCluster(c *kops.Cluster, strict bool) field.ErrorList {
requiresSubnets := true requiresSubnets := true
requiresNetworkCIDR := true requiresNetworkCIDR := true
requiresSubnetCIDR := true requiresSubnetCIDR := true
switch kops.CloudProviderID(c.Spec.CloudProvider) { switch c.Spec.GetCloudProvider() {
case "": case "":
allErrs = append(allErrs, field.Required(fieldSpec.Child("cloudProvider"), "")) allErrs = append(allErrs, field.Required(fieldSpec.Child("cloudProvider"), ""))
requiresSubnets = false requiresSubnets = false
@ -133,7 +133,7 @@ func ValidateCluster(c *kops.Cluster, strict bool) field.ErrorList {
if err != nil { if err != nil {
allErrs = append(allErrs, field.Invalid(fieldSpec.Child("networkCIDR"), c.Spec.NetworkCIDR, "Cluster had an invalid networkCIDR")) allErrs = append(allErrs, field.Invalid(fieldSpec.Child("networkCIDR"), c.Spec.NetworkCIDR, "Cluster had an invalid networkCIDR"))
} }
if kops.CloudProviderID(c.Spec.CloudProvider) == kops.CloudProviderDO { if c.Spec.GetCloudProvider() == kops.CloudProviderDO {
// verify if the NetworkCIDR is in a private range as per RFC1918 // verify if the NetworkCIDR is in a private range as per RFC1918
if !networkCIDR.IP.IsPrivate() { if !networkCIDR.IP.IsPrivate() {
allErrs = append(allErrs, field.Invalid(fieldSpec.Child("networkCIDR"), c.Spec.NetworkCIDR, "Cluster had a networkCIDR outside the private IP range")) allErrs = append(allErrs, field.Invalid(fieldSpec.Child("networkCIDR"), c.Spec.NetworkCIDR, "Cluster had a networkCIDR outside the private IP range"))
@ -300,7 +300,7 @@ func ValidateCluster(c *kops.Cluster, strict bool) field.ErrorList {
{ {
var k8sCloudProvider string var k8sCloudProvider string
switch kops.CloudProviderID(c.Spec.CloudProvider) { switch c.Spec.GetCloudProvider() {
case kops.CloudProviderAWS: case kops.CloudProviderAWS:
k8sCloudProvider = "aws" k8sCloudProvider = "aws"
case kops.CloudProviderGCE: case kops.CloudProviderGCE:
@ -369,7 +369,7 @@ func ValidateCluster(c *kops.Cluster, strict bool) field.ErrorList {
if !featureflag.VFSVaultSupport.Enabled() { if !featureflag.VFSVaultSupport.Enabled() {
allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("secretStore"), "vault VFS is an experimental feature; set `export KOPS_FEATURE_FLAGS=VFSVaultSupport`")) allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("secretStore"), "vault VFS is an experimental feature; set `export KOPS_FEATURE_FLAGS=VFSVaultSupport`"))
} }
if kops.CloudProviderID(c.Spec.CloudProvider) != kops.CloudProviderAWS { if c.Spec.GetCloudProvider() != kops.CloudProviderAWS {
allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("secretStore"), "Vault secret store is only available on AWS")) allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("secretStore"), "Vault secret store is only available on AWS"))
} }
} }
@ -377,7 +377,7 @@ func ValidateCluster(c *kops.Cluster, strict bool) field.ErrorList {
if !featureflag.VFSVaultSupport.Enabled() { if !featureflag.VFSVaultSupport.Enabled() {
allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("keyStore"), "vault VFS is an experimental feature; set `export KOPS_FEATURE_FLAGS=VFSVaultSupport`")) allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("keyStore"), "vault VFS is an experimental feature; set `export KOPS_FEATURE_FLAGS=VFSVaultSupport`"))
} }
if kops.CloudProviderID(c.Spec.CloudProvider) != kops.CloudProviderAWS { if c.Spec.GetCloudProvider() != kops.CloudProviderAWS {
allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("keyStore"), "Vault keystore is only available on AWS")) allErrs = append(allErrs, field.Forbidden(fieldSpec.Child("keyStore"), "Vault keystore is only available on AWS"))
} }
} }
@ -474,7 +474,7 @@ func DeepValidate(c *kops.Cluster, groups []*kops.InstanceGroup, strict bool, cl
errs := CrossValidateInstanceGroup(g, c, cloud, strict) errs := CrossValidateInstanceGroup(g, c, cloud, strict)
// Additional cloud-specific validation rules // Additional cloud-specific validation rules
if kops.CloudProviderID(c.Spec.CloudProvider) != kops.CloudProviderAWS && len(g.Spec.Volumes) > 0 { if c.Spec.GetCloudProvider() != kops.CloudProviderAWS && len(g.Spec.Volumes) > 0 {
errs = append(errs, field.Forbidden(field.NewPath("spec", "volumes"), "instancegroup volumes are only available with aws at present")) errs = append(errs, field.Forbidden(field.NewPath("spec", "volumes"), "instancegroup volumes are only available with aws at present"))
} }

View File

@ -66,7 +66,7 @@ func newValidateCluster(cluster *kops.Cluster) field.ErrorList {
allErrs = append(allErrs, validateClusterSpec(&cluster.Spec, cluster, field.NewPath("spec"))...) allErrs = append(allErrs, validateClusterSpec(&cluster.Spec, cluster, field.NewPath("spec"))...)
// Additional cloud-specific validation rules // Additional cloud-specific validation rules
switch kops.CloudProviderID(cluster.Spec.CloudProvider) { switch cluster.Spec.GetCloudProvider() {
case kops.CloudProviderAWS: case kops.CloudProviderAWS:
allErrs = append(allErrs, awsValidateCluster(cluster)...) allErrs = append(allErrs, awsValidateCluster(cluster)...)
case kops.CloudProviderGCE: case kops.CloudProviderGCE:
@ -86,7 +86,7 @@ func validateClusterSpec(spec *kops.ClusterSpec, c *kops.Cluster, fieldPath *fie
// SSHAccess // SSHAccess
for i, cidr := range spec.SSHAccess { for i, cidr := range spec.SSHAccess {
if strings.HasPrefix(cidr, "pl-") { if strings.HasPrefix(cidr, "pl-") {
if kops.CloudProviderID(spec.CloudProvider) != kops.CloudProviderAWS { if spec.GetCloudProvider() != kops.CloudProviderAWS {
allErrs = append(allErrs, field.Invalid(fieldPath.Child("sshAccess").Index(i), cidr, "Prefix List ID only supported for AWS")) allErrs = append(allErrs, field.Invalid(fieldPath.Child("sshAccess").Index(i), cidr, "Prefix List ID only supported for AWS"))
} }
} else { } else {
@ -97,7 +97,7 @@ func validateClusterSpec(spec *kops.ClusterSpec, c *kops.Cluster, fieldPath *fie
// KubernetesAPIAccess // KubernetesAPIAccess
for i, cidr := range spec.KubernetesAPIAccess { for i, cidr := range spec.KubernetesAPIAccess {
if strings.HasPrefix(cidr, "pl-") { if strings.HasPrefix(cidr, "pl-") {
if kops.CloudProviderID(spec.CloudProvider) != kops.CloudProviderAWS { if spec.GetCloudProvider() != kops.CloudProviderAWS {
allErrs = append(allErrs, field.Invalid(fieldPath.Child("kubernetesAPIAccess").Index(i), cidr, "Prefix List ID only supported for AWS")) allErrs = append(allErrs, field.Invalid(fieldPath.Child("kubernetesAPIAccess").Index(i), cidr, "Prefix List ID only supported for AWS"))
} }
} else { } else {
@ -108,7 +108,7 @@ func validateClusterSpec(spec *kops.ClusterSpec, c *kops.Cluster, fieldPath *fie
// NodePortAccess // NodePortAccess
for i, cidr := range spec.NodePortAccess { for i, cidr := range spec.NodePortAccess {
if strings.HasPrefix(cidr, "pl-") { if strings.HasPrefix(cidr, "pl-") {
if kops.CloudProviderID(spec.CloudProvider) != kops.CloudProviderAWS { if spec.GetCloudProvider() != kops.CloudProviderAWS {
allErrs = append(allErrs, field.Invalid(fieldPath.Child("nodePortAccess").Index(i), cidr, "Prefix List ID only supported for AWS")) allErrs = append(allErrs, field.Invalid(fieldPath.Child("nodePortAccess").Index(i), cidr, "Prefix List ID only supported for AWS"))
} }
} else { } else {
@ -244,7 +244,7 @@ func validateClusterSpec(spec *kops.ClusterSpec, c *kops.Cluster, fieldPath *fie
allErrs = append(allErrs, validateRollingUpdate(spec.RollingUpdate, fieldPath.Child("rollingUpdate"), false)...) allErrs = append(allErrs, validateRollingUpdate(spec.RollingUpdate, fieldPath.Child("rollingUpdate"), false)...)
} }
if spec.API != nil && spec.API.LoadBalancer != nil && spec.CloudProvider == "aws" { if spec.API != nil && spec.API.LoadBalancer != nil && spec.GetCloudProvider() == kops.CloudProviderAWS {
value := string(spec.API.LoadBalancer.Class) value := string(spec.API.LoadBalancer.Class)
allErrs = append(allErrs, IsValidValue(fieldPath.Child("class"), &value, kops.SupportedLoadBalancerClasses)...) allErrs = append(allErrs, IsValidValue(fieldPath.Child("class"), &value, kops.SupportedLoadBalancerClasses)...)
if spec.API.LoadBalancer.SSLCertificate != "" && spec.API.LoadBalancer.Class != kops.LoadBalancerClassNetwork { if spec.API.LoadBalancer.SSLCertificate != "" && spec.API.LoadBalancer.Class != kops.LoadBalancerClassNetwork {
@ -260,7 +260,7 @@ func validateClusterSpec(spec *kops.ClusterSpec, c *kops.Cluster, fieldPath *fie
} }
if spec.WarmPool != nil { if spec.WarmPool != nil {
if kops.CloudProviderID(spec.CloudProvider) != kops.CloudProviderAWS { if spec.GetCloudProvider() != kops.CloudProviderAWS {
allErrs = append(allErrs, field.Forbidden(field.NewPath("spec", "warmPool"), "warm pool only supported on AWS")) allErrs = append(allErrs, field.Forbidden(field.NewPath("spec", "warmPool"), "warm pool only supported on AWS"))
} else { } else {
allErrs = append(allErrs, validateWarmPool(spec.WarmPool, fieldPath.Child("warmPool"))...) allErrs = append(allErrs, validateWarmPool(spec.WarmPool, fieldPath.Child("warmPool"))...)
@ -455,7 +455,7 @@ func validateSubnets(cluster *kops.ClusterSpec, fieldPath *field.Path) field.Err
} }
} }
if kops.CloudProviderID(cluster.CloudProvider) != kops.CloudProviderAWS { if cluster.GetCloudProvider() != kops.CloudProviderAWS {
for i := range subnets { for i := range subnets {
if subnets[i].IPv6CIDR != "" { if subnets[i].IPv6CIDR != "" {
allErrs = append(allErrs, field.Forbidden(fieldPath.Index(i).Child("ipv6CIDR"), "ipv6CIDR can only be specified for AWS")) allErrs = append(allErrs, field.Forbidden(fieldPath.Index(i).Child("ipv6CIDR"), "ipv6CIDR can only be specified for AWS"))
@ -612,7 +612,7 @@ func validateKubeAPIServer(v *kops.KubeAPIServerConfig, c *kops.Cluster, fldPath
allErrs = append(allErrs, IsValidValue(fldPath.Child("authorizationMode"), &mode, []string{"ABAC", "Webhook", "Node", "RBAC", "AlwaysAllow", "AlwaysDeny"})...) allErrs = append(allErrs, IsValidValue(fldPath.Child("authorizationMode"), &mode, []string{"ABAC", "Webhook", "Node", "RBAC", "AlwaysAllow", "AlwaysDeny"})...)
} }
} }
if kops.CloudProviderID(c.Spec.CloudProvider) == kops.CloudProviderAWS { if c.Spec.GetCloudProvider() == kops.CloudProviderAWS {
if !hasNode || !hasRBAC { if !hasNode || !hasRBAC {
allErrs = append(allErrs, field.Required(fldPath.Child("authorizationMode"), "As of kubernetes 1.19 on AWS, authorizationMode must include RBAC and Node")) allErrs = append(allErrs, field.Required(fldPath.Child("authorizationMode"), "As of kubernetes 1.19 on AWS, authorizationMode must include RBAC and Node"))
} }
@ -844,7 +844,7 @@ func validateNetworking(cluster *kops.Cluster, v *kops.NetworkingSpec, fldPath *
} }
optionTaken = true optionTaken = true
if c.CloudProvider != "aws" { if c.GetCloudProvider() != kops.CloudProviderAWS {
allErrs = append(allErrs, field.Forbidden(fldPath.Child("amazonvpc"), "amazon-vpc-routed-eni networking is supported only in AWS")) allErrs = append(allErrs, field.Forbidden(fldPath.Child("amazonvpc"), "amazon-vpc-routed-eni networking is supported only in AWS"))
} }
@ -1018,7 +1018,7 @@ func validateNetworkingCilium(cluster *kops.Cluster, v *kops.CiliumNetworkingSpe
allErrs = append(allErrs, IsValidValue(fldPath.Child("ipam"), &v.IPAM, []string{"hostscope", "kubernetes", "crd", "eni"})...) allErrs = append(allErrs, IsValidValue(fldPath.Child("ipam"), &v.IPAM, []string{"hostscope", "kubernetes", "crd", "eni"})...)
if v.IPAM == kops.CiliumIpamEni { if v.IPAM == kops.CiliumIpamEni {
if c.CloudProvider != string(kops.CloudProviderAWS) { if c.GetCloudProvider() != kops.CloudProviderAWS {
allErrs = append(allErrs, field.Forbidden(fldPath.Child("ipam"), "Cilum ENI IPAM is supported only in AWS")) allErrs = append(allErrs, field.Forbidden(fldPath.Child("ipam"), "Cilum ENI IPAM is supported only in AWS"))
} }
if v.Masquerade != nil && *v.Masquerade { if v.Masquerade != nil && *v.Masquerade {
@ -1049,7 +1049,7 @@ func validateNetworkingCilium(cluster *kops.Cluster, v *kops.CiliumNetworkingSpe
func validateNetworkingGCE(c *kops.ClusterSpec, v *kops.GCENetworkingSpec, fldPath *field.Path) field.ErrorList { func validateNetworkingGCE(c *kops.ClusterSpec, v *kops.GCENetworkingSpec, fldPath *field.Path) field.ErrorList {
allErrs := field.ErrorList{} allErrs := field.ErrorList{}
if c.CloudProvider != "gce" { if c.GetCloudProvider() != kops.CloudProviderGCE {
allErrs = append(allErrs, field.Forbidden(fldPath, "GCE networking is supported only when on GCP")) allErrs = append(allErrs, field.Forbidden(fldPath, "GCE networking is supported only when on GCP"))
} }
@ -1510,7 +1510,7 @@ func validateNvidiaConfig(spec *kops.ClusterSpec, nvidia *kops.NvidiaGPUConfig,
if !fi.BoolValue(nvidia.Enabled) { if !fi.BoolValue(nvidia.Enabled) {
return allErrs return allErrs
} }
if kops.CloudProviderID(spec.CloudProvider) != kops.CloudProviderAWS { if spec.GetCloudProvider() != kops.CloudProviderAWS {
allErrs = append(allErrs, field.Forbidden(fldPath, "Nvidia is only supported on AWS")) allErrs = append(allErrs, field.Forbidden(fldPath, "Nvidia is only supported on AWS"))
} }
if spec.ContainerRuntime != "" && spec.ContainerRuntime != "containerd" { if spec.ContainerRuntime != "" && spec.ContainerRuntime != "containerd" {
@ -1582,7 +1582,7 @@ func validateClusterAutoscaler(cluster *kops.Cluster, spec *kops.ClusterAutoscal
allErrs = append(allErrs, field.Forbidden(fldPath.Child("expander"), "Cluster autoscaler price expander is only supported on GCE")) allErrs = append(allErrs, field.Forbidden(fldPath.Child("expander"), "Cluster autoscaler price expander is only supported on GCE"))
} }
if kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderOpenstack { if cluster.Spec.GetCloudProvider() == kops.CloudProviderOpenstack {
allErrs = append(allErrs, field.Forbidden(fldPath, "Cluster autoscaler is not supported on OpenStack")) allErrs = append(allErrs, field.Forbidden(fldPath, "Cluster autoscaler is not supported on OpenStack"))
} }
@ -1608,7 +1608,7 @@ func validateExternalDNS(cluster *kops.Cluster, spec *kops.ExternalDNSConfig, fl
} }
func validateNodeTerminationHandler(cluster *kops.Cluster, spec *kops.NodeTerminationHandlerConfig, fldPath *field.Path) (allErrs field.ErrorList) { func validateNodeTerminationHandler(cluster *kops.Cluster, spec *kops.NodeTerminationHandlerConfig, fldPath *field.Path) (allErrs field.ErrorList) {
if kops.CloudProviderID(cluster.Spec.CloudProvider) != kops.CloudProviderAWS { if cluster.Spec.GetCloudProvider() != kops.CloudProviderAWS {
allErrs = append(allErrs, field.Forbidden(fldPath, "Node Termination Handler supports only AWS")) allErrs = append(allErrs, field.Forbidden(fldPath, "Node Termination Handler supports only AWS"))
} }
return allErrs return allErrs

View File

@ -153,7 +153,7 @@ func NewConfig(cluster *kops.Cluster, instanceGroup *kops.InstanceGroup) (*Confi
} }
bootConfig := BootConfig{ bootConfig := BootConfig{
CloudProvider: cluster.Spec.CloudProvider, CloudProvider: string(cluster.Spec.GetCloudProvider()),
InstanceGroupName: instanceGroup.ObjectMeta.Name, InstanceGroupName: instanceGroup.ObjectMeta.Name,
InstanceGroupRole: role, InstanceGroupRole: role,
} }
@ -216,7 +216,7 @@ func NewConfig(cluster *kops.Cluster, instanceGroup *kops.InstanceGroup) (*Confi
} }
func UsesInstanceIDForNodeName(cluster *kops.Cluster) bool { func UsesInstanceIDForNodeName(cluster *kops.Cluster) bool {
return cluster.Spec.ExternalCloudControllerManager != nil && cluster.IsKubernetesGTE("1.22") && kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderAWS return cluster.Spec.ExternalCloudControllerManager != nil && cluster.IsKubernetesGTE("1.22") && cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS
} }
func filterFileAssets(f []kops.FileAssetSpec, role kops.InstanceGroupRole) []kops.FileAssetSpec { func filterFileAssets(f []kops.FileAssetSpec, role kops.InstanceGroupRole) []kops.FileAssetSpec {

View File

@ -100,7 +100,7 @@ func (group *CloudInstanceGroup) AdjustNeedUpdate() {
func GetNodeMap(nodes []v1.Node, cluster *kopsapi.Cluster) map[string]*v1.Node { func GetNodeMap(nodes []v1.Node, cluster *kopsapi.Cluster) map[string]*v1.Node {
nodeMap := make(map[string]*v1.Node) nodeMap := make(map[string]*v1.Node)
if kopsapi.CloudProviderID(cluster.Spec.CloudProvider) == kopsapi.CloudProviderAzure { if cluster.Spec.GetCloudProvider() == kopsapi.CloudProviderAzure {
for i := range nodes { for i := range nodes {
node := &nodes[i] node := &nodes[i]
vmName, err := toAzureVMName(node.Spec.ProviderID) vmName, err := toAzureVMName(node.Spec.ProviderID)

View File

@ -440,8 +440,8 @@ func (c *RollingUpdateCluster) drainTerminateAndWait(u *cloudinstances.CloudInst
} }
func (c *RollingUpdateCluster) reconcileInstanceGroup() error { func (c *RollingUpdateCluster) reconcileInstanceGroup() error {
if api.CloudProviderID(c.Cluster.Spec.CloudProvider) != api.CloudProviderOpenstack && if c.Cluster.Spec.GetCloudProvider() != api.CloudProviderOpenstack &&
api.CloudProviderID(c.Cluster.Spec.CloudProvider) != api.CloudProviderDO { c.Cluster.Spec.GetCloudProvider() != api.CloudProviderDO {
return nil return nil
} }
rto := fi.RunTasksOptions{} rto := fi.RunTasksOptions{}

View File

@ -48,7 +48,7 @@ func resolveSettings(cluster *kops.Cluster, group *kops.InstanceGroup, numInstan
if rollingUpdate.MaxSurge == nil { if rollingUpdate.MaxSurge == nil {
val := intstr.FromInt(0) val := intstr.FromInt(0)
if kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderAWS && !featureflag.Spotinst.Enabled() && group.Spec.Manager != kops.InstanceManagerKarpenter { if cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS && !featureflag.Spotinst.Enabled() && group.Spec.Manager != kops.InstanceManagerKarpenter {
val = intstr.FromInt(1) val = intstr.FromInt(1)
} }
rollingUpdate.MaxSurge = &val rollingUpdate.MaxSurge = &val

View File

@ -139,7 +139,7 @@ func (b *BootstrapScript) buildEnvironmentVariables(cluster *kops.Cluster) (map[
env["S3_SECRET_ACCESS_KEY"] = os.Getenv("S3_SECRET_ACCESS_KEY") env["S3_SECRET_ACCESS_KEY"] = os.Getenv("S3_SECRET_ACCESS_KEY")
} }
if kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderOpenstack { if cluster.Spec.GetCloudProvider() == kops.CloudProviderOpenstack {
osEnvs := []string{ osEnvs := []string{
"OS_TENANT_ID", "OS_TENANT_NAME", "OS_PROJECT_ID", "OS_PROJECT_NAME", "OS_TENANT_ID", "OS_TENANT_NAME", "OS_PROJECT_ID", "OS_PROJECT_NAME",
@ -176,14 +176,14 @@ func (b *BootstrapScript) buildEnvironmentVariables(cluster *kops.Cluster) (map[
} }
} }
if kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderDO { if cluster.Spec.GetCloudProvider() == kops.CloudProviderDO {
doToken := os.Getenv("DIGITALOCEAN_ACCESS_TOKEN") doToken := os.Getenv("DIGITALOCEAN_ACCESS_TOKEN")
if doToken != "" { if doToken != "" {
env["DIGITALOCEAN_ACCESS_TOKEN"] = doToken env["DIGITALOCEAN_ACCESS_TOKEN"] = doToken
} }
} }
if kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderAWS { if cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS {
region, err := awsup.FindRegion(cluster) region, err := awsup.FindRegion(cluster)
if err != nil { if err != nil {
return nil, err return nil, err
@ -195,7 +195,7 @@ func (b *BootstrapScript) buildEnvironmentVariables(cluster *kops.Cluster) (map[
} }
} }
if kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderAzure { if cluster.Spec.GetCloudProvider() == kops.CloudProviderAzure {
env["AZURE_STORAGE_ACCOUNT"] = os.Getenv("AZURE_STORAGE_ACCOUNT") env["AZURE_STORAGE_ACCOUNT"] = os.Getenv("AZURE_STORAGE_ACCOUNT")
azureEnv := os.Getenv("AZURE_ENVIRONMENT") azureEnv := os.Getenv("AZURE_ENVIRONMENT")
if azureEnv != "" { if azureEnv != "" {

View File

@ -97,7 +97,7 @@ func (b *KubeAPIServerOptionsBuilder) BuildOptions(o interface{}) error {
} }
c.Image = image c.Image = image
switch kops.CloudProviderID(clusterSpec.CloudProvider) { switch clusterSpec.GetCloudProvider() {
case kops.CloudProviderAWS: case kops.CloudProviderAWS:
c.CloudProvider = "aws" c.CloudProvider = "aws"
case kops.CloudProviderGCE: case kops.CloudProviderGCE:
@ -109,7 +109,7 @@ func (b *KubeAPIServerOptionsBuilder) BuildOptions(o interface{}) error {
case kops.CloudProviderAzure: case kops.CloudProviderAzure:
c.CloudProvider = "azure" c.CloudProvider = "azure"
default: default:
return fmt.Errorf("unknown cloudprovider %q", clusterSpec.CloudProvider) return fmt.Errorf("unknown cloudprovider %q", clusterSpec.GetCloudProvider())
} }
if clusterSpec.ExternalCloudControllerManager != nil { if clusterSpec.ExternalCloudControllerManager != nil {

View File

@ -35,7 +35,7 @@ var _ loader.OptionsBuilder = &AWSCloudControllerManagerOptionsBuilder{}
func (b *AWSCloudControllerManagerOptionsBuilder) BuildOptions(o interface{}) error { func (b *AWSCloudControllerManagerOptionsBuilder) BuildOptions(o interface{}) error {
clusterSpec := o.(*kops.ClusterSpec) clusterSpec := o.(*kops.ClusterSpec)
if kops.CloudProviderID(clusterSpec.CloudProvider) != kops.CloudProviderAWS { if clusterSpec.GetCloudProvider() != kops.CloudProviderAWS {
return nil return nil
} }

View File

@ -31,7 +31,7 @@ var _ loader.OptionsBuilder = &AWSEBSCSIDriverOptionsBuilder{}
func (b *AWSEBSCSIDriverOptionsBuilder) BuildOptions(o interface{}) error { func (b *AWSEBSCSIDriverOptionsBuilder) BuildOptions(o interface{}) error {
clusterSpec := o.(*kops.ClusterSpec) clusterSpec := o.(*kops.ClusterSpec)
if kops.CloudProviderID(clusterSpec.CloudProvider) != kops.CloudProviderAWS { if clusterSpec.GetCloudProvider() != kops.CloudProviderAWS {
return nil return nil
} }

View File

@ -371,7 +371,7 @@ func (b *EtcdManagerBuilder) buildPod(etcdCluster kops.EtcdClusterSpec) (*v1.Pod
} }
{ {
switch kops.CloudProviderID(b.Cluster.Spec.CloudProvider) { switch b.Cluster.Spec.GetCloudProvider() {
case kops.CloudProviderAWS: case kops.CloudProviderAWS:
config.VolumeProvider = "aws" config.VolumeProvider = "aws"
@ -427,7 +427,7 @@ func (b *EtcdManagerBuilder) buildPod(etcdCluster kops.EtcdClusterSpec) (*v1.Pod
config.VolumeNameTag = openstack.TagNameEtcdClusterPrefix + etcdCluster.Name config.VolumeNameTag = openstack.TagNameEtcdClusterPrefix + etcdCluster.Name
default: default:
return nil, fmt.Errorf("CloudProvider %q not supported with etcd-manager", b.Cluster.Spec.CloudProvider) return nil, fmt.Errorf("CloudProvider %q not supported with etcd-manager", b.Cluster.Spec.GetCloudProvider())
} }
} }

View File

@ -32,7 +32,7 @@ var _ loader.OptionsBuilder = (*GCPCloudControllerManagerOptionsBuilder)(nil)
func (b *GCPCloudControllerManagerOptionsBuilder) BuildOptions(options interface{}) error { func (b *GCPCloudControllerManagerOptionsBuilder) BuildOptions(options interface{}) error {
clusterSpec := options.(*kops.ClusterSpec) clusterSpec := options.(*kops.ClusterSpec)
if kops.CloudProviderID(clusterSpec.CloudProvider) != kops.CloudProviderGCE { if clusterSpec.GetCloudProvider() != kops.CloudProviderGCE {
return nil return nil
} }

View File

@ -31,7 +31,7 @@ var _ loader.OptionsBuilder = &GCPPDCSIDriverOptionsBuilder{}
func (b *GCPPDCSIDriverOptionsBuilder) BuildOptions(o interface{}) error { func (b *GCPPDCSIDriverOptionsBuilder) BuildOptions(o interface{}) error {
clusterSpec := o.(*kops.ClusterSpec) clusterSpec := o.(*kops.ClusterSpec)
if kops.CloudProviderID(clusterSpec.CloudProvider) != kops.CloudProviderGCE { if clusterSpec.GetCloudProvider() != kops.CloudProviderGCE {
return nil return nil
} }

View File

@ -79,7 +79,7 @@ func (b *KubeControllerManagerOptionsBuilder) BuildOptions(o interface{}) error
if b.IsKubernetesGTE("1.24") { if b.IsKubernetesGTE("1.24") {
kcm.CloudProvider = "external" kcm.CloudProvider = "external"
} else { } else {
switch kops.CloudProviderID(clusterSpec.CloudProvider) { switch kops.CloudProviderID(clusterSpec.GetCloudProvider()) {
case kops.CloudProviderAWS: case kops.CloudProviderAWS:
kcm.CloudProvider = "aws" kcm.CloudProvider = "aws"
@ -97,7 +97,7 @@ func (b *KubeControllerManagerOptionsBuilder) BuildOptions(o interface{}) error
kcm.CloudProvider = "azure" kcm.CloudProvider = "azure"
default: default:
return fmt.Errorf("unknown cloudprovider %q", clusterSpec.CloudProvider) return fmt.Errorf("unknown cloudprovider %q", clusterSpec.GetCloudProvider())
} }
} }

View File

@ -74,7 +74,7 @@ func (b *KubeDnsOptionsBuilder) BuildOptions(o interface{}) error {
clusterSpec.KubeDNS.MemoryLimit = &defaultMemoryLimit clusterSpec.KubeDNS.MemoryLimit = &defaultMemoryLimit
} }
if clusterSpec.IsIPv6Only() && kops.CloudProviderID(clusterSpec.CloudProvider) == kops.CloudProviderAWS { if clusterSpec.IsIPv6Only() && clusterSpec.GetCloudProvider() == kops.CloudProviderAWS {
if len(clusterSpec.KubeDNS.UpstreamNameservers) == 0 { if len(clusterSpec.KubeDNS.UpstreamNameservers) == 0 {
clusterSpec.KubeDNS.UpstreamNameservers = []string{"fd00:ec2::253"} clusterSpec.KubeDNS.UpstreamNameservers = []string{"fd00:ec2::253"}
} }

View File

@ -122,7 +122,7 @@ func (b *KubeletOptionsBuilder) BuildOptions(o interface{}) error {
clusterSpec.MasterKubelet.HairpinMode = "none" clusterSpec.MasterKubelet.HairpinMode = "none"
} }
cloudProvider := kops.CloudProviderID(clusterSpec.CloudProvider) cloudProvider := clusterSpec.GetCloudProvider()
clusterSpec.Kubelet.CgroupRoot = "/" clusterSpec.Kubelet.CgroupRoot = "/"

View File

@ -32,7 +32,7 @@ var _ loader.OptionsBuilder = &OpenStackOptionsBulder{}
func (b *OpenStackOptionsBulder) BuildOptions(o interface{}) error { func (b *OpenStackOptionsBulder) BuildOptions(o interface{}) error {
clusterSpec := o.(*kops.ClusterSpec) clusterSpec := o.(*kops.ClusterSpec)
if kops.CloudProviderID(clusterSpec.CloudProvider) != kops.CloudProviderOpenstack { if clusterSpec.GetCloudProvider() != kops.CloudProviderOpenstack {
return nil return nil
} }

View File

@ -189,7 +189,7 @@ func (b *KopsModelContext) CloudTagsForInstanceGroup(ig *kops.InstanceGroup) (ma
func (b *KopsModelContext) CloudTags(name string, shared bool) map[string]string { func (b *KopsModelContext) CloudTags(name string, shared bool) map[string]string {
tags := make(map[string]string) tags := make(map[string]string)
switch kops.CloudProviderID(b.Cluster.Spec.CloudProvider) { switch b.Cluster.Spec.GetCloudProvider() {
case kops.CloudProviderAWS: case kops.CloudProviderAWS:
if shared { if shared {
// If the resource is shared, we don't try to set the Name - we presume that is managed externally // If the resource is shared, we don't try to set the Name - we presume that is managed externally

View File

@ -107,7 +107,7 @@ func BuildNodeRoleSubject(igRole kops.InstanceGroupRole, enableLifecycleHookPerm
// AddServiceAccountRole adds the appropriate mounts / env vars to enable a pod to use a service-account role // AddServiceAccountRole adds the appropriate mounts / env vars to enable a pod to use a service-account role
func AddServiceAccountRole(context *IAMModelContext, podSpec *corev1.PodSpec, serviceAccountRole Subject) error { func AddServiceAccountRole(context *IAMModelContext, podSpec *corev1.PodSpec, serviceAccountRole Subject) error {
cloudProvider := kops.CloudProviderID(context.Cluster.Spec.CloudProvider) cloudProvider := context.Cluster.Spec.GetCloudProvider()
switch cloudProvider { switch cloudProvider {
case kops.CloudProviderAWS: case kops.CloudProviderAWS:

View File

@ -93,7 +93,7 @@ func (b *MasterVolumeBuilder) Build(c *fi.ModelBuilderContext) error {
} }
sort.Strings(allMembers) sort.Strings(allMembers)
switch kops.CloudProviderID(b.Cluster.Spec.CloudProvider) { switch b.Cluster.Spec.GetCloudProvider() {
case kops.CloudProviderAWS: case kops.CloudProviderAWS:
err = b.addAWSVolume(c, name, volumeSize, zone, etcd, m, allMembers) err = b.addAWSVolume(c, name, volumeSize, zone, etcd, m, allMembers)
if err != nil { if err != nil {
@ -111,7 +111,7 @@ func (b *MasterVolumeBuilder) Build(c *fi.ModelBuilderContext) error {
case kops.CloudProviderAzure: case kops.CloudProviderAzure:
b.addAzureVolume(c, name, volumeSize, zone, etcd, m, allMembers) b.addAzureVolume(c, name, volumeSize, zone, etcd, m, allMembers)
default: default:
return fmt.Errorf("unknown cloudprovider %q", b.Cluster.Spec.CloudProvider) return fmt.Errorf("unknown cloudprovider %q", b.Cluster.Spec.GetCloudProvider())
} }
} }
} }

View File

@ -393,7 +393,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
InstanceGroups: c.InstanceGroups, InstanceGroups: c.InstanceGroups,
} }
switch kops.CloudProviderID(cluster.Spec.CloudProvider) { switch cluster.Spec.GetCloudProvider() {
case kops.CloudProviderGCE: case kops.CloudProviderGCE:
{ {
gceCloud := cloud.(gce.GCECloud) gceCloud := cloud.(gce.GCECloud)
@ -452,7 +452,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
} }
} }
default: default:
return fmt.Errorf("unknown CloudProvider %q", cluster.Spec.CloudProvider) return fmt.Errorf("unknown CloudProvider %q", cluster.Spec.GetCloudProvider())
} }
modelContext.SSHPublicKeys = sshPublicKeys modelContext.SSHPublicKeys = sshPublicKeys
@ -529,7 +529,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
&model.ConfigBuilder{KopsModelContext: modelContext, Lifecycle: clusterLifecycle}, &model.ConfigBuilder{KopsModelContext: modelContext, Lifecycle: clusterLifecycle},
) )
switch kops.CloudProviderID(cluster.Spec.CloudProvider) { switch cluster.Spec.GetCloudProvider() {
case kops.CloudProviderAWS: case kops.CloudProviderAWS:
awsModelContext := &awsmodel.AWSModelContext{ awsModelContext := &awsmodel.AWSModelContext{
KopsModelContext: modelContext, KopsModelContext: modelContext,
@ -633,7 +633,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
) )
default: default:
return fmt.Errorf("unknown cloudprovider %q", cluster.Spec.CloudProvider) return fmt.Errorf("unknown cloudprovider %q", cluster.Spec.GetCloudProvider())
} }
} }
c.TaskMap, err = l.BuildTasks(c.LifecycleOverrides) c.TaskMap, err = l.BuildTasks(c.LifecycleOverrides)
@ -646,7 +646,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
switch c.TargetName { switch c.TargetName {
case TargetDirect: case TargetDirect:
switch kops.CloudProviderID(cluster.Spec.CloudProvider) { switch cluster.Spec.GetCloudProvider() {
case kops.CloudProviderGCE: case kops.CloudProviderGCE:
target = gce.NewGCEAPITarget(cloud.(gce.GCECloud)) target = gce.NewGCEAPITarget(cloud.(gce.GCECloud))
case kops.CloudProviderAWS: case kops.CloudProviderAWS:
@ -658,7 +658,7 @@ func (c *ApplyClusterCmd) Run(ctx context.Context) error {
case kops.CloudProviderAzure: case kops.CloudProviderAzure:
target = azure.NewAzureAPITarget(cloud.(azure.AzureCloud)) target = azure.NewAzureAPITarget(cloud.(azure.AzureCloud))
default: default:
return fmt.Errorf("direct configuration not supported with CloudProvider:%q", cluster.Spec.CloudProvider) return fmt.Errorf("direct configuration not supported with CloudProvider:%q", cluster.Spec.GetCloudProvider())
} }
case TargetTerraform: case TargetTerraform:
@ -1076,7 +1076,7 @@ func ChannelForCluster(c *kops.Cluster) (*kops.Channel, error) {
// This is only needed currently on ContainerOS i.e. GCE, but we don't have a nice way to detect it yet // This is only needed currently on ContainerOS i.e. GCE, but we don't have a nice way to detect it yet
func needsMounterAsset(c *kops.Cluster, instanceGroups []*kops.InstanceGroup) bool { func needsMounterAsset(c *kops.Cluster, instanceGroups []*kops.InstanceGroup) bool {
// TODO: Do real detection of ContainerOS (but this has to work with image names, and maybe even forked images) // TODO: Do real detection of ContainerOS (but this has to work with image names, and maybe even forked images)
switch kops.CloudProviderID(c.Spec.CloudProvider) { switch c.Spec.GetCloudProvider() {
case kops.CloudProviderGCE: case kops.CloudProviderGCE:
return true return true
default: default:

View File

@ -452,8 +452,8 @@ func (b *BootstrapChannelBuilder) buildAddons(c *fi.ModelBuilderContext) (*Addon
} }
if b.IsKubernetesGTE("1.23") && b.IsKubernetesLT("1.26") && if b.IsKubernetesGTE("1.23") && b.IsKubernetesLT("1.26") &&
(kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderAWS || (b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS ||
kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderGCE) { b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderGCE) {
// AWS and GCE KCM-to-CCM leader migration // AWS and GCE KCM-to-CCM leader migration
key := "leader-migration.rbac.addons.k8s.io" key := "leader-migration.rbac.addons.k8s.io"
@ -730,7 +730,7 @@ func (b *BootstrapChannelBuilder) buildAddons(c *fi.ModelBuilderContext) (*Addon
} }
} }
if kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderAWS { if b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS {
key := "storage-aws.addons.k8s.io" key := "storage-aws.addons.k8s.io"
{ {
@ -746,7 +746,7 @@ func (b *BootstrapChannelBuilder) buildAddons(c *fi.ModelBuilderContext) (*Addon
} }
} }
if kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderDO { if b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderDO {
key := "digitalocean-cloud-controller.addons.k8s.io" key := "digitalocean-cloud-controller.addons.k8s.io"
{ {
@ -762,7 +762,7 @@ func (b *BootstrapChannelBuilder) buildAddons(c *fi.ModelBuilderContext) (*Addon
} }
} }
if kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderGCE { if b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderGCE {
key := "storage-gce.addons.k8s.io" key := "storage-gce.addons.k8s.io"
{ {
@ -810,7 +810,7 @@ func (b *BootstrapChannelBuilder) buildAddons(c *fi.ModelBuilderContext) (*Addon
// The metadata-proxy daemonset conceals node metadata endpoints in GCE. // The metadata-proxy daemonset conceals node metadata endpoints in GCE.
// It will land on nodes labeled cloud.google.com/metadata-proxy-ready=true // It will land on nodes labeled cloud.google.com/metadata-proxy-ready=true
if kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderGCE { if b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderGCE {
key := "metadata-proxy.addons.k8s.io" key := "metadata-proxy.addons.k8s.io"
{ {
@ -825,7 +825,7 @@ func (b *BootstrapChannelBuilder) buildAddons(c *fi.ModelBuilderContext) (*Addon
}) })
} }
if kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderGCE { if b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderGCE {
if b.Cluster.Spec.ExternalCloudControllerManager != nil { if b.Cluster.Spec.ExternalCloudControllerManager != nil {
key := "gcp-cloud-controller.addons.k8s.io" key := "gcp-cloud-controller.addons.k8s.io"
{ {
@ -1008,7 +1008,7 @@ func (b *BootstrapChannelBuilder) buildAddons(c *fi.ModelBuilderContext) (*Addon
} }
} }
if kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderOpenstack { if b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderOpenstack {
{ {
key := "storage-openstack.addons.k8s.io" key := "storage-openstack.addons.k8s.io"
@ -1055,7 +1055,7 @@ func (b *BootstrapChannelBuilder) buildAddons(c *fi.ModelBuilderContext) (*Addon
} }
} }
if kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderAWS { if b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS {
if b.Cluster.Spec.ExternalCloudControllerManager != nil { if b.Cluster.Spec.ExternalCloudControllerManager != nil {
key := "aws-cloud-controller.addons.k8s.io" key := "aws-cloud-controller.addons.k8s.io"
@ -1138,7 +1138,7 @@ func (b *BootstrapChannelBuilder) buildAddons(c *fi.ModelBuilderContext) (*Addon
}) })
} }
if kops.CloudProviderID(b.Cluster.Spec.CloudProvider) == kops.CloudProviderAWS && b.Cluster.Spec.KubeAPIServer.ServiceAccountIssuer != nil { if b.Cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS && b.Cluster.Spec.KubeAPIServer.ServiceAccountIssuer != nil {
awsModelContext := &awsmodel.AWSModelContext{ awsModelContext := &awsmodel.AWSModelContext{
KopsModelContext: b.KopsModelContext, KopsModelContext: b.KopsModelContext,
} }

View File

@ -217,7 +217,7 @@ func assignProxy(cluster *kops.Cluster) (*kops.EgressProxySpec, error) {
awsNoProxy := "169.254.169.254" awsNoProxy := "169.254.169.254"
if cluster.Spec.CloudProvider == "aws" && !strings.Contains(cluster.Spec.EgressProxy.ProxyExcludes, awsNoProxy) { if cluster.Spec.GetCloudProvider() == kops.CloudProviderAWS && !strings.Contains(cluster.Spec.EgressProxy.ProxyExcludes, awsNoProxy) {
egressSlice = append(egressSlice, awsNoProxy) egressSlice = append(egressSlice, awsNoProxy)
} }

View File

@ -270,7 +270,7 @@ func NewCluster(opt *NewClusterOptions, clientset simple.Clientset) (*NewCluster
cluster.Spec.ServiceAccountIssuerDiscovery = &api.ServiceAccountIssuerDiscoveryConfig{ cluster.Spec.ServiceAccountIssuerDiscovery = &api.ServiceAccountIssuerDiscoveryConfig{
DiscoveryStore: discoveryPath.Join(cluster.Name).Path(), DiscoveryStore: discoveryPath.Join(cluster.Name).Path(),
} }
if cluster.Spec.CloudProvider == string(api.CloudProviderAWS) { if cluster.Spec.GetCloudProvider() == api.CloudProviderAWS {
cluster.Spec.ServiceAccountIssuerDiscovery.EnableAWSOIDCProvider = true cluster.Spec.ServiceAccountIssuerDiscovery.EnableAWSOIDCProvider = true
cluster.Spec.IAM.UseServiceAccountExternalPermissions = fi.Bool(true) cluster.Spec.IAM.UseServiceAccountExternalPermissions = fi.Bool(true)
} }
@ -350,7 +350,7 @@ func NewCluster(opt *NewClusterOptions, clientset simple.Clientset) (*NewCluster
func setupVPC(opt *NewClusterOptions, cluster *api.Cluster) error { func setupVPC(opt *NewClusterOptions, cluster *api.Cluster) error {
cluster.Spec.NetworkID = opt.NetworkID cluster.Spec.NetworkID = opt.NetworkID
switch api.CloudProviderID(cluster.Spec.CloudProvider) { switch cluster.Spec.GetCloudProvider() {
case api.CloudProviderAWS: case api.CloudProviderAWS:
if cluster.Spec.NetworkID == "" && len(opt.SubnetIDs) > 0 { if cluster.Spec.NetworkID == "" && len(opt.SubnetIDs) > 0 {
cloudTags := map[string]string{} cloudTags := map[string]string{}
@ -474,7 +474,7 @@ func setupZones(opt *NewClusterOptions, cluster *api.Cluster, allZones sets.Stri
var zoneToSubnetProviderID map[string]string var zoneToSubnetProviderID map[string]string
switch api.CloudProviderID(cluster.Spec.CloudProvider) { switch cluster.Spec.GetCloudProvider() {
case api.CloudProviderGCE: case api.CloudProviderGCE:
// On GCE, subnets are regional - we create one per region, not per zone // On GCE, subnets are regional - we create one per region, not per zone
for _, zoneName := range allZones.List() { for _, zoneName := range allZones.List() {
@ -661,7 +661,7 @@ func getOpenstackZoneToSubnetProviderID(spec *api.ClusterSpec, zones []string, s
} }
func setupMasters(opt *NewClusterOptions, cluster *api.Cluster, zoneToSubnetMap map[string]*api.ClusterSubnetSpec) ([]*api.InstanceGroup, error) { func setupMasters(opt *NewClusterOptions, cluster *api.Cluster, zoneToSubnetMap map[string]*api.ClusterSubnetSpec) ([]*api.InstanceGroup, error) {
cloudProvider := api.CloudProviderID(cluster.Spec.CloudProvider) cloudProvider := cluster.Spec.GetCloudProvider()
var masters []*api.InstanceGroup var masters []*api.InstanceGroup
@ -815,7 +815,7 @@ func trimCommonPrefix(names []string) []string {
} }
func setupNodes(opt *NewClusterOptions, cluster *api.Cluster, zoneToSubnetMap map[string]*api.ClusterSubnetSpec) ([]*api.InstanceGroup, error) { func setupNodes(opt *NewClusterOptions, cluster *api.Cluster, zoneToSubnetMap map[string]*api.ClusterSubnetSpec) ([]*api.InstanceGroup, error) {
cloudProvider := api.CloudProviderID(cluster.Spec.CloudProvider) cloudProvider := cluster.Spec.GetCloudProvider()
var nodes []*api.InstanceGroup var nodes []*api.InstanceGroup
@ -883,7 +883,7 @@ func setupKarpenterNodes(opt *NewClusterOptions, cluster *api.Cluster, zoneToSub
} }
func setupAPIServers(opt *NewClusterOptions, cluster *api.Cluster, zoneToSubnetMap map[string]*api.ClusterSubnetSpec) ([]*api.InstanceGroup, error) { func setupAPIServers(opt *NewClusterOptions, cluster *api.Cluster, zoneToSubnetMap map[string]*api.ClusterSubnetSpec) ([]*api.InstanceGroup, error) {
cloudProvider := api.CloudProviderID(cluster.Spec.CloudProvider) cloudProvider := cluster.Spec.GetCloudProvider()
var nodes []*api.InstanceGroup var nodes []*api.InstanceGroup
@ -948,7 +948,7 @@ func setupNetworking(opt *NewClusterOptions, cluster *api.Cluster) error {
case "weave": case "weave":
cluster.Spec.Networking.Weave = &api.WeaveNetworkingSpec{} cluster.Spec.Networking.Weave = &api.WeaveNetworkingSpec{}
if cluster.Spec.CloudProvider == "aws" { if cluster.Spec.GetCloudProvider() == api.CloudProviderAWS {
// AWS supports "jumbo frames" of 9001 bytes and weave adds up to 87 bytes overhead // AWS supports "jumbo frames" of 9001 bytes and weave adds up to 87 bytes overhead
// sets the default to the largest number that leaves enough overhead and is divisible by 4 // sets the default to the largest number that leaves enough overhead and is divisible by 4
jumboFrameMTUSize := int32(8912) jumboFrameMTUSize := int32(8912)
@ -1027,7 +1027,7 @@ func setupTopology(opt *NewClusterOptions, cluster *api.Cluster, allZones sets.S
var zoneToSubnetProviderID map[string]string var zoneToSubnetProviderID map[string]string
var err error var err error
if len(opt.Zones) > 0 && len(opt.UtilitySubnetIDs) > 0 { if len(opt.Zones) > 0 && len(opt.UtilitySubnetIDs) > 0 {
switch api.CloudProviderID(cluster.Spec.CloudProvider) { switch cluster.Spec.GetCloudProvider() {
case api.CloudProviderAWS: case api.CloudProviderAWS:
zoneToSubnetProviderID, err = getAWSZoneToSubnetProviderID(cluster.Spec.NetworkID, opt.Zones[0][:len(opt.Zones[0])-1], opt.UtilitySubnetIDs) zoneToSubnetProviderID, err = getAWSZoneToSubnetProviderID(cluster.Spec.NetworkID, opt.Zones[0][:len(opt.Zones[0])-1], opt.UtilitySubnetIDs)
if err != nil { if err != nil {
@ -1065,7 +1065,7 @@ func setupTopology(opt *NewClusterOptions, cluster *api.Cluster, allZones sets.S
} }
addUtilitySubnets := true addUtilitySubnets := true
switch api.CloudProviderID(cluster.Spec.CloudProvider) { switch cluster.Spec.GetCloudProvider() {
case api.CloudProviderGCE: case api.CloudProviderGCE:
// GCE does not need utility subnets // GCE does not need utility subnets
addUtilitySubnets = false addUtilitySubnets = false
@ -1103,7 +1103,7 @@ func setupTopology(opt *NewClusterOptions, cluster *api.Cluster, allZones sets.S
PublicName: "bastion." + cluster.Name, PublicName: "bastion." + cluster.Name,
} }
} }
if api.CloudProviderID(cluster.Spec.CloudProvider) == api.CloudProviderGCE { if cluster.Spec.GetCloudProvider() == api.CloudProviderGCE {
bastionGroup.Spec.Zones = allZones.List() bastionGroup.Spec.Zones = allZones.List()
} }
@ -1123,7 +1123,7 @@ func setupTopology(opt *NewClusterOptions, cluster *api.Cluster, allZones sets.S
if opt.IPv6 { if opt.IPv6 {
cluster.Spec.NonMasqueradeCIDR = "::/0" cluster.Spec.NonMasqueradeCIDR = "::/0"
cluster.Spec.ExternalCloudControllerManager = &api.CloudControllerManagerConfig{} cluster.Spec.ExternalCloudControllerManager = &api.CloudControllerManagerConfig{}
if api.CloudProviderID(cluster.Spec.CloudProvider) == api.CloudProviderAWS { if cluster.Spec.GetCloudProvider() == api.CloudProviderAWS {
for i := range cluster.Spec.Subnets { for i := range cluster.Spec.Subnets {
cluster.Spec.Subnets[i].IPv6CIDR = fmt.Sprintf("/64#%x", i) cluster.Spec.Subnets[i].IPv6CIDR = fmt.Sprintf("/64#%x", i)
} }
@ -1147,11 +1147,11 @@ func setupTopology(opt *NewClusterOptions, cluster *api.Cluster, allZones sets.S
func setupAPI(opt *NewClusterOptions, cluster *api.Cluster) error { func setupAPI(opt *NewClusterOptions, cluster *api.Cluster) error {
// Populate the API access, so that it can be discoverable // Populate the API access, so that it can be discoverable
klog.Infof(" Cloud Provider ID = %s", api.CloudProviderID(cluster.Spec.CloudProvider)) klog.Infof(" Cloud Provider ID = %s", cluster.Spec.GetCloudProvider())
cluster.Spec.API = &api.AccessSpec{} cluster.Spec.API = &api.AccessSpec{}
if api.CloudProviderID(cluster.Spec.CloudProvider) == api.CloudProviderOpenstack { if cluster.Spec.GetCloudProvider() == api.CloudProviderOpenstack {
initializeOpenstackAPI(opt, cluster) initializeOpenstackAPI(opt, cluster)
} else if api.CloudProviderID(cluster.Spec.CloudProvider) == api.CloudProviderAzure { } else if cluster.Spec.GetCloudProvider() == api.CloudProviderAzure {
// Do nothing to disable the use of loadbalancer for the k8s API server. // Do nothing to disable the use of loadbalancer for the k8s API server.
// TODO(kenji): Remove this condition once we support the loadbalancer // TODO(kenji): Remove this condition once we support the loadbalancer
// in pkg/model/azuremodel/api_loadbalancer.go. // in pkg/model/azuremodel/api_loadbalancer.go.
@ -1192,7 +1192,7 @@ func setupAPI(opt *NewClusterOptions, cluster *api.Cluster) error {
cluster.Spec.API.LoadBalancer.SSLCertificate = opt.APISSLCertificate cluster.Spec.API.LoadBalancer.SSLCertificate = opt.APISSLCertificate
} }
if cluster.Spec.API.LoadBalancer != nil && cluster.Spec.API.LoadBalancer.Class == "" && api.CloudProviderID(cluster.Spec.CloudProvider) == api.CloudProviderAWS { if cluster.Spec.API.LoadBalancer != nil && cluster.Spec.API.LoadBalancer.Class == "" && cluster.Spec.GetCloudProvider() == api.CloudProviderAWS {
switch opt.APILoadBalancerClass { switch opt.APILoadBalancerClass {
case "", "classic": case "", "classic":
cluster.Spec.API.LoadBalancer.Class = api.LoadBalancerClassClassic cluster.Spec.API.LoadBalancer.Class = api.LoadBalancerClassClassic

View File

@ -131,7 +131,7 @@ func PopulateInstanceGroupSpec(cluster *kops.Cluster, input *kops.InstanceGroup,
} }
if ig.Spec.Tenancy != "" && ig.Spec.Tenancy != "default" { if ig.Spec.Tenancy != "" && ig.Spec.Tenancy != "default" {
switch kops.CloudProviderID(cluster.Spec.CloudProvider) { switch cluster.Spec.GetCloudProvider() {
case kops.CloudProviderAWS: case kops.CloudProviderAWS:
if _, ok := awsDedicatedInstanceExceptions[ig.Spec.MachineType]; ok { if _, ok := awsDedicatedInstanceExceptions[ig.Spec.MachineType]; ok {
return nil, fmt.Errorf("invalid dedicated instance type: %s", ig.Spec.MachineType) return nil, fmt.Errorf("invalid dedicated instance type: %s", ig.Spec.MachineType)
@ -176,7 +176,7 @@ func PopulateInstanceGroupSpec(cluster *kops.Cluster, input *kops.InstanceGroup,
} }
if cluster.Spec.Containerd != nil && cluster.Spec.Containerd.NvidiaGPU != nil && fi.BoolValue(cluster.Spec.Containerd.NvidiaGPU.Enabled) { if cluster.Spec.Containerd != nil && cluster.Spec.Containerd.NvidiaGPU != nil && fi.BoolValue(cluster.Spec.Containerd.NvidiaGPU.Enabled) {
switch kops.CloudProviderID(cluster.Spec.CloudProvider) { switch cluster.Spec.GetCloudProvider() {
case kops.CloudProviderAWS: case kops.CloudProviderAWS:
mt, err := awsup.GetMachineTypeInfo(cloud.(awsup.AWSCloud), ig.Spec.MachineType) mt, err := awsup.GetMachineTypeInfo(cloud.(awsup.AWSCloud), ig.Spec.MachineType)
if err != nil { if err != nil {
@ -208,7 +208,7 @@ func PopulateInstanceGroupSpec(cluster *kops.Cluster, input *kops.InstanceGroup,
// defaultMachineType returns the default MachineType for the instance group, based on the cloudprovider // defaultMachineType returns the default MachineType for the instance group, based on the cloudprovider
func defaultMachineType(cloud fi.Cloud, cluster *kops.Cluster, ig *kops.InstanceGroup) (string, error) { func defaultMachineType(cloud fi.Cloud, cluster *kops.Cluster, ig *kops.InstanceGroup) (string, error) {
switch kops.CloudProviderID(cluster.Spec.CloudProvider) { switch cluster.Spec.GetCloudProvider() {
case kops.CloudProviderAWS: case kops.CloudProviderAWS:
if ig.Spec.Manager == kops.InstanceManagerKarpenter { if ig.Spec.Manager == kops.InstanceManagerKarpenter {
return "", nil return "", nil
@ -262,7 +262,7 @@ func defaultMachineType(cloud fi.Cloud, cluster *kops.Cluster, ig *kops.Instance
} }
} }
klog.V(2).Infof("Cannot set default MachineType for CloudProvider=%q, Role=%q", cluster.Spec.CloudProvider, ig.Spec.Role) klog.V(2).Infof("Cannot set default MachineType for CloudProvider=%q, Role=%q", cluster.Spec.GetCloudProvider(), ig.Spec.Role)
return "", nil return "", nil
} }
@ -278,18 +278,18 @@ func defaultImage(cluster *kops.Cluster, channel *kops.Channel, architecture arc
} }
} }
if kubernetesVersion != nil { if kubernetesVersion != nil {
image := channel.FindImage(kops.CloudProviderID(cluster.Spec.CloudProvider), *kubernetesVersion, architecture) image := channel.FindImage(cluster.Spec.GetCloudProvider(), *kubernetesVersion, architecture)
if image != nil { if image != nil {
return image.Name return image.Name
} }
} }
} }
switch kops.CloudProviderID(cluster.Spec.CloudProvider) { switch cluster.Spec.GetCloudProvider() {
case kops.CloudProviderDO: case kops.CloudProviderDO:
return defaultDONodeImage return defaultDONodeImage
} }
klog.Infof("Cannot set default Image for CloudProvider=%q", cluster.Spec.CloudProvider) klog.Infof("Cannot set default Image for CloudProvider=%q", cluster.Spec.GetCloudProvider())
return "" return ""
} }

View File

@ -211,7 +211,7 @@ func (tf *TemplateFunctions) AddTo(dest template.FuncMap, secretStore fi.SecretS
if c.IPIPMode != "" { if c.IPIPMode != "" {
return c.IPIPMode return c.IPIPMode
} }
if kops.CloudProviderID(cluster.Spec.CloudProvider) == kops.CloudProviderOpenstack { if cluster.Spec.GetCloudProvider() == kops.CloudProviderOpenstack {
return "Always" return "Always"
} }
return "CrossSubnet" return "CrossSubnet"
@ -399,8 +399,8 @@ func (tf *TemplateFunctions) CloudControllerConfigArgv() ([]string, error) {
// take the cloud provider value from clusterSpec if unset // take the cloud provider value from clusterSpec if unset
if cluster.Spec.ExternalCloudControllerManager.CloudProvider == "" { if cluster.Spec.ExternalCloudControllerManager.CloudProvider == "" {
if cluster.Spec.CloudProvider != "" { if cluster.Spec.GetCloudProvider() != "" {
argv = append(argv, fmt.Sprintf("--cloud-provider=%s", cluster.Spec.CloudProvider)) argv = append(argv, fmt.Sprintf("--cloud-provider=%s", cluster.Spec.GetCloudProvider()))
} else { } else {
return nil, fmt.Errorf("Cloud Provider is not set") return nil, fmt.Errorf("Cloud Provider is not set")
} }
@ -493,7 +493,7 @@ func (tf *TemplateFunctions) DNSControllerArgv() ([]string, error) {
argv = append(argv, fmt.Sprintf("--gossip-seed-secondary=127.0.0.1:%d", wellknownports.ProtokubeGossipMemberlist)) argv = append(argv, fmt.Sprintf("--gossip-seed-secondary=127.0.0.1:%d", wellknownports.ProtokubeGossipMemberlist))
} }
} else { } else {
switch kops.CloudProviderID(cluster.Spec.CloudProvider) { switch cluster.Spec.GetCloudProvider() {
case kops.CloudProviderAWS: case kops.CloudProviderAWS:
if strings.HasPrefix(os.Getenv("AWS_REGION"), "cn-") { if strings.HasPrefix(os.Getenv("AWS_REGION"), "cn-") {
argv = append(argv, "--dns=gossip") argv = append(argv, "--dns=gossip")
@ -506,7 +506,7 @@ func (tf *TemplateFunctions) DNSControllerArgv() ([]string, error) {
argv = append(argv, "--dns=digitalocean") argv = append(argv, "--dns=digitalocean")
default: default:
return nil, fmt.Errorf("unhandled cloudprovider %q", cluster.Spec.CloudProvider) return nil, fmt.Errorf("unhandled cloudprovider %q", cluster.Spec.GetCloudProvider())
} }
} }
@ -540,7 +540,7 @@ func (tf *TemplateFunctions) KopsControllerConfig() (string, error) {
cluster := tf.Cluster cluster := tf.Cluster
config := &kopscontrollerconfig.Options{ config := &kopscontrollerconfig.Options{
Cloud: cluster.Spec.CloudProvider, Cloud: string(cluster.Spec.GetCloudProvider()),
ConfigBase: cluster.Spec.ConfigBase, ConfigBase: cluster.Spec.ConfigBase,
} }
@ -572,7 +572,7 @@ func (tf *TemplateFunctions) KopsControllerConfig() (string, error) {
CertNames: certNames, CertNames: certNames,
} }
switch kops.CloudProviderID(cluster.Spec.CloudProvider) { switch cluster.Spec.GetCloudProvider() {
case kops.CloudProviderAWS: case kops.CloudProviderAWS:
nodesRoles := sets.String{} nodesRoles := sets.String{}
for _, ig := range tf.InstanceGroups { for _, ig := range tf.InstanceGroups {
@ -618,7 +618,7 @@ func (tf *TemplateFunctions) KopsControllerConfig() (string, error) {
MaxTimeSkew: 300, MaxTimeSkew: 300,
} }
default: default:
return "", fmt.Errorf("unsupported cloud provider %s", cluster.Spec.CloudProvider) return "", fmt.Errorf("unsupported cloud provider %s", cluster.Spec.GetCloudProvider())
} }
} }
@ -661,9 +661,9 @@ func (tf *TemplateFunctions) ExternalDNSArgv() ([]string, error) {
var argv []string var argv []string
cloudProvider := cluster.Spec.CloudProvider cloudProvider := cluster.Spec.GetCloudProvider()
switch kops.CloudProviderID(cloudProvider) { switch cloudProvider {
case kops.CloudProviderAWS: case kops.CloudProviderAWS:
argv = append(argv, "--provider=aws") argv = append(argv, "--provider=aws")
case kops.CloudProviderGCE: case kops.CloudProviderGCE:
@ -671,7 +671,7 @@ func (tf *TemplateFunctions) ExternalDNSArgv() ([]string, error) {
argv = append(argv, "--provider=google") argv = append(argv, "--provider=google")
argv = append(argv, "--google-project="+project) argv = append(argv, "--google-project="+project)
default: default:
return nil, fmt.Errorf("unhandled cloudprovider %q", cluster.Spec.CloudProvider) return nil, fmt.Errorf("unhandled cloudprovider %q", cluster.Spec.GetCloudProvider())
} }
argv = append(argv, "--events") argv = append(argv, "--events")

View File

@ -38,7 +38,7 @@ func BuildCloud(cluster *kops.Cluster) (fi.Cloud, error) {
region := "" region := ""
project := "" project := ""
switch kops.CloudProviderID(cluster.Spec.CloudProvider) { switch cluster.Spec.GetCloudProvider() {
case kops.CloudProviderGCE: case kops.CloudProviderGCE:
{ {
for _, subnet := range cluster.Spec.Subnets { for _, subnet := range cluster.Spec.Subnets {
@ -146,7 +146,7 @@ func BuildCloud(cluster *kops.Cluster) (fi.Cloud, error) {
cloud = azureCloud cloud = azureCloud
} }
default: default:
return nil, fmt.Errorf("unknown CloudProvider %q", cluster.Spec.CloudProvider) return nil, fmt.Errorf("unknown CloudProvider %q", cluster.Spec.GetCloudProvider())
} }
return cloud, nil return cloud, nil
} }

View File

@ -184,7 +184,7 @@ func (c *NodeUpCommand) Run(out io.Writer) error {
cloudProvider := api.CloudProviderID(bootConfig.CloudProvider) cloudProvider := api.CloudProviderID(bootConfig.CloudProvider)
if cloudProvider == "" { if cloudProvider == "" {
cloudProvider = api.CloudProviderID(c.cluster.Spec.CloudProvider) cloudProvider = c.cluster.Spec.GetCloudProvider()
} }
err = evaluateSpec(c, &nodeupConfig, cloudProvider) err = evaluateSpec(c, &nodeupConfig, cloudProvider)

View File

@ -50,8 +50,8 @@ func (p *Prefix) String() string {
} }
func (e *Prefix) Find(c *fi.Context) (*Prefix, error) { func (e *Prefix) Find(c *fi.Context) (*Prefix, error) {
if kops.CloudProviderID(c.Cluster.Spec.CloudProvider) != kops.CloudProviderAWS { if c.Cluster.Spec.GetCloudProvider() != kops.CloudProviderAWS {
return nil, fmt.Errorf("unsupported cloud provider: %s", c.Cluster.Spec.CloudProvider) return nil, fmt.Errorf("unsupported cloud provider: %s", c.Cluster.Spec.GetCloudProvider())
} }
mac, err := getInstanceMetadataFirstValue("mac") mac, err := getInstanceMetadataFirstValue("mac")