Add Ocata configuration for designate
Change-Id: If0634bda602d20625fa9e2e5710f25b5008d09bf
diff --git a/designate/files/ocata/api-paste.ini b/designate/files/ocata/api-paste.ini
new file mode 100644
index 0000000..b899d46
--- /dev/null
+++ b/designate/files/ocata/api-paste.ini
@@ -0,0 +1,76 @@
+[composite:osapi_dns]
+use = egg:Paste#urlmap
+/: osapi_dns_versions
+/v1: osapi_dns_v1
+/v2: osapi_dns_v2
+/admin: osapi_dns_admin
+
+[composite:osapi_dns_versions]
+use = call:designate.api.middleware:auth_pipeline_factory
+noauth = http_proxy_to_wsgi cors maintenance faultwrapper osapi_dns_app_versions
+keystone = http_proxy_to_wsgi cors maintenance faultwrapper osapi_dns_app_versions
+
+[app:osapi_dns_app_versions]
+paste.app_factory = designate.api.versions:factory
+
+[composite:osapi_dns_v1]
+use = call:designate.api.middleware:auth_pipeline_factory
+noauth = http_proxy_to_wsgi cors request_id noauthcontext maintenance validation_API_v1 faultwrapper_v1 normalizeuri osapi_dns_app_v1
+keystone = http_proxy_to_wsgi cors request_id authtoken keystonecontext maintenance validation_API_v1 faultwrapper_v1 normalizeuri osapi_dns_app_v1
+
+
+[app:osapi_dns_app_v1]
+paste.app_factory = designate.api.v1:factory
+
+[composite:osapi_dns_v2]
+use = call:designate.api.middleware:auth_pipeline_factory
+noauth = http_proxy_to_wsgi cors request_id faultwrapper validation_API_v2 noauthcontext maintenance normalizeuri osapi_dns_app_v2
+keystone = http_proxy_to_wsgi cors request_id faultwrapper validation_API_v2 authtoken keystonecontext maintenance normalizeuri osapi_dns_app_v2
+
+[app:osapi_dns_app_v2]
+paste.app_factory = designate.api.v2:factory
+
+[composite:osapi_dns_admin]
+use = call:designate.api.middleware:auth_pipeline_factory
+noauth = http_proxy_to_wsgi cors request_id faultwrapper noauthcontext maintenance normalizeuri osapi_dns_app_admin
+keystone = http_proxy_to_wsgi cors request_id faultwrapper authtoken keystonecontext maintenance normalizeuri osapi_dns_app_admin
+
+[app:osapi_dns_app_admin]
+paste.app_factory = designate.api.admin:factory
+
+[filter:cors]
+paste.filter_factory = oslo_middleware.cors:filter_factory
+oslo_config_project = designate
+
+[filter:request_id]
+paste.filter_factory = oslo_middleware:RequestId.factory
+
+[filter:http_proxy_to_wsgi]
+paste.filter_factory = oslo_middleware:HTTPProxyToWSGI.factory
+
+[filter:noauthcontext]
+paste.filter_factory = designate.api.middleware:NoAuthContextMiddleware.factory
+
+[filter:authtoken]
+paste.filter_factory = keystonemiddleware.auth_token:filter_factory
+
+[filter:keystonecontext]
+paste.filter_factory = designate.api.middleware:KeystoneContextMiddleware.factory
+
+[filter:maintenance]
+paste.filter_factory = designate.api.middleware:MaintenanceMiddleware.factory
+
+[filter:normalizeuri]
+paste.filter_factory = designate.api.middleware:NormalizeURIMiddleware.factory
+
+[filter:faultwrapper]
+paste.filter_factory = designate.api.middleware:FaultWrapperMiddleware.factory
+
+[filter:faultwrapper_v1]
+paste.filter_factory = designate.api.middleware:FaultWrapperMiddlewareV1.factory
+
+[filter:validation_API_v1]
+paste.filter_factory = designate.api.middleware:APIv1ValidationErrorMiddleware.factory
+
+[filter:validation_API_v2]
+paste.filter_factory = designate.api.middleware:APIv2ValidationErrorMiddleware.factory
diff --git a/designate/files/ocata/designate.conf.Debian b/designate/files/ocata/designate.conf.Debian
new file mode 100644
index 0000000..3c2ad84
--- /dev/null
+++ b/designate/files/ocata/designate.conf.Debian
@@ -0,0 +1,603 @@
+{%- from "designate/map.jinja" import server with context %}
+[DEFAULT]
+# Where an option is commented out, but filled in this shows the default
+# value of that option
+
+########################
+## General Configuration
+########################
+# Show more verbose log output (sets INFO log level output)
+verbose = True
+
+# Show debugging output in logs (sets DEBUG log level output)
+debug = False
+
+# Top-level directory for maintaining designate's state
+#state_path = /var/lib/designate
+
+# Log Configuration
+#log_config = None
+
+# Log directory
+#logdir = /var/log/designate
+
+# Driver used for issuing notifications
+{%- if server.notification is defined %}
+{%- if server.notification.driver is defined %}
+notification_driver = {{ server.notification.driver }}
+{%- else %}
+notification_driver = messagingv2
+{%- endif %}
+
+# Notification Topics
+{%- if server.notification.topics is defined %}
+notification_topics = {{ server.notification.topics }}
+{%- endif %}
+{%- endif %}
+
+# Use "sudo designate-rootwrap /etc/designate/rootwrap.conf" to use the real
+# root filter facility.
+# Change to "sudo" to skip the filtering and just run the command directly
+#root_helper = sudo designate-rootwrap /etc/designate/rootwrap.conf
+
+# Which networking API to use, Defaults to neutron
+#network_api = neutron
+
+# Supported record types
+#supported_record_type = A, AAAA, CNAME, MX, SRV, TXT, SPF, NS, PTR, SSHFP, SOA
+
+#-----------------------
+# RabbitMQ Config
+#-----------------------
+[oslo_messaging_rabbit]
+#rabbit_userid = guest
+#rabbit_password = guest
+#rabbit_virtual_host = /
+#rabbit_use_ssl = False
+#rabbit_hosts = 127.0.0.1:5672
+{# TODO: switch to transport_url when https://bugs.launchpad.net/designate/+bug/1673403 is fixed #}
+rabbit_userid = {{ server.message_queue.user }}
+rabbit_password = {{ server.message_queue.password }}
+rabbit_virtual_host = {{ server.message_queue.virtual_host }}
+#rabbit_use_ssl = False
+{%- if server.message_queue.members is defined %}
+rabbit_hosts = {% for member in server.message_queue.members -%}
+ {{ member.host }}:{{ member.get('port', 5672) }}
+ {%- if not loop.last -%},{%- endif -%}
+ {%- endfor -%}
+{%- else %}
+rabbit_host = {{ server.message_queue.host }}
+rabbit_port = {{ server.message_queue.port }}
+{%- endif %}
+
+########################
+## Service Configuration
+########################
+#-----------------------
+# Central Service
+#-----------------------
+[service:central]
+# Number of central worker processes to spawn
+#workers = None
+
+# Number of central greenthreads to spawn
+#threads = 1000
+
+# Maximum zone name length
+#max_zone_name_len = 255
+
+# Maximum recordset name length
+#max_recordset_name_len = 255
+
+# Minimum TTL
+#min_ttl = None
+
+# The name of the default pool
+#default_pool_id = '794ccc2c-d751-44fe-b57f-8894c9f5c842'
+
+## Managed resources settings
+
+# Email to use for managed resources like domains created by the FloatingIP API
+#managed_resource_email = hostmaster@example.com.
+
+# Tenant ID to own all managed resources - like auto-created records etc.
+#managed_resource_tenant_id = 123456
+
+# What filters to use. They are applied in order listed in the option, from
+# left to right
+#scheduler_filters = default_pool
+
+#-----------------------
+# API Service
+#-----------------------
+[service:api]
+# Number of api worker processes to spawn
+#workers = None
+
+# Number of api greenthreads to spawn
+#threads = 1000
+
+# Enable host request headers
+#enable_host_header = False
+
+# The base uri used in responses
+#api_base_uri = 'http://127.0.0.1:9001/'
+api_base_uri = http://{{ server.bind.api.address }}:9001/
+
+# API bind host+port pairs, comma separated
+listen = {{ server.bind.api.address }}:9001
+
+# Maximum line size of message headers to be accepted. max_header_line may
+# need to be increased when using large tokens (typically those generated by
+# the Keystone v3 API with big service catalogs).
+#max_header_line = 16384
+
+# Authentication strategy to use - can be either "noauth" or "keystone"
+#auth_strategy = keystone
+auth_strategy = keystone
+
+# Enable Version 1 API (deprecated)
+#enable_api_v1 = True
+enable_api_v1 = True
+
+# Enabled API Version 1 extensions
+# Can be one or more of : diagnostics, quotas, reports, sync, touch
+#enabled_extensions_v1 =
+enabled_extensions_v1 = diagnostics, quotas, reports, sync, touch
+
+# Enable Version 2 API
+#enable_api_v2 = True
+enable_api_v2 = True
+
+# Enabled API Version 2 extensions
+#enabled_extensions_v2 =
+enabled_extensions_v2 = quotas, reports
+
+# Default per-page limit for the V2 API, a value of None means show all results
+# by default
+#default_limit_v2 = 20
+
+# Max page size in the V2 API
+#max_limit_v2 = 1000
+
+# Enable Admin API (experimental)
+#enable_api_admin = False
+
+# Enabled Admin API extensions
+# Can be one or more of : reports, quotas, counts, tenants, target_sync
+# zone export is in zones extension
+#enabled_extensions_admin =
+
+# Default per-page limit for the Admin API, a value of None means show all results
+# by default
+#default_limit_admin = 20
+
+# Max page size in the Admin API
+#max_limit_admin = 1000
+
+# Show the pecan HTML based debug interface (v2 only)
+# This is only useful for development, and WILL break python-designateclient
+# if an error occurs
+#pecan_debug = False
+
+#-----------------------
+# Keystone Middleware
+#-----------------------
+[keystone_authtoken]
+auth_host = {{ server.identity.host }}
+auth_port = 35357
+auth_protocol = http
+admin_tenant_name = {{ server.identity.tenant }}
+admin_user = {{ server.identity.user }}
+admin_password = {{ server.identity.password }}
+#memcached_servers = localhost:11211
+#auth_type = password
+
+#-----------------------
+# CORS Middleware
+#-----------------------
+[cors]
+
+# Indicate whether this resource may be shared with the domain received in the
+# requests "origin" header. (list value)
+#allowed_origin = <None>
+
+# Indicate that the actual request can include user credentials (boolean value)
+#allow_credentials = true
+
+# Indicate which headers are safe to expose to the API. Defaults to HTTP Simple
+# Headers. (list value)
+#expose_headers = X-OpenStack-Request-ID,Host
+
+# Maximum cache age of CORS preflight requests. (integer value)
+#max_age = 3600
+
+# Indicate which methods can be used during the actual request. (list value)
+#allow_methods = GET,PUT,POST,DELETE,PATCH,HEAD
+
+# Indicate which header field names may be used during the actual request.
+# (list value)
+#allow_headers = X-Auth-Token,X-Auth-Sudo-Tenant-ID,X-Auth-Sudo-Project-ID,X-Auth-All-Projects,X-Designate-Edit-Managed-Records,OpenStack-DNS-Hide-Counts
+
+[cors.subdomain]
+
+# Indicate whether this resource may be shared with the domain received in the
+# requests "origin" header. (list value)
+#allowed_origin = <None>
+
+# Indicate that the actual request can include user credentials (boolean value)
+#allow_credentials = true
+
+# Indicate which headers are safe to expose to the API. Defaults to HTTP Simple
+# Headers. (list value)
+#expose_headers = X-OpenStack-Request-ID,Host
+
+# Maximum cache age of CORS preflight requests. (integer value)
+#max_age = 3600
+
+# Indicate which methods can be used during the actual request. (list value)
+#allow_methods = GET,PUT,POST,DELETE,PATCH,HEAD
+
+# Indicate which header field names may be used during the actual request.
+# (list value)
+#allow_headers = X-Auth-Token,X-Auth-Sudo-Tenant-ID,X-Auth-Sudo-Project-ID,X-Auth-All-Projects,X-Designate-Edit-Managed-Records,OpenStack-DNS-Hide-Counts
+
+#-----------------------
+# Sink Service
+#-----------------------
+[service:sink]
+# List of notification handlers to enable, configuration of these needs to
+# correspond to a [handler:my_driver] section below or else in the config
+# Can be one or more of : nova_fixed, neutron_floatingip
+#enabled_notification_handlers =
+enabled_notification_handlers = nova_fixed, neutron_floatingip
+
+#-----------------------
+# mDNS Service
+#-----------------------
+[service:mdns]
+# Number of mdns worker processes to spawn
+#workers = None
+
+# Number of mdns greenthreads to spawn
+#threads = 1000
+
+# mDNS bind host+port pairs, comma separated
+#listen = 0.0.0.0:5354
+
+# mDNS TCP Backlog
+#tcp_backlog = 100
+
+# mDNS TCP Receive Timeout
+#tcp_recv_timeout = 0.5
+
+# Enforce all incoming queries (including AXFR) are TSIG signed
+#query_enforce_tsig = False
+
+# Send all traffic over TCP
+#all_tcp = False
+
+# Maximum message size to emit
+#max_message_size = 65535
+
+#-----------------------
+# Agent Service
+#-----------------------
+# The agent runs on the resolver hosts
+[service:agent]
+#workers = None
+#listen = 0.0.0.0:5358
+#tcp_backlog = 100
+#allow_notify = 127.0.0.1
+
+# MiniDNS IP address and port
+#masters = 127.0.0.1:5354
+
+# Set to "fake", "bind9" or "knot2"
+#backend_driver = fake
+
+#transfer_source = None
+#notify_delay = 0
+
+#-----------------------
+# Zone Manager Service
+#-----------------------
+[service:producer]
+# Number of Zone Manager worker processes to spawn
+#workers = None
+
+# Number of Zone Manager greenthreads to spawn
+#threads = 1000
+
+# List of Zone Manager tasks to enable, a value of None will enable all tasks.
+# Can be one or more of: periodic_exists
+#enabled_tasks = None
+
+# Whether to allow synchronous zone exports
+#export_synchronous = True
+
+#------------------------
+# Deleted domains purging
+#------------------------
+[producer_task:domain_purge]
+# How frequently to purge deleted domains, in seconds
+#interval = 3600 # 1h
+
+# How many records to be deleted on each run
+#batch_size = 100
+
+# How old deleted records should be (deleted_at) to be purged, in seconds
+#time_threshold = 604800 # 7 days
+
+#------------------------
+# Delayed zones NOTIFY
+#------------------------
+[producer_task:delayed_notify]
+# How frequently to scan for zones pending NOTIFY, in seconds
+#interval = 5
+
+#------------------------
+# Worker Periodic Recovery
+#------------------------
+[producer_task:worker_periodic_recovery]
+# How frequently to scan for zones pending NOTIFY, in seconds
+#interval = 120
+
+#-----------------------
+# Pool Manager Service
+#-----------------------
+[service:pool_manager]
+# Number of Pool Manager worker processes to spawn
+#workers = None
+
+# Number of Pool Manager greenthreads to spawn
+#threads = 1000
+
+# The ID of the pool managed by this instance of the Pool Manager
+#pool_id = 794ccc2c-d751-44fe-b57f-8894c9f5c842
+
+# The percentage of servers requiring a successful update for a domain change
+# to be considered active
+#threshold_percentage = 100
+
+# The time to wait for a response from a server
+#poll_timeout = 30
+
+# The time between retrying to send a request and waiting for a response from a
+# server
+#poll_retry_interval = 15
+
+# The maximum number of times to retry sending a request and wait for a
+# response from a server
+#poll_max_retries = 10
+
+# The time to wait before sending the first request to a server
+#poll_delay = 5
+
+# Enable the recovery thread
+#enable_recovery_timer = True
+
+# The time between recovering from failures
+#periodic_recovery_interval = 120
+
+# Enable the sync thread
+#enable_sync_timer = True
+
+# The time between synchronizing the servers with storage
+#periodic_sync_interval = 1800
+
+# Zones Updated within last N seconds will be syncd. Use None to sync all zones
+#periodic_sync_seconds = None
+
+# Perform multiple update attempts during periodic_sync
+#periodic_sync_max_attempts = 3
+#periodic_sync_retry_interval = 30
+
+# The cache driver to use
+#cache_driver = memcache
+
+
+#-----------------------
+# Worker Service
+#-----------------------
+[service:worker]
+{# TODO: remove enabled option when https://bugs.launchpad.net/designate/+bug/1676827 is fixed #}
+# Whether to send events to worker instead of Pool Manager
+enabled = True
+
+# Number of Worker processes to spawn
+#workers = None
+
+# Number of Worker greenthreads to spawn
+#threads = 1000
+
+# The percentage of servers requiring a successful update for a zone change
+# to be considered active
+#threshold_percentage = 100
+
+# The time to wait for a response from a server
+#poll_timeout = 30
+
+# The time between retrying to send a request and waiting for a response from a
+# server
+#poll_retry_interval = 15
+
+# The maximum number of times to retry sending a request and wait for a
+# response from a server
+#poll_max_retries = 10
+
+# The time to wait before sending the first request to a server
+#poll_delay = 5
+
+# Whether to allow worker to send NOTIFYs. NOTIFY requests to mdns will noop
+# notify = False
+
+###################################
+## Pool Manager Cache Configuration
+###################################
+#-----------------------
+# SQLAlchemy Pool Manager Cache
+#-----------------------
+[pool_manager_cache:sqlalchemy]
+#connection = sqlite:///$state_path/designate_pool_manager.sqlite
+connection = {{ server.database.engine }}://{{ server.database.user }}:{{ server.database.password }}@{{ server.database.host }}/{{ server.database.name.pool_manager }}
+
+#connection_debug = 100
+#connection_trace = False
+#sqlite_synchronous = True
+#idle_timeout = 3600
+#max_retries = 10
+#retry_interval = 10
+
+#-----------------------
+# Memcache Pool Manager Cache
+#-----------------------
+[pool_manager_cache:memcache]
+#memcached_servers = None
+#expiration = 3600
+
+##############
+## Network API
+##############
+[network_api:neutron]
+# Comma separated list of values, formatted "<name>|<neutron_uri>"
+#endpoints = RegionOne|http://localhost:9696
+#endpoint_type = publicURL
+#timeout = 30
+#admin_username = designate
+#admin_password = designate
+#admin_tenant_name = designate
+#auth_url = http://localhost:35357/v2.0
+#insecure = False
+#auth_strategy = keystone
+#ca_certificates_file =
+
+########################
+## Storage Configuration
+########################
+#-----------------------
+# SQLAlchemy Storage
+#-----------------------
+[storage:sqlalchemy]
+# Database connection string - to configure options for a given implementation
+# like sqlalchemy or other see below
+#connection = sqlite:///$state_path/designate.sqlite
+connection = {{ server.database.engine }}://{{ server.database.user }}:{{ server.database.password }}@{{ server.database.host }}/{{ server.database.name.main_database }}
+
+#connection_debug = 0
+#connection_trace = False
+#sqlite_synchronous = True
+#idle_timeout = 3600
+#max_retries = 10
+#retry_interval = 10
+
+########################
+## Handler Configuration
+########################
+#-----------------------
+# Nova Fixed Handler
+#-----------------------
+[handler:nova_fixed]
+# Zone ID of zone to create records in. Should be pre-created
+zone_id = {{ server.domain_id }}
+notification_topics = notifications
+control_exchange = 'nova'
+formatv4 = '%(hostname)s.%(zone)s'
+formatv6 = '%(hostname)s.%(zone)s'
+
+#------------------------
+# Neutron Floating Handler
+#------------------------
+[handler:neutron_floatingip]
+# Zone ID of zone to create records in. Should be pre-created
+zone_id = {{ server.domain_id }}
+notification_topics = notifications
+control_exchange = 'neutron'
+formatv4 = '%(hostname)s.%(zone)s'
+formatv6 = '%(hostname)s.%(zone)s'
+
+##############################
+## Agent Backend Configuration
+##############################
+
+# Set backend_driver in the [service:agent] section
+
+[backend:agent:bind9]
+#rndc_host = 127.0.0.1
+#rndc_port = 953
+#rndc_config_file = /etc/rndc.conf
+#rndc_key_file = /etc/rndc.key
+#zone_file_path = $state_path/zones
+#query_destination = 127.0.0.1
+
+[backend:agent:knot2]
+# knotc command name when rootwrap is used. Location of the knotc executable
+# on the resolver host if rootwrap is not used
+#knotc_cmd_name = /usr/sbin/knotc
+#
+[backend:agent:djbdns]
+# Command names when rootwrap is used or location of the executables
+# on the resolver host when rootwrap is not used
+# tcpclient_cmd_name =
+# axfr_get_cmd_name =
+# tinydns_data_cmd_name =
+# tinydns_datadir =
+#query_destination = 127.0.0.1
+
+[backend:agent:denominator]
+#name = dynect
+#config_file = /etc/denominator.conf
+
+[backend:agent:gdnsd]
+#gdnsd_cmd_name = gdnsd
+#confdir_path = /etc/gdnsd
+#query_destination = 127.0.0.1
+
+[backend:agent:msdns]
+#query_destination = 127.0.0.1
+
+########################
+## Library Configuration
+########################
+[oslo_concurrency]
+# Path for Oslo Concurrency to store lock files, defaults to the value
+# of the state_path setting.
+#lock_path = $state_path
+
+########################
+## Coordination
+########################
+[coordination]
+# URL for the coordination backend to use.
+#backend_url = kazoo://127.0.0.1/
+
+########################
+## Hook Points
+########################
+# Hook Points are enabled when added to the config and there has been
+# a package that provides the corresponding named designate.hook_point
+# entry point.
+
+# [hook_point:name_of_hook_point]
+# some_param_for_hook = 42
+# Hooks can be disabled in the config
+# enabled = False
+
+# Hook can also be applied to the import path when the hook has not
+# been given an explicit name. The name is created from the hook
+# target function / method:
+#
+# name = '%s.%s' % (func.__module__, func.__name__)
+
+# [hook_point:designate.api.v2.controllers.zones.get_one]
+
+##################
+## Monasca Statsd
+##################
+[monasca:statsd]
+# Disabled by default
+# enabled = False
+# Statsd server hostname
+# hostname = 127.0.0.1
+# Statsd server UDP port
+# port = 8125
diff --git a/designate/files/ocata/pools.yaml b/designate/files/ocata/pools.yaml
new file mode 100644
index 0000000..29ca0e5
--- /dev/null
+++ b/designate/files/ocata/pools.yaml
@@ -0,0 +1,70 @@
+{%- from "designate/map.jinja" import server with context %}
+{% for pool in server.pools -%}
+- name: {{ pool.name }}
+ # The name is immutable. There will be no option to change the name after
+ # creation and the only way will to change it will be to delete it
+ # (and all zones associated with it) and recreate it.
+ description: {{ pool.description }}
+
+ {%- if pool.attributes is defined %}
+ # Attributes are Key:Value pairs that describe the pool. for example the level
+ # of service (i.e. service_tier:GOLD), capabilities (i.e. anycast: true) or
+ # other metadata. Users can use this information to point their zones to the
+ # correct pool
+ attributes:
+ {%- for k,v in pool.attributes.items() %}
+ {{ k }}: {{ v }}
+ {%- endfor %}
+ {%- endif %}
+
+ # List out the NS records for zones hosted within this pool
+ ns_records:
+ {% for rec in pool.ns_records -%}
+ - hostname: {{ rec.hostname }}
+ priority: {{ rec.priority }}
+ {% endfor -%}
+
+ # List out the nameservers for this pool. These are the actual DNS servers.
+ # We use these to verify changes have propagated to all nameservers.
+ nameservers:
+ {% for nameserver in pool.nameservers -%}
+ - host: {{ nameserver.host }}
+ port: {{ nameserver.port }}
+ {% endfor -%}
+
+ # List out the targets for this pool. For DNS there will be one
+ # entry for each DNS server, as we have to run rndc command on each server
+ targets:
+ {% for target in pool.targets -%}
+ - type: {{ target.type }}
+ description: {{ target.description }}
+
+ # List out the designate-mdns servers from which DNS servers should
+ # request zone transfers (AXFRs) from.
+ masters:
+ {% for master in target.masters -%}
+ - host: {{ master.host }}
+ port: {{ master.port }}
+ {% endfor -%}
+
+ # DNS server Configuration options
+ options:
+ host: {{ target.options.host }}
+ port: {{ target.options.port }}
+ {%- if target.type == 'bind9' %}
+ rndc_host: {{ target.options.rndc_host }}
+ rndc_port: {{ target.options.rndc_port }}
+ rndc_key_file: {{ target.options.rndc_key_file }}
+ {%- endif %}
+ {% endfor -%}
+
+ {%- if pool.also_notifies is defined %}
+ # Optional list of additional IP/Port's for which designate-mdns will send
+ # DNS NOTIFY packets to
+ also_notifies:
+ {%- for notify in pool.also_notifies %}
+ - host: {{ notify.host }}
+ port: {{ notify.port }}
+ {%- endfor %}
+ {%- endif %}
+{%- endfor %}
diff --git a/designate/map.jinja b/designate/map.jinja
index a510b8e..30d73c3 100644
--- a/designate/map.jinja
+++ b/designate/map.jinja
@@ -1,13 +1,27 @@
+{%- set version = salt['pillar.get']('designate:server:version') -%}
+{%- if version not in ['mitaka','liberty', 'juno', 'kilo'] %}
+{% set server = salt['grains.filter_by']({
+ 'Debian': {
+ 'pkgs': ['designate', 'designate-producer', 'designate-mdns', 'designate-sink', 'designate-worker'],
+ 'services': ['designate-agent', 'designate-api', 'designate-central', 'designate-mdns', 'designate-producer', 'designate-sink', 'designate-worker'],
+ },
+ 'RedHat': {
+ 'pkgs': ['openstack-designate-api', 'openstack-designate-central', 'openstack-designate-sink', 'openstack-designate-producer', 'openstack-designate-worker', 'openstack-designate-mdns', 'openstack-designate-common', 'python-designate', 'python-designateclient', 'openstack-designate-agent'],
+ 'services': ['designate-central', 'designate-api', 'designate-mdns', 'designate-producer', 'designate-worker'],
+ },
+}, merge=pillar.designate.get('server', {})) %}
+{%- else %}
{% set server = salt['grains.filter_by']({
'Debian': {
'pkgs': ['designate', 'designate-pool-manager', 'designate-mdns', 'designate-sink', 'designate-zone-manager'],
'services': ['designate-agent', 'designate-api', 'designate-central', 'designate-mdns', 'designate-pool-manager', 'designate-sink', 'designate-zone-manager'],
},
'RedHat': {
- 'pkgs': ['openstack-designate-api', 'openstack-designate-central', 'openstack-designate-sink', 'openstack-designate-pool-manager', 'openstack-designate-mdns', 'openstack-designate-common', 'python-designate', 'python-designateclient', 'openstack-designate-agent'],
- 'services': ['designate-central', 'designate-api', 'designate-mdns', 'designate-pool-manager'],
+ 'pkgs': ['openstack-designate-api', 'openstack-designate-central', 'openstack-designate-sink', 'openstack-designate-pool-manager', 'openstack-designate-zone-manager', 'openstack-designate-mdns', 'openstack-designate-common', 'python-designate', 'python-designateclient', 'openstack-designate-agent'],
+ 'services': ['designate-central', 'designate-api', 'designate-mdns', 'designate-pool-manager', 'designate-zone-manager'],
},
}, merge=pillar.designate.get('server', {})) %}
+{%- endif %}
{% set client = salt['grains.filter_by']({
'Debian': {
diff --git a/designate/server.sls b/designate/server.sls
index 18b067b..1e5599d 100644
--- a/designate/server.sls
+++ b/designate/server.sls
@@ -47,14 +47,12 @@
- name: designate-manage database sync
- require:
- file: /etc/designate/designate.conf
- - pkg: designate_server_packages
designate_pool_sync:
cmd.run:
- name: designate-manage pool-manager-cache sync
- require:
- file: /etc/designate/designate.conf
- - pkg: designate_server_packages
designate_server_services:
service.running:
diff --git a/tests/pillar/designate_ocata.sls b/tests/pillar/designate_ocata.sls
new file mode 100644
index 0000000..e434138
--- /dev/null
+++ b/tests/pillar/designate_ocata.sls
@@ -0,0 +1,42 @@
+designate:
+ server:
+ enabled: true
+ region: RegionOne
+ domain_id: 5186883b-91fb-4891-bd49-e6769234a8fc
+ version: ocata
+ message_queue:
+ members:
+ - host: 127.0.0.1
+ - host: 127.0.1.1
+ - host: 127.0.2.1
+ pools:
+ - name: default
+ description: 'default pool'
+ attributes:
+ service_tier: GOLD
+ test_attr: test_value
+ ns_records:
+ - hostname: 'ns1.example.org.'
+ priority: 10
+ nameservers:
+ - host: 127.0.0.1
+ port: 53
+ - host: 127.0.1.1
+ port: 53
+ - host: 127.0.2.1
+ port: 53
+ targets:
+ - type: bind9
+ description: 'default target'
+ masters:
+ - host: 127.0.0.1
+ port: 5354
+ options:
+ host: 127.0.0.1
+ port: 53
+ rndc_host: 127.0.0.1
+ rndc_port: 953
+ rndc_key_file: /etc/designate/rndc.key
+ also_notifies:
+ - host: 127.0.3.1
+ port: 53