def test_context_undo_fail_db_update(self): project = Project(name='p-{}'.format(self.id())) self.api.project_create(project) vn_og = VirtualNetwork(name='og-vn-{}'.format(self.id()), parent_obj=project) self.api.virtual_network_create(vn_og) vmi_obj = VirtualMachineInterface('vmi-{}'.format(self.id()), parent_obj=project) vmi_obj.set_virtual_network(vn_og) self.api.virtual_machine_interface_create(vmi_obj) vmi_obj = self.api.virtual_machine_interface_read(id=vmi_obj.uuid) # change virtual network for VMI vn_next = VirtualNetwork(name='next-vn-{}'.format(self.id()), parent_obj=project) vn_next.uuid = self.api.virtual_network_create(vn_next) vmi_obj.set_virtual_network(vn_next) def stub(*args, **kwargs): return False, (500, "Fake error") with ExpectedException(HttpError): with test_common.flexmocks([(self._api_server._db_conn, 'dbe_update', stub)]): self.api.virtual_machine_interface_update(vmi_obj) vmi_obj = self.api.virtual_machine_interface_read(id=vmi_obj.uuid) vn_ref_fq_names = [n['to'] for n in vmi_obj.get_virtual_network_refs()] self.assertEqual(len(vn_ref_fq_names), 1) self.assertEqual(vn_ref_fq_names[0], vn_og.get_fq_name())
def test_create_pool(self): tenant_id = _uuid() pool_id = _uuid() vip_id = _uuid() subnet_id = _uuid() api = self.api_server project = Project(name='test') project.uuid = tenant_id template = ServiceTemplate('lb-test', project) template.uuid = _uuid() pool_attrs = LoadbalancerPoolType() pool_attrs.subnet_id = subnet_id pool = LoadbalancerPool( pool_id, project, loadbalancer_pool_properties=pool_attrs) pool.uuid = pool_id vip_attrs = VirtualIpType() vip_attrs.subnet_id = subnet_id vip_attrs.address = '127.0.0.1' vip = VirtualIp(vip_id, project, virtual_ip_properties=vip_attrs) vip.uuid = vip_id vip.set_loadbalancer_pool(pool) vnet = VirtualNetwork('test', project) vnet.uuid = _uuid() vmi = VirtualMachineInterface(vip_id, project) vmi.uuid = _uuid() vmi.set_virtual_network(vnet) iip = InstanceIp(vip_id, instance_ip_address='127.0.0.1') iip.uuid = _uuid() iip.set_virtual_machine_interface(vmi) iip_refs = [ {'to': iip.get_fq_name(), 'uuid': iip.uuid} ] vmi.get_instance_ip_back_refs = mock.Mock() vmi.get_instance_ip_back_refs.return_value = iip_refs vip.set_virtual_machine_interface(vmi) api.virtual_service_template_read = template api.loadbalancer_pool_read.return_value = pool api.virtual_ip_read.return_value = vip api.kv_retrieve.return_value = '%s %s' % (vnet.uuid, subnet_id) api.virtual_machine_interface_read.return_value = vmi api.instance_ip_read.return_value = iip api.service_instance_read.side_effect = NoIdError('404') context = {} pool_data = { 'id': pool_id, 'vip_id': vip_id } self.driver.create_pool(context, pool_data) api.service_instance_create.assert_called_with(mock.ANY)