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
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
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
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)