def execute(self, listeners, health_mon, vthunder):
        method = None
        url = None
        expect_code = None

        if health_mon.type in a10constants.HTTP_TYPE:
            method = health_mon.http_method
            url = health_mon.url_path
            expect_code = health_mon.expected_codes
        args = utils.meta(health_mon, 'hm', {})

        try:
            self.axapi_client.slb.hm.create(health_mon.id[0:5],
                                            openstack_mappings.hm_type(self.axapi_client,
                                                                       health_mon.type),
                                            health_mon.delay, health_mon.timeout,
                                            health_mon.rise_threshold, method=method,
                                            port=listeners[0].protocol_port, url=url,
                                            expect_code=expect_code, axapi_args=args)
            LOG.debug("Health Monitor created successfully: %s", health_mon.id)
        except Exception as e:
            LOG.exception("Failed to create Health Monitor: %s", str(e))
            raise

        try:
            self.axapi_client.slb.service_group.update(health_mon.pool_id,
                                                       health_monitor=health_mon.id[0:5],
                                                       health_check_disable=0)
            LOG.debug("Health Monitor %s is associated to pool %s successfully.",
                      health_mon.id, health_mon.pool_id)
        except Exception as e:
            LOG.exception("Failed to associate pool to Health Monitor: %s", str(e))
            raise
예제 #2
0
    def execute(self, member, vthunder, pool):
        server_args = utils.meta(member, 'server', {})
        server_args['conn-limit'] = CONF.server.conn_limit
        server_args['conn-resume'] = CONF.server.conn_resume
        server_args = {'server': server_args}
        server_temp = {}
        server_temp['template-server'] = CONF.server.template_server
        if not member.enabled:
            status = False
        else:
            status = True

        try:
            self.axapi_client.slb.server.create(member.id,
                                                member.ip_address,
                                                status=status,
                                                server_templates=server_temp,
                                                axapi_args=server_args)
            LOG.debug("Member created successfully: %s", member.id)
        except Exception as e:
            LOG.exception("Failed to create member: %s", str(e))
            raise

        try:
            self.axapi_client.slb.service_group.member.create(
                pool.id, member.id, member.protocol_port)
            LOG.debug("Member %s associated to pool %s successfully",
                      member.id, pool.id)
        except Exception as e:
            LOG.exception("Failed to associate member to pool: %s", str(e))
            raise
 def execute(self, listeners, health_mon, vthunder, update_dict):
     """ Execute update health monitor """
     # TODO(hthompson6) Length of name of healthmonitor for older vThunder devices
     health_mon.update(update_dict)
     method = None
     url = None
     expect_code = None
     if health_mon.type in a10constants.HTTP_TYPE:
         method = health_mon.http_method
         url = health_mon.url_path
         expect_code = health_mon.expected_codes
     args = utils.meta(health_mon, 'hm', {})
     try:
         self.axapi_client.slb.hm.update(health_mon.id,
                                         openstack_mappings.hm_type(
                                             self.axapi_client,
                                             health_mon.type),
                                         health_mon.delay,
                                         health_mon.timeout,
                                         health_mon.rise_threshold,
                                         method=method,
                                         url=url,
                                         expect_code=expect_code,
                                         port=listeners[0].protocol_port,
                                         axapi_args=args)
         LOG.debug("Successfully updated health monitor: %s", health_mon.id)
     except (acos_errors.ACOSException, ConnectionError) as e:
         LOG.exception("Failed to update health monitor: %s", health_mon.id)
         raise e
예제 #4
0
    def execute(self, member, vthunder):
        server_name = '{}_{}'.format(member.project_id[:5],
                                     member.ip_address.replace('.', '_'))
        server_args = utils.meta(member, 'server', {})
        server_args['conn-limit'] = CONF.server.conn_limit
        server_args['conn-resume'] = CONF.server.conn_resume
        server_args = {'server': server_args}

        template_server = CONF.server.template_server
        if template_server and template_server.lower() == 'none':
            template_server = None
        server_temp = {'template-server': template_server}

        if not member.enabled:
            status = False
        else:
            status = True

        try:
            self.axapi_client.slb.server.replace(server_name,
                                                 member.ip_address,
                                                 status=status,
                                                 server_templates=server_temp,
                                                 axapi_args=server_args)
            LOG.debug("Successfully updated member: %s", member.id)
        except (acos_errors.ACOSException, exceptions.ConnectionError) as e:
            LOG.exception("Failed to update member: %s", member.id)
            raise e
