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)
def test_rbac_on_back_ref(self): admin_iip_count = 10 iip_uuids = set() user_api = self._get_api_client( 'user-%s' % self.id(), 'password', 'project-%s' % self.id(), 'member') user_project = self.admin_api.project_read(id=user_api.project_id) user_vn = VirtualNetwork( 'user-vn-%s' % self.id(), parent_obj=user_project) user_ni = NetworkIpam('ni-%s' % self.id(), parent_obj=user_project) user_api.network_ipam_create(user_ni) user_vn.add_network_ipam( user_ni, VnSubnetsType( [IpamSubnetType(SubnetType('1.1.1.0', 28))])) user_api.virtual_network_create(user_vn) user_vmi_view = VirtualMachineInterface( 'user-vmi-%s' % self.id(), parent_obj=user_project) user_vmi_view.add_virtual_network(user_vn) user_api.virtual_machine_interface_create(user_vmi_view) user_iip = InstanceIp('user-iip-%s' % self.id()) user_iip.add_virtual_network(user_vn) user_iip.add_virtual_machine_interface(user_vmi_view) user_api.instance_ip_create(user_iip) iip_uuids.add(user_iip.uuid) for i in range(admin_iip_count): admin_iip = InstanceIp('admin-iip-%d-%s' % (i, self.id())) admin_iip.add_virtual_network(user_vn) admin_iip.add_virtual_machine_interface(user_vmi_view) self.admin_api.instance_ip_create(admin_iip) iip_uuids.add(admin_iip.uuid) user_iips = user_vmi_view.get_instance_ip_back_refs() self.assertEqual(len(user_iips), 1) self.assertEqual(user_iips[0]['uuid'], user_iip.uuid) admin_vmi_view = self.admin_api.virtual_machine_interface_read( id=user_vmi_view.uuid) admin_iips = admin_vmi_view.get_instance_ip_back_refs() self.assertEqual(len(admin_iips), admin_iip_count + 1) self.assertEqual({iip['uuid'] for iip in admin_iips}, iip_uuids)