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.")
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()
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()
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())
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()])
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())