| # Licensed to the Apache Software Foundation (ASF) under one | |
| # or more contributor license agreements. See the NOTICE file | |
| # distributed with this work for additional information | |
| # regarding copyright ownership. The ASF licenses this file | |
| # to you under the Apache License, Version 2.0 (the | |
| # "License"); you may not use this file except in compliance | |
| # with the License. You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, | |
| # software distributed under the License is distributed on an | |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| # KIND, either express or implied. See the License for the | |
| # specific language governing permissions and limitations | |
| # under the License. | |
| """ test for listPods | |
| """ | |
| from nose.plugins.attrib import attr | |
| from marvin.cloudstackTestCase import cloudstackTestCase | |
| import unittest | |
| from marvin.lib.utils import (cleanup_resources) | |
| from marvin.lib.base import (Pod, Cluster, Capacities) | |
| from marvin.cloudstackAPI import (updateConfiguration) | |
| class TestListPod(cloudstackTestCase): | |
| @classmethod | |
| def setUpClass(cls): | |
| super(TestListPod, cls) | |
| def setUp(self): | |
| self.apiclient = self.testClient.getApiClient() | |
| # build cleanup list | |
| self.cleanup = [] | |
| def tearDown(self): | |
| try: | |
| cleanup_resources(self.apiclient, self.cleanup) | |
| except Exception as e: | |
| self.debug("Warning! Exception in tearDown: %s" % e) | |
| @attr(tags=["advanced", "basic"], required_hardware="false") | |
| def test_list_pod_with_overcommit(self): | |
| """Test List Pod Api with cluster CPU and Memory OverProvisioning | |
| """ | |
| podlist = Pod.list(self.apiclient) | |
| for pod in podlist: | |
| clusterlist = Cluster.list(self.apiclient, podid=pod.id) | |
| if len(clusterlist) > 1: | |
| updateCpuOvercommitCmd = updateConfiguration.updateConfigurationCmd() | |
| updateCpuOvercommitCmd.clusterid = clusterlist[0].id | |
| updateCpuOvercommitCmd.name="cpu.overprovisioning.factor" | |
| if clusterlist[0].cpuovercommitratio == clusterlist[1].cpuovercommitratio and clusterlist[0].cpuovercommitratio == "1.0": | |
| cpuovercommit = "1.0" | |
| updateCpuOvercommitCmd.value="2.0" | |
| self.apiclient.updateConfiguration(updateCpuOvercommitCmd) | |
| elif clusterlist[0].cpuovercommitratio != clusterlist[1].cpuovercommitratio: | |
| cpuovercommit = clusterlist[0].cpuovercommitratio | |
| else: | |
| cpuovercommit = clusterlist[0].cpuovercommitratio | |
| updateCpuOvercommitCmd.value="1.0" | |
| self.apiclient.updateConfiguration(updateCpuOvercommitCmd) | |
| updateMemoryOvercommitCmd = updateConfiguration.updateConfigurationCmd() | |
| updateMemoryOvercommitCmd.clusterid = clusterlist[0].id | |
| updateMemoryOvercommitCmd.name="mem.overprovisioning.factor" | |
| if clusterlist[0].memoryovercommitratio == clusterlist[1].memoryovercommitratio and clusterlist[0].memoryovercommitratio == "1.0": | |
| memoryovercommit = "1.0" | |
| updateMemoryOvercommitCmd.value="2.0" | |
| self.apiclient.updateConfiguration(updateMemoryOvercommitCmd) | |
| elif clusterlist[0].memoryovercommitratio != clusterlist[1].memoryovercommitratio: | |
| memoryovercommit = clusterlist[0].memoryovercommitratio | |
| else: | |
| memoryovercommit = clusterlist[0].memoryovercommitratio | |
| updateMemoryOvercommitCmd.value="1.0" | |
| self.apiclient.updateConfiguration(updateMemoryOvercommitCmd) | |
| podWithCap = Pod.list(self.apiclient, id=pod.id, showcapacities=True) | |
| cpucapacity = Capacities.list(self.apiclient, podid=pod.id, type=1) | |
| memorycapacity = Capacities.list(self.apiclient, podid=pod.id, type=0) | |
| updateCpuOvercommitCmd.value = cpuovercommit | |
| updateMemoryOvercommitCmd.value = memoryovercommit | |
| self.apiclient.updateConfiguration(updateCpuOvercommitCmd) | |
| self.apiclient.updateConfiguration(updateMemoryOvercommitCmd) | |
| self.assertEqual( | |
| [cap for cap in podWithCap[0].capacity if cap.type == 1][0].capacitytotal, | |
| cpucapacity[0].capacitytotal, | |
| "listPods api returns wrong CPU capacity " | |
| ) | |
| self.assertEqual( | |
| [cap for cap in podWithCap[0].capacity if cap.type == 0][0].capacitytotal, | |
| memorycapacity[0].capacitytotal, | |
| "listPods api returns wrong memory capacity" | |
| ) |