Skip to content
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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 40 additions & 46 deletions test/integration/smoke/test_kubernetes_clusters.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,51 +72,50 @@ def setUpClass(cls):
cls.kubernetes_version_ids = []
if cls.setup_failed == False:
try:
cls.kuberetes_version_1 = cls.addKubernetesSupportedVersion('1.14.9', 'http://staging.yadav.xyz/cks/binaries-iso/setup-1.14.9.iso')
cls.kubernetes_version_ids.append(cls.kuberetes_version_1.id)
cls.kubernetes_version_1 = cls.addKubernetesSupportedVersion('1.14.9', 'http://download.cloudstack.org/cks/setup-1.14.9.iso')
cls.kubernetes_version_ids.append(cls.kubernetes_version_1.id)
except Exception as e:
cls.setup_failed = True
cls.debug("Failed to get Kubernetes version ISO in ready state, http://staging.yadav.xyz/cks/binaries-iso/setup-1.14.9.iso, %s" % e)
cls.debug("Failed to get Kubernetes version ISO in ready state, http://download.cloudstack.org/cks/setup-1.14.9.iso, %s" % e)
if cls.setup_failed == False:
try:
cls.kuberetes_version_2 = cls.addKubernetesSupportedVersion('1.15.0', 'http://staging.yadav.xyz/cks/binaries-iso/setup-1.15.0.iso')
cls.kubernetes_version_ids.append(cls.kuberetes_version_2.id)
cls.kubernetes_version_2 = cls.addKubernetesSupportedVersion('1.15.0', 'http://download.cloudstack.org/cks/setup-1.15.0.iso')
cls.kubernetes_version_ids.append(cls.kubernetes_version_2.id)
except Exception as e:
cls.setup_failed = True
cls.debug("Failed to get Kubernetes version ISO in ready state, http://staging.yadav.xyz/cks/binaries-iso/setup-1.15.0.iso, %s" % e)
cls.debug("Failed to get Kubernetes version ISO in ready state, http://download.cloudstack.org/cks/setup-1.15.0.iso, %s" % e)
if cls.setup_failed == False:
try:
cls.kuberetes_version_3 = cls.addKubernetesSupportedVersion('1.16.0', 'http://staging.yadav.xyz/cks/binaries-iso/setup-1.16.0.iso')
cls.kubernetes_version_ids.append(cls.kuberetes_version_3.id)
cls.kubernetes_version_3 = cls.addKubernetesSupportedVersion('1.16.0', 'http://download.cloudstack.org/cks/setup-1.16.0.iso')
cls.kubernetes_version_ids.append(cls.kubernetes_version_3.id)
except Exception as e:
cls.setup_failed = True
cls.debug("Failed to get Kubernetes version ISO in ready state, http://staging.yadav.xyz/cks/binaries-iso/setup-1.16.0.is, %s" % e)
cls.debug("Failed to get Kubernetes version ISO in ready state, http://download.cloudstack.org/cks/setup-1.16.0.iso, %s" % e)
if cls.setup_failed == False:
try:
cls.kuberetes_version_4 = cls.addKubernetesSupportedVersion('1.16.3', 'http://staging.yadav.xyz/cks/binaries-iso/setup-1.16.3.iso')
cls.kubernetes_version_ids.append(cls.kuberetes_version_4.id)
cls.kubernetes_version_4 = cls.addKubernetesSupportedVersion('1.16.3', 'http://download.cloudstack.org/cks/setup-1.16.3.iso')
cls.kubernetes_version_ids.append(cls.kubernetes_version_4.id)
except Exception as e:
cls.setup_failed = True
cls.debug("Failed to get Kubernetes version ISO in ready state, http://staging.yadav.xyz/cks/binaries-iso/setup-1.16.3.is, %s" % e)
cls.debug("Failed to get Kubernetes version ISO in ready state, http://download.cloudstack.org/cks/setup-1.16.3.iso, %s" % e)

