Пример #1
0
    def handle_vrid_for_member_subflow(self):
        handle_vrid_for_member_subflow = linear_flow.Flow(
            a10constants.HANDLE_VRID_MEMBER_SUBFLOW)
        handle_vrid_for_member_subflow.add(
            a10_network_tasks.GetLBResourceSubnet(
                rebind={a10constants.LB_RESOURCE: constants.MEMBER},
                provides=constants.SUBNET))
        handle_vrid_for_member_subflow.add(
            a10_database_tasks.GetChildProjectsOfParentPartition(
                rebind={a10constants.LB_RESOURCE: constants.MEMBER},
                provides=a10constants.PARTITION_PROJECT_LIST))
        handle_vrid_for_member_subflow.add(
            a10_database_tasks.GetVRIDForLoadbalancerResource(
                requires=a10constants.PARTITION_PROJECT_LIST,
                provides=a10constants.VRID_LIST))
        handle_vrid_for_member_subflow.add(
            a10_network_tasks.HandleVRIDFloatingIP(
                requires=[
                    a10constants.VTHUNDER, a10constants.VRID_LIST,
                    constants.SUBNET
                ],
                rebind={a10constants.LB_RESOURCE: constants.MEMBER},
                provides=a10constants.VRID_LIST))
        handle_vrid_for_member_subflow.add(
            a10_database_tasks.UpdateVRIDForLoadbalancerResource(
                requires=a10constants.VRID_LIST,
                rebind={a10constants.LB_RESOURCE: constants.MEMBER}))

        return handle_vrid_for_member_subflow
Пример #2
0
 def get_delete_member_vrid_internal_subflow(self, pool, pool_members):
     delete_member_vrid_subflow = linear_flow.Flow(
         a10constants.DELETE_MEMBER_VRID_INTERNAL_SUBFLOW)
     delete_member_vrid_subflow.add(
         a10_database_tasks.GetChildProjectsOfParentPartition(
             name='get_child_project_of_parent_partition' + pool,
             rebind={a10constants.LB_RESOURCE: pool},
             provides=a10constants.PARTITION_PROJECT_LIST
         ))
     delete_member_vrid_subflow.add(
         a10_database_tasks.GetSubnetForDeletionInPool(
             name='get_subnet_for_deletion_in_pool' + pool,
             requires=[a10constants.MEMBER_LIST, a10constants.PARTITION_PROJECT_LIST],
             rebind={a10constants.MEMBER_LIST: pool_members},
             provides=a10constants.SUBNET_LIST))
     delete_member_vrid_subflow.add(
         a10_database_tasks.GetVRIDForLoadbalancerResource(
             name='get_vrid_for_loadbalancer_resource' + pool,
             requires=a10constants.PARTITION_PROJECT_LIST,
             provides=a10constants.VRID_LIST))
     delete_member_vrid_subflow.add(
         a10_network_tasks.DeleteMultipleVRIDPort(
             name='delete_multiple_vrid_port' + pool,
             requires=[
                 a10constants.VTHUNDER,
                 a10constants.VRID_LIST,
                 a10constants.SUBNET_LIST],
             rebind={a10constants.LB_RESOURCE: pool},
             provides=a10constants.VRID_LIST))
     delete_member_vrid_subflow.add(a10_database_tasks.DeleteMultiVRIDEntry(
         name='delete_multi_vrid_entry' + pool,
         requires=a10constants.VRID_LIST))
     return delete_member_vrid_subflow
Пример #3
0
 def get_delete_member_vrid_internal_subflow(self):
     delete_member_vrid_subflow = linear_flow.Flow(
         a10constants.DELETE_MEMBER_VRID_INTERNAL_SUBFLOW)
     delete_member_vrid_subflow.add(
         a10_database_tasks.GetChildProjectsOfParentPartition(
             rebind={a10constants.LB_RESOURCE: constants.POOL},
             provides=a10constants.PARTITION_PROJECT_LIST))
     delete_member_vrid_subflow.add(
         a10_database_tasks.GetSubnetForDeletionInPool(
             requires=[
                 a10constants.MEMBER_LIST,
                 a10constants.PARTITION_PROJECT_LIST
             ],
             provides=a10constants.SUBNET_LIST))
     delete_member_vrid_subflow.add(
         a10_database_tasks.GetVRIDForLoadbalancerResource(
             requires=a10constants.PARTITION_PROJECT_LIST,
             provides=a10constants.VRID_LIST))
     delete_member_vrid_subflow.add(
         a10_network_tasks.DeleteMultipleVRIDPort(
             requires=[
                 a10constants.VTHUNDER, a10constants.VRID_LIST,
                 a10constants.SUBNET_LIST
             ],
             provides=a10constants.VRID_LIST))
     delete_member_vrid_subflow.add(
         a10_database_tasks.DeleteMultiVRIDEntry(
             requires=a10constants.VRID_LIST))
     return delete_member_vrid_subflow
