From 620fc6ec97be21f5bbc0acbca82517ba49fbd245 Mon Sep 17 00:00:00 2001 From: Kiall Mac Innes Date: Thu, 14 Apr 2016 19:14:32 +0100 Subject: [PATCH] Add Agent DevStack Backend * Add a new backend for DevStack allowing the Agent backend to be configured. * Change the agent to choose a sane port by default, it's extremely unlikely anyone is exposing the agent on port 53 intentionally. * The agent itself is not yet configured, this will come later as it involves refactoring most of the BIND non-agent backend into a lib. * Fail when the user asks for the agent backend, without also enabling the agent service. Change-Id: Iedde58f4f5a2ea89cb9da78aaec1853208af8fc9 --- designate/agent/__init__.py | 4 +- designate/backend/agent.py | 2 +- devstack/designate_plugins/backend-agent | 103 ++++++++++++++++++ devstack/designate_plugins/backend-agent-fake | 55 ++++++++++ devstack/plugin.sh | 8 +- devstack/settings | 3 +- doc/source/backends.rst | 4 +- doc/source/backends/agent.rst | 46 ++++++++ .../backends/sample_yaml_snippets/agent.yaml | 15 +++ .../agent-port-number-c28462562a74cbf9.yaml | 5 + 10 files changed, 237 insertions(+), 8 deletions(-) create mode 100644 devstack/designate_plugins/backend-agent create mode 100644 devstack/designate_plugins/backend-agent-fake create mode 100644 doc/source/backends/agent.rst create mode 100644 doc/source/backends/sample_yaml_snippets/agent.yaml create mode 100644 releasenotes/notes/agent-port-number-c28462562a74cbf9.yaml diff --git a/designate/agent/__init__.py b/designate/agent/__init__.py index 91c7f5950..041fa196f 100644 --- a/designate/agent/__init__.py +++ b/designate/agent/__init__.py @@ -25,9 +25,9 @@ OPTS = [ cfg.IntOpt('threads', default=1000, help='Number of agent greenthreads to spawn'), cfg.IPOpt('host', default='0.0.0.0', - help='The Agent Bind Host'), + help='The host for the Agent to bind to'), cfg.PortOpt('port', default=5358, - help='mDNS Port Number'), + help='The port for the Agent to bind to'), cfg.IntOpt('tcp-backlog', default=100, help='The Agent TCP Backlog'), cfg.FloatOpt('tcp-recv-timeout', default=0.5, diff --git a/designate/backend/agent.py b/designate/backend/agent.py index 75728e386..c9ed39cee 100644 --- a/designate/backend/agent.py +++ b/designate/backend/agent.py @@ -58,7 +58,7 @@ class AgentPoolBackend(base.Backend): def __init__(self, target): super(AgentPoolBackend, self).__init__(target) self.host = self.options.get('host', '127.0.0.1') - self.port = int(self.options.get('port', 53)) + self.port = int(self.options.get('port', 5358)) self.timeout = CONF['service:pool_manager'].poll_timeout self.retry_interval = CONF['service:pool_manager'].poll_retry_interval self.max_retries = CONF['service:pool_manager'].poll_max_retries diff --git a/devstack/designate_plugins/backend-agent b/devstack/designate_plugins/backend-agent new file mode 100644 index 000000000..e2579dc49 --- /dev/null +++ b/devstack/designate_plugins/backend-agent @@ -0,0 +1,103 @@ +# Configure the agent backend + +# Enable with: +# DESIGNATE_BACKEND_DRIVER=agent +# DESIGNATE_AGENT_BACKEND_DRIVER= + +# Dependencies: +# ``functions`` file +# ``designate`` configuration + +# install_designate_backend - install any external requirements +# configure_designate_backend - make configuration changes, including those to other services +# init_designate_backend - initialize databases, etc. +# start_designate_backend - start any external services +# stop_designate_backend - stop any external services +# cleanup_designate_backend - remove transient data and cache + +# Save trace setting +DP_AGENT_XTRACE=$(set +o | grep xtrace) +set +o xtrace + +# Get agent backend configuration +# ------------------------------- +if [[ -r $DESIGNATE_PLUGINS/backend-agent-$DESIGNATE_AGENT_BACKEND_DRIVER ]]; then + # Load plugin + source $DESIGNATE_PLUGINS/backend-agent-$DESIGNATE_AGENT_BACKEND_DRIVER +fi + +# Entry Points +# ------------ + +# install_designate_backend - install any external requirements +function install_designate_backend { + # Install the Agent Backend + install_designate_agent_backend +} + +# configure_designate_backend - make configuration changes, including those to other services +function configure_designate_backend { + # Generate Designate pool.yaml file + sudo tee $DESIGNATE_CONF_DIR/pools.yaml > /dev/null <