def _set(self, set_method, c, context, listener): if self.barbican_client is None: self.barbican_client = certwrapper.CertManagerWrapper() status = c.client.slb.UP if not listener.admin_state_up: status = c.client.slb.DOWN templates = self.meta(listener, "template", {}) server_args = {} cert_data = dict() if listener.protocol and listener.protocol == lb_const.PROTOCOL_TERMINATED_HTTPS: if self._set_terminated_https_values(listener, c, cert_data): templates["client_ssl"] = {} template_name = str(cert_data.get('template_name', '')) key_passphrase = str(cert_data.get('cert_pass', '')) cert_filename = str(cert_data.get('cert_filename', '')) key_filename = str(cert_data.get('key_filename', '')) else: LOG.error("Could not created terminated HTTPS endpoint.") if 'client_ssl' in templates: try: c.client.slb.template.client_ssl.create(template_name, cert=cert_filename, key=key_filename) except acos_errors.Exists: c.client.slb.template.client_ssl.update( template_name, cert=cert_filename, key=key_filename, passphrase=key_passphrase) if 'server_ssl' in templates: server_args = {'server_ssl_template': templates['server_ssl']} try: c.client.slb.template.server_ssl.create(template_name, cert_filename, key_filename, axapi_args=server_args) except acos_errors.Exists: c.client.slb.template.server_ssl.update(template_name, cert_filename, key_filename, axapi_args=server_args) try: pool_name = self._pool_name(context, pool_id=listener.default_pool_id) except Exception: pool_name = None persistence = handler_persist.PersistHandler(c, context, listener.default_pool) vport_meta = self.meta(listener.loadbalancer, 'vip_port', {}) a10_common._set_auto_parameter(vport_meta, c.device_cfg) a10_common._set_ipinip_parameter(vport_meta, c.device_cfg) vport_args = {'port': vport_meta} try: set_method(self.a10_driver.loadbalancer._name( listener.loadbalancer), self._meta_name(listener), protocol=a10_osmap.vip_protocols(c, listener.protocol), port=listener.protocol_port, service_group_name=pool_name, s_pers_name=persistence.s_persistence(), c_pers_name=persistence.c_persistence(), status=status, axapi_args=vport_args) except acos_errors.Exists: pass
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 = [{}] try: vip_meta = self.meta(vip, 'virtual_server', {}) a10_common._set_vrid_parameter(vip_meta, c.device_cfg) vip_args = { 'virtual_server': vip_meta } vport_list = vip_args['virtual_server'].pop('vport_list', [{}]) 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) try: if vport_list[0]: a10_common._set_auto_parameter(vport_list[0], c.device_cfg) a10_common._set_ipinip_parameter(vport_list[0], c.device_cfg) vport_args = {'vport': vport_list[0]} else: vport_meta = self.meta(vip, 'vport', {}) a10_common._set_auto_parameter(vport_meta, c.device_cfg) a10_common._set_ipinip_parameter(vport_meta, c.device_cfg) vport_args = {'vport': vport_meta} c.client.slb.virtual_server.vport.create( self._meta_name(vip), self._meta_name(vip) + '_VPORT', 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 i = 1 for vport in vport_list[1:]: i += 1 try: a10_common._set_auto_parameter(vport, c.device_cfg) a10_common._set_ipinip_parameter(vport, c.device_cfg) vport_args = {'vport': vport} c.client.slb.virtual_server.vport.create( self._meta_name(vip), self._meta_name(vip) + '_VPORT' + str(i), 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 self.hooks.after_vip_create(c, context, vip)
def _set(self, set_method, c, context, listener): if self.barbican_client is None: self.barbican_client = certwrapper.CertManagerWrapper() status = c.client.slb.UP if not listener.admin_state_up: status = c.client.slb.DOWN templates = self.meta(listener, "template", {}) server_args = {} cert_data = dict() if listener.protocol and listener.protocol == lb_const.PROTOCOL_TERMINATED_HTTPS: if self._set_terminated_https_values(listener, c, cert_data): templates["client_ssl"] = {} template_name = str(cert_data.get('template_name', '')) key_passphrase = str(cert_data.get('cert_pass', '')) cert_filename = str(cert_data.get('cert_filename', '')) key_filename = str(cert_data.get('key_filename', '')) else: LOG.error("Could not created terminated HTTPS endpoint.") if 'client_ssl' in templates: try: c.client.slb.template.client_ssl.create( template_name, cert=cert_filename, key=key_filename) except acos_errors.Exists: c.client.slb.template.client_ssl.update(template_name, cert=cert_filename, key=key_filename, passphrase=key_passphrase) if 'server_ssl' in templates: server_args = {'server_ssl_template': templates['server_ssl']} try: c.client.slb.template.server_ssl.create( template_name, cert_filename, key_filename, axapi_args=server_args) except acos_errors.Exists: c.client.slb.template.server_ssl.update(template_name, cert_filename, key_filename, axapi_args=server_args) try: pool_name = self._pool_name(context, pool_id=listener.default_pool_id) except Exception: pool_name = None persistence = handler_persist.PersistHandler( c, context, listener.default_pool) vport_meta = self.meta(listener.loadbalancer, 'vip_port', {}) a10_common._set_auto_parameter(vport_meta, c.device_cfg) a10_common._set_ipinip_parameter(vport_meta, c.device_cfg) vport_args = {'port': vport_meta} try: set_method( self.a10_driver.loadbalancer._name(listener.loadbalancer), self._meta_name(listener), protocol=a10_osmap.vip_protocols(c, listener.protocol), port=listener.protocol_port, service_group_name=pool_name, s_pers_name=persistence.s_persistence(), c_pers_name=persistence.c_persistence(), status=status, axapi_args=vport_args) except acos_errors.Exists: pass