Exemplo n.º 1
0
    def test_03_RouterStartOnVmDeploy(self):
        """Test router start on VM deploy
        """
        # Validate the following
        # 1. deployVirtualMachine in the account
        # 2. listVirtualMachines account=user, domainid=1
        # 3. when listVirtualMachines reports the userVM to be in state=Running
        # 4. listRouters should report router to have come back to "Running"
        #    state
        # 5. All other VMs in the account should remain in "Stopped" state

        # stop all pre-existing virtual machines if they are in 'Running' state
        virtual_machines = list_virtual_machines(
            self.apiclient,
            account=self.account.name,
            domainid=self.account.domainid,
        )

        self.assertEqual(
            isinstance(virtual_machines, list), True,
            "Check for list virtual machines response return valid data")
        self.assertNotEqual(len(virtual_machines), 0,
                            "Check list virtual machines response")
        for virtual_machine in virtual_machines:
            self.debug("VM ID: %s & VM state: %s" %
                       (virtual_machine.id, virtual_machine.state))
            if virtual_machine.state == 'Running':
                # Stop virtual machine
                cmd = stopVirtualMachine.stopVirtualMachineCmd()
                cmd.id = virtual_machine.id
                self.apiclient.stopVirtualMachine(cmd)

        vm = VirtualMachine.create(self.apiclient,
                                   self.services["virtual_machine"],
                                   templateid=self.template.id,
                                   accountid=self.account.name,
                                   domainid=self.account.domainid,
                                   serviceofferingid=self.service_offering.id)
        self.debug("Deployed a VM with ID: %s" % vm.id)

        virtual_machines = list_virtual_machines(
            self.apiclient,
            id=vm.id,
            account=self.account.name,
            domainid=self.account.domainid,
        )

        self.assertEqual(
            isinstance(virtual_machines, list), True,
            "Check for list virtual machines response return valid data")

        self.assertNotEqual(len(virtual_machines), 0,
                            "Check list virtual machines response")
        # VM state should be 'Running'
        for virtual_machine in virtual_machines:
            self.assertEqual(virtual_machine.state, 'Running',
                             "Check list VM response for Running state")

        routers = list_routers(
            self.apiclient,
            account=self.account.name,
            domainid=self.account.domainid,
        )

        self.assertEqual(isinstance(routers, list), True,
                         "Check for list routers response return valid data")

        self.assertNotEqual(len(routers), 0, "Check list router response")
        # Routers associated with account should be 'Running' after deployment
        # of VM
        for router in routers:
            self.debug("Router ID: %s & Router state: %s" %
                       (router.id, router.state))
            self.assertEqual(router.state, 'Running',
                             "Check list router response for router state")

        # All other VMs (VM_1) should be in 'Stopped'
        virtual_machines = list_virtual_machines(
            self.apiclient,
            id=self.vm_1.id,
            account=self.account.name,
            domainid=self.account.domainid,
        )

        self.assertEqual(isinstance(virtual_machines, list), True,
                         "Check for list VMs response return valid data")

        self.assertNotEqual(len(virtual_machines), 0,
                            "Check list virtual machines response")
        for virtual_machine in virtual_machines:
            self.debug("VM ID: %s & VM state: %s" %
                       (virtual_machine.id, virtual_machine.state))
            self.assertEqual(virtual_machine.state, 'Stopped',
                             "Check list VM response for Stopped state")

        return
    def stop_VM(self, virtual_machine):
        """ Return Stop Virtual Machine command"""

        cmd = stopVirtualMachine.stopVirtualMachineCmd()
        cmd.id = virtual_machine.id
        return cmd