예제 #5
0
    def set(self, set_method, loadbalancer, flavor_data=None, **kwargs):
        config_args = {
            'arp_disable': CONF.slb.arp_disable,
            'port_list': kwargs.get('port_list'),
            'vrid': CONF.slb.default_virtual_server_vrid,
            'virtual_server': utils.meta(loadbalancer, 'virtual_server', {})
        }

        status = self.axapi_client.slb.UP
        if not loadbalancer.provisioning_status:
            status = self.axapi_client.slb.DOWN
        config_args['status'] = status

        desc = loadbalancer.description
        if not desc:
            desc = None
        elif str(desc).isspace() or not str(desc):
            desc = ""
        else:
            desc = '"{}"'.format(desc)
        config_args['description'] = desc

        if flavor_data:
            virtual_server_flavor = flavor_data.get('virtual_server')
            if virtual_server_flavor:
                name_exprs = virtual_server_flavor.get('name_expressions')
                if name_exprs:
                    del virtual_server_flavor['name_expressions']
                virtual_server_flavor.update(
                    utils.parse_name_expressions(loadbalancer.name,
                                                 name_exprs))
                config_args['virtual_server'].update(virtual_server_flavor)

        set_method(loadbalancer.id, loadbalancer.vip.ip_address, **config_args)
예제 #6
0
    def set(self, set_method, pool, vthunder, flavor=None, **kwargs):
        pool_args = {'service_group': utils.meta(pool, 'service_group', {})}

        device_templates = self.axapi_client.slb.template.templates.get()

        service_group_temp = {}
        template_server = CONF.service_group.template_server
        if template_server and template_server.lower() != 'none':
            if CONF.a10_global.use_shared_for_template_lookup:
                LOG.warning(
                    'Shared partition template lookup for `[service_group]`'
                    ' is not supported on template `template-server`')
            service_group_temp['template-server'] = template_server

        template_port = CONF.service_group.template_port
        if template_port and template_port.lower() != 'none':
            if CONF.a10_global.use_shared_for_template_lookup:
                LOG.warning(
                    'Shared partition template lookup for `[service_group]`'
                    ' is not supported on template `template-port`')
            service_group_temp['template-port'] = template_port

        template_policy = CONF.service_group.template_policy
        if template_policy and template_policy.lower() != 'none':
            template_key = 'template-policy'
            if vthunder.partition_name != "shared":
                if CONF.a10_global.use_shared_for_template_lookup:
                    template_key = utils.shared_template_modifier(
                        template_key, template_policy, device_templates)
            service_group_temp[template_key] = template_policy

        protocol = openstack_mappings.service_group_protocol(
            self.axapi_client, pool.protocol)
        lb_method = openstack_mappings.service_group_lb_method(
            self.axapi_client, pool.lb_algorithm)

        # Handle options from flavor
        if flavor:
            pool_flavor = flavor.get('service_group')
            if pool_flavor:
                name_exprs = pool_flavor.get('name_expressions')
                parsed_exprs = utils.parse_name_expressions(
                    pool.name, name_exprs)
                pool_flavor.pop('name_expressions', None)
                pool_args['service_group'].update(pool_flavor)
                pool_args['service_group'].update(parsed_exprs)

        set_method(pool.id,
                   protocol=protocol,
                   lb_method=lb_method,
                   service_group_templates=service_group_temp,
                   mem_list=kwargs.get('mem_list'),
                   hm_name=kwargs.get('health_monitor'),
                   **pool_args)
