Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: upgrade kubernetes versions to 1.25.0/1.26.0 #7685

Merged
merged 2 commits into from
Aug 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
41 changes: 22 additions & 19 deletions test/integration/smoke/test_kubernetes_clusters.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,9 @@ def setUpClass(cls):
cls.kubernetes_version_ids = []
cls.vpcAllowAllAclDetailsMap = {}

cls.k8s_version_from = cls.services["cks_kubernetes_version_upgrade_from"]
cls.k8s_version_to = cls.services["cks_kubernetes_version_upgrade_to"]

if cls.hypervisorNotSupported == False:
cls.endpoint_url = Configurations.list(cls.apiclient, name="endpoint.url")[0].value
if "localhost" in cls.endpoint_url:
Expand All @@ -105,20 +108,20 @@ def setUpClass(cls):

if cls.setup_failed == False:
try:
cls.kubernetes_version_1_23_3 = cls.addKubernetesSupportedVersion(cls.services["cks_kubernetes_versions"]["1.23.3"])
cls.kubernetes_version_ids.append(cls.kubernetes_version_1_23_3.id)
cls.kubernetes_version_v1 = cls.addKubernetesSupportedVersion(cls.services["cks_kubernetes_versions"][cls.k8s_version_from])
cls.kubernetes_version_ids.append(cls.kubernetes_version_v1.id)
except Exception as e:
cls.setup_failed = True
cls.debug("Failed to get Kubernetes version ISO in ready state, version=%s, url=%s, %s" %
(cls.services["cks_kubernetes_versions"]["1.23.3"]["semanticversion"], cls.services["cks_kubernetes_versions"]["1.23.3"]["url"], e))
(cls.services["cks_kubernetes_versions"][cls.k8s_version_from]["semanticversion"], cls.services["cks_kubernetes_versions"][cls.k8s_version_from]["url"], e))
if cls.setup_failed == False:
try:
cls.kubernetes_version_1_24_0 = cls.addKubernetesSupportedVersion(cls.services["cks_kubernetes_versions"]["1.24.0"])
cls.kubernetes_version_ids.append(cls.kubernetes_version_1_24_0.id)
cls.kubernetes_version_v2 = cls.addKubernetesSupportedVersion(cls.services["cks_kubernetes_versions"][cls.k8s_version_to])
cls.kubernetes_version_ids.append(cls.kubernetes_version_v2.id)
except Exception as e:
cls.setup_failed = True
cls.debug("Failed to get Kubernetes version ISO in ready state, version=%s, url=%s, %s" %
(cls.services["cks_kubernetes_versions"]["1.24.0"]["semanticversion"], cls.services["cks_kubernetes_versions"]["1.24.0"]["url"], e))
(cls.services["cks_kubernetes_versions"][cls.k8s_version_to]["semanticversion"], cls.services["cks_kubernetes_versions"][cls.k8s_version_to]["url"], e))

if cls.setup_failed == False:
cks_offering_data = cls.services["cks_service_offering"]
Expand Down Expand Up @@ -366,20 +369,20 @@ def test_01_invalid_upgrade_kubernetes_cluster(self):
if self.setup_failed == True:
self.fail("Setup incomplete")
global k8s_cluster
k8s_cluster = self.getValidKubernetesCluster(version=self.kubernetes_version_1_24_0)
k8s_cluster = self.getValidKubernetesCluster(version=self.kubernetes_version_v2)

self.debug("Downgrading Kubernetes cluster with ID: %s to a lower version. This should fail!" % k8s_cluster.id)

try:
k8s_cluster = self.upgradeKubernetesCluster(k8s_cluster.id, self.kubernetes_version_1_23_3.id)
self.debug("Invalid CKS Kubernetes HA cluster deployed with ID: %s. Deleting it and failing test." % self.kubernetes_version_1_23_3.id)
k8s_cluster = self.upgradeKubernetesCluster(k8s_cluster.id, self.kubernetes_version_v1.id)
self.debug("Invalid CKS Kubernetes HA cluster deployed with ID: %s. Deleting it and failing test." % self.kubernetes_version_v1.id)
self.deleteKubernetesClusterAndVerify(k8s_cluster.id, False, True)
self.fail("Kubernetes cluster downgrade to a lower Kubernetes supported version. Must be an error.")
except Exception as e:
self.debug("Upgrading Kubernetes cluster with invalid Kubernetes supported version check successful, API failure: %s" % e)
self.deleteKubernetesClusterAndVerify(k8s_cluster.id, False, True)

self.verifyKubernetesClusterUpgrade(k8s_cluster, self.kubernetes_version_1_24_0.id)
self.verifyKubernetesClusterUpgrade(k8s_cluster, self.kubernetes_version_v2.id)
return

@attr(tags=["advanced", "smoke"], required_hardware="true")
Expand All @@ -393,17 +396,17 @@ def test_02_upgrade_kubernetes_cluster(self):
if self.setup_failed == True:
self.fail("Setup incomplete")
global k8s_cluster
k8s_cluster = self.getValidKubernetesCluster(version=self.kubernetes_version_1_23_3)
k8s_cluster = self.getValidKubernetesCluster(version=self.kubernetes_version_v1)