Exemplo n.º 3
0
    def test_02_NetworkGarbageCollection(self):
        """Test network garbage collection
        """
        # Validate the following
        # 1. wait for router to start and guest network to be created
        #    a.listRouters account=user, domainid=1 (router state=Running)
        #    b.listNetworks account=user domainid=1 (network state=Implemented)
        #    c.listVirtualMachines account=user domainid=1 (VM states=Running)
        # 4. stopVirtualMachines (stop all VMs in this account)
        # 5. wait for VMs to stop-listVirtualMachines account=user, domainid=1
        #    (Both VM states = Stopped)
        # 6. wait for network.gc.interval*2 seconds (600s)
        # 7. listRouters account=user, domainid=1

        routers = list_routers(
            self.apiclient,
            account=self.account.name,
            domainid=self.account.domainid,
        )

        self.assertEqual(isinstance(routers, list), True,
                         "Check for list routers response return valid data")
        self.assertNotEqual(len(routers), 0, "Check list router response")
        # Router associated with account should be in running state
        timeout = 180
        router = routers[0]
        self.debug("Router ID: %s & Router state: %s" %
                   (router.id, router.state))
        self.debug("Wait for %s secs max for router to reach Running state" %
                   timeout)
        while timeout:
            time.sleep(60)
            routers = list_routers(self.apiclient,
                                   account=self.account.name,
                                   domainid=self.account.domainid,
                                   id=router.id)
            router = routers[0]
            if router.state == 'Running':
                break

            timeout = timeout - 60
            if timeout == 0:
                self.assertEqual(router.state, 'Running',
                                 "Router not in Running state")

        # Network state associated with account should be 'Implemented'
        networks = list_networks(self.apiclient,
                                 account=self.account.name,
                                 domainid=self.account.domainid,
                                 type='Isolated')
        self.assertEqual(isinstance(networks, list), True,
                         "Check for list networks response return valid data")
        self.assertNotEqual(len(networks), 0, "Check list networks response")
        # Check if network in 'Implemented' state
        for network in networks:
            self.debug("Network ID: %s & Network state: %s" %
                       (network.id, network.state))
            self.assertIn(network.state, ['Implemented', 'Allocated'],
                          "Check list network response for network state")

        # VM state associated with account should be 'Running'
        virtual_machines = list_virtual_machines(
            self.apiclient,
            account=self.account.name,
            domainid=self.account.domainid,
        )

        self.assertEqual(
            isinstance(virtual_machines, list), True,
            "Check for list virtual machines response return valid data")
        self.assertNotEqual(len(virtual_machines), 0,
                            "Check list virtual machines response")
        for virtual_machine in virtual_machines:
            self.debug("VM ID: %s & VM state: %s" %
                       (virtual_machine.id, virtual_machine.state))
            self.assertEqual(virtual_machine.state, 'Running',
                             "Check list VM response for Running state")

            # Stop virtual machine
            cmd = stopVirtualMachine.stopVirtualMachineCmd()
            cmd.id = virtual_machine.id
            self.apiclient.stopVirtualMachine(cmd)

        gcinterval = list_configurations(self.apiclient,
                                         name='network.gc.interval')
        self.assertEqual(
            isinstance(gcinterval, list), True,
            "Check for list intervals response return valid data")
        self.debug("network.gc.interval: %s" % gcinterval[0].value)

        gcwait = list_configurations(self.apiclient, name='network.gc.wait')
        self.assertEqual(
            isinstance(gcwait, list), True,
            "Check for list intervals response return valid data")
        self.debug("network.gc.wait: %s" % gcwait[0].value)

        total_wait = int(gcinterval[0].value) + int(gcwait[0].value)
        # Router is stopped after (network.gc.interval *2) time. Wait for
        # (network.gc.interval+network.gc.wait) * 2 for moving
        # router to 'Stopped'
        time.sleep(total_wait * 2)

        routers = list_routers(
            self.apiclient,
            account=self.account.name,
            domainid=self.account.domainid,
        )

        self.assertEqual(isinstance(routers, list), True,
                         "Check for list routers response return valid data")
        self.assertNotEqual(len(routers), 0, "Check list router response")
        for router in routers:
            self.debug("Router ID: %s & Router state: %s" %
                       (router.id, router.state))
            self.assertEqual(router.state, 'Stopped',
                             "Check list router response for router state")

        # Cleanup Vm_2 - Not required for further tests
        self.cleanup.append(self.vm_2)
        return
 def stop_vm(self, id):
     cmd = stopVirtualMachine.stopVirtualMachineCmd()
     cmd.id = id
     return self.apiclient.stopVirtualMachine(cmd)