Add designate

Change-Id: Ib0f28b5659adc73fd7797ad04d89c63dabcc3aea
Depends-On: Ib1ec855ddbd7da0442e4cf0e34cf54603f760f21
Related-Prod: OSCORE-267
diff --git a/README b/README
index 1a0dde1..aac74dd 100644
--- a/README
+++ b/README
@@ -45,7 +45,7 @@
 export FORMULAS_BRANCH=master
 
 mkdir -p ${FORMULAS_PATH}
-declare -a formula_services=("linux" "reclass" "salt" "openssh" "ntp" "git" "nginx" "collectd" "sensu" "heka" "sphinx" "mysql" "grafana" "libvirt" "rsyslog" "memcached" "rabbitmq" "apache" "keystone" "glance" "nova" "neutron" "cinder" "heat" "horizon" "ironic" "tftpd-hpa")
+declare -a formula_services=("linux" "reclass" "salt" "openssh" "ntp" "git" "nginx" "collectd" "sensu" "heka" "sphinx" "mysql" "grafana" "libvirt" "rsyslog" "memcached" "rabbitmq" "apache" "keystone" "glance" "nova" "neutron" "cinder" "heat" "horizon" "ironic" "tftpd-hpa" "bind" "powerdns" "designate")
 for formula_service in "${formula_services[@]}"; do
   _BRANCH=${FORMULAS_BRANCH}
     [ ! -d "${FORMULAS_PATH}/${formula_service}" ] && {
@@ -81,6 +81,8 @@
 #salt-call state.apply cinder
 #salt-call state.apply heat
 #salt-call state.apply horizon
+#salt-call state.apply bind
+#salt-call state.apply designate
 # Ironic is not available yet.
 #salt-call state.apply ironic
 #salt-call state.apply tftpd_hpa
@@ -115,4 +117,9 @@
 cinder create --name test 1
 nova volume-attach test 49a471ec-2e6d-4810-9161-6c191e1370f5 # UUID of volume
 
+openstack dns service list
+openstack zone create --email dnsmaster@example.tld example.tld.
+openstack recordset create --records '10.0.0.1' --type A example.tld. www
+nslookup www.example.tld 127.0.0.1
+
 # Horizon is available on port :8078
diff --git a/classes/cluster/virtual-mcp-allinone/openstack/init.yml b/classes/cluster/virtual-mcp-allinone/openstack/init.yml
index 257d729..5ad1259 100755
--- a/classes/cluster/virtual-mcp-allinone/openstack/init.yml
+++ b/classes/cluster/virtual-mcp-allinone/openstack/init.yml
@@ -12,10 +12,13 @@
 - system.mysql.client.database.cinder
 - system.mysql.client.database.heat
 #- system.mysql.client.database.ironic
+- system.mysql.client.database.designate
+- system.mysql.client.database.designate_pool_manager
 - system.keystone.client.single
 - system.keystone.client.service.nova21
 - system.keystone.client.service.nova-placement
 #- system.keystone.client.service.ironic
+- system.keystone.client.service.designate
 - system.glance.control.single
 - system.nova.control.single
 - system.neutron.control.openvswitch.single
@@ -27,6 +30,9 @@
 - service.cinder.volume.single
 - system.cinder.volume.backend.lvm
 - system.horizon.server.single
+- system.bind.server.single
+- system.designate.server.single
+- system.designate.server.backend.bind
 #- system.ironic.api.single
 #- system.ironic.conductor.single
 #- system.ironic.tftpd_hpa
@@ -47,6 +53,7 @@
     heat_version: ${_param:openstack_version}
     horizon_version: ${_param:openstack_version}
     ironic_version: ${_param:openstack_version}
+    designate_version: ${_param:openstack_version}
     keystone_service_token: workshop
     keystone_admin_password: workshop
     keystone_ceilometer_password: workshop
@@ -55,6 +62,7 @@
     keystone_heat_password: workshop
     keystone_neutron_password: workshop
     keystone_nova_password: workshop
+    keystone_designate_password: workshop
     keystone_ironic_password: workshop
     keystone_service_host: ${_param:single_address}
     mysql_keystone_password: workshop
@@ -64,10 +72,12 @@
     mysql_cinder_password: workshop
     mysql_heat_password: workshop
     mysql_ironic_password: workshop
+    mysql_designate_password: workshop
     heat_service_host: ${_param:single_address}
     neutron_service_host: ${_param:single_address}
     glance_service_host: ${_param:single_address}
     cinder_service_host: ${_param:single_address}
+    designate_service_host: ${_param:single_address}
     nova_service_host: ${_param:single_address}
     ironic_service_host: ${_param:single_address}
     control_address: ${_param:single_address}
@@ -80,6 +90,24 @@
     horizon_secret_key: workshop
     horizon_identity_encryption: none
     horizon_identity_version: 2
+    designate_bind9_rndc_key: 4pc+X4PDqb2q+5o72dISm72LM1Ds9X2EYZjqg+nmsS7FhdTwzFFY8l/iEDmHxnyjkA33EQC8H+z0fLLBunoitw==
+    designate_domain_id: 5186883b-91fb-4891-bd49-e6769234a8fc
+    designate_pool_ns_records:
+      - hostname: 'ns1.example.org.'
+        priority: 10
+    designate_pool_nameservers:
+      - host: ${_param:single_address}
+        port: 53
+    designate_pool_target_type: bind9
+    designate_pool_target_masters:
+      - host: ${_param:single_address}
+        port: 5354
+    designate_pool_target_options:
+      host: ${_param:single_address}
+      port: 53
+      rndc_host: 127.0.0.1
+      rndc_port: 953
+      rndc_key_file: /etc/designate/rndc.key
   neutron:
     server:
       message_queue: