Ejemplo n.º 1
0
Archivo: Fogbow.py Proyecto: vigial/im
    def test_60_finalize(self, requests):
        auth = Authentication([{
            'id': 'fogbow',
            'type': 'FogBow',
            'host': 'server.com',
            'username': '******',
            'password': '******',
            'as_host': 'server1.com'
        }])
        fogbow_cloud = self.get_fogbow_cloud()

        radl_data = """
        network public (outbound = 'yes')
        network private ()
        system test ()
        """
        radl = radl_parse.parse_radl(radl_data)
        inf = MagicMock()
        vm = VirtualMachine(inf, "1", fogbow_cloud.cloud, radl, radl,
                            fogbow_cloud, 1)
        vm.volumes = ["1"]
        vm.attachments = ["1"]

        requests.side_effect = self.get_response

        success, _ = fogbow_cloud.finalize(vm, True, auth)

        self.assertTrue(success, msg="ERROR: finalizing VM.")
        self.assertNotIn("ERROR",
                         self.log.getvalue(),
                         msg="ERROR found in log: %s" % self.log.getvalue())

        self.assertEqual(requests.call_args_list[6][0],
                         ('DELETE', 'http://server.com:8182/publicIps/1'))
        self.assertEqual(requests.call_args_list[8][0],
                         ('DELETE', 'http://server.com:8182/attachments/1'))
        self.assertEqual(requests.call_args_list[10][0],
                         ('DELETE', 'http://server.com:8182/computes/1'))
        self.assertEqual(requests.call_args_list[12][0],
                         ('DELETE', 'http://server.com:8182/volumes/1'))

        vm.attachments = ["2"]
        vm.volumes = ["2"]
        success, msg = fogbow_cloud.finalize(vm, True, auth)
        self.assertFalse(success, msg="ERROR not detected finalizing VM.")
        self.assertEqual(
            msg, "Error deleting attachments.\nError deleting Volumes.")
Ejemplo n.º 2
0
    def test_60_finalize(self, get_driver):
        auth = Authentication([{
            'id': 'libcloud',
            'type': 'LibCloud',
            'username': '******',
            'password': '******',
            'driver': 'EC2'
        }])
        lib_cloud = self.get_lib_cloud()

        radl_data = """
            system test (
            cpu.count>=2 and
            memory.size>=2048m
            )"""
        radl = radl_parse.parse_radl(radl_data)

        inf = MagicMock()
        inf.get_next_vm_id.return_value = 1
        vm = VirtualMachine(inf, "1", lib_cloud.cloud, radl, radl, lib_cloud)
        vm.keypair = ""

        driver = MagicMock()
        driver.name = "Amazon EC2"
        get_driver.return_value = driver

        node = MagicMock()
        node.id = "1"
        node.state = "running"
        node.driver = driver
        node.destroy.return_value = True
        driver.list_nodes.return_value = [node]

        sg = MagicMock()
        sg.id = sg.name = "sg1"
        driver.ex_get_node_security_groups.return_value = [sg]

        keypair = MagicMock()
        driver.get_key_pair.return_value = keypair
        vm.keypair = keypair
        volume = MagicMock()
        volume.id = "id"
        vm.volumes = [volume]

        driver.delete_key_pair.return_value = True

        driver.ex_describe_addresses_for_node.return_value = ["ip"]
        driver.ex_disassociate_address.return_value = True

        success, _ = lib_cloud.finalize(vm, auth)

        self.assertTrue(success, msg="ERROR: finalizing VM info.")
        self.assertNotIn("ERROR",
                         self.log.getvalue(),
                         msg="ERROR found in log: %s" % self.log.getvalue())
        self.clean_log()
