def get_create_rack_vthunder_load_balancer_flow(self,
                                                    vthunder_conf,
                                                    topology,
                                                    listeners=None):
        """Flow to create rack load balancer"""

        f_name = constants.CREATE_LOADBALANCER_FLOW
        lb_create_flow = linear_flow.Flow(f_name)

        lb_create_flow.add(
            lifecycle_tasks.LoadBalancerIDToErrorOnRevertTask(
                requires=constants.LOADBALANCER_ID))
        lb_create_flow.add(
            database_tasks.ReloadLoadBalancer(
                requires=constants.LOADBALANCER_ID,
                provides=constants.LOADBALANCER))
        lb_create_flow.add(
            a10_database_tasks.CheckExistingProjectToThunderMappedEntries(
                inject={a10constants.VTHUNDER_CONFIG: vthunder_conf},
                requires=(constants.LOADBALANCER,
                          a10constants.VTHUNDER_CONFIG),
                provides=a10constants.VTHUNDER_CONFIG))
        lb_create_flow.add(
            a10_database_tasks.CheckExistingThunderToProjectMappedEntries(
                requires=(constants.LOADBALANCER,
                          a10constants.VTHUNDER_CONFIG)))
        lb_create_flow.add(
            self.vthunder_flows.get_rack_vthunder_for_lb_subflow(
                vthunder_conf=a10constants.VTHUNDER_CONFIG,
                prefix=constants.ROLE_STANDALONE,
                role=constants.ROLE_STANDALONE))
        post_amp_prefix = constants.POST_LB_AMP_ASSOCIATION_SUBFLOW
        lb_create_flow.add(
            self.get_post_lb_rack_vthunder_association_flow(
                post_amp_prefix, topology, mark_active=(not listeners)))
        lb_create_flow.add(
            a10_database_tasks.GetFlavorData(
                rebind={a10constants.LB_RESOURCE: constants.LOADBALANCER},
                provides=constants.FLAVOR_DATA))
        lb_create_flow.add(
            nat_pool_tasks.NatPoolCreate(requires=(constants.LOADBALANCER,
                                                   a10constants.VTHUNDER,
                                                   constants.FLAVOR_DATA)))
        lb_create_flow.add(
            virtual_server_tasks.CreateVirtualServerTask(
                requires=(constants.LOADBALANCER, a10constants.VTHUNDER,
                          constants.FLAVOR_DATA),
                provides=a10constants.STATUS))
        lb_create_flow.add(
            vthunder_tasks.WriteMemory(requires=a10constants.VTHUNDER))
        lb_create_flow.add(
            a10_database_tasks.SetThunderUpdatedAt(
                requires=a10constants.VTHUNDER))
        return lb_create_flow
 def test_create_rack_vthunder_entry_parent_partition_not_exists(
         self, mock_parent_project_id):
     self.conf.config(group=a10constants.A10_GLOBAL_CONF_SECTION,
                      use_parent_partition=True)
     mock_lb = copy.deepcopy(LB)
     mock_lb.project_id = a10constants.MOCK_CHILD_PROJECT_ID
     mock_vthunder_config = copy.deepcopy(HW_THUNDER)
     mock_vthunder_config.hierarchical_multitenancy = "enable"
     mock_create_vthunder = task.CheckExistingProjectToThunderMappedEntries(
     )
     mock_create_vthunder.vthunder_repo = mock.MagicMock()
     mock_vthunder = copy.deepcopy(VTHUNDER)
     mock_vthunder.partition_name = a10constants.MOCK_CHILD_PART
     self.assertRaises(exceptions.ParentProjectNotFound,
                       mock_create_vthunder.execute, mock_lb,
                       mock_vthunder_config)