k8c.io/api/v3@v3.0.0-20230904060738-b0a93889c0b6/pkg/apis/kubermatic/v1/helper/provider.go (about) 1 /* 2 Copyright 2023 The Kubermatic Kubernetes Platform contributors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package helper 18 19 import ( 20 "fmt" 21 22 kubermaticv1 "k8c.io/api/v3/pkg/apis/kubermatic/v1" 23 ) 24 25 // ExternalClusterCloudProviderName returns the provider name for the given ExternalClusterCloudSpec. 26 func ExternalClusterCloudProviderName(spec kubermaticv1.ExternalClusterCloudSpec) (kubermaticv1.ExternalClusterProvider, error) { 27 var providers []kubermaticv1.ExternalClusterProvider 28 if spec.AKS != nil { 29 providers = append(providers, kubermaticv1.ExternalClusterProviderAKS) 30 } 31 if spec.EKS != nil { 32 providers = append(providers, kubermaticv1.ExternalClusterProviderEKS) 33 } 34 if spec.GKE != nil { 35 providers = append(providers, kubermaticv1.ExternalClusterProviderGKE) 36 } 37 if spec.KubeOne != nil { 38 providers = append(providers, kubermaticv1.ExternalClusterProviderKubeOne) 39 } 40 if spec.BringYourOwn != nil { 41 providers = append(providers, kubermaticv1.ExternalClusterProviderBringYourOwn) 42 } 43 if len(providers) == 0 { 44 return "", nil 45 } 46 if len(providers) != 1 { 47 return "", fmt.Errorf("only one cloud provider can be set in ExternalClusterCloudSpec, but found the following providers: %v", providers) 48 } 49 return providers[0], nil 50 } 51 52 // ClusterCloudProviderName returns the provider name for the given CloudSpec. 53 func ClusterCloudProviderName(spec kubermaticv1.CloudSpec) (kubermaticv1.CloudProvider, error) { 54 var providers []kubermaticv1.CloudProvider 55 if spec.AWS != nil { 56 providers = append(providers, kubermaticv1.CloudProviderAWS) 57 } 58 if spec.Alibaba != nil { 59 providers = append(providers, kubermaticv1.CloudProviderAlibaba) 60 } 61 if spec.Anexia != nil { 62 providers = append(providers, kubermaticv1.CloudProviderAnexia) 63 } 64 if spec.Azure != nil { 65 providers = append(providers, kubermaticv1.CloudProviderAzure) 66 } 67 if spec.BringYourOwn != nil { 68 providers = append(providers, kubermaticv1.CloudProviderBringYourOwn) 69 } 70 if spec.Digitalocean != nil { 71 providers = append(providers, kubermaticv1.CloudProviderDigitalocean) 72 } 73 if spec.Fake != nil { 74 providers = append(providers, kubermaticv1.CloudProviderFake) 75 } 76 if spec.GCP != nil { 77 providers = append(providers, kubermaticv1.CloudProviderGCP) 78 } 79 if spec.Hetzner != nil { 80 providers = append(providers, kubermaticv1.CloudProviderHetzner) 81 } 82 if spec.KubeVirt != nil { 83 providers = append(providers, kubermaticv1.CloudProviderKubeVirt) 84 } 85 if spec.OpenStack != nil { 86 providers = append(providers, kubermaticv1.CloudProviderOpenStack) 87 } 88 if spec.Packet != nil { 89 providers = append(providers, kubermaticv1.CloudProviderPacket) 90 } 91 if spec.VSphere != nil { 92 providers = append(providers, kubermaticv1.CloudProviderVSphere) 93 } 94 if spec.Nutanix != nil { 95 providers = append(providers, kubermaticv1.CloudProviderNutanix) 96 } 97 if spec.VMwareCloudDirector != nil { 98 providers = append(providers, kubermaticv1.CloudProviderVMwareCloudDirector) 99 } 100 if len(providers) == 0 { 101 return "", nil 102 } 103 if len(providers) != 1 { 104 return "", fmt.Errorf("only one cloud provider can be set in CloudSpec, but found the following providers: %v", providers) 105 } 106 return providers[0], nil 107 } 108 109 // DatacenterCloudProviderName returns the provider name for the given Datacenter. 110 func DatacenterCloudProviderName(spec *kubermaticv1.DatacenterProviderSpec) (kubermaticv1.CloudProvider, error) { 111 if spec == nil { 112 return "", nil 113 } 114 var providers []kubermaticv1.CloudProvider 115 if spec.BringYourOwn != nil { 116 providers = append(providers, kubermaticv1.CloudProviderBringYourOwn) 117 } 118 if spec.Digitalocean != nil { 119 providers = append(providers, kubermaticv1.CloudProviderDigitalocean) 120 } 121 if spec.AWS != nil { 122 providers = append(providers, kubermaticv1.CloudProviderAWS) 123 } 124 if spec.OpenStack != nil { 125 providers = append(providers, kubermaticv1.CloudProviderOpenStack) 126 } 127 if spec.Packet != nil { 128 providers = append(providers, kubermaticv1.CloudProviderPacket) 129 } 130 if spec.Hetzner != nil { 131 providers = append(providers, kubermaticv1.CloudProviderHetzner) 132 } 133 if spec.VSphere != nil { 134 providers = append(providers, kubermaticv1.CloudProviderVSphere) 135 } 136 if spec.Azure != nil { 137 providers = append(providers, kubermaticv1.CloudProviderAzure) 138 } 139 if spec.GCP != nil { 140 providers = append(providers, kubermaticv1.CloudProviderGCP) 141 } 142 if spec.Fake != nil { 143 providers = append(providers, kubermaticv1.CloudProviderFake) 144 } 145 if spec.KubeVirt != nil { 146 providers = append(providers, kubermaticv1.CloudProviderKubeVirt) 147 } 148 if spec.Alibaba != nil { 149 providers = append(providers, kubermaticv1.CloudProviderAlibaba) 150 } 151 if spec.Anexia != nil { 152 providers = append(providers, kubermaticv1.CloudProviderAnexia) 153 } 154 if spec.Nutanix != nil { 155 providers = append(providers, kubermaticv1.CloudProviderNutanix) 156 } 157 if spec.VMwareCloudDirector != nil { 158 providers = append(providers, kubermaticv1.CloudProviderVMwareCloudDirector) 159 } 160 if len(providers) == 0 { 161 return "", nil 162 } 163 if len(providers) != 1 { 164 return "", fmt.Errorf("only one cloud provider can be set in the Datacenter, but the following were set: %+v", spec) 165 } 166 return providers[0], nil 167 }