From 7ce5b57c64229fd56181b1b80a3e5c369ab59706 Mon Sep 17 00:00:00 2001 From: Tariq Ibrahim Date: Wed, 3 Oct 2018 10:58:29 -0600 Subject: [PATCH] Migrating Get Addon By Name and Get Container Index By Name methods (#3938) --- pkg/acsengine/addons.go | 11 +- pkg/acsengine/defaults_test.go | 13 --- pkg/acsengine/engine.go | 9 -- pkg/acsengine/params_k8s.go | 202 +++++++++++++++++---------------- pkg/api/types.go | 18 ++- pkg/api/types_test.go | 14 ++- 6 files changed, 132 insertions(+), 135 deletions(-) diff --git a/pkg/acsengine/addons.go b/pkg/acsengine/addons.go index 48c44276f..d7e94e719 100644 --- a/pkg/acsengine/addons.go +++ b/pkg/acsengine/addons.go @@ -240,22 +240,13 @@ func getAddonsIndexByName(addons []api.KubernetesAddon, name string) int { return -1 } -func getAddonContainersIndexByName(containers []api.KubernetesContainerSpec, name string) int { - for i := range containers { - if containers[i].Name == name { - return i - } - } - return -1 -} - // assignDefaultAddonVals will assign default values to addon from defaults, for each property in addon that has a zero value func assignDefaultAddonVals(addon, defaults api.KubernetesAddon) api.KubernetesAddon { if addon.Enabled == nil { addon.Enabled = defaults.Enabled } for i := range defaults.Containers { - c := getAddonContainersIndexByName(addon.Containers, defaults.Containers[i].Name) + c := addon.GetAddonContainersIndexByName(defaults.Containers[i].Name) if c < 0 { addon.Containers = append(addon.Containers, defaults.Containers[i]) } else { diff --git a/pkg/acsengine/defaults_test.go b/pkg/acsengine/defaults_test.go index 66c041e7e..21902571f 100644 --- a/pkg/acsengine/defaults_test.go +++ b/pkg/acsengine/defaults_test.go @@ -180,19 +180,6 @@ func TestAddonsIndexByName(t *testing.T) { } } -func TestGetAddonContainersIndexByName(t *testing.T) { - addonName := "testaddon" - containers := getMockAddon(addonName).Containers - i := getAddonContainersIndexByName(containers, addonName) - if i != 0 { - t.Fatalf("getAddonContainersIndexByName() did not return the expected index value 0, instead returned: %d", i) - } - i = getAddonContainersIndexByName(containers, "nonExistentContainerName") - if i != -1 { - t.Fatalf("getAddonContainersIndexByName() did not return the expected index value 0, instead returned: %d", i) - } -} - func TestAssignDefaultAddonVals(t *testing.T) { addonName := "testaddon" customCPURequests := "60m" diff --git a/pkg/acsengine/engine.go b/pkg/acsengine/engine.go index c6795aaa4..5fc3ec2bc 100644 --- a/pkg/acsengine/engine.go +++ b/pkg/acsengine/engine.go @@ -1172,12 +1172,3 @@ func stringInSlice(a string, list []string) bool { func getSwarmVersions(orchestratorVersion, dockerComposeVersion string) string { return fmt.Sprintf("\"orchestratorVersion\": \"%s\",\n\"dockerComposeVersion\": \"%s\",\n", orchestratorVersion, dockerComposeVersion) } - -func getAddonByName(addons []api.KubernetesAddon, name string) api.KubernetesAddon { - for i := range addons { - if addons[i].Name == name { - return addons[i] - } - } - return api.KubernetesAddon{} -} diff --git a/pkg/acsengine/params_k8s.go b/pkg/acsengine/params_k8s.go index 490bcf5ae..7b033ebe3 100644 --- a/pkg/acsengine/params_k8s.go +++ b/pkg/acsengine/params_k8s.go @@ -14,29 +14,34 @@ import ( func assignKubernetesParameters(properties *api.Properties, parametersMap paramsMap, cloudSpecConfig AzureEnvironmentSpecConfig, generatorCode string) { addValue(parametersMap, "generatorCode", generatorCode) - if properties.OrchestratorProfile.IsKubernetes() || - properties.OrchestratorProfile.IsOpenShift() { - k8sVersion := properties.OrchestratorProfile.OrchestratorVersion + + orchestratorProfile := properties.OrchestratorProfile + + if orchestratorProfile.IsKubernetes() || + orchestratorProfile.IsOpenShift() { + k8sVersion := orchestratorProfile.OrchestratorVersion dockerEngineVersion := KubeConfigs[k8sVersion]["dockerEngineVersion"] - if properties.OrchestratorProfile.KubernetesConfig != nil { - if helpers.IsTrueBoolPointer(properties.OrchestratorProfile.KubernetesConfig.UseCloudControllerManager) { - kubernetesCcmSpec := properties.OrchestratorProfile.KubernetesConfig.KubernetesImageBase + KubeConfigs[k8sVersion]["ccm"] - if properties.OrchestratorProfile.KubernetesConfig.CustomCcmImage != "" { - kubernetesCcmSpec = properties.OrchestratorProfile.KubernetesConfig.CustomCcmImage + kubernetesConfig := orchestratorProfile.KubernetesConfig + + if kubernetesConfig != nil { + if helpers.IsTrueBoolPointer(kubernetesConfig.UseCloudControllerManager) { + kubernetesCcmSpec := kubernetesConfig.KubernetesImageBase + KubeConfigs[k8sVersion]["ccm"] + if kubernetesConfig.CustomCcmImage != "" { + kubernetesCcmSpec = kubernetesConfig.CustomCcmImage } addValue(parametersMap, "kubernetesCcmImageSpec", kubernetesCcmSpec) } - kubernetesHyperkubeSpec := properties.OrchestratorProfile.KubernetesConfig.KubernetesImageBase + KubeConfigs[k8sVersion]["hyperkube"] - if properties.OrchestratorProfile.KubernetesConfig.CustomHyperkubeImage != "" { - kubernetesHyperkubeSpec = properties.OrchestratorProfile.KubernetesConfig.CustomHyperkubeImage + kubernetesHyperkubeSpec := kubernetesConfig.KubernetesImageBase + KubeConfigs[k8sVersion]["hyperkube"] + if kubernetesConfig.CustomHyperkubeImage != "" { + kubernetesHyperkubeSpec = kubernetesConfig.CustomHyperkubeImage } - addValue(parametersMap, "kubeDNSServiceIP", properties.OrchestratorProfile.KubernetesConfig.DNSServiceIP) - addValue(parametersMap, "kubeServiceCidr", properties.OrchestratorProfile.KubernetesConfig.ServiceCIDR) + addValue(parametersMap, "kubeDNSServiceIP", kubernetesConfig.DNSServiceIP) + addValue(parametersMap, "kubeServiceCidr", kubernetesConfig.ServiceCIDR) addValue(parametersMap, "kubernetesHyperkubeSpec", kubernetesHyperkubeSpec) addValue(parametersMap, "kubernetesAddonManagerSpec", cloudSpecConfig.KubernetesSpecConfig.KubernetesImageBase+KubeConfigs[k8sVersion]["addonmanager"]) addValue(parametersMap, "kubernetesAddonResizerSpec", cloudSpecConfig.KubernetesSpecConfig.KubernetesImageBase+KubeConfigs[k8sVersion]["addonresizer"]) @@ -44,9 +49,9 @@ func assignKubernetesParameters(properties *api.Properties, parametersMap params addValue(parametersMap, "kubernetesExecHealthzSpec", cloudSpecConfig.KubernetesSpecConfig.KubernetesImageBase+KubeConfigs[k8sVersion]["exechealthz"]) addValue(parametersMap, "kubernetesDNSSidecarSpec", cloudSpecConfig.KubernetesSpecConfig.KubernetesImageBase+KubeConfigs[k8sVersion]["k8s-dns-sidecar"]) addValue(parametersMap, "kubernetesHeapsterSpec", cloudSpecConfig.KubernetesSpecConfig.KubernetesImageBase+KubeConfigs[k8sVersion]["heapster"]) - if properties.OrchestratorProfile.KubernetesConfig.IsTillerEnabled() { - tillerAddon := getAddonByName(properties.OrchestratorProfile.KubernetesConfig.Addons, DefaultTillerAddonName) - c := getAddonContainersIndexByName(tillerAddon.Containers, DefaultTillerAddonName) + if kubernetesConfig.IsTillerEnabled() { + tillerAddon := kubernetesConfig.GetAddonByName(DefaultTillerAddonName) + c := tillerAddon.GetAddonContainersIndexByName(DefaultTillerAddonName) if c > -1 { addValue(parametersMap, "kubernetesTillerCPURequests", tillerAddon.Containers[c].CPURequests) addValue(parametersMap, "kubernetesTillerCPULimit", tillerAddon.Containers[c].CPULimits) @@ -60,16 +65,16 @@ func assignKubernetesParameters(properties *api.Properties, parametersMap params } } } - if properties.OrchestratorProfile.KubernetesConfig.IsAADPodIdentityEnabled() { - aadPodIdentityAddon := getAddonByName(properties.OrchestratorProfile.KubernetesConfig.Addons, DefaultAADPodIdentityAddonName) - c := getAddonContainersIndexByName(aadPodIdentityAddon.Containers, DefaultAADPodIdentityAddonName) + if kubernetesConfig.IsAADPodIdentityEnabled() { + aadPodIdentityAddon := kubernetesConfig.GetAddonByName(DefaultAADPodIdentityAddonName) + c := aadPodIdentityAddon.GetAddonContainersIndexByName(DefaultAADPodIdentityAddonName) if c > -1 { addValue(parametersMap, "kubernetesAADPodIdentityEnabled", helpers.IsTrueBoolPointer(aadPodIdentityAddon.Enabled)) } } - if properties.OrchestratorProfile.KubernetesConfig.IsACIConnectorEnabled() { - aciConnectorAddon := getAddonByName(properties.OrchestratorProfile.KubernetesConfig.Addons, DefaultACIConnectorAddonName) - c := getAddonContainersIndexByName(aciConnectorAddon.Containers, DefaultACIConnectorAddonName) + if kubernetesConfig.IsACIConnectorEnabled() { + aciConnectorAddon := kubernetesConfig.GetAddonByName(DefaultACIConnectorAddonName) + c := aciConnectorAddon.GetAddonContainersIndexByName(DefaultACIConnectorAddonName) if c > -1 { addValue(parametersMap, "kubernetesACIConnectorEnabled", true) addValue(parametersMap, "kubernetesACIConnectorNodeName", aciConnectorAddon.Config["nodeName"]) @@ -89,9 +94,9 @@ func assignKubernetesParameters(properties *api.Properties, parametersMap params } else { addValue(parametersMap, "kubernetesACIConnectorEnabled", false) } - if properties.OrchestratorProfile.KubernetesConfig.IsClusterAutoscalerEnabled() { - clusterAutoscalerAddon := getAddonByName(properties.OrchestratorProfile.KubernetesConfig.Addons, DefaultClusterAutoscalerAddonName) - c := getAddonContainersIndexByName(clusterAutoscalerAddon.Containers, DefaultClusterAutoscalerAddonName) + if kubernetesConfig.IsClusterAutoscalerEnabled() { + clusterAutoscalerAddon := kubernetesConfig.GetAddonByName(DefaultClusterAutoscalerAddonName) + c := clusterAutoscalerAddon.GetAddonContainersIndexByName(DefaultClusterAutoscalerAddonName) if c > -1 { addValue(parametersMap, "kubernetesClusterAutoscalerAzureCloud", cloudSpecConfig.CloudName) addValue(parametersMap, "kubernetesClusterAutoscalerCPURequests", clusterAutoscalerAddon.Containers[c].CPURequests) @@ -101,7 +106,7 @@ func assignKubernetesParameters(properties *api.Properties, parametersMap params addValue(parametersMap, "kubernetesClusterAutoscalerMinNodes", clusterAutoscalerAddon.Config["minNodes"]) addValue(parametersMap, "kubernetesClusterAutoscalerMaxNodes", clusterAutoscalerAddon.Config["maxNodes"]) addValue(parametersMap, "kubernetesClusterAutoscalerEnabled", true) - addValue(parametersMap, "kubernetesClusterAutoscalerUseManagedIdentity", strings.ToLower(strconv.FormatBool(properties.OrchestratorProfile.KubernetesConfig.UseManagedIdentity))) + addValue(parametersMap, "kubernetesClusterAutoscalerUseManagedIdentity", strings.ToLower(strconv.FormatBool(kubernetesConfig.UseManagedIdentity))) if clusterAutoscalerAddon.Containers[c].Image != "" { addValue(parametersMap, "kubernetesClusterAutoscalerSpec", clusterAutoscalerAddon.Containers[c].Image) } else { @@ -112,16 +117,16 @@ func assignKubernetesParameters(properties *api.Properties, parametersMap params addValue(parametersMap, "kubernetesClusterAutoscalerEnabled", false) } flexVolumeDriverConfig := map[string]string{} - bfFlexVolumeInstallerAddon := getAddonByName(properties.OrchestratorProfile.KubernetesConfig.Addons, DefaultBlobfuseFlexVolumeAddonName) - c := getAddonContainersIndexByName(bfFlexVolumeInstallerAddon.Containers, DefaultBlobfuseFlexVolumeAddonName) + bfFlexVolumeInstallerAddon := kubernetesConfig.GetAddonByName(DefaultBlobfuseFlexVolumeAddonName) + c := bfFlexVolumeInstallerAddon.GetAddonContainersIndexByName(DefaultBlobfuseFlexVolumeAddonName) if c > -1 { flexVolumeDriverConfig["kubernetesBlobfuseFlexVolumeInstallerCPURequests"] = bfFlexVolumeInstallerAddon.Containers[c].CPURequests flexVolumeDriverConfig["kubernetesBlobfuseFlexVolumeInstallerCPULimit"] = bfFlexVolumeInstallerAddon.Containers[c].CPULimits flexVolumeDriverConfig["kubernetesBlobfuseFlexVolumeInstallerMemoryRequests"] = bfFlexVolumeInstallerAddon.Containers[c].MemoryRequests flexVolumeDriverConfig["kubernetesBlobfuseFlexVolumeInstallerMemoryLimit"] = bfFlexVolumeInstallerAddon.Containers[c].MemoryLimits } - smbFlexVolumeInstallerAddon := getAddonByName(properties.OrchestratorProfile.KubernetesConfig.Addons, DefaultSMBFlexVolumeAddonName) - c = getAddonContainersIndexByName(smbFlexVolumeInstallerAddon.Containers, DefaultSMBFlexVolumeAddonName) + smbFlexVolumeInstallerAddon := kubernetesConfig.GetAddonByName(DefaultSMBFlexVolumeAddonName) + c = smbFlexVolumeInstallerAddon.GetAddonContainersIndexByName(DefaultSMBFlexVolumeAddonName) if c > -1 { flexVolumeDriverConfig["kubernetesSMBFlexVolumeInstallerCPURequests"] = smbFlexVolumeInstallerAddon.Containers[c].CPURequests flexVolumeDriverConfig["kubernetesSMBFlexVolumeInstallerCPULimit"] = smbFlexVolumeInstallerAddon.Containers[c].CPULimits @@ -129,9 +134,9 @@ func assignKubernetesParameters(properties *api.Properties, parametersMap params flexVolumeDriverConfig["kubernetesSMBFlexVolumeInstallerMemoryLimit"] = smbFlexVolumeInstallerAddon.Containers[c].MemoryLimits } addValue(parametersMap, "flexVolumeDriverConfig", flexVolumeDriverConfig) - if properties.OrchestratorProfile.KubernetesConfig.IsKeyVaultFlexVolumeEnabled() { - kvFlexVolumeInstallerAddon := getAddonByName(properties.OrchestratorProfile.KubernetesConfig.Addons, DefaultKeyVaultFlexVolumeAddonName) - c := getAddonContainersIndexByName(kvFlexVolumeInstallerAddon.Containers, DefaultKeyVaultFlexVolumeAddonName) + if kubernetesConfig.IsKeyVaultFlexVolumeEnabled() { + kvFlexVolumeInstallerAddon := kubernetesConfig.GetAddonByName(DefaultKeyVaultFlexVolumeAddonName) + c := kvFlexVolumeInstallerAddon.GetAddonContainersIndexByName(DefaultKeyVaultFlexVolumeAddonName) if c > -1 { addValue(parametersMap, "kubernetesKeyVaultFlexVolumeInstallerCPURequests", kvFlexVolumeInstallerAddon.Containers[c].CPURequests) addValue(parametersMap, "kubernetesKeyVaultFlexVolumeInstallerCPULimit", kvFlexVolumeInstallerAddon.Containers[c].CPULimits) @@ -139,9 +144,9 @@ func assignKubernetesParameters(properties *api.Properties, parametersMap params addValue(parametersMap, "kubernetesKeyVaultFlexVolumeInstallerMemoryLimit", kvFlexVolumeInstallerAddon.Containers[c].MemoryLimits) } } - if properties.OrchestratorProfile.KubernetesConfig.IsDashboardEnabled() { - dashboardAddon := getAddonByName(properties.OrchestratorProfile.KubernetesConfig.Addons, DefaultDashboardAddonName) - c = getAddonContainersIndexByName(dashboardAddon.Containers, DefaultDashboardAddonName) + if kubernetesConfig.IsDashboardEnabled() { + dashboardAddon := kubernetesConfig.GetAddonByName(DefaultDashboardAddonName) + dashboardAddon.GetAddonContainersIndexByName(DefaultDashboardAddonName) if c > -1 { addValue(parametersMap, "kubernetesDashboardCPURequests", dashboardAddon.Containers[c].CPURequests) addValue(parametersMap, "kubernetesDashboardCPULimit", dashboardAddon.Containers[c].CPULimits) @@ -154,9 +159,9 @@ func assignKubernetesParameters(properties *api.Properties, parametersMap params } } } - if properties.OrchestratorProfile.KubernetesConfig.IsReschedulerEnabled() { - reschedulerAddon := getAddonByName(properties.OrchestratorProfile.KubernetesConfig.Addons, DefaultReschedulerAddonName) - c := getAddonContainersIndexByName(reschedulerAddon.Containers, DefaultReschedulerAddonName) + if kubernetesConfig.IsReschedulerEnabled() { + reschedulerAddon := kubernetesConfig.GetAddonByName(DefaultReschedulerAddonName) + c := reschedulerAddon.GetAddonContainersIndexByName(DefaultReschedulerAddonName) if c > -1 { addValue(parametersMap, "kubernetesReschedulerCPURequests", reschedulerAddon.Containers[c].CPURequests) addValue(parametersMap, "kubernetesReschedulerCPULimit", reschedulerAddon.Containers[c].CPULimits) @@ -170,8 +175,8 @@ func assignKubernetesParameters(properties *api.Properties, parametersMap params } } if properties.OrchestratorProfile.IsMetricsServerEnabled() { - metricsServerAddon := getAddonByName(properties.OrchestratorProfile.KubernetesConfig.Addons, DefaultMetricsServerAddonName) - c = getAddonContainersIndexByName(metricsServerAddon.Containers, DefaultMetricsServerAddonName) + metricsServerAddon := kubernetesConfig.GetAddonByName(DefaultMetricsServerAddonName) + c = metricsServerAddon.GetAddonContainersIndexByName(DefaultMetricsServerAddonName) if c > -1 { if metricsServerAddon.Containers[c].Image != "" { addValue(parametersMap, "kubernetesMetricsServerSpec", metricsServerAddon.Containers[c].Image) @@ -181,8 +186,8 @@ func assignKubernetesParameters(properties *api.Properties, parametersMap params } } if properties.IsNVIDIADevicePluginEnabled() { - nvidiaDevicePluginAddon := getAddonByName(properties.OrchestratorProfile.KubernetesConfig.Addons, NVIDIADevicePluginAddonName) - c := getAddonContainersIndexByName(nvidiaDevicePluginAddon.Containers, NVIDIADevicePluginAddonName) + nvidiaDevicePluginAddon := kubernetesConfig.GetAddonByName(NVIDIADevicePluginAddonName) + c := nvidiaDevicePluginAddon.GetAddonContainersIndexByName(NVIDIADevicePluginAddonName) if c > -1 { addValue(parametersMap, "kubernetesNVIDIADevicePluginCPURequests", nvidiaDevicePluginAddon.Containers[c].CPURequests) addValue(parametersMap, "kubernetesNVIDIADevicePluginCPULimit", nvidiaDevicePluginAddon.Containers[c].CPULimits) @@ -195,9 +200,9 @@ func assignKubernetesParameters(properties *api.Properties, parametersMap params } } } - if properties.OrchestratorProfile.KubernetesConfig.IsContainerMonitoringEnabled() { - containerMonitoringAddon := getAddonByName(properties.OrchestratorProfile.KubernetesConfig.Addons, ContainerMonitoringAddonName) - c := getAddonContainersIndexByName(containerMonitoringAddon.Containers, "omsagent") + if kubernetesConfig.IsContainerMonitoringEnabled() { + containerMonitoringAddon := kubernetesConfig.GetAddonByName(ContainerMonitoringAddonName) + c := containerMonitoringAddon.GetAddonContainersIndexByName("omsagent") if c > -1 { addValue(parametersMap, "omsAgentVersion", containerMonitoringAddon.Config["omsAgentVersion"]) addValue(parametersMap, "omsAgentDockerProviderVersion", containerMonitoringAddon.Config["dockerProviderVersion"]) @@ -214,15 +219,15 @@ func assignKubernetesParameters(properties *api.Properties, parametersMap params } } } - if properties.OrchestratorProfile.KubernetesConfig.LoadBalancerSku == "Standard" { + if kubernetesConfig.LoadBalancerSku == "Standard" { random := rand.New(rand.NewSource(time.Now().UnixNano())) elbsvcName := random.Int() addValue(parametersMap, "kuberneteselbsvcname", fmt.Sprintf("%d", elbsvcName)) } if properties.OrchestratorProfile.IsAzureCNI() { - azureCNINetworkmonitorAddon := getAddonByName(properties.OrchestratorProfile.KubernetesConfig.Addons, AzureCNINetworkMonitoringAddonName) - c = getAddonContainersIndexByName(azureCNINetworkmonitorAddon.Containers, AzureCNINetworkMonitoringAddonName) + azureCNINetworkmonitorAddon := kubernetesConfig.GetAddonByName(AzureCNINetworkMonitoringAddonName) + c = azureCNINetworkmonitorAddon.GetAddonContainersIndexByName(AzureCNINetworkMonitoringAddonName) if c > -1 { if azureCNINetworkmonitorAddon.Containers[c].Image != "" { addValue(parametersMap, "AzureCNINetworkMonitorImageURL", azureCNINetworkmonitorAddon.Containers[c].Image) @@ -234,50 +239,50 @@ func assignKubernetesParameters(properties *api.Properties, parametersMap params addValue(parametersMap, "kubernetesKubeDNSSpec", cloudSpecConfig.KubernetesSpecConfig.KubernetesImageBase+KubeConfigs[k8sVersion]["dns"]) addValue(parametersMap, "kubernetesPodInfraContainerSpec", cloudSpecConfig.KubernetesSpecConfig.KubernetesImageBase+KubeConfigs[k8sVersion]["pause"]) addValue(parametersMap, "cloudproviderConfig", api.CloudProviderConfig{ - CloudProviderBackoff: properties.OrchestratorProfile.KubernetesConfig.CloudProviderBackoff, - CloudProviderBackoffRetries: properties.OrchestratorProfile.KubernetesConfig.CloudProviderBackoffRetries, - CloudProviderBackoffJitter: strconv.FormatFloat(properties.OrchestratorProfile.KubernetesConfig.CloudProviderBackoffJitter, 'f', -1, 64), - CloudProviderBackoffDuration: properties.OrchestratorProfile.KubernetesConfig.CloudProviderBackoffDuration, - CloudProviderBackoffExponent: strconv.FormatFloat(properties.OrchestratorProfile.KubernetesConfig.CloudProviderBackoffExponent, 'f', -1, 64), - CloudProviderRateLimit: properties.OrchestratorProfile.KubernetesConfig.CloudProviderRateLimit, - CloudProviderRateLimitQPS: strconv.FormatFloat(properties.OrchestratorProfile.KubernetesConfig.CloudProviderRateLimitQPS, 'f', -1, 64), - CloudProviderRateLimitBucket: properties.OrchestratorProfile.KubernetesConfig.CloudProviderRateLimitBucket, + CloudProviderBackoff: kubernetesConfig.CloudProviderBackoff, + CloudProviderBackoffRetries: kubernetesConfig.CloudProviderBackoffRetries, + CloudProviderBackoffJitter: strconv.FormatFloat(kubernetesConfig.CloudProviderBackoffJitter, 'f', -1, 64), + CloudProviderBackoffDuration: kubernetesConfig.CloudProviderBackoffDuration, + CloudProviderBackoffExponent: strconv.FormatFloat(kubernetesConfig.CloudProviderBackoffExponent, 'f', -1, 64), + CloudProviderRateLimit: kubernetesConfig.CloudProviderRateLimit, + CloudProviderRateLimitQPS: strconv.FormatFloat(kubernetesConfig.CloudProviderRateLimitQPS, 'f', -1, 64), + CloudProviderRateLimitBucket: kubernetesConfig.CloudProviderRateLimitBucket, }) - addValue(parametersMap, "kubeClusterCidr", properties.OrchestratorProfile.KubernetesConfig.ClusterSubnet) - addValue(parametersMap, "kubernetesNonMasqueradeCidr", properties.OrchestratorProfile.KubernetesConfig.KubeletConfig["--non-masquerade-cidr"]) - addValue(parametersMap, "kubernetesKubeletClusterDomain", properties.OrchestratorProfile.KubernetesConfig.KubeletConfig["--cluster-domain"]) - addValue(parametersMap, "dockerBridgeCidr", properties.OrchestratorProfile.KubernetesConfig.DockerBridgeSubnet) - addValue(parametersMap, "networkPolicy", properties.OrchestratorProfile.KubernetesConfig.NetworkPolicy) - addValue(parametersMap, "networkPlugin", properties.OrchestratorProfile.KubernetesConfig.NetworkPlugin) - addValue(parametersMap, "containerRuntime", properties.OrchestratorProfile.KubernetesConfig.ContainerRuntime) + addValue(parametersMap, "kubeClusterCidr", kubernetesConfig.ClusterSubnet) + addValue(parametersMap, "kubernetesNonMasqueradeCidr", kubernetesConfig.KubeletConfig["--non-masquerade-cidr"]) + addValue(parametersMap, "kubernetesKubeletClusterDomain", kubernetesConfig.KubeletConfig["--cluster-domain"]) + addValue(parametersMap, "dockerBridgeCidr", kubernetesConfig.DockerBridgeSubnet) + addValue(parametersMap, "networkPolicy", kubernetesConfig.NetworkPolicy) + addValue(parametersMap, "networkPlugin", kubernetesConfig.NetworkPlugin) + addValue(parametersMap, "containerRuntime", kubernetesConfig.ContainerRuntime) addValue(parametersMap, "containerdDownloadURLBase", cloudSpecConfig.KubernetesSpecConfig.ContainerdDownloadURLBase) addValue(parametersMap, "cniPluginsURL", cloudSpecConfig.KubernetesSpecConfig.CNIPluginsDownloadURL) addValue(parametersMap, "vnetCniLinuxPluginsURL", cloudSpecConfig.KubernetesSpecConfig.VnetCNILinuxPluginsDownloadURL) addValue(parametersMap, "vnetCniWindowsPluginsURL", cloudSpecConfig.KubernetesSpecConfig.VnetCNIWindowsPluginsDownloadURL) - addValue(parametersMap, "gchighthreshold", properties.OrchestratorProfile.KubernetesConfig.GCHighThreshold) - addValue(parametersMap, "gclowthreshold", properties.OrchestratorProfile.KubernetesConfig.GCLowThreshold) + addValue(parametersMap, "gchighthreshold", kubernetesConfig.GCHighThreshold) + addValue(parametersMap, "gclowthreshold", kubernetesConfig.GCLowThreshold) addValue(parametersMap, "etcdDownloadURLBase", cloudSpecConfig.KubernetesSpecConfig.EtcdDownloadURLBase) - addValue(parametersMap, "etcdVersion", properties.OrchestratorProfile.KubernetesConfig.EtcdVersion) - addValue(parametersMap, "etcdDiskSizeGB", properties.OrchestratorProfile.KubernetesConfig.EtcdDiskSizeGB) - addValue(parametersMap, "etcdEncryptionKey", properties.OrchestratorProfile.KubernetesConfig.EtcdEncryptionKey) - if properties.OrchestratorProfile.KubernetesConfig.PrivateJumpboxProvision() { - addValue(parametersMap, "jumpboxVMName", properties.OrchestratorProfile.KubernetesConfig.PrivateCluster.JumpboxProfile.Name) - addValue(parametersMap, "jumpboxVMSize", properties.OrchestratorProfile.KubernetesConfig.PrivateCluster.JumpboxProfile.VMSize) - addValue(parametersMap, "jumpboxUsername", properties.OrchestratorProfile.KubernetesConfig.PrivateCluster.JumpboxProfile.Username) - addValue(parametersMap, "jumpboxOSDiskSizeGB", properties.OrchestratorProfile.KubernetesConfig.PrivateCluster.JumpboxProfile.OSDiskSizeGB) - addValue(parametersMap, "jumpboxPublicKey", properties.OrchestratorProfile.KubernetesConfig.PrivateCluster.JumpboxProfile.PublicKey) - addValue(parametersMap, "jumpboxStorageProfile", properties.OrchestratorProfile.KubernetesConfig.PrivateCluster.JumpboxProfile.StorageProfile) + addValue(parametersMap, "etcdVersion", kubernetesConfig.EtcdVersion) + addValue(parametersMap, "etcdDiskSizeGB", kubernetesConfig.EtcdDiskSizeGB) + addValue(parametersMap, "etcdEncryptionKey", kubernetesConfig.EtcdEncryptionKey) + if kubernetesConfig.PrivateJumpboxProvision() { + addValue(parametersMap, "jumpboxVMName", kubernetesConfig.PrivateCluster.JumpboxProfile.Name) + addValue(parametersMap, "jumpboxVMSize", kubernetesConfig.PrivateCluster.JumpboxProfile.VMSize) + addValue(parametersMap, "jumpboxUsername", kubernetesConfig.PrivateCluster.JumpboxProfile.Username) + addValue(parametersMap, "jumpboxOSDiskSizeGB", kubernetesConfig.PrivateCluster.JumpboxProfile.OSDiskSizeGB) + addValue(parametersMap, "jumpboxPublicKey", kubernetesConfig.PrivateCluster.JumpboxProfile.PublicKey) + addValue(parametersMap, "jumpboxStorageProfile", kubernetesConfig.PrivateCluster.JumpboxProfile.StorageProfile) } - if properties.OrchestratorProfile.KubernetesConfig.DockerEngineVersion != "" { - dockerEngineVersion = properties.OrchestratorProfile.KubernetesConfig.DockerEngineVersion + if kubernetesConfig.DockerEngineVersion != "" { + dockerEngineVersion = kubernetesConfig.DockerEngineVersion } - addValue(parametersMap, "enableAggregatedAPIs", properties.OrchestratorProfile.KubernetesConfig.EnableAggregatedAPIs) + addValue(parametersMap, "enableAggregatedAPIs", kubernetesConfig.EnableAggregatedAPIs) } - if properties.OrchestratorProfile.KubernetesConfig == nil || - !properties.OrchestratorProfile.KubernetesConfig.UseManagedIdentity { + if kubernetesConfig == nil || + !kubernetesConfig.UseManagedIdentity { addValue(parametersMap, "servicePrincipalClientId", properties.ServicePrincipalProfile.ClientID) if properties.ServicePrincipalProfile.KeyvaultSecretRef != nil { @@ -289,7 +294,7 @@ func assignKubernetesParameters(properties *api.Properties, parametersMap params addValue(parametersMap, "servicePrincipalClientSecret", properties.ServicePrincipalProfile.Secret) } - if properties.OrchestratorProfile.KubernetesConfig != nil && helpers.IsTrueBoolPointer(properties.OrchestratorProfile.KubernetesConfig.EnableEncryptionWithExternalKms) && !properties.OrchestratorProfile.KubernetesConfig.UseManagedIdentity && properties.ServicePrincipalProfile.ObjectID != "" { + if kubernetesConfig != nil && helpers.IsTrueBoolPointer(kubernetesConfig.EnableEncryptionWithExternalKms) && !kubernetesConfig.UseManagedIdentity && properties.ServicePrincipalProfile.ObjectID != "" { addValue(parametersMap, "servicePrincipalObjectId", properties.ServicePrincipalProfile.ObjectID) } } @@ -334,24 +339,25 @@ func assignKubernetesParameters(properties *api.Properties, parametersMap params } **/ - if properties.CertificateProfile != nil { - addSecret(parametersMap, "apiServerCertificate", properties.CertificateProfile.APIServerCertificate, true) - addSecret(parametersMap, "apiServerPrivateKey", properties.CertificateProfile.APIServerPrivateKey, true) - addSecret(parametersMap, "caCertificate", properties.CertificateProfile.CaCertificate, true) - addSecret(parametersMap, "caPrivateKey", properties.CertificateProfile.CaPrivateKey, true) - addSecret(parametersMap, "clientCertificate", properties.CertificateProfile.ClientCertificate, true) - addSecret(parametersMap, "clientPrivateKey", properties.CertificateProfile.ClientPrivateKey, true) - addSecret(parametersMap, "kubeConfigCertificate", properties.CertificateProfile.KubeConfigCertificate, true) - addSecret(parametersMap, "kubeConfigPrivateKey", properties.CertificateProfile.KubeConfigPrivateKey, true) + certificateProfile := properties.CertificateProfile + if certificateProfile != nil { + addSecret(parametersMap, "apiServerCertificate", certificateProfile.APIServerCertificate, true) + addSecret(parametersMap, "apiServerPrivateKey", certificateProfile.APIServerPrivateKey, true) + addSecret(parametersMap, "caCertificate", certificateProfile.CaCertificate, true) + addSecret(parametersMap, "caPrivateKey", certificateProfile.CaPrivateKey, true) + addSecret(parametersMap, "clientCertificate", certificateProfile.ClientCertificate, true) + addSecret(parametersMap, "clientPrivateKey", certificateProfile.ClientPrivateKey, true) + addSecret(parametersMap, "kubeConfigCertificate", certificateProfile.KubeConfigCertificate, true) + addSecret(parametersMap, "kubeConfigPrivateKey", certificateProfile.KubeConfigPrivateKey, true) if properties.MasterProfile != nil { - addSecret(parametersMap, "etcdServerCertificate", properties.CertificateProfile.EtcdServerCertificate, true) - addSecret(parametersMap, "etcdServerPrivateKey", properties.CertificateProfile.EtcdServerPrivateKey, true) - addSecret(parametersMap, "etcdClientCertificate", properties.CertificateProfile.EtcdClientCertificate, true) - addSecret(parametersMap, "etcdClientPrivateKey", properties.CertificateProfile.EtcdClientPrivateKey, true) - for i, pc := range properties.CertificateProfile.EtcdPeerCertificates { + addSecret(parametersMap, "etcdServerCertificate", certificateProfile.EtcdServerCertificate, true) + addSecret(parametersMap, "etcdServerPrivateKey", certificateProfile.EtcdServerPrivateKey, true) + addSecret(parametersMap, "etcdClientCertificate", certificateProfile.EtcdClientCertificate, true) + addSecret(parametersMap, "etcdClientPrivateKey", certificateProfile.EtcdClientPrivateKey, true) + for i, pc := range certificateProfile.EtcdPeerCertificates { addSecret(parametersMap, "etcdPeerCertificate"+strconv.Itoa(i), pc, true) } - for i, pk := range properties.CertificateProfile.EtcdPeerPrivateKeys { + for i, pk := range certificateProfile.EtcdPeerPrivateKeys { addSecret(parametersMap, "etcdPeerPrivateKey"+strconv.Itoa(i), pk, true) } } @@ -361,7 +367,7 @@ func assignKubernetesParameters(properties *api.Properties, parametersMap params addValue(parametersMap, "kubernetesEndpoint", properties.HostedMasterProfile.FQDN) } - if !properties.OrchestratorProfile.IsOpenShift() { + if !orchestratorProfile.IsOpenShift() { addValue(parametersMap, "dockerEngineDownloadRepo", cloudSpecConfig.DockerSpecConfig.DockerEngineRepo) addValue(parametersMap, "dockerEngineVersion", dockerEngineVersion) } diff --git a/pkg/api/types.go b/pkg/api/types.go index 4b4ace449..e55068208 100644 --- a/pkg/api/types.go +++ b/pkg/api/types.go @@ -253,6 +253,16 @@ func (a *KubernetesAddon) IsEnabled(ifNil bool) bool { return *a.Enabled } +// GetAddonContainersIndexByName returns the KubernetesAddon containers index with the name `containerName` +func (a KubernetesAddon) GetAddonContainersIndexByName(containerName string) int { + for i := range a.Containers { + if a.Containers[i].Name == containerName { + return i + } + } + return -1 +} + // PrivateCluster defines the configuration for a private cluster type PrivateCluster struct { Enabled *bool `json:"enabled,omitempty"` @@ -1118,8 +1128,8 @@ func (o *OrchestratorProfile) GetAPIServerEtcdAPIVersion() string { return "" } -// getAddonFromName returns the KubernetesAddon instance with name `addonName` -func (k *KubernetesConfig) getAddonFromName(addonName string) KubernetesAddon { +// GetAddonByName returns the KubernetesAddon instance with name `addonName` +func (k *KubernetesConfig) GetAddonByName(addonName string) KubernetesAddon { var kubeAddon KubernetesAddon for _, addon := range k.Addons { if addon.Name == addonName { @@ -1132,14 +1142,14 @@ func (k *KubernetesConfig) getAddonFromName(addonName string) KubernetesAddon { // GetAddonScript retrieves the raw script data specified as input for the k8s addon with name "addonName". func (k *KubernetesConfig) GetAddonScript(addonName string) string { - kubeAddon := k.getAddonFromName(addonName) + kubeAddon := k.GetAddonByName(addonName) return kubeAddon.Data } // isAddonEnabled checks whether a k8s addon with name "addonName" is enabled or not based on the Enabled field of KubernetesAddon. // If the value of Enabled in nil, the "defaultValue" is returned. func (k *KubernetesConfig) isAddonEnabled(addonName string, defaultValue bool) bool { - kubeAddon := k.getAddonFromName(addonName) + kubeAddon := k.GetAddonByName(addonName) return kubeAddon.IsEnabled(defaultValue) } diff --git a/pkg/api/types_test.go b/pkg/api/types_test.go index 829ee3846..9e418b596 100644 --- a/pkg/api/types_test.go +++ b/pkg/api/types_test.go @@ -2041,5 +2041,17 @@ func TestProperties_GetClusterMetadata(t *testing.T) { if metadata.PrimaryScaleSetName != expectedPrimaryScaleSetName { t.Errorf("expected PrimaryScaleSetName name %s, but got %s", expectedPrimaryScaleSetName, metadata.PrimaryScaleSetName) } - +} + +func TestGetAddonContainersIndexByName(t *testing.T) { + addonName := "testaddon" + addon := getMockAddon(addonName) + i := addon.GetAddonContainersIndexByName(addonName) + if i != 0 { + t.Fatalf("getAddonContainersIndexByName() did not return the expected index value 0, instead returned: %d", i) + } + i = addon.GetAddonContainersIndexByName("nonExistentContainerName") + if i != -1 { + t.Fatalf("getAddonContainersIndexByName() did not return the expected index value 0, instead returned: %d", i) + } }