Skip to content

Commit 397f25d

Browse files
committed
Add marvin test for CKS clusters with different offerings per node type
1 parent 7501b74 commit 397f25d

File tree

1 file changed

+76
-8
lines changed

1 file changed

+76
-8
lines changed

test/integration/smoke/test_kubernetes_clusters.py

Lines changed: 76 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,25 @@ def setUpClass(cls):
135135
cls.apiclient,
136136
cks_offering_data
137137
)
138+
cks_offering_data["name"] = 'CKS-Worker-Offering-' + random_gen()
139+
cls.cks_worker_nodes_offering = ServiceOffering.create(
140+
cls.apiclient,
141+
cks_offering_data
142+
)
143+
cks_offering_data["name"] = 'CKS-Control-Offering-' + random_gen()
144+
cls.cks_control_nodes_offering = ServiceOffering.create(
145+
cls.apiclient,
146+
cks_offering_data
147+
)
148+
cks_offering_data["name"] = 'CKS-Etcd-Offering-' + random_gen()
149+
cls.cks_etcd_nodes_offering = ServiceOffering.create(
150+
cls.apiclient,
151+
cks_offering_data
152+
)
138153
cls._cleanup.append(cls.cks_service_offering)
154+
cls._cleanup.append(cls.cks_worker_nodes_offering)
155+
cls._cleanup.append(cls.cks_control_nodes_offering)
156+
cls._cleanup.append(cls.cks_etcd_nodes_offering)
139157
cls.domain = get_domain(cls.apiclient)
140158
cls.account = Account.create(
141159
cls.apiclient,
@@ -644,6 +662,30 @@ def test_11_test_unmanaged_cluster_lifecycle(self):
644662
self.deleteKubernetesClusterAndVerify(cluster.id)
645663
return
646664

665+
@attr(tags=["advanced", "smoke", "nicolocal"], required_hardware="true")
666+
def test_12_test_deploy_cluster_different_offerings_per_node_type(self):
667+
"""Test creating a CKS cluster with different offerings per node type
668+
669+
# Validate the following:
670+
"""
671+
cluster = self.getValidKubernetesCluster(worker_offering=self.cks_worker_nodes_offering,
672+
control_offering=self.cks_control_nodes_offering)
673+
self.assertEqual(
674+
cluster.workerofferingid,
675+
self.cks_worker_nodes_offering.id,
676+
"Check Worker Nodes Offering {}, {}".format(cluster.workerofferingid, self.cks_worker_nodes_offering.id)
677+
)
678+
self.assertEqual(
679+
cluster.controlofferingid,
680+
self.cks_control_nodes_offering.id,
681+
"Check Control Nodes Offering {}, {}".format(cluster.workerofferingid, self.cks_worker_nodes_offering.id)
682+
)
683+
self.assertEqual(
684+
cluster.etcdnodes,
685+
0,
686+
"No Etcd Nodes expected but got {}".format(cluster.etcdnodes)
687+
)
688+
647689
def addVirtualMachinesToKubernetesCluster(self, cluster_id, vm_list):
648690
cmd = addVirtualMachinesToKubernetesCluster.addVirtualMachinesToKubernetesClusterCmd()
649691
cmd.id = cluster_id
@@ -658,8 +700,8 @@ def removeVirtualMachinesFromKubernetesCluster(self, cluster_id, vm_list):
658700

659701
return self.apiclient.removeVirtualMachinesFromKubernetesCluster(cmd)
660702

661-
662-
def createKubernetesCluster(self, name, version_id, size=1, control_nodes=1, cluster_type='CloudManaged'):
703+
def createKubernetesCluster(self, name, version_id, size=1, control_nodes=1, etcd_nodes=0, cluster_type='CloudManaged',
704+
workers_offering=None, control_offering=None, etcd_offering=None):
663705
createKubernetesClusterCmd = createKubernetesCluster.createKubernetesClusterCmd()
664706
createKubernetesClusterCmd.name = name
665707
createKubernetesClusterCmd.description = name + "-description"
@@ -672,6 +714,22 @@ def createKubernetesCluster(self, name, version_id, size=1, control_nodes=1, clu
672714
createKubernetesClusterCmd.account = self.account.name
673715
createKubernetesClusterCmd.domainid = self.domain.id
674716
createKubernetesClusterCmd.clustertype = cluster_type
717+
if workers_offering:
718+
createKubernetesClusterCmd.nodeofferings.append({
719+
"node": "WORKER",
720+
"offering": workers_offering.id
721+
})
722+
if control_offering:
723+
createKubernetesClusterCmd.nodeofferings.append({
724+
"node": "CONTROL",
725+
"offering": control_offering.id
726+
})
727+
if etcd_nodes > 0 and etcd_offering:
728+
createKubernetesClusterCmd.etcdnodes = etcd_nodes
729+
createKubernetesClusterCmd.nodeofferings.append({
730+
"node": "ETCD",
731+
"offering": etcd_offering.id
732+
})
675733
if self.default_network:
676734
createKubernetesClusterCmd.networkid = self.default_network.id
677735
clusterResponse = self.apiclient.createKubernetesCluster(createKubernetesClusterCmd)
@@ -735,15 +793,18 @@ def waitForAutoscalerPodInRunningState(self, cluster_id, retries=5, interval=60)
735793
retries = retries - 1
736794
return False
737795

738-
def getValidKubernetesCluster(self, size=1, control_nodes=1, version={}):
796+
def getValidKubernetesCluster(self, size=1, control_nodes=1, version={}, etcd_nodes=0,
797+
worker_offering=None, control_offering=None, etcd_offering=None):
739798
cluster = k8s_cluster
740799

741800
# Does a cluster already exist ?
742801
if cluster == None or cluster.id == None:
743802
if not version:
744803
version = self.kubernetes_version_v2
745804
self.debug("No existing cluster available, k8s_cluster: %s" % cluster)
746-
return self.createNewKubernetesCluster(version, size, control_nodes)
805+
return self.createNewKubernetesCluster(version, size, control_nodes, etcd_nodes=etcd_nodes,
806+
worker_offering=worker_offering, control_offering=control_offering,
807+
etcd_offering=etcd_offering)
747808

748809
# Is the existing cluster what is needed ?
749810
valid = cluster.size == size and cluster.controlnodes == control_nodes
@@ -759,7 +820,9 @@ def getValidKubernetesCluster(self, size=1, control_nodes=1, version={}):
759820
if cluster == None:
760821
# Looks like the cluster disappeared !
761822
self.debug("Existing cluster, k8s_cluster ID: %s not returned by list API" % cluster_id)
762-
return self.createNewKubernetesCluster(version, size, control_nodes)
823+
return self.createNewKubernetesCluster(version, size, control_nodes, etcd_nodes=etcd_nodes,
824+
worker_offering=worker_offering, control_offering=control_offering,
825+
etcd_offering=etcd_offering)
763826

764827
if valid:
765828
try:
@@ -775,13 +838,18 @@ def getValidKubernetesCluster(self, size=1, control_nodes=1, version={}):
775838
self.deleteKubernetesClusterAndVerify(cluster.id, False, True)
776839

777840
self.debug("No valid cluster, need to deploy a new one")
778-
return self.createNewKubernetesCluster(version, size, control_nodes)
841+
return self.createNewKubernetesCluster(version, size, control_nodes, etcd_nodes=etcd_nodes,
842+
worker_offering=worker_offering, control_offering=control_offering,
843+
etcd_offering=etcd_offering)
779844

780-
def createNewKubernetesCluster(self, version, size, control_nodes) :
845+
def createNewKubernetesCluster(self, version, size, control_nodes, etcd_nodes=0,
846+
worker_offering=None, control_offering=None, etcd_offering=None):
781847
name = 'testcluster-' + random_gen()
782848
self.debug("Creating for Kubernetes cluster with name %s" % name)
783849
try:
784-
cluster = self.createKubernetesCluster(name, version.id, size, control_nodes)
850+
cluster = self.createKubernetesCluster(name, version.id, size, control_nodes, etcd_nodes=etcd_nodes,
851+
workers_offering=worker_offering, control_offering=control_offering,
852+
etcd_offering=etcd_offering)
785853
self.verifyKubernetesCluster(cluster, name, version.id, size, control_nodes)
786854
except Exception as ex:
787855
cluster = self.listKubernetesCluster(cluster_name = name)

0 commit comments

Comments
 (0)