Ejemplo n.º 3
0
    def test_60_finalize(self, get_driver):
        auth = Authentication([{'id': 'libcloud', 'type': 'LibCloud', 'username': '******',
                                'password': '******', 'driver': 'EC2'}])
        lib_cloud = self.get_lib_cloud()

        radl_data = """
            system test (
            cpu.count>=2 and
            memory.size>=2048m
            )"""
        radl = radl_parse.parse_radl(radl_data)

        inf = MagicMock()
        inf.get_next_vm_id.return_value = 1
        vm = VirtualMachine(inf, "1", lib_cloud.cloud, radl, radl, lib_cloud)
        vm.keypair = ""

        driver = MagicMock()
        driver.name = "Amazon EC2"
        get_driver.return_value = driver

        node = MagicMock()
        node.id = "1"
        node.state = "running"
        node.driver = driver
        node.destroy.return_value = True
        driver.list_nodes.return_value = [node]

        sg = MagicMock()
        sg.id = sg.name = "sg1"
        driver.ex_get_node_security_groups.return_value = [sg]

        keypair = MagicMock()
        driver.get_key_pair.return_value = keypair
        vm.keypair = keypair
        volume = MagicMock()
        volume.id = "id"
        vm.volumes = [volume]

        driver.delete_key_pair.return_value = True

        driver.ex_describe_addresses_for_node.return_value = ["ip"]
        driver.ex_disassociate_address.return_value = True

        success, _ = lib_cloud.finalize(vm, auth)

        self.assertTrue(success, msg="ERROR: finalizing VM info.")
        self.assertNotIn("ERROR", self.log.getvalue(), msg="ERROR found in log: %s" % self.log.getvalue())
        self.clean_log()
Ejemplo n.º 4
0
    def test_60_finalize(self, sleep, get_driver):
        auth = Authentication([{
            'id': 'ost',
            'type': 'CloudStack',
            'username': '******',
            'password': '******',
            'host': 'http://server.com'
        }])
        osc_cloud = self.get_osc_cloud()

        radl_data = """
            network public (outboud = 'yes')
            system test (
            cpu.count>=2 and
            memory.size>=2048m
            )"""
        radl = radl_parse.parse_radl(radl_data)

        inf = MagicMock()
        inf.id = "infid"
        inf.radl = radl
        vm = VirtualMachine(inf, "1", osc_cloud.cloud, radl, radl, osc_cloud,
                            1)
        vm.volumes = ["volid"]

        driver = MagicMock()
        driver.name = "CloudStack"
        get_driver.return_value = driver

        node = MagicMock()
        node.id = "1"
        node.state = "running"
        node.driver = driver
        node.destroy.return_value = True
        driver.list_nodes.return_value = [node]

        driver.delete_security_group.return_value = True

        success, _ = osc_cloud.finalize(vm, True, auth)

        self.assertTrue(success, msg="ERROR: finalizing VM info.")
        self.assertNotIn("ERROR",
                         self.log.getvalue(),
                         msg="ERROR found in log: %s" % self.log.getvalue())
Ejemplo n.º 5
0
    def test_60_finalize(self, sleep, get_driver):
        auth = Authentication([{
            'id': 'ost',
            'type': 'OpenStack',
            'username': '******',
            'password': '******',
            'tenant': 'tenant',
            'host': 'https://server.com:5000'
        }])
        ost_cloud = self.get_ost_cloud()

        radl_data = """
            network public (outboud = 'yes')
            network private (create = 'yes' and provider_id = ' im-infid-private')
            system test (
            cpu.count>=2 and
            memory.size>=2048m and
            net_interface.0.connection = 'public' and
            net_interface.1.connection = 'private'
            )"""
        radl = radl_parse.parse_radl(radl_data)

        inf = MagicMock()
        inf.id = "infid"
        inf.radl = radl
        vm = VirtualMachine(inf, "1", ost_cloud.cloud, radl, radl, ost_cloud,
                            1)

        driver = MagicMock()
        driver.name = "OpenStack"
        get_driver.return_value = driver

        node = MagicMock()
        node.id = "1"
        node.state = "running"
        node.extra = {'flavorId': 'small'}
        node.public_ips = ['158.42.1.1']
        node.private_ips = ['10.0.0.1']
        node.driver = driver
        node.destroy.return_value = True
        driver.ex_get_node_details.return_value = node

        driver.delete_security_group.return_value = True

        fip = MagicMock()
        fip.node_id = node.id
        fip.ip_address = '158.42.1.1'
        fip.delete.return_value = True
        driver.ex_list_floating_ips.return_value = [fip]
        driver.ex_detach_floating_ip_from_node.return_value = True

        sg1 = MagicMock()
        sg1.name = "im-infid-private"
        sg1.description = "Security group created by the IM"
        sg2 = MagicMock()
        sg2.name = "im-infid-public"
        sg2.description = "Security group created by the IM"
        sg3 = MagicMock()
        sg3.name = "im-infid"
        sg3.description = ""
        driver.ex_list_security_groups.return_value = [sg1, sg2, sg3]

        net1 = MagicMock()
        net1.name = "im-infid-private"
        net1.cidr = None
        net1.extra = {'subnets': ["subnet1"]}
        net2 = MagicMock()
        net2.name = "public"
        net2.cidr = None
        net2.extra = {'subnets': [], 'router:external': True}
        driver.ex_list_networks.return_value = [net1, net2]

        router = MagicMock()
        router.id = "id"
        router.name = "name"
        router.extra = {'external_gateway_info': {'network_id': net2.id}}
        driver.ex_list_routers.return_value = [router]
        driver.ex_add_router_subnet.return_value = True

        volume = MagicMock()
        driver.ex_get_volume.return_value = volume
        driver.detach_volume.return_value = True
        driver.ex_remove_security_group_from_node.return_value = True

        vm.volumes = ['volid']
        success, _ = ost_cloud.finalize(vm, True, auth)

        self.assertTrue(success, msg="ERROR: finalizing VM info.")
        self.assertNotIn("ERROR",
                         self.log.getvalue(),
                         msg="ERROR found in log: %s" % self.log.getvalue())

        self.assertEqual(node.destroy.call_args_list, [call()])
        self.assertEqual(driver.detach_volume.call_args_list[0][0][0], volume)
        self.assertEqual(
            driver.ex_remove_security_group_from_node.call_args_list[0][0]
            [0].name, "im-infid")
        self.assertEqual(
            driver.ex_remove_security_group_from_node.call_args_list[1][0]
            [0].name, "im-infid-public")
        self.assertEqual(
            driver.ex_remove_security_group_from_node.call_args_list[2][0]
            [0].name, "im-infid-private")
        self.assertEqual(driver.ex_del_router_subnet.call_args_list[0][0][0],
                         router)
        self.assertEqual(
            driver.ex_del_router_subnet.call_args_list[0][0][1].id, "subnet1")
        self.assertEqual(driver.ex_delete_network.call_args_list[0][0][0],
                         net1)
        self.assertEqual(
            driver.ex_delete_security_group.call_args_list[0][0][0], sg2)
        self.assertEqual(
            driver.ex_delete_security_group.call_args_list[1][0][0], sg1)
        self.assertEqual(fip.delete.call_args_list, [call()])
        self.assertEqual(
            driver.ex_detach_floating_ip_from_node.call_args_list[0][0],
            (node, fip))

        vm.floating_ips = ['158.42.1.1']
        success, _ = ost_cloud.finalize(vm, True, auth)
        self.assertEqual(fip.delete.call_args_list, [call()])
        self.assertEqual(node.destroy.call_args_list, [call(), call()])
