octavia/octavia/distributor/drivers/noop_driver/driver.py

125 lines
4.8 KiB
Python

# Copyright 2016 IBM Corp.
# Copyright 2017 Rackspace, US Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from taskflow.patterns import linear_flow
from taskflow import task
from oslo_log import log as logging
from oslo_utils import uuidutils
from octavia.distributor.drivers import driver_base
LOG = logging.getLogger(__name__)
class NoopProvidesRequiresTask(task.Task):
def __init__(self, name, provides_dicts=None, requires=None):
if provides_dicts is None:
provides_dicts = {}
super().__init__(
name=name,
provides=list(provides_dicts),
requires=requires)
self.provides_dict = provides_dicts
def execute(self, *args, **kwargs):
return self.provides_dict.values()
class NoopManager(object):
def __init__(self):
super().__init__()
def get_create_distributor_subflow(self):
LOG.debug('Distributor %s create_distributor', self.__class__.__name__)
create_distributor_flow = linear_flow.Flow('create-distributor')
create_distributor_flow.add(NoopProvidesRequiresTask(
'create-distributor-task',
requires=('load_balancer'),
provides_dicts={'distributor_id': uuidutils.generate_uuid()}))
return create_distributor_flow
def get_delete_distributor_subflow(self):
LOG.debug('Distributor %s delete_distributor', self.__class__.__name__)
delete_distributor_flow = linear_flow.Flow('delete-distributor')
delete_distributor_flow.add(NoopProvidesRequiresTask(
'delete-distributor-task', requires=('distributor_id')))
return delete_distributor_flow
def get_add_vip_subflow(self):
LOG.debug('Distributor %s add_vip', self.__class__.__name__)
add_vip_flow = linear_flow.Flow('add-vip')
add_vip_flow.add(NoopProvidesRequiresTask(
'add-vip-task', requires=('distributor_id', 'vip',
'vip_alg', 'vip_persistence')))
return add_vip_flow
def get_remove_vip_subflow(self):
LOG.debug('Distributor %s remove_vip', self.__class__.__name__)
remove_vip_flow = linear_flow.Flow('remove-vip')
remove_vip_flow.add(NoopProvidesRequiresTask('remove-vip-task',
requires=('distributor_id', 'vip')))
return remove_vip_flow
def get_register_amphorae_subflow(self):
LOG.debug('Distributor %s register_amphorae', self.__class__.__name__)
register_amphorae_flow = linear_flow.Flow('register_amphorae')
register_amphorae_flow.add(NoopProvidesRequiresTask(
'register_amphorae_task', requires=('distributor_id', 'amphorae')))
return register_amphorae_flow
def get_drain_amphorae_subflow(self):
LOG.debug('Distributor %s drain_amphorae', self.__class__.__name__)
drain_amphorae_flow = linear_flow.Flow('drain-amphorae')
drain_amphorae_flow.add(NoopProvidesRequiresTask(
'drain_amphorae_task', requires=('distributor_id', 'amphorae')))
return drain_amphorae_flow
def get_unregister_amphorae_subflow(self):
LOG.debug('Distributor %s unregister_amphorae',
self.__class__.__name__)
unregister_amphorae_flow = linear_flow.Flow('unregister_amphora')
unregister_amphorae_flow.add(NoopProvidesRequiresTask(
'unregister_amphorae_task', requires=('distributor_id',
'amphorae')))
return unregister_amphorae_flow
class NoopDistributorDriver(driver_base.DistributorDriver):
def __init__(self):
super().__init__()
self.driver = NoopManager()
def get_create_distributor_subflow(self):
return self.driver.get_create_distributor_subflow()
def get_delete_distributor_subflow(self):
return self.driver.get_delete_distributor_subflow()
def get_add_vip_subflow(self):
return self.driver.get_add_vip_subflow()
def get_remove_vip_subflow(self):
return self.driver.get_remove_vip_subflow()
def get_register_amphorae_subflow(self):
return self.driver.get_register_amphorae_subflow()
def get_drain_amphorae_subflow(self):
self.driver.get_drain_amphorae_subflow()
def get_unregister_amphorae_subflow(self):
self.driver.get_unregister_amphorae_subflow()