time.sleep(self.services["sleep"])
self.debug("Upgrading Kubernetes cluster with ID: %s" % k8s_cluster.id)
try:
k8s_cluster = self.upgradeKubernetesCluster(k8s_cluster.id, self.kubernetes_version_1_24_0.id)
k8s_cluster = self.upgradeKubernetesCluster(k8s_cluster.id, self.kubernetes_version_v2.id)
except Exception as e:
self.deleteKubernetesClusterAndVerify(k8s_cluster.id, False, True)
self.fail("Failed to upgrade Kubernetes cluster due to: %s" % e)

self.verifyKubernetesClusterUpgrade(k8s_cluster, self.kubernetes_version_1_24_0.id)
self.verifyKubernetesClusterUpgrade(k8s_cluster, self.kubernetes_version_v2.id)
return

@attr(tags=["advanced", "smoke"], required_hardware="true")
Expand Down Expand Up @@ -451,7 +454,7 @@ def test_04_autoscale_kubernetes_cluster(self):
if self.setup_failed == True:
self.fail("Setup incomplete")
global k8s_cluster
k8s_cluster = self.getValidKubernetesCluster(version=self.kubernetes_version_1_24_0)
k8s_cluster = self.getValidKubernetesCluster(version=self.kubernetes_version_v2)

self.debug("Autoscaling Kubernetes cluster with ID: %s" % k8s_cluster.id)
try:
Expand Down Expand Up @@ -551,17 +554,17 @@ def test_08_upgrade_kubernetes_ha_cluster(self):
if self.default_network:
self.skipTest("HA cluster on shared network requires external ip address, skipping it")
global k8s_cluster
k8s_cluster = self.getValidKubernetesCluster(1, 2, version=self.kubernetes_version_1_23_3)
k8s_cluster = self.getValidKubernetesCluster(1, 2, version=self.kubernetes_version_v1)
time.sleep(self.services["sleep"])

self.debug("Upgrading HA Kubernetes cluster with ID: %s" % k8s_cluster.id)
try:
k8s_cluster = self.upgradeKubernetesCluster(k8s_cluster.id, self.kubernetes_version_1_24_0.id)
k8s_cluster = self.upgradeKubernetesCluster(k8s_cluster.id, self.kubernetes_version_v2.id)
except Exception as e:
self.deleteKubernetesClusterAndVerify(k8s_cluster.id, False, True)
self.fail("Failed to upgrade Kubernetes HA cluster due to: %s" % e)

self.verifyKubernetesClusterUpgrade(k8s_cluster, self.kubernetes_version_1_24_0.id)
self.verifyKubernetesClusterUpgrade(k8s_cluster, self.kubernetes_version_v2.id)
self.debug("Kubernetes cluster with ID: %s successfully upgraded" % k8s_cluster.id)
return

Expand Down Expand Up @@ -693,7 +696,7 @@ def getValidKubernetesCluster(self, size=1, control_nodes=1, version={}):
# Does a cluster already exist ?
if cluster == None or cluster.id == None:
if not version:
version = self.kubernetes_version_1_24_0
version = self.kubernetes_version_v2
self.debug("No existing cluster available, k8s_cluster: %s" % cluster)
return self.createNewKubernetesCluster(version, size, control_nodes)

Expand All @@ -703,7 +706,7 @@ def getValidKubernetesCluster(self, size=1, control_nodes=1, version={}):
# Check the version only if specified
valid = valid and cluster.kubernetesversionid == version.id
else:
version = self.kubernetes_version_1_24_0
version = self.kubernetes_version_v2

if valid:
cluster_id = cluster.id
Expand Down
3 changes: 2 additions & 1 deletion test/integration/smoke/test_kubernetes_supported_versions.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ def setUpClass(cls):
cls.services = cls.testClient.getParsedTestDataConfig()
cls.zone = get_zone(cls.apiclient, cls.testClient.getZoneForTests())
cls.mgtSvrDetails = cls.config.__dict__["mgtSvr"][0].__dict__
cls.kubernetes_version_iso_url = 'http://download.cloudstack.org/cks/setup-1.24.0.iso'
cls.kubernetes_version = cls.services["cks_kubernetes_version"]
cls.kubernetes_version_iso_url = cls.services["cks_kubernetes_versions"][cls.kubernetes_version]["url"]

cls.initial_configuration_cks_enabled = Configurations.list(cls.apiclient,
name="cloud.kubernetes.service.enabled")[0].value
Expand Down
15 changes: 15 additions & 0 deletions tools/marvin/marvin/config/test_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -2248,8 +2248,23 @@
"url": "http://download.cloudstack.org/cks/setup-1.24.0.iso",
"mincpunumber": 2,
"minmemory": 2048
},
"1.25.0": {
"semanticversion": "1.25.0",
"url": "http://download.cloudstack.org/cks/setup-1.25.0.iso",
"mincpunumber": 2,
"minmemory": 2048
},
"1.26.0": {
"semanticversion": "1.26.0",
"url": "http://download.cloudstack.org/cks/setup-1.26.0.iso",
"mincpunumber": 2,
"minmemory": 2048
}
},
"cks_kubernetes_version": "1.26.0",
"cks_kubernetes_version_upgrade_from": "1.25.0",
"cks_kubernetes_version_upgrade_to": "1.26.0",
"cks_service_offering": {
"name": "CKS-Instance",
"displaytext": "CKS Instance",
Expand Down