Customize metadata bind host/port

This patch allows to customize metadata bind address/port
settings.

Change-Id: Ib238352e421d40f7fcbb969aceffa9f07b48ac2e
Related-Prod: PROD-17576
diff --git a/README.rst b/README.rst
index 828dd01..81c539d 100644
--- a/README.rst
+++ b/README.rst
@@ -424,6 +424,19 @@
         barbican:
           enabled: true
 
+Nova metadata custom bindings
+
+.. code-block:: yaml
+
+    nova:
+      controller:
+        enabled: true
+        ...
+        metadata:
+          bind:
+            address: 1.2.3.4
+            port: 8776
+
 
 Client role
 -----------
diff --git a/nova/files/ocata/nova-controller.conf.Debian b/nova/files/ocata/nova-controller.conf.Debian
index ed21920..a53c256 100644
--- a/nova/files/ocata/nova-controller.conf.Debian
+++ b/nova/files/ocata/nova-controller.conf.Debian
@@ -2690,7 +2690,7 @@
 # requests.
 #  (string value)
 #metadata_listen=0.0.0.0
-metadata_listen={{ controller.bind.private_address }}
+metadata_listen={{ controller.get('metadata', {}).get('bind', {}).get('address', controller.bind.private_address) }}
 osapi_volume_listen={{ controller.bind.private_address }}
 
 #
@@ -2701,7 +2701,11 @@
 #  (port value)
 # Minimum value: 0
 # Maximum value: 65535
+{%- if controller.get('metadata', {}).get('bind', {}).port is defined %}
+metadata_listen_port={{ controller.metadata.bind.port }}
+{%- else %}
 #metadata_listen_port=8775
+{%- endif %}
 
 #
 # Number of workers for metadata service. If not specified the number of
diff --git a/nova/files/pike/nova-controller.conf.Debian b/nova/files/pike/nova-controller.conf.Debian
index f6bc29c..50cd7fc 100644
--- a/nova/files/pike/nova-controller.conf.Debian
+++ b/nova/files/pike/nova-controller.conf.Debian
@@ -2690,7 +2690,7 @@
 # requests.
 #  (string value)
 #metadata_listen=0.0.0.0
-metadata_listen={{ controller.bind.private_address }}
+metadata_listen={{ controller.get('metadata', {}).get('bind', {}).get('address', controller.bind.private_address) }}
 osapi_volume_listen={{ controller.bind.private_address }}
 
 #
@@ -2701,7 +2701,11 @@
 #  (port value)
 # Minimum value: 0
 # Maximum value: 65535
+{%- if controller.get('metadata', {}).get('bind', {}).port is defined %}
+metadata_listen_port={{ controller.metadata.bind.port }}
+{%- else %}
 #metadata_listen_port=8775
+{%- endif %}
 
 #
 # Number of workers for metadata service. If not specified the number of