Ejemplo n.º 6
0
    def test_55_alter(self, add_elastic_ip_from_pool, get_driver):
        radl_data = """
            network net ()
            system test (
            cpu.arch='x86_64' and
            cpu.count=1 and
            memory.size=512m and
            net_interface.0.connection = 'net' and
            net_interface.0.dns_name = 'test' and
            disk.0.os.name = 'linux' and
            disk.0.image.url = 'one://server.com/1' and
            disk.0.os.credentials.username = '******' and
            disk.0.os.credentials.password = '******'
            )"""
        radl = radl_parse.parse_radl(radl_data)

        new_radl_data = """
            system test (
            cpu.count>=2 and
            memory.size>=2048m
            )"""
        new_radl = radl_parse.parse_radl(new_radl_data)

        auth = Authentication([{
            'id': 'ost',
            'type': 'OpenStack',
            'username': '******',
            'password': '******',
            'tenant': 'tenant',
            'host': 'https://server.com:5000'
        }])
        ost_cloud = self.get_ost_cloud()

        inf = MagicMock()
        vm = VirtualMachine(inf, "1", ost_cloud.cloud, radl, radl, ost_cloud,
                            1)
        vm.volumes = []

        driver = MagicMock()
        get_driver.return_value = driver

        node = MagicMock()
        node.id = "1"
        node.state = "running"
        node.extra = {'flavorId': 'small', 'vm_state': 'resized'}
        node.public_ips = []
        node.private_ips = ['10.0.0.1']
        node.driver = driver
        driver.ex_get_node_details.return_value = node

        node_size = MagicMock()
        node_size.ram = 2048
        node_size.price = 1
        node_size.disk = 1
        node_size.vcpus = 2
        node_size.name = "small"
        driver.list_sizes.return_value = [node_size]
        driver.ex_get_size.return_value = node_size

        driver.ex_resize.return_value = True
        driver.ex_confirm_resize.return_value = True

        success, _ = ost_cloud.alterVM(vm, new_radl, auth)

        self.assertTrue(success, msg="ERROR: modifying VM info.")
        self.assertEqual(driver.ex_resize.call_args_list[0][0],
                         (node, node_size))
        self.assertEqual(driver.ex_confirm_resize.call_args_list[0][0],
                         (node, ))

        new_radl_data = """
            system test (
            disk.1.size = 10G
            )"""
        new_radl = radl_parse.parse_radl(new_radl_data)

        volume = MagicMock()
        volume.id = 'volid'
        volume.extra = {'state': 'available'}
        volume.attach.return_value = True
        volumeused = MagicMock()
        volumeused.extra = {
            'state': 'in-use',
            'attachments': [{
                'device': 'hdc'
            }]
        }
        volumeused.id = 'volid'
        volume.driver.ex_get_volume.return_value = volumeused
        driver.create_volume.return_value = volume

        success, _ = ost_cloud.alterVM(vm, new_radl, auth)
        self.assertEqual(vm.info.systems[0].getValue("disk.1.device"), 'hdc')
        self.assertTrue(success, msg="ERROR: modifying VM info.")

        new_radl_data = """
            network net1 (outbound = 'yes' and provider_id = 'pool1')
            system test (
            net_interface.0.connection = 'net1'
            )"""
        new_radl = radl_parse.parse_radl(new_radl_data)

        add_elastic_ip_from_pool.return_value = True, ""

        success, _ = ost_cloud.alterVM(vm, new_radl, auth)
        self.assertTrue(success, msg="ERROR: modifying VM info.")
        self.assertEqual(add_elastic_ip_from_pool.call_args_list[0][0],
                         (vm, node, None, 'pool1'))

        radl_data = """
            network net (outbound = 'yes' and provider_id = 'pool1')
            system test (
            cpu.arch='x86_64' and
            cpu.count=1 and
            memory.size=512m and
            net_interface.0.connection = 'net' and
            net_interface.0.ip = '8.8.8.8' and
            net_interface.0.dns_name = 'test' and
            disk.0.os.name = 'linux' and
            disk.0.image.url = 'one://server.com/1' and
            disk.0.os.credentials.username = '******' and
            disk.0.os.credentials.password = '******'
            )"""
        radl = radl_parse.parse_radl(radl_data)
        vm = VirtualMachine(inf, "1", ost_cloud.cloud, radl, radl, ost_cloud,
                            1)

        new_radl_data = """
            network net ()
            system test (
            net_interface.0.connection = 'net'
            )"""
        new_radl = radl_parse.parse_radl(new_radl_data)

        fip = MagicMock()
        fip.delete.return_value = True
        driver.ex_get_floating_ip.return_value = fip
        driver.ex_detach_floating_ip_from_node.return_value = True
        node.public_ips = ['158.42.1.1']

        success, _ = ost_cloud.alterVM(vm, new_radl, auth)
        self.assertTrue(success, msg="ERROR: modifying VM info.")
        self.assertEqual(
            driver.ex_detach_floating_ip_from_node.call_args_list[0][0],
            (node, fip))
        self.assertIsNone(
            vm.requested_radl.systems[0].getValue('net_interface.0.ip'))

        self.assertNotIn("ERROR",
                         self.log.getvalue(),
                         msg="ERROR found in log: %s" % self.log.getvalue())