Пример #4
0
 def get_delete_member_vrid_subflow(self):
     delete_member_vrid_subflow = linear_flow.Flow(
         a10constants.DELETE_MEMBER_VRID_SUBFLOW)
     delete_member_vrid_subflow.add(
         a10_network_tasks.GetLBResourceSubnet(
             rebind={a10constants.LB_RESOURCE: constants.MEMBER},
             provides=constants.SUBNET))
     delete_member_vrid_subflow.add(
         a10_database_tasks.GetChildProjectsOfParentPartition(
             rebind={a10constants.LB_RESOURCE: constants.MEMBER},
             provides=a10constants.PARTITION_PROJECT_LIST))
     delete_member_vrid_subflow.add(
         a10_database_tasks.CountLoadbalancersInProjectBySubnet(
             requires=[
                 constants.SUBNET, a10constants.PARTITION_PROJECT_LIST,
                 a10constants.USE_DEVICE_FLAVOR
             ],
             provides=a10constants.LB_COUNT_SUBNET))
     delete_member_vrid_subflow.add(
         a10_database_tasks.CountLoadbalancersOnThunderBySubnet(
             requires=[
                 a10constants.VTHUNDER, constants.SUBNET,
                 a10constants.USE_DEVICE_FLAVOR
             ],
             provides=a10constants.LB_COUNT_THUNDER))
     delete_member_vrid_subflow.add(
         a10_database_tasks.CountMembersInProjectBySubnet(
             requires=[
                 constants.SUBNET, a10constants.PARTITION_PROJECT_LIST
             ],
             provides=a10constants.MEMBER_COUNT))
     delete_member_vrid_subflow.add(
         a10_database_tasks.GetVRIDForLoadbalancerResource(
             requires=[
                 a10constants.PARTITION_PROJECT_LIST, a10constants.VTHUNDER,
                 constants.LOADBALANCER
             ],
             provides=a10constants.VRID_LIST))
     delete_member_vrid_subflow.add(
         a10_network_tasks.DeleteVRIDPort(
             requires=[
                 a10constants.VTHUNDER, a10constants.VRID_LIST,
                 constants.SUBNET, a10constants.USE_DEVICE_FLAVOR,
                 a10constants.LB_COUNT_SUBNET, a10constants.MEMBER_COUNT,
                 a10constants.LB_COUNT_THUNDER,
                 a10constants.MEMBER_COUNT_THUNDER
             ],
             rebind={a10constants.LB_RESOURCE: constants.MEMBER},
             provides=(a10constants.VRID, a10constants.DELETE_VRID)))
     delete_member_vrid_subflow.add(
         a10_database_tasks.DeleteVRIDEntry(
             requires=[a10constants.VRID, a10constants.DELETE_VRID]))
     return delete_member_vrid_subflow
    def test_get_vrid_for_project_member_hmt_use_partition(self):
        thunder = copy.deepcopy(HW_THUNDER)
        thunder.hierarchical_multitenancy = 'enable'
        thunder.vrid_floating_ip = VRID.vrid_floating_ip
        hardware_device_conf = self._generate_hardware_device_conf(thunder)
        self.conf.config(group=a10constants.HARDWARE_THUNDER_CONF_SECTION,
                         devices=[hardware_device_conf])
        self.conf.config(group=a10constants.A10_GLOBAL_CONF_SECTION,
                         use_parent_partition=True)
        self.conf.conf.hardware_thunder.devices = {
            a10constants.MOCK_PROJECT_ID: thunder
        }

        mock_vrid_entry = task.GetVRIDForLoadbalancerResource()
        mock_vrid_entry.CONF = self.conf

        mock_vrid_entry.vrid_repo = mock.Mock()
        mock_vrid_entry.vthunder_repo = mock.Mock()
        mock_vrid_entry.vrid_repo.get_vrid_from_project_ids.return_value = VRID
        vrid = mock_vrid_entry.execute([a10constants.MOCK_PROJECT_ID])
        self.assertEqual(VRID, vrid)