예제 #7
0
    def execute(self, member, vthunder, pool, member_count_ip, flavor=None):
        server_name = '{}_{}'.format(member.project_id[:5], member.ip_address.replace('.', '_'))
        server_args = utils.meta(member, 'server', {})
        server_args = utils.dash_to_underscore(server_args)
        server_args['conn_limit'] = CONF.server.conn_limit
        server_args['conn_resume'] = CONF.server.conn_resume
        # overwrite options from flavor
        if flavor:
            server_flavor = flavor.get('server')
            if server_flavor:
                name_exprs = server_flavor.get('name_expressions')
                parsed_exprs = utils.parse_name_expressions(member.name, name_exprs)
                server_flavor.pop('name_expressions', None)
                server_args.update(server_flavor)
                server_args.update(parsed_exprs)
        server_args = {'server': server_args}

        server_temp = {}
        template_server = CONF.server.template_server
        if template_server and template_server.lower() != 'none':
            if CONF.a10_global.use_shared_for_template_lookup:
                LOG.warning('Shared partition template lookup for `[server]`'
                            ' is not supported on template `template-server`')
            server_temp = {'template-server': template_server}

        if not member.enabled:
            status = False
        else:
            status = True

        try:
            try:
                self.axapi_client.slb.server.create(server_name, member.ip_address, status=status,
                                                    server_templates=server_temp,
                                                    **server_args)
                LOG.debug("Successfully created member: %s", member.id)
            except (acos_errors.Exists, acos_errors.AddressSpecifiedIsInUse):
                self.axapi_client.slb.server.update(server_name, member.ip_address, status=status,
                                                    server_templates=server_temp,
                                                    **server_args)
        except (acos_errors.ACOSException, exceptions.ConnectionError) as e:
            LOG.exception("Failed to create member: %s", member.id)
            raise e

        try:
            self.axapi_client.slb.service_group.member.create(
                pool.id, server_name, member.protocol_port)
            LOG.debug("Successfully associated member %s to pool %s",
                      member.id, pool.id)
        except (acos_errors.ACOSException, exceptions.ConnectionError) as e:
            LOG.exception("Failed to associate member %s to pool %s",
                          member.id, pool.id)
            raise e
예제 #8
0
    def execute(self,
                listeners,
                health_mon,
                vthunder,
                update_dict,
                flavor=None):
        """ Execute update health monitor """

        health_mon.update(update_dict)
        method = None
        url = None
        expect_code = None
        if health_mon.type in a10constants.HTTP_TYPE:
            method = health_mon.http_method
            url = health_mon.url_path
            expect_code = health_mon.expected_codes
        args = utils.meta(health_mon, 'hm', {})
        args = utils.dash_to_underscore(args)

        # overwrite options from flavor
        if flavor:
            flavors = flavor.get('health_monitor')
            if flavors:
                name_exprs = flavors.get('name_expressions')
                parsed_exprs = utils.parse_name_expressions(
                    health_mon.name, name_exprs)
                flavors.pop('name_expressions', None)
                flavors.update(parsed_exprs)
                args.update({'monitor': flavors})

        try:
            hm_name = _get_hm_name(self.axapi_client, health_mon)
            post_data = CONF.health_monitor.post_data
            self.axapi_client.slb.hm.update(hm_name,
                                            openstack_mappings.hm_type(
                                                self.axapi_client,
                                                health_mon.type),
                                            health_mon.delay,
                                            health_mon.timeout,
                                            health_mon.rise_threshold,
                                            method=method,
                                            url=url,
                                            expect_code=expect_code,
                                            post_data=post_data,
                                            port=listeners[0].protocol_port,
                                            **args)
            LOG.debug("Successfully updated health monitor: %s", health_mon.id)
        except (acos_errors.ACOSException, ConnectionError) as e:
            LOG.exception("Failed to update health monitor: %s", health_mon.id)
            raise e
    def set(self, set_method, loadbalancer):
        status = self.axapi_client.slb.UP
        if not loadbalancer.provisioning_status:
            status = self.axapi_client.slb.DOWN
        vip_meta = utils.meta(loadbalancer, 'virtual_server', {})
        arp_disable = CONF.slb.arp_disable
        vrid = CONF.slb.default_virtual_server_vrid

        set_method(loadbalancer.id,
                   loadbalancer.vip.ip_address,
                   arp_disable=arp_disable,
                   status=status,
                   vrid=vrid,
                   axapi_body=vip_meta)
예제 #10
0
    def set(self, set_method, pool):

        axapi_args = {'service_group': utils.meta(pool, 'service_group', {})}
        service_group_temp = {}
        service_group_temp['template-server'] = CONF.service_group.template_server
        service_group_temp['template-port'] = CONF.service_group.template_port
        service_group_temp['template-policy'] = CONF.service_group.template_policy
        protocol = openstack_mappings.service_group_protocol(self.axapi_client, pool.protocol)
        lb_method = openstack_mappings.service_group_lb_method(self.axapi_client, pool.lb_algorithm)
        set_method(pool.id,
                   protocol=protocol,
                   lb_method=lb_method,
                   service_group_templates=service_group_temp,
                   axapi_args=axapi_args)
예제 #11
0
    def execute(self, member, vthunder, pool, flavor=None, update_dict={}):
        member.__dict__.update(update_dict)
        server_args = utils.meta(member, 'server', {})
        server_args = utils.dash_to_underscore(server_args)
        server_args['conn_limit'] = CONF.server.conn_limit
        server_args['conn_resume'] = CONF.server.conn_resume
        # overwrite options from flavor
        if flavor:
            server_flavor = flavor.get('server')
            if server_flavor:
                name_exprs = server_flavor.get('name_expressions')
                parsed_exprs = utils.parse_name_expressions(
                    member.name, name_exprs)
                server_flavor.pop('name_expressions', None)
                server_args.update(server_flavor)
                server_args.update(parsed_exprs)
        server_args = {'server': server_args}

        template_server = CONF.server.template_server
        if template_server and template_server.lower() == 'none':
            template_server = None
        server_temp = {'template-server': template_server}

        if not member.enabled:
            status = False
        else:
            status = True

        try:
            server_name = _get_server_name(self.axapi_client, member)
            port_list = self.axapi_client.slb.server.get(
                server_name)['server'].get('port-list')
            self.axapi_client.slb.server.replace(server_name,
                                                 member.ip_address,
                                                 status=status,
                                                 server_templates=server_temp,
                                                 port_list=port_list,
                                                 **server_args)
            LOG.debug("Successfully updated member: %s", member.id)
        except acos_errors.NotFound:
            LOG.debug("Unable to find member %s in pool %s", member.id,
                      pool.id)
        except (acos_errors.ACOSException, exceptions.ConnectionError) as e:
            LOG.exception("Failed to update member: %s", member.id)
            raise e
예제 #12
0
    def set(self, set_method, loadbalancer):
        status = self.axapi_client.slb.UP
        if not loadbalancer.provisioning_status:
            status = self.axapi_client.slb.DOWN
        vip_meta = utils.meta(loadbalancer, 'virtual_server', {})
        arp_disable = CONF.slb.arp_disable
        vrid = CONF.slb.default_virtual_server_vrid

        try:
            set_method(loadbalancer.id,
                       loadbalancer.vip.ip_address,
                       arp_disable=arp_disable,
                       status=status,
                       vrid=vrid,
                       axapi_body=vip_meta)
            LOG.debug("LoadBalancer created/updated succesfully: %s",
                      loadbalancer.id)
        except Exception as e:
            LOG.exception("Failed to create/update load balancer: %s", str(e))
            raise
예제 #13
0
    def set(self, set_method, pool, vthunder, **kwargs):
        axapi_args = {'service_group': utils.meta(pool, 'service_group', {})}

        device_templates = self.axapi_client.slb.template.templates.get()

        service_group_temp = {}
        template_server = CONF.service_group.template_server
        if template_server and template_server.lower() != 'none':
            if CONF.a10_global.use_shared_for_template_lookup:
                LOG.warning('Shared partition template lookup for `[service_group]`'
                            ' is not supported on template `template-server`')
            service_group_temp['template-server'] = template_server

        template_port = CONF.service_group.template_port
        if template_port and template_port.lower() != 'none':
            if CONF.a10_global.use_shared_for_template_lookup:
                LOG.warning('Shared partition template lookup for `[service_group]`'
                            ' is not supported on template `template-port`')
            service_group_temp['template-port'] = template_port

        template_policy = CONF.service_group.template_policy
        if template_policy and template_policy.lower() != 'none':
            template_key = 'template-policy'
            if vthunder.partition_name != "shared":
                if CONF.a10_global.use_shared_for_template_lookup:
                    template_key = utils.shared_template_modifier(template_key,
                                                                  template_policy,
                                                                  device_templates)
            service_group_temp[template_key] = template_policy

        protocol = openstack_mappings.service_group_protocol(
            self.axapi_client, pool.protocol)
        lb_method = openstack_mappings.service_group_lb_method(
            self.axapi_client, pool.lb_algorithm)
        set_method(pool.id,
                   protocol=protocol,
                   lb_method=lb_method,
                   service_group_templates=service_group_temp,
                   mem_list=kwargs.get('mem_list'),
                   hm_name=kwargs.get('health_monitor'),
                   axapi_args=axapi_args)
    def execute(self, listeners, health_mon, vthunder):
        method = None
        url = None
        expect_code = None

        if health_mon.type in a10constants.HTTP_TYPE:
            method = health_mon.http_method
            url = health_mon.url_path
            expect_code = health_mon.expected_codes
        args = utils.meta(health_mon, 'hm', {})

        try:
            self.axapi_client.slb.hm.create(health_mon.id,
                                            openstack_mappings.hm_type(
                                                self.axapi_client,
                                                health_mon.type),
                                            health_mon.delay,
                                            health_mon.timeout,
                                            health_mon.rise_threshold,
                                            method=method,
                                            port=listeners[0].protocol_port,
                                            url=url,
                                            expect_code=expect_code,
                                            axapi_args=args)
            LOG.debug("Successfully created health monitor: %s", health_mon.id)

        except (acos_errors.ACOSException, ConnectionError) as e:
            LOG.exception("Failed to create health monitor: %s", health_mon.id)
            raise e

        try:
            self.axapi_client.slb.service_group.update(health_mon.pool_id,
                                                       hm_name=health_mon.id,
                                                       health_check_disable=0)
            LOG.debug("Successfully associated health monitor %s to pool %s",
                      health_mon.id, health_mon.pool_id)
        except (acos_errors.ACOSException, ConnectionError) as e:
            LOG.exception("Failed to associate health monitor %s to pool %s",
                          health_mon.id, health_mon.pool_id)
            raise e
예제 #15
0
    def execute(self, member, vthunder):
        server_args = utils.meta(member, 'server', {})
        server_args['conn-limit'] = CONF.server.conn_limit
        server_args['conn-resume'] = CONF.server.conn_resume
        server_args = {'server': server_args}
        server_temp = {}
        server_temp['template-server'] = CONF.server.template_server
        if not member.enabled:
            status = False
        else:
            status = True

        try:
            self.axapi_client.slb.server.update(member.id,
                                                member.ip_address,
                                                status=status,
                                                server_templates=server_temp,
                                                axapi_args=server_args)
            LOG.debug("Member updated successfully: %s", member.id)
        except Exception as e:
            LOG.exception("Failed to update member: %s", str(e))
            raise
예제 #16
0
    def set(self, set_method, loadbalancer, **kwargs):
        status = self.axapi_client.slb.UP
        if not loadbalancer.provisioning_status:
            status = self.axapi_client.slb.DOWN
        vip_meta = utils.meta(loadbalancer, 'virtual_server', {})
        arp_disable = CONF.slb.arp_disable
        vrid = CONF.slb.default_virtual_server_vrid
        desc = loadbalancer.description
        if not desc:
            desc = None
        elif str(desc).isspace() or not str(desc):
            desc = ""
        else:
            desc = '"{}"'.format(desc)

        set_method(loadbalancer.id,
                   loadbalancer.vip.ip_address,
                   arp_disable=arp_disable,
                   description=desc,
                   status=status,
                   vrid=vrid,
                   port_list=kwargs.get('port_list'),
                   axapi_body=vip_meta)
from a10_octavia.common import config_options
from a10_octavia.common.data_models import VThunder
from a10_octavia.controller.worker.tasks import health_monitor_tasks as task
from a10_octavia.controller.worker.tasks import utils
from a10_octavia.tests.common import a10constants
from a10_octavia.tests.unit.base import BaseTaskTestCase

VTHUNDER = VThunder()
HM = o_data_models.HealthMonitor(id=a10constants.MOCK_HM_ID,
                                 type='TCP',
                                 delay=7,
                                 timeout=3,
                                 rise_threshold=8,
                                 http_method='GET')

ARGS = utils.meta(HM, 'hm', {})
LISTENERS = [
    o_data_models.Listener(id=a10constants.MOCK_LISTENER_ID,
                           protocol_port=mock.ANY)
]

FLAVOR_ARGS = {
    'monitor': {
        'retry': 5,
        'method': {
            'http': {
                'http_response_code': '201'
            }
        },
    }
}
예제 #18
0
    def execute(self, listeners, health_mon, vthunder, flavor=None):
        method = None
        url = None
        expect_code = None

        if health_mon.type in a10constants.HTTP_TYPE:
            method = health_mon.http_method
            url = health_mon.url_path
            expect_code = health_mon.expected_codes
        args = utils.meta(health_mon, 'hm', {})
        args = utils.dash_to_underscore(args)

        # overwrite options from flavor
        if flavor:
            flavors = flavor.get('health_monitor')
            if flavors:
                name_exprs = flavors.get('name_expressions')
                parsed_exprs = utils.parse_name_expressions(
                    health_mon.name, name_exprs)
                flavors.pop('name_expressions', None)
                flavors.update(parsed_exprs)
                args.update({'monitor': flavors})

        try:
            health_mon.type = openstack_mappings.hm_type(
                self.axapi_client, health_mon.type)
        except Exception:
            raise exceptions.ProviderUnsupportedOptionError(
                prov="A10",
                user_msg=("Failed to create health monitor {}, "
                          "A health monitor of type {} is not supported "
                          "by A10 provider").format(health_mon.id,
                                                    health_mon.type))

        try:
            post_data = CONF.health_monitor.post_data
            self.axapi_client.slb.hm.create(health_mon.id,
                                            health_mon.type,
                                            health_mon.delay,
                                            health_mon.timeout,
                                            health_mon.rise_threshold,
                                            method=method,
                                            port=listeners[0].protocol_port,
                                            url=url,
                                            expect_code=expect_code,
                                            post_data=post_data,
                                            **args)
            LOG.debug("Successfully created health monitor: %s", health_mon.id)

        except (acos_errors.ACOSException, ConnectionError) as e:
            LOG.exception("Failed to create health monitor: %s", health_mon.id)
            raise e

        try:
            self.axapi_client.slb.service_group.update(health_mon.pool_id,
                                                       hm_name=health_mon.id,
                                                       health_check_disable=0)
            LOG.debug("Successfully associated health monitor %s to pool %s",
                      health_mon.id, health_mon.pool_id)
        except (acos_errors.ACOSException, ConnectionError) as e:
            LOG.exception("Failed to associate health monitor %s to pool %s",
                          health_mon.id, health_mon.pool_id)
            raise e
예제 #19
0
from oslo_config import fixture as oslo_fixture

from octavia.common import constants as o_constants
from octavia.common import data_models as o_data_models
from octavia.common import exceptions

from a10_octavia.common import config_options
from a10_octavia.common import data_models
import a10_octavia.controller.worker.tasks.service_group_tasks as task
from a10_octavia.controller.worker.tasks import utils
from a10_octavia.tests.common import a10constants
from a10_octavia.tests.unit.base import BaseTaskTestCase

VTHUNDER = data_models.VThunder()
POOL = o_data_models.Pool(id=a10constants.MOCK_POOL_ID, name="sg1")
AXAPI_ARGS = {'service_group': utils.meta(POOL, 'service_group', {})}


class TestHandlerServiceGroupTasks(BaseTaskTestCase):
    def setUp(self):
        super(TestHandlerServiceGroupTasks, self).setUp()
        imp.reload(task)
        self.client_mock = mock.Mock()
        self.conf = self.useFixture(oslo_fixture.Config(cfg.CONF))
        self.conf.register_opts(config_options.A10_SERVICE_GROUP_OPTS,
                                group=a10constants.SERVICE_GROUP_CONF_SECTION)
        self.conf.register_opts(config_options.A10_GLOBAL_OPTS,
                                group=a10constants.A10_GLOBAL_CONF_SECTION)

    def tearDown(self):
        super(TestHandlerServiceGroupTasks, self).tearDown()
예제 #20
0
from a10_octavia.common import config_options
from a10_octavia.common import data_models
import a10_octavia.controller.worker.tasks.server_tasks as task
from a10_octavia.controller.worker.tasks import utils
from a10_octavia.tests.common import a10constants
from a10_octavia.tests.unit import base

VTHUNDER = data_models.VThunder()
POOL = o_data_models.Pool(id=a10constants.MOCK_POOL_ID,
                          protocol=a10constants.MOCK_SERVICE_GROUP_PROTOCOL)
MEMBER = o_data_models.Member(
    id=a10constants.MOCK_MEMBER_ID, protocol_port=t_constants.MOCK_PORT_ID,
    project_id=t_constants.MOCK_PROJECT_ID, ip_address=t_constants.MOCK_IP_ADDRESS,
    subnet_id=a10constants.MOCK_SUBNET_ID)

KEY_ARGS = {'server': utils.meta(MEMBER, 'server', {'conn_resume': None, 'conn_limit': 64000000})}
SERVER_NAME = '{}_{}'.format(MEMBER.project_id[:5],
                             MEMBER.ip_address.replace('.', '_'))


class TestHandlerServerTasks(base.BaseTaskTestCase):

    def setUp(self):
        super(TestHandlerServerTasks, self).setUp()
        imp.reload(task)
        self.client_mock = mock.Mock()
        self.conf = self.useFixture(oslo_fixture.Config(cfg.CONF))
        self.conf.register_opts(config_options.A10_SERVER_OPTS,
                                group=a10constants.SERVER_CONF_SECTION)
        self.conf.register_opts(config_options.A10_GLOBAL_OPTS,
                                group=a10constants.A10_GLOBAL_CONF_SECTION)
from a10_octavia.controller.worker.tasks import utils
from a10_octavia.tests.common import a10constants
from a10_octavia.tests.unit import base

VTHUNDER = data_models.VThunder()
POOL = o_data_models.Pool(id=a10constants.MOCK_POOL_ID,
                          protocol=a10constants.MOCK_SERVICE_GROUP_PROTOCOL)
MEMBER = o_data_models.Member(id=a10constants.MOCK_MEMBER_ID,
                              protocol_port=t_constants.MOCK_PORT_ID,
                              project_id=t_constants.MOCK_PROJECT_ID,
                              ip_address=t_constants.MOCK_IP_ADDRESS)

AXAPI_ARGS = {
    'server':
    utils.meta(MEMBER, 'server', {
        'conn-resume': None,
        'conn-limit': 64000000
    })
}
SERVER_NAME = '{}_{}'.format(MEMBER.project_id[:5],
                             MEMBER.ip_address.replace('.', '_'))


class TestHandlerServerTasks(base.BaseTaskTestCase):
    def setUp(self):
        super(TestHandlerServerTasks, self).setUp()
        imp.reload(task)
        self.client_mock = mock.Mock()
        self.conf = self.useFixture(oslo_fixture.Config(cfg.CONF))
        self.conf.register_opts(config_options.A10_SERVER_OPTS,
                                group=a10constants.SERVER_CONF_SECTION)
        self.conf.register_opts(config_options.A10_GLOBAL_OPTS,