def get_delete_load_balancer_flow(self, lb, deleteCompute): """Creates a flow to delete a load balancer. :returns: The flow for deleting a load balancer """ store = {} delete_LB_flow = linear_flow.Flow(constants.DELETE_LOADBALANCER_FLOW) delete_LB_flow.add( lifecycle_tasks.LoadBalancerToErrorOnRevertTask( requires=constants.LOADBALANCER)) delete_LB_flow.add( a10_database_tasks.GetVThunderByLoadBalancer( requires=constants.LOADBALANCER, provides=a10constants.VTHUNDER)) delete_LB_flow.add( a10_database_tasks.MarkVThunderStatusInDB( name="set load balancer status PENDING_DELETE", requires=a10constants.VTHUNDER, inject={"status": constants.PENDING_DELETE})) delete_LB_flow.add( compute_tasks.NovaServerGroupDelete( requires=constants.SERVER_GROUP_ID)) delete_LB_flow.add( database_tasks.MarkLBAmphoraeHealthBusy( requires=constants.LOADBALANCER)) delete_LB_flow.add( virtual_server_tasks.DeleteVirtualServerTask( requires=(constants.LOADBALANCER, a10constants.VTHUNDER))) # delete_LB_flow.add(listeners_delete) # delete_LB_flow.add(network_tasks.UnplugVIP( # requires=constants.LOADBALANCER)) # delete_LB_flow.add(network_tasks.DeallocateVIP( # requires=constants.LOADBALANCER)) if deleteCompute: delete_LB_flow.add( compute_tasks.DeleteAmphoraeOnLoadBalancer( requires=constants.LOADBALANCER)) delete_LB_flow.add( a10_database_tasks.MarkVThunderStatusInDB( name="DELETED", requires=a10constants.VTHUNDER, inject={"status": constants.DELETED})) delete_LB_flow.add( database_tasks.MarkLBAmphoraeDeletedInDB( requires=constants.LOADBALANCER)) delete_LB_flow.add( database_tasks.DisableLBAmphoraeHealthMonitoring( requires=constants.LOADBALANCER)) delete_LB_flow.add( database_tasks.MarkLBDeletedInDB(requires=constants.LOADBALANCER)) delete_LB_flow.add( database_tasks.DecrementLoadBalancerQuota( requires=constants.LOADBALANCER)) return (delete_LB_flow, store)
def get_update_load_balancer_flow(self): """Flow to update load balancer.""" update_LB_flow = linear_flow.Flow(constants.UPDATE_LOADBALANCER_FLOW) update_LB_flow.add( lifecycle_tasks.LoadBalancerToErrorOnRevertTask( requires=constants.LOADBALANCER)) update_LB_flow.add( a10_database_tasks.GetVThunderByLoadBalancer( requires=constants.LOADBALANCER, provides=a10constants.VTHUNDER)) update_LB_flow.add( a10_database_tasks.MarkVThunderStatusInDB( requires=a10constants.VTHUNDER, inject={"status": constants.PENDING_UPDATE})) update_LB_flow.add( vthunder_tasks.SetupDeviceNetworkMap( requires=a10constants.VTHUNDER, provides=a10constants.VTHUNDER)) update_LB_flow.add( network_tasks.ApplyQos(requires=(constants.LOADBALANCER, constants.UPDATE_DICT))) # update_LB_flow.add(amphora_driver_tasks.ListenersUpdate( # requires=[constants.LOADBALANCER, constants.LISTENERS])) # post_create_lb_flow.add(handle_vrid_for_loadbalancer_subflow()) update_LB_flow.add(self.handle_vrid_for_loadbalancer_subflow()) update_LB_flow.add( a10_database_tasks.GetFlavorData( rebind={a10constants.LB_RESOURCE: constants.LOADBALANCER}, provides=constants.FLAVOR_DATA)) update_LB_flow.add( virtual_server_tasks.UpdateVirtualServerTask( requires=(constants.LOADBALANCER, a10constants.VTHUNDER, constants.FLAVOR_DATA))) update_LB_flow.add( database_tasks.UpdateLoadbalancerInDB( requires=[constants.LOADBALANCER, constants.UPDATE_DICT])) if CONF.a10_global.network_type == 'vlan': update_LB_flow.add( vthunder_tasks.TagInterfaceForLB( requires=[constants.LOADBALANCER, a10constants.VTHUNDER])) update_LB_flow.add( database_tasks.MarkLBActiveInDB(requires=constants.LOADBALANCER)) update_LB_flow.add( vthunder_tasks.WriteMemory(requires=a10constants.VTHUNDER)) update_LB_flow.add( a10_database_tasks.MarkVThunderStatusInDB( name="pending_update_to_active", requires=a10constants.VTHUNDER, inject={"status": constants.ACTIVE})) update_LB_flow.add( a10_database_tasks.SetThunderUpdatedAt( requires=a10constants.VTHUNDER)) return update_LB_flow
def get_update_load_balancer_flow(self): """Creates a flow to update a load balancer. :returns: The flow for update a load balancer """ update_LB_flow = linear_flow.Flow(constants.UPDATE_LOADBALANCER_FLOW) update_LB_flow.add( lifecycle_tasks.LoadBalancerToErrorOnRevertTask( requires=constants.LOADBALANCER)) update_LB_flow.add( a10_database_tasks.GetVThunderByLoadBalancer( requires=constants.LOADBALANCER, provides=a10constants.VTHUNDER)) update_LB_flow.add( a10_database_tasks.MarkVThunderStatusInDB( name="set load balancer status PENDING_UPDATE", requires=a10constants.VTHUNDER, inject={"status": constants.PENDING_UPDATE})) update_LB_flow.add( network_tasks.ApplyQos(requires=(constants.LOADBALANCER, constants.UPDATE_DICT))) # update_LB_flow.add(amphora_driver_tasks.ListenersUpdate( # requires=[constants.LOADBALANCER, constants.LISTENERS])) update_LB_flow.add( virtual_server_tasks.UpdateVirtualServerTask( requires=(constants.LOADBALANCER, a10constants.VTHUNDER))) update_LB_flow.add( database_tasks.UpdateLoadbalancerInDB( requires=[constants.LOADBALANCER, constants.UPDATE_DICT])) update_LB_flow.add( database_tasks.MarkLBActiveInDB(requires=constants.LOADBALANCER)) return update_LB_flow
def _get_failover_create_amphora_subflow(self, prefix): """Flow to create amphora for failover""" create_amp_flow = linear_flow.Flow(constants.CREATE_AMPHORA_FLOW) sf_name = prefix + '-' + a10constants.SPARE_VTHUNDER_CREATE create_amp_flow.add( database_tasks.CreateAmphoraInDB(name=sf_name + '-' + constants.CREATE_AMPHORA_INDB, provides=constants.AMPHORA_ID)) create_amp_flow.add( compute_tasks.ComputeCreate( name=sf_name + '-' + constants.COMPUTE_CREATE, requires=(constants.AMPHORA_ID, a10constants.NETWORK_LIST), provides=constants.COMPUTE_ID)) create_amp_flow.add( database_tasks.UpdateAmphoraComputeId( name=sf_name + '-' + constants.UPDATE_AMPHORA_COMPUTEID, requires=(constants.AMPHORA_ID, constants.COMPUTE_ID))) create_amp_flow.add( database_tasks.MarkAmphoraBootingInDB( name=sf_name + '-' + constants.MARK_AMPHORA_BOOTING_INDB, requires=(constants.AMPHORA_ID, constants.COMPUTE_ID))) create_amp_flow.add( compute_tasks.ComputeActiveWait( name=sf_name + '-' + constants.COMPUTE_WAIT, requires=(constants.COMPUTE_ID, constants.AMPHORA_ID), provides=constants.COMPUTE_OBJ)) create_amp_flow.add( database_tasks.UpdateAmphoraInfo( name=sf_name + '-' + constants.UPDATE_AMPHORA_INFO, requires=(constants.AMPHORA_ID, constants.COMPUTE_OBJ), provides=constants.AMPHORA)) create_amp_flow.add( a10_database_tasks.CreateSpareVThunderEntry( requires=(constants.AMPHORA), provides=a10constants.SPARE_VTHUNDER)) create_amp_flow.add( vthunder_tasks.VThunderComputeConnectivityWait( name=sf_name + '-' + constants.AMP_COMPUTE_CONNECTIVITY_WAIT, requires=constants.AMPHORA, rebind={a10constants.VTHUNDER: a10constants.SPARE_VTHUNDER})) create_amp_flow.add( a10_database_tasks.MarkVThunderStatusInDB( rebind={a10constants.VTHUNDER: a10constants.SPARE_VTHUNDER}, inject={"status": a10constants.READY})) create_amp_flow.add( vthunder_tasks.UpdateAcosVersionInVthunderEntry( name=sf_name + '-' + a10constants.UPDATE_ACOS_VERSION_IN_VTHUNDER_ENTRY, rebind={a10constants.VTHUNDER: a10constants.SPARE_VTHUNDER})) create_amp_flow.add( vthunder_tasks.EnableInterfaceOnSpare( name=sf_name + '-' + a10constants.ENABLE_VTHUNDER_INTERFACE, rebind={a10constants.VTHUNDER: a10constants.SPARE_VTHUNDER})) return create_amp_flow
def get_update_load_balancer_flow(self): """Flow to update load balancer.""" update_LB_flow = linear_flow.Flow(constants.UPDATE_LOADBALANCER_FLOW) update_LB_flow.add( lifecycle_tasks.LoadBalancerToErrorOnRevertTask( requires=constants.LOADBALANCER)) update_LB_flow.add( a10_database_tasks.GetVThunderByLoadBalancer( requires=constants.LOADBALANCER, provides=a10constants.VTHUNDER)) update_LB_flow.add( a10_database_tasks.MarkVThunderStatusInDB( requires=a10constants.VTHUNDER, inject={"status": constants.PENDING_UPDATE})) update_LB_flow.add( vthunder_tasks.SetupDeviceNetworkMap( requires=a10constants.VTHUNDER, provides=a10constants.VTHUNDER)) update_LB_flow.add( network_tasks.ApplyQos(requires=(constants.LOADBALANCER, constants.UPDATE_DICT))) # update_LB_flow.add(amphora_driver_tasks.ListenersUpdate( # requires=[constants.LOADBALANCER, constants.LISTENERS])) update_LB_flow.add( virtual_server_tasks.UpdateVirtualServerTask( requires=(constants.LOADBALANCER, a10constants.VTHUNDER))) update_LB_flow.add( database_tasks.UpdateLoadbalancerInDB( requires=[constants.LOADBALANCER, constants.UPDATE_DICT])) if CONF.a10_global.network_type == 'vlan': update_LB_flow.add( vthunder_tasks.TagInterfaceForLB( requires=[constants.LOADBALANCER, a10constants.VTHUNDER])) update_LB_flow.add( database_tasks.MarkLBActiveInDB(requires=constants.LOADBALANCER)) update_LB_flow.add( vthunder_tasks.WriteMemory(requires=a10constants.VTHUNDER)) return update_LB_flow
def get_create_vthunder_flow(self): """Flow to create a spare amphora.""" create_vthunder_flow = linear_flow.Flow(constants.CREATE_AMPHORA_FLOW) sf_name = a10constants.SPARE_VTHUNDER_CREATE create_vthunder_flow.add( database_tasks.CreateAmphoraInDB(name=sf_name + '-' + constants.CREATE_AMPHORA_INDB, provides=constants.AMPHORA_ID)) create_vthunder_flow.add( compute_tasks.ComputeCreate(name=sf_name + '-' + constants.COMPUTE_CREATE, requires=( constants.AMPHORA_ID, constants.BUILD_TYPE_PRIORITY, ), provides=constants.COMPUTE_ID)) create_vthunder_flow.add( database_tasks.UpdateAmphoraComputeId( name=sf_name + '-' + constants.UPDATE_AMPHORA_COMPUTEID, requires=(constants.AMPHORA_ID, constants.COMPUTE_ID))) create_vthunder_flow.add( database_tasks.MarkAmphoraBootingInDB( name=sf_name + '-' + constants.MARK_AMPHORA_BOOTING_INDB, requires=(constants.AMPHORA_ID, constants.COMPUTE_ID))) create_vthunder_flow.add( compute_tasks.ComputeActiveWait( name=sf_name + '-' + constants.COMPUTE_WAIT, requires=(constants.COMPUTE_ID, constants.AMPHORA_ID), provides=constants.COMPUTE_OBJ)) create_vthunder_flow.add( database_tasks.UpdateAmphoraInfo( name=sf_name + '-' + constants.UPDATE_AMPHORA_INFO, requires=(constants.AMPHORA_ID, constants.COMPUTE_OBJ), provides=constants.AMPHORA)) create_vthunder_flow.add( a10_database_tasks.CreateSpareVThunderEntry( requires=(constants.AMPHORA), provides=a10constants.VTHUNDER)) create_vthunder_flow.add( vthunder_tasks.VThunderComputeConnectivityWait( name=sf_name + '-' + constants.AMP_COMPUTE_CONNECTIVITY_WAIT, requires=(a10constants.VTHUNDER, constants.AMPHORA))) create_vthunder_flow.add( vthunder_tasks.EnableInterfaceOnSpare( name=sf_name + '-' + a10constants.ENABLE_VTHUNDER_INTERFACE, requires=(a10constants.VTHUNDER))) create_vthunder_flow.add( vthunder_tasks.UpdateAcosVersionInVthunderEntry( name=sf_name + '-' + a10constants.UPDATE_ACOS_VERSION_IN_VTHUNDER_ENTRY, requires=(a10constants.VTHUNDER))) create_vthunder_flow.add( database_tasks.MarkAmphoraReadyInDB( name=sf_name + '-' + a10constants.MARK_AMPHORA_READY_INDB, requires=(constants.AMPHORA))) create_vthunder_flow.add( self.get_glm_license_subflow( prefix=a10constants.SPARE_VTHUNDER_CREATE, role=a10constants.SPARE_VTHUNDER)) create_vthunder_flow.add( vthunder_tasks.CreateHealthMonitorOnVThunder( name=sf_name + '-' + a10constants.CREATE_HEALTH_MONITOR_ON_SPARE, requires=(a10constants.VTHUNDER))) create_vthunder_flow.add( a10_database_tasks.MarkVThunderStatusInDB( requires=(a10constants.VTHUNDER), inject={"status": a10constants.READY})) return create_vthunder_flow
def get_new_lb_networking_subflow(self, topology): """Subflow to setup networking for amphora""" new_LB_net_subflow = linear_flow.Flow( constants.LOADBALANCER_NETWORKING_SUBFLOW) new_LB_net_subflow.add( a10_network_tasks.PlugVIP(requires=constants.LOADBALANCER, provides=constants.AMPS_DATA)) new_LB_net_subflow.add( a10_network_tasks.ApplyQos(requires=(constants.LOADBALANCER, constants.AMPS_DATA, constants.UPDATE_DICT))) new_LB_net_subflow.add( database_tasks.UpdateAmphoraeVIPData(requires=constants.AMPS_DATA)) new_LB_net_subflow.add( database_tasks.ReloadLoadBalancer( name=constants.RELOAD_LB_AFTER_PLUG_VIP, requires=constants.LOADBALANCER_ID, provides=constants.LOADBALANCER)) new_LB_net_subflow.add( a10_network_tasks.GetAmphoraeNetworkConfigs( requires=constants.LOADBALANCER, provides=constants.AMPHORAE_NETWORK_CONFIG)) new_LB_net_subflow.add( database_tasks.GetAmphoraeFromLoadbalancer( requires=constants.LOADBALANCER, provides=constants.AMPHORA)) new_LB_net_subflow.add( vthunder_tasks.VThunderComputeConnectivityWait( name=a10constants.MASTER_CONNECTIVITY_WAIT, requires=(a10constants.VTHUNDER, constants.AMPHORA))) new_LB_net_subflow.add( vthunder_tasks.EnableInterface(requires=a10constants.VTHUNDER)) new_LB_net_subflow.add( a10_database_tasks.MarkVThunderStatusInDB( name=a10constants.MARK_VTHUNDER_MASTER_ACTIVE_IN_DB, requires=a10constants.VTHUNDER, inject={a10constants.STATUS: constants.ACTIVE})) if topology == constants.TOPOLOGY_ACTIVE_STANDBY: new_LB_net_subflow.add( vthunder_tasks.CreateHealthMonitorOnVThunder( name=a10constants.CREATE_HEALTH_MONITOR_ON_VTHUNDER_MASTER, requires=a10constants.VTHUNDER)) new_LB_net_subflow.add( a10_database_tasks.GetBackupVThunderByLoadBalancer( name=a10constants.GET_BACKUP_VTHUNDER_BY_LB, requires=constants.LOADBALANCER, provides=a10constants.BACKUP_VTHUNDER)) new_LB_net_subflow.add( vthunder_tasks.VThunderComputeConnectivityWait( name=a10constants.BACKUP_CONNECTIVITY_WAIT, rebind={ a10constants.VTHUNDER: a10constants.BACKUP_VTHUNDER }, requires=constants.AMPHORA)) new_LB_net_subflow.add( vthunder_tasks.EnableInterface( name=a10constants.BACKUP_ENABLE_INTERFACE, rebind={ a10constants.VTHUNDER: a10constants.BACKUP_VTHUNDER })) new_LB_net_subflow.add( a10_database_tasks.MarkVThunderStatusInDB( name=a10constants.MARK_VTHUNDER_BACKUP_ACTIVE_IN_DB, rebind={ a10constants.VTHUNDER: a10constants.BACKUP_VTHUNDER }, inject={a10constants.STATUS: constants.ACTIVE})) return new_LB_net_subflow
def get_delete_load_balancer_flow(self, lb, deleteCompute): """Flow to delete load balancer""" store = {} delete_LB_flow = linear_flow.Flow(constants.DELETE_LOADBALANCER_FLOW) delete_LB_flow.add( lifecycle_tasks.LoadBalancerToErrorOnRevertTask( requires=constants.LOADBALANCER)) delete_LB_flow.add( a10_database_tasks.GetVThunderByLoadBalancer( requires=constants.LOADBALANCER, provides=a10constants.VTHUNDER)) delete_LB_flow.add( a10_database_tasks.MarkVThunderStatusInDB( requires=a10constants.VTHUNDER, inject={"status": constants.PENDING_DELETE})) delete_LB_flow.add( vthunder_tasks.SetupDeviceNetworkMap( requires=a10constants.VTHUNDER, provides=a10constants.VTHUNDER)) delete_LB_flow.add( compute_tasks.NovaServerGroupDelete( requires=constants.SERVER_GROUP_ID)) delete_LB_flow.add( database_tasks.MarkLBAmphoraeHealthBusy( requires=constants.LOADBALANCER)) delete_LB_flow.add( virtual_server_tasks.DeleteVirtualServerTask( requires=(constants.LOADBALANCER, a10constants.VTHUNDER))) delete_LB_flow.add(self.get_delete_lb_vrid_subflow()) if CONF.a10_global.network_type == 'vlan': delete_LB_flow.add( vthunder_tasks.DeleteInterfaceTagIfNotInUseForLB( requires=[constants.LOADBALANCER, a10constants.VTHUNDER])) # delete_LB_flow.add(listeners_delete) # delete_LB_flow.add(network_tasks.UnplugVIP( # requires=constants.LOADBALANCER)) delete_LB_flow.add( network_tasks.DeallocateVIP(requires=constants.LOADBALANCER)) if deleteCompute: delete_LB_flow.add( compute_tasks.DeleteAmphoraeOnLoadBalancer( requires=constants.LOADBALANCER)) delete_LB_flow.add( a10_database_tasks.MarkVThunderStatusInDB( name="DELETED", requires=a10constants.VTHUNDER, inject={"status": constants.DELETED})) delete_LB_flow.add( database_tasks.MarkLBAmphoraeDeletedInDB( requires=constants.LOADBALANCER)) delete_LB_flow.add( database_tasks.DisableLBAmphoraeHealthMonitoring( requires=constants.LOADBALANCER)) delete_LB_flow.add( database_tasks.MarkLBDeletedInDB(requires=constants.LOADBALANCER)) delete_LB_flow.add( database_tasks.DecrementLoadBalancerQuota( requires=constants.LOADBALANCER)) delete_LB_flow.add( vthunder_tasks.WriteMemory(requires=a10constants.VTHUNDER)) return (delete_LB_flow, store)
def get_delete_load_balancer_flow(self, lb, deleteCompute, cascade): """Flow to delete load balancer""" store = {} delete_LB_flow = linear_flow.Flow(constants.DELETE_LOADBALANCER_FLOW) delete_LB_flow.add( lifecycle_tasks.LoadBalancerToErrorOnRevertTask( requires=constants.LOADBALANCER)) delete_LB_flow.add( a10_database_tasks.GetVThunderByLoadBalancer( requires=constants.LOADBALANCER, provides=a10constants.VTHUNDER)) delete_LB_flow.add( a10_database_tasks.MarkVThunderStatusInDB( requires=a10constants.VTHUNDER, inject={"status": constants.PENDING_DELETE})) delete_LB_flow.add( vthunder_tasks.SetupDeviceNetworkMap( requires=a10constants.VTHUNDER, provides=a10constants.VTHUNDER)) delete_LB_flow.add( compute_tasks.NovaServerGroupDelete( requires=constants.SERVER_GROUP_ID)) delete_LB_flow.add( database_tasks.MarkLBAmphoraeHealthBusy( requires=constants.LOADBALANCER)) if cascade: (pools_listeners_delete, store) = self._get_cascade_delete_pools_listeners_flow(lb) delete_LB_flow.add(pools_listeners_delete) delete_LB_flow.add( a10_database_tasks.GetFlavorData( rebind={a10constants.LB_RESOURCE: constants.LOADBALANCER}, provides=constants.FLAVOR_DATA)) delete_LB_flow.add( a10_database_tasks.CountLoadbalancersWithFlavor( requires=(constants.LOADBALANCER, a10constants.VTHUNDER), provides=a10constants.LB_COUNT)) delete_LB_flow.add(self.get_delete_lb_vrid_subflow()) if CONF.a10_global.network_type == 'vlan': delete_LB_flow.add( vthunder_tasks.DeleteInterfaceTagIfNotInUseForLB( requires=[constants.LOADBALANCER, a10constants.VTHUNDER])) # delete_LB_flow.add(listeners_delete) # delete_LB_flow.add(network_tasks.UnplugVIP( # requires=constants.LOADBALANCER)) delete_LB_flow.add( database_tasks.GetAmphoraeFromLoadbalancer( requires=constants.LOADBALANCER, provides=constants.AMPHORA)) delete_LB_flow.add( a10_database_tasks.GetLoadBalancerListByProjectID( requires=a10constants.VTHUNDER, provides=a10constants.LOADBALANCERS_LIST)) if not deleteCompute: delete_LB_flow.add( a10_network_tasks.CalculateDelta( requires=(constants.LOADBALANCER, a10constants.LOADBALANCERS_LIST), provides=constants.DELTAS)) delete_LB_flow.add( a10_network_tasks.HandleNetworkDeltas( requires=constants.DELTAS, provides=constants.ADDED_PORTS)) delete_LB_flow.add( vthunder_tasks.AmphoraePostNetworkUnplug( name=a10constants.AMPHORA_POST_NETWORK_UNPLUG, requires=(constants.LOADBALANCER, constants.ADDED_PORTS, a10constants.VTHUNDER))) delete_LB_flow.add( vthunder_tasks.VThunderComputeConnectivityWait( name=a10constants.VTHUNDER_CONNECTIVITY_WAIT, requires=(a10constants.VTHUNDER, constants.AMPHORA))) delete_LB_flow.add( virtual_server_tasks.DeleteVirtualServerTask( requires=(constants.LOADBALANCER, a10constants.VTHUNDER))) delete_LB_flow.add( nat_pool_tasks.NatPoolDelete(requires=(constants.LOADBALANCER, a10constants.VTHUNDER, a10constants.LB_COUNT, constants.FLAVOR_DATA))) if deleteCompute: delete_LB_flow.add( compute_tasks.DeleteAmphoraeOnLoadBalancer( requires=constants.LOADBALANCER)) delete_LB_flow.add( a10_database_tasks.MarkVThunderStatusInDB( name=a10constants.MARK_VTHUNDER_MASTER_DELETED_IN_DB, requires=a10constants.VTHUNDER, inject={"status": constants.DELETED})) delete_LB_flow.add( database_tasks.MarkLBAmphoraeDeletedInDB( requires=constants.LOADBALANCER)) delete_LB_flow.add( database_tasks.DisableLBAmphoraeHealthMonitoring( requires=constants.LOADBALANCER)) delete_LB_flow.add( database_tasks.MarkLBDeletedInDB(requires=constants.LOADBALANCER)) delete_LB_flow.add( database_tasks.DecrementLoadBalancerQuota( requires=constants.LOADBALANCER)) if not deleteCompute: delete_LB_flow.add( vthunder_tasks.WriteMemory(requires=a10constants.VTHUNDER)) delete_LB_flow.add( a10_database_tasks.SetThunderUpdatedAt( name=a10constants.SET_THUNDER_UPDATE_AT, requires=a10constants.VTHUNDER)) delete_LB_flow.add( a10_database_tasks.GetBackupVThunderByLoadBalancer( requires=constants.LOADBALANCER, provides=a10constants.BACKUP_VTHUNDER)) delete_LB_flow.add( a10_database_tasks.MarkVThunderStatusInDB( name=a10constants.MARK_VTHUNDER_BACKUP_DELETED_IN_DB, rebind={a10constants.VTHUNDER: a10constants.BACKUP_VTHUNDER}, inject={"status": constants.DELETED})) delete_LB_flow.add( a10_database_tasks.SetThunderUpdatedAt( name=a10constants.SET_THUNDER_BACKUP_UPDATE_AT, rebind={a10constants.VTHUNDER: a10constants.BACKUP_VTHUNDER})) return (delete_LB_flow, store)