def get_create_pool_flow(self):
        """Create a flow to create a pool

        :returns: The flow for creating a pool
        """
        create_pool_flow = linear_flow.Flow(constants.CREATE_POOL_FLOW)
        create_pool_flow.add(
            lifecycle_tasks.PoolToErrorOnRevertTask(requires=[
                constants.POOL, constants.LISTENERS, constants.LOADBALANCER
            ]))
        create_pool_flow.add(
            database_tasks.MarkPoolPendingCreateInDB(requires=constants.POOL))
        create_pool_flow.add(
            a10_database_tasks.GetVThunderByLoadBalancer(
                requires=constants.LOADBALANCER,
                provides=a10constants.VTHUNDER))
        create_pool = service_group_tasks.PoolCreate(
            requires=[constants.POOL, a10constants.VTHUNDER],
            provides=constants.POOL)
        create_pool_flow.add(*self._get_sess_pers_subflow(create_pool))
        create_pool_flow.add(
            virtual_port_tasks.ListenerUpdateForPool(requires=[
                constants.LOADBALANCER, constants.LISTENER,
                a10constants.VTHUNDER
            ]))
        create_pool_flow.add(
            database_tasks.MarkPoolActiveInDB(requires=constants.POOL))
        create_pool_flow.add(
            database_tasks.MarkLBAndListenersActiveInDB(
                requires=[constants.LOADBALANCER, constants.LISTENERS]))
        create_pool_flow.add(
            vthunder_tasks.WriteMemory(requires=a10constants.VTHUNDER))

        return create_pool_flow
Esempio n. 2
0
 def test_PoolCreate_execute_create_with_flavor(self):
     vthunder = copy.deepcopy(VTHUNDER)
     service_group_task = task.PoolCreate()
     service_group_task.axapi_client = self.client_mock
     flavor = {"service_group": {"health_check_disable": 1}}
     expect_kwargs = {"health_check_disable": 1}
     service_group_task.execute(POOL, vthunder, flavor=flavor)
     args, kwargs = self.client_mock.slb.service_group.create.call_args
     self.assertEqual(kwargs['service_group'], expect_kwargs)
Esempio n. 3
0
 def test_create_pool_with_protocol_proxy(self):
     mock_pool = task.PoolCreate()
     mock_pool.axapi_client = self.client_mock
     mock_pool.CONF = self.conf
     pool = o_data_models.Pool(
         id=a10constants.MOCK_POOL_ID,
         protocol=o_constants.PROTOCOL_PROXY,
         lb_algorithm=o_constants.LB_ALGORITHM_SOURCE_IP)
     self.assertRaises(exceptions.ProviderUnsupportedOptionError,
                       mock_pool.execute, pool, VTHUNDER)
Esempio n. 4
0
 def _create_service_group_task_with_template(self,
                                              config_template,
                                              use_shared=False):
     service_group_task = task.PoolCreate()
     service_group_task.axapi_client = self.client_mock
     self.conf.config(group=a10constants.A10_GLOBAL_CONF_SECTION,
                      use_shared_for_template_lookup=use_shared)
     self.conf.config(group=a10constants.SERVICE_GROUP_CONF_SECTION,
                      **config_template)
     service_group_task.CONF = self.conf
     return service_group_task
Esempio n. 5
0
 def test_PoolCreate_execute_create_with_flavor_over_conf(self):
     vthunder = copy.deepcopy(VTHUNDER)
     service_group_task = task.PoolCreate()
     service_group_task.axapi_client = self.client_mock
     conf = {'template_server': 'my_server_template'}
     self.conf.config(group=a10constants.SERVICE_GROUP_CONF_SECTION, **conf)
     flavor = {"service_group": {"template_server": 'tmpl1'}}
     expect_kwargs = {"template_server": 'tmpl1'}
     service_group_task.execute(POOL, vthunder, flavor=flavor)
     args, kwargs = self.client_mock.slb.service_group.create.call_args
     self.assertEqual(kwargs['service_group'], expect_kwargs)
Esempio n. 6
0
    def get_create_pool_flow(self, topology):
        """Create a flow to create a pool

        :returns: The flow for creating a pool
        """

        create_pool_flow = linear_flow.Flow(constants.CREATE_POOL_FLOW)
        create_pool_flow.add(
            lifecycle_tasks.PoolToErrorOnRevertTask(requires=[
                constants.POOL, constants.LISTENERS, constants.LOADBALANCER
            ]))
        create_pool_flow.add(
            vthunder_tasks.VthunderInstanceBusy(
                requires=a10constants.COMPUTE_BUSY))

        create_pool_flow.add(
            database_tasks.MarkPoolPendingCreateInDB(requires=constants.POOL))
        create_pool_flow.add(
            a10_database_tasks.GetVThunderByLoadBalancer(
                requires=constants.LOADBALANCER,
                provides=a10constants.VTHUNDER))
        if topology == constants.TOPOLOGY_ACTIVE_STANDBY:
            create_pool_flow.add(
                vthunder_tasks.GetMasterVThunder(
                    name=a10constants.GET_MASTER_VTHUNDER,
                    requires=a10constants.VTHUNDER,
                    provides=a10constants.VTHUNDER))
        create_pool_flow.add(
            a10_database_tasks.GetFlavorData(
                rebind={a10constants.LB_RESOURCE: constants.POOL},
                provides=constants.FLAVOR))
        create_pool = service_group_tasks.PoolCreate(
            requires=[constants.POOL, a10constants.VTHUNDER, constants.FLAVOR],
            provides=constants.POOL)
        create_pool_flow.add(*self._get_sess_pers_subflow(create_pool))
        create_pool_flow.add(
            virtual_port_tasks.ListenerUpdateForPool(requires=[
                constants.LOADBALANCER, constants.LISTENER,
                a10constants.VTHUNDER
            ]))
        create_pool_flow.add(
            database_tasks.MarkPoolActiveInDB(requires=constants.POOL))
        create_pool_flow.add(
            database_tasks.MarkLBAndListenersActiveInDB(
                requires=[constants.LOADBALANCER, constants.LISTENERS]))
        create_pool_flow.add(
            vthunder_tasks.WriteMemory(requires=a10constants.VTHUNDER))
        create_pool_flow.add(
            a10_database_tasks.SetThunderUpdatedAt(
                requires=a10constants.VTHUNDER))

        return create_pool_flow
 def test_create_lb_algorithm_source_ip_hash_only(self):
     mock_pool = task.PoolCreate()
     mock_pool.axapi_client = self.client_mock
     mock_pool.CONF = self.conf
     pool = o_data_models.Pool(
         id=a10constants.MOCK_POOL_ID,
         protocol=o_constants.PROTOCOL_HTTP,
         lb_algorithm=o_constants.LB_ALGORITHM_SOURCE_IP)
     mock_pool.execute(pool, VTHUNDER)
     self.client_mock.slb.service_group.create.assert_called_with(
         a10constants.MOCK_POOL_ID,
         protocol=mock.ANY,
         lb_method=mock_pool.axapi_client.slb.service_group.
         SOURCE_IP_HASH_ONLY,
         service_group_templates=mock.ANY,
         axapi_args=AXAPI_ARGS)
Esempio n. 8
0
 def test_PoolCreate_execute_create_with_regex_over_regex(self):
     vthunder = copy.deepcopy(VTHUNDER)
     service_group_task = task.PoolCreate()
     service_group_task.axapi_client = self.client_mock
     flavor = {"service_group": {"health_check_disable": 0}}
     regex = {
         "name_expressions": [{
             "regex": "sg1",
             "json": {
                 "health_check_disable": 1
             }
         }]
     }
     flavor["service_group"] = regex
     expect_kwargs = {"health_check_disable": 1}
     service_group_task.execute(POOL, vthunder, flavor=flavor)
     args, kwargs = self.client_mock.slb.service_group.create.call_args
     self.assertEqual(kwargs['service_group'], expect_kwargs)
Esempio n. 9
0
 def test_revert_pool_create_task(self):
     mock_pool = task.PoolCreate()
     mock_pool.axapi_client = self.client_mock
     mock_pool.revert(POOL, VTHUNDER)
     self.client_mock.slb.service_group.delete.assert_called_with(POOL.id)