예제 #1
0
    def get_cascade_delete_load_balancer_flow(self, lb):
        """Creates a flow to delete a load balancer.

        :returns: The flow for deleting a load balancer
        """

        (listeners_delete, store) = self._get_delete_listeners_flow(lb)
        (pools_delete, pool_store) = self._get_delete_pools_flow(lb)
        store.update(pool_store)

        delete_LB_flow = linear_flow.Flow(constants.DELETE_LOADBALANCER_FLOW)
        delete_LB_flow.add(
            database_tasks.MarkLBAmphoraeHealthBusy(
                requires=constants.LOADBALANCER))
        delete_LB_flow.add(pools_delete)
        delete_LB_flow.add(listeners_delete)
        delete_LB_flow.add(
            network_tasks.UnplugVIP(requires=constants.LOADBALANCER))
        delete_LB_flow.add(
            compute_tasks.DeleteAmphoraeOnLoadBalancer(
                requires=constants.LOADBALANCER))
        delete_LB_flow.add(
            database_tasks.MarkLBAmphoraeDeletedInDB(
                requires=constants.LOADBALANCER))
        delete_LB_flow.add(
            network_tasks.DeallocateVIP(requires=constants.LOADBALANCER))
        delete_LB_flow.add(
            database_tasks.DisableLBAmphoraeHealthMonitoring(
                requires=constants.LOADBALANCER))
        delete_LB_flow.add(
            database_tasks.MarkLBDeletedInDB(requires=constants.LOADBALANCER))

        return (delete_LB_flow, store)
예제 #2
0
    def get_delete_load_balancer_flow(self, lb):
        """Creates a flow to delete a load balancer.

        :returns: The flow for deleting a load balancer
        """
        (listeners_delete, store) = self._get_delete_listeners_flow(lb)

        delete_LB_flow = linear_flow.Flow(constants.DELETE_LOADBALANCER_FLOW)
        delete_LB_flow.add(lifecycle_tasks.LoadBalancerToErrorOnRevertTask(
            requires=constants.LOADBALANCER))
        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(listeners_delete)
        delete_LB_flow.add(network_tasks.UnplugVIP(
            requires=constants.LOADBALANCER))
        delete_LB_flow.add(network_tasks.DeallocateVIP(
            requires=constants.LOADBALANCER))
        delete_LB_flow.add(compute_tasks.DeleteAmphoraeOnLoadBalancer(
            requires=constants.LOADBALANCER))
        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_delete_load_balancer_flow(self, lb, cascade):
     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(compute_tasks.NovaServerGroupDelete(
         requires=constants.SERVER_GROUP_ID))
     delete_LB_flow.add(database_tasks.MarkLBAmphoraeHealthBusy(
         requires=constants.LOADBALANCER))
     if cascade:
         (listeners_delete, store) = self._get_delete_listeners_flow(lb)
         (pools_delete, pool_store) = self._get_delete_pools_flow(lb)
         store.update(pool_store)
         delete_LB_flow.add(pools_delete)
         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))
     delete_LB_flow.add(compute_tasks.DeleteAmphoraeOnLoadBalancer(
         requires=constants.LOADBALANCER))
     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)
예제 #4
0
    def get_delete_load_balancer_flow(self):
        """Creates a flow to delete a load balancer.

        :returns: The flow for deleting a load balancer
        """
        delete_LB_flow = linear_flow.Flow(constants.DELETE_LOADBALANCER_FLOW)
        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(controller_tasks.DeleteListenersOnLB(
            requires=constants.LOADBALANCER))
        delete_LB_flow.add(network_tasks.UnplugVIP(
            requires=constants.LOADBALANCER))
        delete_LB_flow.add(compute_tasks.DeleteAmphoraeOnLoadBalancer(
            requires=constants.LOADBALANCER))
        delete_LB_flow.add(database_tasks.MarkLBAmphoraeDeletedInDB(
            requires=constants.LOADBALANCER))
        delete_LB_flow.add(network_tasks.DeallocateVIP(
            requires=constants.LOADBALANCER))
        delete_LB_flow.add(database_tasks.DisableLBAmphoraeHealthMonitoring(
            requires=constants.LOADBALANCER))
        delete_LB_flow.add(database_tasks.MarkLBDeletedInDB(
            requires=constants.LOADBALANCER))

        return delete_LB_flow
예제 #5
0
 def test_deallocate_vip(self, mock_get_net_driver):
     mock_driver = mock.MagicMock()
     mock_get_net_driver.return_value = mock_driver
     net = network_tasks.DeallocateVIP()
     vip = o_data_models.Vip()
     lb = o_data_models.LoadBalancer(vip=vip)
     net.execute(lb)
     mock_driver.deallocate_vip.assert_called_once_with(lb.vip)
예제 #6
0
 def test_deallocate_vip(self, mock_driver):
     net = network_tasks.DeallocateVIP()
     vip = o_data_models.Vip()
     lb = o_data_models.LoadBalancer(vip=vip)
     net.execute(lb)
     mock_driver.deallocate_vip.assert_called_once_with(lb.vip)
    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)