def create(self, context, pool): """ Create a loadbalancer_pool object. """ p = pool['pool'] tenant_id = self._get_tenant_id_for_create(context, p) project = self._project_read(project_id=tenant_id) uuid = uuidutils.generate_uuid() name = self._get_resource_name('loadbalancer-pool', project, p['name'], uuid) props = self.make_properties(p) id_perms = IdPermsType(uuid=uuid, enable=True, description=p['description']) pool = LoadbalancerPool(name, project, loadbalancer_pool_properties=props, loadbalancer_pool_provider=p['provider'], id_perms=id_perms, display_name=p['name']) pool.uuid = uuid if p['health_monitors']: for hm in p['health_monitors']: try: mon = self._api.loadbalancer_healthmonitor_read(id=hm) except NoIdError: raise loadbalancer.HealthMonitorNotFound(monitor_id=hm) pool.add_loadbalancer_healthmonitor(mon) self._api.loadbalancer_pool_create(pool) return self.make_dict(pool)
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 _create_pool(self, pool_id, tenant_id=None): if tenant_id is None: tenant_id = _uuid() id_perms = IdPermsType(uuid=pool_id, enable=True) props = self._loadbalancer_pool_properties_build() pool = LoadbalancerPool(loadbalancer_pool_properties=props, id_perms=id_perms, display_name='pool1') pool.parent_uuid = tenant_id pool.uuid = pool_id return pool
def create(self, context, pool): """ Create a loadbalancer_pool object. """ p = pool['pool'] tenant_id = self._get_tenant_id_for_create(context, p) project = self._project_read(project_id=tenant_id) if p['listener_id']: try: ll = self._api.loadbalancer_listener_read(id=p['listener_id']) except NoIdError: raise loadbalancerv2.EntityNotFound(name='Listener', id=p['listener_id']) project_id = ll.parent_uuid if str(uuid.UUID(tenant_id)) != project_id: raise NotAuthorized() else: ll = None pool_uuid = uuidutils.generate_uuid() name = self._get_resource_name('loadbalancer-pool', project, p['name'], pool_uuid) props = self.make_properties(p) id_perms = IdPermsType(enable=True, description=p['description']) pool = LoadbalancerPool(name, project, uuid=pool_uuid, loadbalancer_pool_properties=props, id_perms=id_perms, display_name=p['name']) if ll: pool_exists = ll.get_loadbalancer_pool_back_refs() if pool_exists is not None: raise loadbalancerv2.OnePoolPerListener( listener_id=p['listener_id'], pool_id=pool_exists[0]['uuid']) pool.set_loadbalancer_listener(ll) # Custom attributes if p['custom_attributes'] != ATTR_NOT_SPECIFIED: custom_attributes = KeyValuePairs() self.create_update_custom_attributes(p['custom_attributes'], custom_attributes) pool.set_loadbalancer_pool_custom_attributes(custom_attributes) self._api.loadbalancer_pool_create(pool) return self.make_dict(pool)
def create(self, context, pool): """ Create a loadbalancer_pool object. """ p = pool['pool'] try: sas_fq_name = ["default-global-system-config"] sas_fq_name.append(p['provider']) sas_obj = self._api.service_appliance_set_read(fq_name=sas_fq_name) except NoIdError: raise pconf.ServiceProviderNotFound( provider=p['provider'], service_type=constants.LOADBALANCER) tenant_id = self._get_tenant_id_for_create(context, p) project = self._project_read(project_id=tenant_id) uuid = uuidutils.generate_uuid() name = self._get_resource_name('loadbalancer-pool', project, p['name'], uuid) props = self.make_properties(p) id_perms = IdPermsType(enable=True, description=p['description']) pool = LoadbalancerPool(name, project, loadbalancer_pool_properties=props, loadbalancer_pool_provider=p['provider'], id_perms=id_perms, display_name=p['name']) pool.uuid = uuid if p['health_monitors']: for hm in p['health_monitors']: try: mon = self._api.loadbalancer_healthmonitor_read(id=hm) except NoIdError: raise loadbalancer.HealthMonitorNotFound(monitor_id=hm) pool.add_loadbalancer_healthmonitor(mon) pool.set_service_appliance_set(sas_obj) self._api.loadbalancer_pool_create(pool) return self.make_dict(pool)
def create(self, context, pool): """ Create a loadbalancer_pool object. """ p = pool["pool"] try: sas_fq_name = ["default-global-system-config"] sas_fq_name.append(p["provider"]) sas_obj = self._api.service_appliance_set_read(fq_name=sas_fq_name) except NoIdError: raise pconf.ServiceProviderNotFound(provider=p["provider"], service_type=constants.LOADBALANCER) tenant_id = self._get_tenant_id_for_create(context, p) project = self._project_read(project_id=tenant_id) uuid = uuidutils.generate_uuid() name = self._get_resource_name("loadbalancer-pool", project, p["name"], uuid) props = self.make_properties(p) id_perms = IdPermsType(enable=True, description=p["description"]) pool = LoadbalancerPool( name, project, loadbalancer_pool_properties=props, loadbalancer_pool_provider=p["provider"], id_perms=id_perms, display_name=p["name"], ) pool.uuid = uuid if p["health_monitors"]: for hm in p["health_monitors"]: try: mon = self._api.loadbalancer_healthmonitor_read(id=hm) except NoIdError: raise loadbalancer.HealthMonitorNotFound(monitor_id=hm) pool.add_loadbalancer_healthmonitor(mon) pool.set_service_appliance_set(sas_obj) self._api.loadbalancer_pool_create(pool) return self.make_dict(pool)
def _loadbalancer_pool_read(self, *args, **kwargs): pool = LoadbalancerPool() pool.uuid = kwargs['id'] pool.parent_uuid = self._project.uuid return pool
def loadbalancer_pool_read(*args, **kwargs): props = self._loadbalancer_pool_properties_build() pool = LoadbalancerPool(loadbalancer_pool_properties=props) pool.uuid = kwargs['id'] pool.parent_uuid = _uuid() return pool