def find(self, openstack_lbaas_obj): loadbalancer = openstack_lbaas_obj.root_loadbalancer slb = self.db_operations.get_slb_v2(loadbalancer.id) if slb is None: # Assign this loadbalancer to an appliance appliance = self.select_appliance(openstack_lbaas_obj) slb = models.default( models.A10SLBV2, lbaas_loadbalancer_id=loadbalancer.id, a10_appliance=appliance) self.db_operations.add(slb) return slb.a10_appliance
def tenant_appliance(self): """Chooses the appliance a tenant is already on, or assigns it""" tenant_id = self.a10_context.tenant_id tenant = self.db_operations.get_tenant_appliance(tenant_id) if tenant is None: # Assign this tenant to an appliance appliance = self.select_tenant_appliance() tenant = models.default( models.A10TenantAppliance, tenant_id=tenant_id, a10_appliance=appliance) self.db_operations.add(tenant) return tenant.a10_appliance
def test_delete_slb_v2_deletes_slb(self): slb = models.default( models.A10SLBV2, lbaas_loadbalancer_id='lbaas_loadbalancer_id', a10_appliance_id='fake-a10-appliance-id' ) operations1 = self.operations() operations1.add(slb) operations1.session.commit() operations2 = self.operations() operations2.delete_slb_v2(slb.lbaas_loadbalancer_id) operations2.session.commit() session = self.open_session() slbs = list(session.query(models.A10SLB)) self.assertEqual([], slbs)
def test_delete_slb_v1_deletes_slb(self): slb = models.default( models.A10SLBV1, vip_id='fake-vip-id', a10_appliance_id='fake-a10-appliance-id' ) operations1 = self.operations() operations1.add(slb) operations1.session.commit() operations2 = self.operations() operations2.delete_slb_v1(slb.vip_id) operations2.session.commit() session = self.open_session() slbs = list(session.query(models.A10SLB)) self.assertEqual([], slbs)
def create(self, context, vip): with a10.A10WriteStatusContext(self, context, vip) as c: status = c.client.slb.UP if not vip['admin_state_up']: status = c.client.slb.DOWN pool_name = self._pool_name(context, vip['pool_id']) p = PersistHandler(c, context, vip, self._meta_name(vip)) p.create() templates = self.meta(vip, "template", {}) if 'client_ssl' in templates: args = {'client_ssl_template': templates['client_ssl']} try: c.client.slb.template.client_ssl.create( '', '', '', axapi_args=args) except acos_errors.Exists: pass if 'server_ssl' in templates: args = {'server_ssl_template': templates['server_ssl']} try: c.client.slb.template.server_ssl.create( '', '', '', axapi_args=args) except acos_errors.Exists: pass vport_list = None try: vip_meta = self.meta(vip, 'virtual_server', {}) vport_list = vip_meta.pop('vport_list', None) vip_args = a10_common._virtual_server(vip_meta, c.device_cfg) c.client.slb.virtual_server.create( self._meta_name(vip), vip['address'], status, axapi_args=vip_args) except acos_errors.Exists: pass LOG.debug("VPORT_LIST = %s", vport_list) if vport_list is None: vport_list = [self.vport_meta(vip)] for vport, i in zip(vport_list, range(len(vport_list))): try: vport_name = str(i) if i else '' vport_args = a10_common._vport(vport, c.device_cfg) c.client.slb.virtual_server.vport.create( self._meta_name(vip), self._meta_name(vip) + '_VPORT' + vport_name, protocol=a10_os.vip_protocols(c, vip['protocol']), port=vip['protocol_port'], service_group_name=pool_name, s_pers_name=p.s_persistence(), c_pers_name=p.c_persistence(), status=status, axapi_args=vport_args) except acos_errors.Exists: pass slb = models.default( models.A10SLBV1, vip_id=vip['id'], a10_appliance=c.appliance) c.db_operations.add(slb) self.hooks.after_vip_create(c, context, vip)