| # 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" |
| ) |