You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
208 lines
8.2 KiB
208 lines
8.2 KiB
# Copyright 2015 Hewlett-Packard Development Company, L.P. |
|
# |
|
# 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 oslo_log import log as logging |
|
|
|
from octavia.amphorae.drivers import driver_base |
|
|
|
LOG = logging.getLogger(__name__) |
|
|
|
|
|
class LoggingUpdate(object): |
|
def update_stats(self, stats): |
|
LOG.debug("Amphora %s no-op, update stats %s", |
|
self.__class__.__name__, stats) |
|
self.stats = stats |
|
|
|
def update_health(self, health): |
|
LOG.debug("Amphora %s no-op, update health %s", |
|
self.__class__.__name__, health) |
|
self.health = health |
|
|
|
|
|
class NoopManager(object): |
|
|
|
def __init__(self): |
|
super(NoopManager, self).__init__() |
|
self.amphoraconfig = {} |
|
|
|
def update_amphora_listeners(self, loadbalancer, amphora, timeout_dict): |
|
amphora_id = amphora.id |
|
for listener in loadbalancer.listeners: |
|
LOG.debug("Amphora noop driver update_amphora_listeners, " |
|
"listener %s, amphora %s, timeouts %s", listener.id, |
|
amphora_id, timeout_dict) |
|
self.amphoraconfig[(listener.id, amphora_id)] = ( |
|
listener, amphora_id, timeout_dict, "update_amp") |
|
|
|
def update(self, loadbalancer): |
|
LOG.debug("Amphora %s no-op, update listener %s, vip %s", |
|
self.__class__.__name__, |
|
tuple(li.protocol_port for li in loadbalancer.listeners), |
|
loadbalancer.vip.ip_address) |
|
self.amphoraconfig[ |
|
(tuple(li.protocol_port for li in loadbalancer.listeners), |
|
loadbalancer.vip.ip_address)] = (loadbalancer.listeners, |
|
loadbalancer.vip, |
|
'active') |
|
|
|
def start(self, loadbalancer, amphora=None, timeout_dict=None): |
|
LOG.debug("Amphora %s no-op, start listeners, lb %s, amp %s" |
|
"timeouts %s", self.__class__.__name__, loadbalancer.id, |
|
amphora, timeout_dict) |
|
self.amphoraconfig[ |
|
(loadbalancer.id, amphora.id)] = (loadbalancer, amphora, |
|
'start') |
|
|
|
def reload(self, loadbalancer, amphora=None, timeout_dict=None): |
|
LOG.debug("Amphora %s no-op, reload listeners, lb %s, amp %s, " |
|
"timeouts %s", self.__class__.__name__, loadbalancer.id, |
|
amphora, timeout_dict) |
|
self.amphoraconfig[ |
|
(loadbalancer.id, amphora.id)] = (loadbalancer, amphora, |
|
'reload') |
|
|
|
def delete(self, listener): |
|
LOG.debug("Amphora %s no-op, delete listener %s, vip %s", |
|
self.__class__.__name__, |
|
listener.protocol_port, |
|
listener.load_balancer.vip.ip_address) |
|
self.amphoraconfig[(listener.protocol_port, |
|
listener.load_balancer.vip.ip_address)] = ( |
|
listener, listener.load_balancer.vip, 'delete') |
|
|
|
def get_info(self, amphora, raise_retry_exception=False): |
|
LOG.debug("Amphora %s no-op, info amphora %s", |
|
self.__class__.__name__, amphora.id) |
|
self.amphoraconfig[amphora.id] = (amphora.id, 'get_info') |
|
|
|
def get_diagnostics(self, amphora): |
|
LOG.debug("Amphora %s no-op, get diagnostics amphora %s", |
|
self.__class__.__name__, amphora.id) |
|
self.amphoraconfig[amphora.id] = (amphora.id, 'get_diagnostics') |
|
|
|
def finalize_amphora(self, amphora): |
|
LOG.debug("Amphora %s no-op, finalize amphora %s", |
|
self.__class__.__name__, amphora.id) |
|
self.amphoraconfig[amphora.id] = (amphora.id, 'finalize amphora') |
|
|
|
def post_network_plug(self, amphora, port): |
|
LOG.debug("Amphora %s no-op, post network plug amphora %s, port %s", |
|
self.__class__.__name__, amphora.id, port.id) |
|
self.amphoraconfig[amphora.id, port.id] = (amphora.id, port.id, |
|
'post_network_plug') |
|
|
|
def post_vip_plug(self, amphora, load_balancer, amphorae_network_config, |
|
vrrp_port=None, vip_subnet=None): |
|
LOG.debug("Amphora %s no-op, post vip plug load balancer %s", |
|
self.__class__.__name__, load_balancer.id) |
|
self.amphoraconfig[(load_balancer.id, id(amphorae_network_config))] = ( |
|
load_balancer.id, amphorae_network_config, 'post_vip_plug') |
|
|
|
def upload_cert_amp(self, amphora, pem_file): |
|
LOG.debug("Amphora %s no-op, upload cert amphora %s,with pem file %s", |
|
self.__class__.__name__, amphora.id, pem_file) |
|
self.amphoraconfig[amphora.id, pem_file] = (amphora.id, pem_file, |
|
'update_amp_cert_file') |
|
|
|
def update_amphora_agent_config(self, amphora, agent_config): |
|
LOG.debug("Amphora %s no-op, update agent config amphora " |
|
"%s, with agent config %s", |
|
self.__class__.__name__, amphora.id, agent_config) |
|
self.amphoraconfig[amphora.id, agent_config] = ( |
|
amphora.id, agent_config, 'update_amphora_agent_config') |
|
|
|
def get_interface_from_ip(self, amphora, ip_address, timeout_dict=None): |
|
LOG.debug("Amphora %s no-op, get interface from amphora %s for IP %s", |
|
self.__class__.__name__, amphora.id, ip_address) |
|
if ip_address == '198.51.100.99': |
|
return "noop0" |
|
return None |
|
|
|
|
|
class NoopAmphoraLoadBalancerDriver( |
|
driver_base.AmphoraLoadBalancerDriver, |
|
driver_base.VRRPDriverMixin): |
|
def __init__(self): |
|
super(NoopAmphoraLoadBalancerDriver, self).__init__() |
|
self.driver = NoopManager() |
|
|
|
def update_amphora_listeners(self, loadbalancer, amphora, timeout_dict): |
|
|
|
self.driver.update_amphora_listeners(loadbalancer, amphora, |
|
timeout_dict) |
|
|
|
def update(self, loadbalancer): |
|
|
|
self.driver.update(loadbalancer) |
|
|
|
def start(self, loadbalancer, amphora=None, timeout_dict=None): |
|
|
|
self.driver.start(loadbalancer, amphora, timeout_dict) |
|
|
|
def reload(self, loadbalancer, amphora=None, timeout_dict=None): |
|
|
|
self.driver.reload(loadbalancer, amphora, timeout_dict) |
|
|
|
def delete(self, listener): |
|
|
|
self.driver.delete(listener) |
|
|
|
def get_info(self, amphora, raise_retry_exception=False): |
|
|
|
self.driver.get_info(amphora, |
|
raise_retry_exception=raise_retry_exception) |
|
|
|
def get_diagnostics(self, amphora): |
|
|
|
self.driver.get_diagnostics(amphora) |
|
|
|
def finalize_amphora(self, amphora): |
|
|
|
self.driver.finalize_amphora(amphora) |
|
|
|
def post_network_plug(self, amphora, port): |
|
|
|
self.driver.post_network_plug(amphora, port) |
|
|
|
def post_vip_plug(self, amphora, load_balancer, amphorae_network_config, |
|
vrrp_port=None, vip_subnet=None): |
|
|
|
self.driver.post_vip_plug(amphora, |
|
load_balancer, amphorae_network_config, |
|
vrrp_port=vrrp_port, vip_subnet=vip_subnet) |
|
|
|
def upload_cert_amp(self, amphora, pem_file): |
|
|
|
self.driver.upload_cert_amp(amphora, pem_file) |
|
|
|
def update_amphora_agent_config(self, amphora, agent_config): |
|
self.driver.update_amphora_agent_config(amphora, agent_config) |
|
|
|
def get_interface_from_ip(self, amphora, ip_address, timeout_dict=None): |
|
return self.driver.get_interface_from_ip(amphora, ip_address, |
|
timeout_dict) |
|
|
|
def update_vrrp_conf(self, loadbalancer, amphorae_network_config, amphora, |
|
timeout_dict=None): |
|
pass |
|
|
|
def stop_vrrp_service(self, loadbalancer): |
|
pass |
|
|
|
def start_vrrp_service(self, amphora, timeout_dict=None): |
|
pass |
|
|
|
def reload_vrrp_service(self, loadbalancer): |
|
pass
|
|
|