Add Designate integration
This patch adds Designate support
Change-Id: Ic8391196c0d7eefc6f0ff7b6cc6106d499284e22
Related-PROD: PROD-14689
diff --git a/.kitchen.yml b/.kitchen.yml
index 2481b6c..da050d9 100644
--- a/.kitchen.yml
+++ b/.kitchen.yml
@@ -158,4 +158,9 @@
pillars-from-files:
neutron.sls: tests/pillar/gateway_legacy_fwaas_v1.sls
+ - name: control_dns
+ provisioner:
+ pillars-from-files:
+ neutron.sls: tests/pillar/control_dns.sls
+
# vim: ft=yaml sw=2 ts=2 sts=2 tw=125
diff --git a/.travis.yml b/.travis.yml
index cc2ce87..6e01664 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -46,6 +46,8 @@
- PLATFORM=trevorj/salty-whales:trusty SUITE=control_qos
- PLATFORM=trevorj/salty-whales:xenial SUITE=control_qos
- PLATFORM=trevorj/salty-whales:xenial SUITE=control_ovn
+ - PLATFORM=trevorj/salty-whales:trusty SUITE=control_dns
+ - PLATFORM=trevorj/salty-whales:xenial SUITE=control_dns
- PLATFORM=trevorj/salty-whales:trusty SUITE=gateway_dvr
- PLATFORM=trevorj/salty-whales:xenial SUITE=gateway_dvr
- PLATFORM=trevorj/salty-whales:trusty SUITE=gateway_legacy
diff --git a/README.rst b/README.rst
index 57153ed..7da4084 100644
--- a/README.rst
+++ b/README.rst
@@ -992,6 +992,23 @@
enabled: True
+
+Neutron with Designate
+-----------------------------------------
+.. code-block:: yaml
+
+ neutron:
+ server:
+ backend:
+ extension:
+ dns:
+ enabled: True
+ host: 127.0.0.1
+ port: 9001
+ protocol: http
+
+
+
Documentation and Bugs
======================
diff --git a/_states/neutronng.py b/_states/neutronng.py
index 92afb7a..046fb79 100644
--- a/_states/neutronng.py
+++ b/_states/neutronng.py
@@ -83,7 +83,8 @@
shared=None,
provider_segmentation_id=None,
profile=None,
- endpoint_type=None):
+ endpoint_type=None,
+ dns_domain=None):
'''
Ensure that the neutron network is present with the specified properties.
name
@@ -103,7 +104,8 @@
admin_state_up=admin_state_up,
shared=shared,
tenant_id=tenant_id,
- provider_segmentation_id=provider_segmentation_id)
+ provider_segmentation_id=provider_segmentation_id,
+ dns_domain=dns_domain)
if len(existing_networks) == 0:
network_arguments.update(connection_args)
diff --git a/metadata/service/control/cluster.yml b/metadata/service/control/cluster.yml
index 701b367..b1ac5ad 100644
--- a/metadata/service/control/cluster.yml
+++ b/metadata/service/control/cluster.yml
@@ -44,3 +44,12 @@
user: nova
password: ${_param:keystone_nova_password}
tenant: service
+ backend:
+ extension:
+ dns:
+ enabled: False
+ engine: designate
+ protocol: http
+ host: ${_param:cluster_vip_address}
+ port: 9001
+ url: ${neutron:server:backend:extension:dns:protocol}://${neutron:server:backend:extension:dns:host}:${neutron:server:backend:extension:dns:port}/v2
diff --git a/metadata/service/control/single.yml b/metadata/service/control/single.yml
index 149d37a..0f22b88 100644
--- a/metadata/service/control/single.yml
+++ b/metadata/service/control/single.yml
@@ -48,3 +48,12 @@
user: nova
password: ${_param:keystone_nova_password}
tenant: service
+ backend:
+ extension:
+ dns:
+ enabled: False
+ engine: designate
+ protocol: http
+ host: ${_param:single_address}
+ port: 9001
+ url: ${neutron:server:backend:extension:dns:protocol}://${neutron:server:backend:extension:dns:host}:${neutron:server:backend:extension:dns:port}/v2
diff --git a/neutron/client.sls b/neutron/client.sls
index 44b03f7..2f8e6b9 100644
--- a/neutron/client.sls
+++ b/neutron/client.sls
@@ -58,6 +58,9 @@
{%- if network.provider_segmentation_id is defined %}
- provider_segmentation_id: {{ network.provider_segmentation_id }}
{%- endif %}
+ {%- if network.dns_domain is defined %}
+ - dns_domain: {{ network.dns_domain }}
+ {%- endif %}
{%- if network.subnet is defined %}
diff --git a/neutron/files/ocata/neutron-server.conf.Debian b/neutron/files/ocata/neutron-server.conf.Debian
index 74e155c..fd15e1f 100644
--- a/neutron/files/ocata/neutron-server.conf.Debian
+++ b/neutron/files/ocata/neutron-server.conf.Debian
@@ -118,6 +118,9 @@
# Driver for external DNS integration. (string value)
#external_dns_driver = <None>
+{%- if server.backend.get('extension', {}).get('dns', {}).get('enabled', False) %}
+external_dns_driver={{ server.backend.get('extension', {}).get('dns', {}).get('engine', '') }}
+{%- endif %}
# Allow sending resource operation notification to DHCP agent (boolean value)
#dhcp_agent_notification = true
@@ -2224,3 +2227,20 @@
{% include "neutron/files/"+server.version+"/ContrailPlugin.ini" %}
{% endif %}
+
+{%- if server.backend.get('extension', {}).get('dns', {}).get('enabled', False) and server.backend.get('extension', {}).get('dns', {}).get('engine', '') == 'designate' %}
+[designate]
+{%- if server.backend.get('extension', {}).get('dns', {}).get('url', False) %}
+url = {{ server.backend.extension.dns.url }}
+{%- else %}
+#url = <None>
+{%- endif %}
+auth_region={{ server.identity.region }}
+auth_type = password
+user_domain_id = {{ server.identity.get('domain', 'default') }}
+project_domain_id = {{ server.identity.get('domain', 'default') }}
+project_name = {{ server.identity.tenant }}
+username = {{ server.identity.user }}
+password = {{ server.identity.password }}
+auth_url=http://{{ server.identity.host }}:35357
+{%- endif %}
diff --git a/tests/pillar/control_dns.sls b/tests/pillar/control_dns.sls
new file mode 100644
index 0000000..d8167fa
--- /dev/null
+++ b/tests/pillar/control_dns.sls
@@ -0,0 +1,58 @@
+neutron:
+ server:
+ backend:
+ engine: ml2
+ external_mtu: 1500
+ mechanism:
+ ovs:
+ driver: openvswitch
+ tenant_network_types: flat,vxlan
+ extension:
+ dns:
+ enabled: true
+ engine: designate
+ url: http://127.0.0.1:9001/v2
+ bind:
+ address: 172.16.10.101
+ port: 9696
+ compute:
+ host: 127.0.0.1
+ password: workshop
+ region: RegionOne
+ tenant: service
+ user: nova
+ database:
+ engine: mysql
+ host: 127.0.0.1
+ name: neutron
+ password: workshop
+ port: 3306
+ user: neutron
+ dns_domain: novalocal
+ dvr: false
+ enabled: true
+ qos: false
+ global_physnet_mtu: 1500
+ identity:
+ engine: keystone
+ host: 127.0.0.1
+ password: workshop
+ port: 35357
+ region: RegionOne
+ tenant: service
+ user: neutron
+ endpoint_type: internal
+ l3_ha: False
+ message_queue:
+ engine: rabbitmq
+ host: 127.0.0.1
+ password: workshop
+ port: 5672
+ user: openstack
+ virtual_host: /openstack
+ plugin: ml2
+ version: ocata
+ policy:
+ create_subnet: 'rule:admin_or_network_owner'
+ 'get_network:queue_id': 'rule:admin_only'
+ 'create_network:shared':