How your logic works if there are no system vms on a host (ssvm, cpvm and VR)? I mean if the cluster has more than one host and system vms were deployed on another host in the cluster?
On Fri, Jul 31, 2015 at 2:01 PM, pritisarap12 <g...@git.apache.org> wrote: > Github user pritisarap12 commented on a diff in the pull request: > > https://github.com/apache/cloudstack/pull/638#discussion_r35955311 > > --- Diff: test/integration/testpaths/testpath_hypervisor_limit.py --- > @@ -0,0 +1,198 @@ > +# 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 cases for Testing Max Hypervisor Limit > +""" > +from nose.plugins.attrib import attr > +from marvin.cloudstackTestCase import cloudstackTestCase > +from marvin.lib.utils import (cleanup_resources, > + validateList) > +from marvin.lib.base import (Account, > + ServiceOffering, > + VirtualMachine, > + Host > + ) > +from marvin.lib.common import (get_domain, > + get_zone, > + get_template, > + list_virtual_machines > + ) > + > + > +from marvin.cloudstackAPI import (updateHypervisorCapabilities, > + listHypervisorCapabilities) > + > +from marvin.codes import PASS > + > + > +class TestMaxHyperviosrLimit(cloudstackTestCase): > + > + @classmethod > + def setUpClass(cls): > + testClient = super(TestMaxHyperviosrLimit, > cls).getClsTestClient() > + cls.apiclient = testClient.getApiClient() > + cls.testdata = testClient.getParsedTestDataConfig() > + > + cls.hypervisor = cls.testClient.getHypervisorInfo() > + # Get Zone, Domain and templates > + > + cls.domain = get_domain(cls.apiclient) > + cls.zone = get_zone(cls.apiclient, > testClient.getZoneForTests()) > + > + cls.template = get_template( > + cls.apiclient, > + cls.zone.id, > + cls.testdata["ostype"]) > + > + cls._cleanup = [] > + hostList = Host.list(cls.apiclient, zoneid=cls.zone.id, > type="Routing") > + cls.host = Host(hostList[0].__dict__) > + Host.update(cls.apiclient, id=cls.host.id, hosttags="host1") > + try: > + cls.skiptest = False > + if cls.hypervisor.lower() not in ['xenserver']: > + cls.skiptest = True > + return > + > + # Create an account > + cls.account = Account.create( > + cls.apiclient, > + cls.testdata["account"], > + domainid=cls.domain.id > + ) > + > + # Create user api client of the account > + cls.userapiclient = testClient.getUserApiClient( > + UserName=cls.account.name, > + DomainName=cls.account.domain > + ) > + # Create Service offering > + cls.service_offering = ServiceOffering.create( > + cls.apiclient, > + cls.testdata["service_offering"], > + hosttags="host1" > + ) > + > + cls._cleanup = [ > + cls.account, > + cls.service_offering, > + ] > + except Exception as e: > + cls.tearDownClass() > + raise e > + return > + > + @classmethod > + def tearDownClass(cls): > + try: > + cleanup_resources(cls.apiclient, cls._cleanup) > + except Exception as e: > + raise Exception("Warning: Exception during cleanup : %s" > % e) > + > + def setUp(self): > + self.cleanup = [] > + if self.skiptest: > + self.skipTest("This test is to be checked on xenserver \ > + only Hence, skip for %s" % self.hypervisor) > + > + self.apiclient = self.testClient.getApiClient() > + self.dbclient = self.testClient.getDbConnection() > + > + def tearDown(self): > + try: > + > + cmd = > updateHypervisorCapabilities.updateHypervisorCapabilitiesCmd() > + cmd.id = self.hostCapId > + cmd.maxguestslimit = self.originalLimit > + self.apiclient.updateHypervisorCapabilities(cmd) > + > + cleanup_resources(self.apiclient, self.cleanup) > + except Exception as e: > + raise Exception("Warning: Exception during cleanup : %s" > % e) > + return > + > + @attr(tags=["advanced", "basic"], required_hardware="false") > + def test_check_hypervisor_max_limit_effect(self): > + """ Test hypervisor max limits effect > + > + # 1. Read exsiting count of VM's on the host > + and modify maxguestlimit of the host by exsiting > count + 4 > + # 2. Deploy a VM > + # 2. Try to deploy another vm > + # 3. Verify that second VM > + deployment fails (2 SSVMs 1 VR VM and 1 deployed VM) > + """ > + > + # Step 1 > + listVm = list_virtual_machines(self.apiclient, > + hostid=self.host.id) > + vmCount = len(listVm) > + # Increament vm count by 4(2 SSVMs 1 VR VM and 1 deployed VM) > + newValue = vmCount + 4 > + > --- End diff -- > > listVirtualMachines API does not list 2 SSVMs and 1 VR it only list > the User deployed VM's hence I am adding 4 to vmCount. > > > --- > If your project is set up for it, you can reply to this email and have your > reply appear on GitHub as well. If your project does not have this feature > enabled and wishes so, or if the feature is enabled but not working, please > contact infrastructure at infrastruct...@apache.org or file a JIRA ticket > with INFRA. > --- >