cks_template_data = {
"name": "Kubernetes-Service-Template",
"displaytext": "Kubernetes-Service-Template",
"format": "qcow2",
"hypervisor": "kvm",
"ostype": "CoreOS",
"url": "http://staging.yadav.xyz/cks/templates/coreos_production_cloudstack_image-kvm.qcow2.bz2",
"url": "http://dl.openvm.eu/cloudstack/coreos/x86_64/coreos_production_cloudstack_image-kvm.qcow2.bz2",
"ispublic": "True",
"isextractable": "True"
}
# "http://dl.openvm.eu/cloudstack/coreos/x86_64/coreos_production_cloudstack_image-kvm.qcow2.bz2"
cks_template_data_details = []
if cls.hypervisor.lower() == "vmware":
cks_template_data["url"] = "http://staging.yadav.xyz/cks/templates/coreos_production_cloudstack_image-vmware.ova" # "http://dl.openvm.eu/cloudstack/coreos/x86_64/coreos_production_cloudstack_image-vmware.ova"
cks_template_data["url"] = "http://dl.openvm.eu/cloudstack/coreos/x86_64/coreos_production_cloudstack_image-vmware.ova"
cks_template_data["format"] = "OVA"
cks_template_data_details = [{"keyboard":"us","nicAdapter":"Vmxnet3","rootDiskController":"pvscsi"}]
elif cls.hypervisor.lower() == "xenserver":
cks_template_data["url"] = "http://staging.yadav.xyz/cks/templates/coreos_production_cloudstack_image-xen.vhd.bz2" # "http://dl.openvm.eu/cloudstack/coreos/x86_64/coreos_production_cloudstack_image-xen.vhd.bz2"
cks_template_data["url"] = "http://dl.openvm.eu/cloudstack/coreos/x86_64/coreos_production_cloudstack_image-xen.vhd.bz2"
cks_template_data["format"] = "VHD"
elif cls.hypervisor.lower() == "kvm":
cks_template_data["requireshvm"] = "True"
Expand Down Expand Up @@ -232,9 +231,9 @@ def isManagementUp(cls):
return False

@classmethod
def waitForTemplateReadyState(cls, template_id, retries=30, interval=30):
def waitForTemplateReadyState(cls, template_id, retries=30, interval=60):
"""Check if template download will finish"""
while retries > -1:
while retries > 0:
time.sleep(interval)
template_response = Template.list(
cls.apiclient,
Expand All @@ -256,25 +255,20 @@ def waitForTemplateReadyState(cls, template_id, retries=30, interval=30):
raise Exception("Template download timed out")

@classmethod
def waitForKubernetesSupportedVersionIsoReadyState(cls, version_id, retries=20, interval=30):
def waitForKubernetesSupportedVersionIsoReadyState(cls, version_id, retries=30, interval=60):
"""Check if Kubernetes supported version ISO is in Ready state"""

while retries > -1:
while retries > 0:
time.sleep(interval)
list_versions_response = cls.listKubernetesSupportedVersion(version_id)
if not hasattr(list_versions_response, 'isostate') or not list_versions_response or not list_versions_response.isostate:
retries = retries - 1
continue
if 'Creating' == list_versions_response.isostate:
retries = retries - 1
elif 'Ready' == list_versions_response.isostate:
if 'Ready' == list_versions_response.isostate:
return
elif 'Failed' == list_versions_response.isostate:
raise Exception( "Failed to download template: status - %s" % template.status)
else:
raise Exception(
"Failed to download Kubernetes supported version ISO: status - %s" %
list_versions_response.isostate)
retries = retries - 1
raise Exception("Kubernetes supported version Ready state timed out")

@classmethod
Expand Down Expand Up @@ -337,9 +331,9 @@ def test_01_deploy_kubernetes_cluster(self):
name = 'testcluster-' + random_gen()
self.debug("Creating for Kubernetes cluster with name %s" % name)

cluster_response = self.createKubernetesCluster(name, self.kuberetes_version_2.id)
cluster_response = self.createKubernetesCluster(name, self.kubernetes_version_2.id)

self.verifyKubernetesCluster(cluster_response, name, self.kuberetes_version_2.id)
self.verifyKubernetesCluster(cluster_response, name, self.kubernetes_version_2.id)

self.debug("Kubernetes cluster with ID: %s successfully deployed, now stopping it" % cluster_response.id)

Expand Down Expand Up @@ -368,9 +362,9 @@ def test_02_deploy_kubernetes_ha_cluster(self):
name = 'testcluster-' + random_gen()
self.debug("Creating for Kubernetes cluster with name %s" % name)

cluster_response = self.createKubernetesCluster(name, self.kuberetes_version_3.id, 1, 2)
cluster_response = self.createKubernetesCluster(name, self.kubernetes_version_3.id, 1, 2)

self.verifyKubernetesCluster(cluster_response, name, self.kuberetes_version_3.id, 1, 2)
self.verifyKubernetesCluster(cluster_response, name, self.kubernetes_version_3.id, 1, 2)

self.debug("Kubernetes cluster with ID: %s successfully deployed, now deleting it" % cluster_response.id)

Expand All @@ -396,7 +390,7 @@ def test_03_deploy_invalid_kubernetes_ha_cluster(self):
self.debug("Creating for Kubernetes cluster with name %s" % name)

try:
cluster_response = self.createKubernetesCluster(name, self.kuberetes_version_2.id, 1, 2)
cluster_response = self.createKubernetesCluster(name, self.kubernetes_version_2.id, 1, 2)
self.debug("Invslid CKS Kubernetes HA cluster deployed with ID: %s. Deleting it and failing test." % cluster_response.id)
self.deleteKubernetesCluster(cluster_response.id)
self.fail("HA Kubernetes cluster deployed with Kubernetes supported version below version 1.16.0. Must be an error.")
Expand All @@ -421,19 +415,19 @@ def test_04_deploy_and_upgrade_kubernetes_cluster(self):
name = 'testcluster-' + random_gen()
self.debug("Creating for Kubernetes cluster with name %s" % name)

cluster_response = self.createKubernetesCluster(name, self.kuberetes_version_2.id)
cluster_response = self.createKubernetesCluster(name, self.kubernetes_version_2.id)

self.verifyKubernetesCluster(cluster_response, name, self.kuberetes_version_2.id)
self.verifyKubernetesCluster(cluster_response, name, self.kubernetes_version_2.id)

self.debug("Kubernetes cluster with ID: %s successfully deployed, now upgrading it" % cluster_response.id)

try:
cluster_response = self.upgradeKubernetesCluster(cluster_response.id, self.kuberetes_version_3.id)
cluster_response = self.upgradeKubernetesCluster(cluster_response.id, self.kubernetes_version_3.id)
except Exception as e:
self.deleteKubernetesCluster(cluster_response.id)
self.fail("Failed to upgrade Kubernetes cluster due to: %s" % e)

self.verifyKubernetesClusterUpgrade(cluster_response, self.kuberetes_version_3.id)
self.verifyKubernetesClusterUpgrade(cluster_response, self.kubernetes_version_3.id)

self.debug("Kubernetes cluster with ID: %s successfully upgraded, now deleting it" % cluster_response.id)

Expand All @@ -460,19 +454,19 @@ def test_05_deploy_and_upgrade_kubernetes_ha_cluster(self):
name = 'testcluster-' + random_gen()
self.debug("Creating for Kubernetes cluster with name %s" % name)

cluster_response = self.createKubernetesCluster(name, self.kuberetes_version_3.id, 1, 2)
cluster_response = self.createKubernetesCluster(name, self.kubernetes_version_3.id, 1, 2)

self.verifyKubernetesCluster(cluster_response, name, self.kuberetes_version_3.id, 1, 2)
self.verifyKubernetesCluster(cluster_response, name, self.kubernetes_version_3.id, 1, 2)

self.debug("Kubernetes cluster with ID: %s successfully deployed, now upgrading it" % cluster_response.id)

try:
cluster_response = self.upgradeKubernetesCluster(cluster_response.id, self.kuberetes_version_4.id)
cluster_response = self.upgradeKubernetesCluster(cluster_response.id, self.kubernetes_version_4.id)
except Exception as e:
self.deleteKubernetesCluster(cluster_response.id)
self.fail("Failed to upgrade Kubernetes HA cluster due to: %s" % e)

self.verifyKubernetesClusterUpgrade(cluster_response, self.kuberetes_version_4.id)
self.verifyKubernetesClusterUpgrade(cluster_response, self.kubernetes_version_4.id)

self.debug("Kubernetes cluster with ID: %s successfully upgraded, now deleting it" % cluster_response.id)

Expand All @@ -498,15 +492,15 @@ def test_06_deploy_and_invalid_upgrade_kubernetes_cluster(self):
name = 'testcluster-' + random_gen()
self.debug("Creating for Kubernetes cluster with name %s" % name)

cluster_response = self.createKubernetesCluster(name, self.kuberetes_version_2.id)
cluster_response = self.createKubernetesCluster(name, self.kubernetes_version_2.id)

self.verifyKubernetesCluster(cluster_response, name, self.kuberetes_version_2.id)
self.verifyKubernetesCluster(cluster_response, name, self.kubernetes_version_2.id)

self.debug("Kubernetes cluster with ID: %s successfully deployed, now scaling it" % cluster_response.id)

try:
cluster_response = self.upgradeKubernetesCluster(cluster_response.id, self.kuberetes_version_1.id)
self.debug("Invalid CKS Kubernetes HA cluster deployed with ID: %s. Deleting it and failing test." % kuberetes_version_1.id)
cluster_response = self.upgradeKubernetesCluster(cluster_response.id, self.kubernetes_version_1.id)
self.debug("Invalid CKS Kubernetes HA cluster deployed with ID: %s. Deleting it and failing test." % kubernetes_version_1.id)
self.deleteKubernetesCluster(cluster_response.id)
self.fail("Kubernetes cluster upgraded to a lower Kubernetes supported version. Must be an error.")
except Exception as e:
Expand Down Expand Up @@ -537,9 +531,9 @@ def test_07_deploy_and_scale_kubernetes_cluster(self):
name = 'testcluster-' + random_gen()
self.debug("Creating for Kubernetes cluster with name %s" % name)

cluster_response = self.createKubernetesCluster(name, self.kuberetes_version_2.id)
cluster_response = self.createKubernetesCluster(name, self.kubernetes_version_2.id)

self.verifyKubernetesCluster(cluster_response, name, self.kuberetes_version_2.id)
self.verifyKubernetesCluster(cluster_response, name, self.kubernetes_version_2.id)

self.debug("Kubernetes cluster with ID: %s successfully deployed, now upscaling it" % cluster_response.id)

Expand Down
17 changes: 7 additions & 10 deletions test/integration/smoke/test_kubernetes_supported_versions.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ 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://staging.yadav.xyz/cks/binaries-iso/setup-1.16.3.iso'
cls.kubernetes_version_iso_url = 'http://download.cloudstack.org/cks/setup-1.16.3.iso'

cls.initial_configuration_cks_enabled = Configurations.list(cls.apiclient,
name="cloud.kubernetes.service.enabled")[0].value
Expand Down Expand Up @@ -258,21 +258,18 @@ def deleteKubernetesSupportedVersion(self, versionId, deleteIso):
response = self.apiclient.deleteKubernetesSupportedVersion(deleteKubernetesSupportedVersionCmd)
return response

def waitForKubernetesSupportedVersionIsoReadyState(self, version_id, retries=20, interval=30):
def waitForKubernetesSupportedVersionIsoReadyState(self, version_id, retries=30, interval=60):
"""Check if Kubernetes supported version ISO is in Ready state"""

while retries > -1:
while retries > 0:
time.sleep(interval)
list_versions_response = self.listKubernetesSupportedVersion(version_id)
if not hasattr(list_versions_response, 'isostate') or not list_versions_response or not list_versions_response.isostate:
retries = retries - 1
continue
if 'Creating' == list_versions_response.isostate:
retries = retries - 1
elif 'Ready' == list_versions_response.isostate:
if 'Ready' == list_versions_response.isostate:
return
else:
raise Exception(
"Failed to download Kubernetes supported version ISO: status - %s" %
list_versions_response.isostate)
elif 'Failed' == list_versions_response.isostate:
raise Exception( "Failed to download template: status - %s" % template.status)
retries = retries - 1
raise Exception("Kubernetes supported version Ready state timed out")