diff --git a/nova/files/pike/nova-compute.conf.Debian b/nova/files/pike/nova-compute.conf.Debian
index 1dad2ae..67bb430 100644
--- a/nova/files/pike/nova-compute.conf.Debian
+++ b/nova/files/pike/nova-compute.conf.Debian
@@ -425,6 +425,10 @@
 # Amount of time, in seconds, to wait for NBD device start up. (integer value)
 # Minimum value: 0
 #timeout_nbd=10
+{%- if compute.timeout_nbd is defined %}
+timeout_nbd = {{ compute.timeout_nbd }}
+{%- endif %}
+
 
 #
 # Location of cached images.
@@ -2958,6 +2962,9 @@
 # exception when timeout expired. (integer value)
 # Deprecated group/name - [DEFAULT]/rpc_poll_timeout
 #rpc_poll_timeout=1
+{%- if compute.message_queue.rpc_poll_timeout is defined %}
+rpc_poll_timeout = {{ compute.message_queue.rpc_poll_timeout }}
+{%- endif %}
 
 # Expiration timeout in seconds of a name service record about existing target (
 # < 0 means no timeout). (integer value)
@@ -3042,29 +3049,47 @@
 
 # Maximum number of (green) threads to work concurrently. (integer value)
 #rpc_thread_pool_size=100
+{%- if compute.message_queue.rpc_thread_pool_size is defined %}
+rpc_thread_pool_size = {{ compute.message_queue.rpc_thread_pool_size }}
+{%- endif %}
 
 # Expiration timeout in seconds of a sent/received message after which it is not
 # tracked anymore by a client/server. (integer value)
 #rpc_message_ttl=300
+{%- if compute.message_queue.rpc_message_ttl is defined %}
+rpc_message_ttl = {{ compute.message_queue.rpc_message_ttl }}
+{%- endif %}
 
 # Wait for message acknowledgements from receivers. This mechanism works only
 # via proxy without PUB/SUB. (boolean value)
 #rpc_use_acks=false
+{%- if compute.message_queue.rpc_use_acks is defined %}
+rpc_use_acks = {{ compute.message_queue.rpc_use_acks }}
+{%- endif %}
 
 # Number of seconds to wait for an ack from a cast/call. After each retry
 # attempt this timeout is multiplied by some specified multiplier. (integer
 # value)
 #rpc_ack_timeout_base=15
+{%- if compute.message_queue.rpc_ack_timeout_base is defined %}
+rpc_ack_timeout_base = {{ compute.message_queue.rpc_ack_timeout_base }}
+{%- endif %}
 
 # Number to multiply base ack timeout by after each retry attempt. (integer
 # value)
 #rpc_ack_timeout_multiplier=2
+{%- if compute.message_queue.rpc_ack_timeout_multiplier is defined %}
+rpc_ack_timeout_multiplier = {{ compute.message_queue.rpc_ack_timeout_multiplier }}
+{%- endif %}
 
 # Default number of message sending attempts in case of any problems occurred:
 # positive value N means at most N retries, 0 means no retries, None or -1 (or
 # any other negative values) mean to retry forever. This option is used only if
 # acknowledgments are enabled. (integer value)
 #rpc_retry_attempts=3
+{%- if compute.message_queue.rpc_retry_attempts is defined %}
+rpc_retry_attempts = {{ compute.message_queue.rpc_retry_attempts }}
+{%- endif %}
 
 # List of publisher hosts SubConsumer can subscribe on. This option has higher
 # priority then the default publishers list taken from the matchmaker. (list
@@ -3074,7 +3099,7 @@
 # Size of executor thread pool. (integer value)
 # Deprecated group/name - [DEFAULT]/rpc_thread_pool_size
 #executor_thread_pool_size=64
-executor_thread_pool_size=70
+executor_thread_pool_size = {{ compute.message_queue.get('executor_thread_pool_size', 70) }}
 
 # Seconds to wait for a response from a call. (integer value)
 #rpc_response_timeout=60
@@ -7600,6 +7625,9 @@
 # (integer value)
 # Minimum value: 1
 #connection_retry_interval_max=30
+{%- if compute.message_queue.connection_retry_interval_max is defined %}
+connection_retry_interval_max = {{ compute.message_queue.connection_retry_interval_max }}
+{%- endif %}
 
 # Time to pause between re-connecting an AMQP 1.0 link that failed due to a
 # recoverable error. (integer value)
@@ -7610,20 +7638,32 @@
 # a recoverable error. (integer value)
 # Minimum value: -1
 #default_reply_retry=0
+{%- if compute.message_queue.default_reply_retry is defined %}
+default_reply_retry = {{ compute.message_queue.default_reply_retry }}
+{%- endif %}
 
 # The deadline for an rpc reply message delivery. (integer value)
 # Minimum value: 5
 #default_reply_timeout=30
+{%- if compute.message_queue.default_reply_timeout is defined %}
+default_reply_timeout = {{ compute.message_queue.default_reply_timeout }}
+{%- endif %}
 
 # The deadline for an rpc cast or call message delivery. Only used when caller
 # does not provide a timeout expiry. (integer value)
 # Minimum value: 5
 #default_send_timeout=30
+{%- if compute.message_queue.default_send_timeout is defined %}
+default_send_timeout = {{ compute.message_queue.default_send_timeout }}
+{%- endif %}
 
 # The deadline for a sent notification message delivery. Only used when caller
 # does not provide a timeout expiry. (integer value)
 # Minimum value: 5
 #default_notify_timeout=30
+{%- if compute.message_queue.default_notify_timeout is defined %}
+default_notify_timeout = {{ compute.message_queue.default_notify_timeout }}
+{%- endif %}
 
 # The duration to schedule a purge of idle sender links. Detach link after
 # expiry. (integer value)
@@ -7898,15 +7938,24 @@
 
 # How frequently to retry connecting with RabbitMQ. (integer value)
 #rabbit_retry_interval=1
+{%- if compute.message_queue.rabbit_retry_interval is defined %}
+rabbit_retry_interval = {{ compute.message_queue.rabbit_retry_interval }}
+{%- endif %}
 
 # How long to backoff for between retries when connecting to RabbitMQ. (integer
 # value)
 # Deprecated group/name - [DEFAULT]/rabbit_retry_backoff
 #rabbit_retry_backoff=2
+{%- if compute.message_queue.rabbit_retry_backoff is defined %}
+rabbit_retry_backoff = {{ compute.message_queue.rabbit_retry_backoff }}
+{%- endif %}
 
 # Maximum interval of RabbitMQ connection retries. Default is 30 seconds.
 # (integer value)
 #rabbit_interval_max=30
+{%- if compute.message_queue.rabbit_interval_max is defined %}
+rabbit_interval_max = {{ compute.message_queue.rabbit_interval_max }}
+{%- endif %}
 
 # DEPRECATED: Maximum number of RabbitMQ connection retries. Default is 0
 # (infinite retry count). (integer value)
@@ -7914,6 +7963,9 @@
 # This option is deprecated for removal.
 # Its value may be silently ignored in the future.
 #rabbit_max_retries=0
+{%- if compute.message_queue.rabbit_max_retries is defined %}
+rabbit_max_retries = {{ compute.message_queue.rabbit_max_retries }}
+{%- endif %}
 
 # Try to use HA queues in RabbitMQ (x-ha-policy: all). If you change this
 # option, you must wipe the RabbitMQ database. In RabbitMQ 3.0, queue mirroring
@@ -7923,38 +7975,65 @@
 # '^(?!amq\.).*' '{"ha-mode": "all"}' " (boolean value)
 # Deprecated group/name - [DEFAULT]/rabbit_ha_queues
 #rabbit_ha_queues=false
+{%- if compute.message_queue.rabbit_ha_queues is defined %}
+rabbit_ha_queues = {{ compute.message_queue.rabbit_ha_queues }}
+{%- endif %}
 
 # Positive integer representing duration in seconds for queue TTL (x-expires).
 # Queues which are unused for the duration of the TTL are automatically deleted.
 # The parameter affects only reply and fanout queues. (integer value)
 # Minimum value: 1
 #rabbit_transient_queues_ttl=1800
+{%- if compute.message_queue.rabbit_transient_queues_ttl is defined %}
+rabbit_transient_queues_ttl = {{ compute.message_queue.rabbit_transient_queues_ttl }}
+{%- endif %}
 
 # Specifies the number of messages to prefetch. Setting to zero allows unlimited
 # messages. (integer value)
 #rabbit_qos_prefetch_count=0
+{%- if compute.message_queue.rabbit_qos_prefetch_count is defined %}
+rabbit_qos_prefetch_count = {{ compute.message_queue.rabbit_qos_prefetch_count }}
+{%- endif %}
 
 # Number of seconds after which the Rabbit broker is considered down if
 # heartbeat's keep-alive fails (0 disable the heartbeat). EXPERIMENTAL (integer
 # value)
 #heartbeat_timeout_threshold=60
+{%- if compute.message_queue.heartbeat_timeout_threshold is defined %}
+heartbeat_timeout_threshold = {{ compute.message_queue.heartbeat_timeout_threshold }}
+{%- endif %}
 
 # How often times during the heartbeat_timeout_threshold we check the heartbeat.
 # (integer value)
 #heartbeat_rate=2
+{%- if compute.message_queue.heartbeat_rate is defined %}
+heartbeat_rate = {{ compute.message_queue.heartbeat_rate }}
+{%- endif %}
 
 # Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake (boolean value)
 # Deprecated group/name - [DEFAULT]/fake_rabbit
 #fake_rabbit=false
+{%- if compute.message_queue.fake_rabbit is defined %}
+fake_rabbit = {{ compute.message_queue.fake_rabbit }}
+{%- endif %}
 
 # Maximum number of channels to allow (integer value)
 #channel_max=<None>
+{%- if compute.message_queue.channel_max is defined %}
+channel_max = {{ compute.message_queue.channel_max }}
+{%- endif %}
 
 # The maximum byte size for an AMQP frame (integer value)
 #frame_max=<None>
+{%- if compute.message_queue.frame_max is defined %}
+frame_max = {{ compute.message_queue.frame_max }}
+{%- endif %}
 
 # How often to send heartbeats for consumer's connections (integer value)
 #heartbeat_interval=3
+{%- if compute.message_queue.heartbeat_interval is defined %}
+heartbeat_interval = {{ compute.message_queue.heartbeat_interval }}
+{%- endif %}
 
 # Enable SSL (boolean value)
 #ssl=<None>
@@ -7964,93 +8043,165 @@
 
 # Set socket timeout in seconds for connection's socket (floating point value)
 #socket_timeout=0.25
+{%- if compute.message_queue.socket_timeout is defined %}
+socket_timeout = {{ compute.message_queue.socket_timeout }}
+{%- endif %}
 
 # Set TCP_USER_TIMEOUT in seconds for connection's socket (floating point value)
 #tcp_user_timeout=0.25
+{%- if compute.message_queue.tcp_user_timeout is defined %}
+tcp_user_timeout = {{ compute.message_queue.tcp_user_timeout }}
+{%- endif %}
 
 # Set delay for reconnection to some host which has connection error (floating
 # point value)
 #host_connection_reconnect_delay=0.25
+{%- if compute.message_queue.host_connection_reconnect_delay is defined %}
+host_connection_reconnect_delay = {{ compute.message_queue.host_connection_reconnect_delay }}
+{%- endif %}
 
 # Connection factory implementation (string value)
 # Allowed values: new, single, read_write
 #connection_factory=single
+{%- if compute.message_queue.connection_factory is defined %}
+connection_factory = {{ compute.message_queue.connection_factory }}
+{%- endif %}
 
 # Maximum number of connections to keep queued. (integer value)
 #pool_max_size=30
+{%- if compute.message_queue.pool_max_size is defined %}
+pool_max_size = {{ compute.message_queue.pool_max_size }}
+{%- endif %}
 
 # Maximum number of connections to create above `pool_max_size`. (integer value)
 #pool_max_overflow=0
+{%- if compute.message_queue.pool_max_overflow is defined %}
+pool_max_overflow = {{ compute.message_queue.pool_max_overflow }}
+{%- endif %}
 
 # Default number of seconds to wait for a connections to available (integer
 # value)
 #pool_timeout=30
+{%- if compute.message_queue.pool_timeout is defined %}
+pool_timeout = {{ compute.message_queue.pool_timeout }}
+{%- endif %}
 
 # Lifetime of a connection (since creation) in seconds or None for no recycling.
 # Expired connections are closed on acquire. (integer value)
 #pool_recycle=600
+{%- if compute.message_queue.pool_recycle is defined %}
+pool_recycle = {{ compute.message_queue.pool_recycle }}
+{%- endif %}
 
 # Threshold at which inactive (since release) connections are considered stale
 # in seconds or None for no staleness. Stale connections are closed on acquire.
 # (integer value)
 #pool_stale=60
+{%- if compute.message_queue.pool_stale is defined %}
+pool_stale = {{ compute.message_queue.pool_stale }}
+{%- endif %}
 
 # Default serialization mechanism for serializing/deserializing
 # outgoing/incoming messages (string value)
 # Allowed values: json, msgpack
 #default_serializer_type=json
+{%- if compute.message_queue.default_serializer_type is defined %}
+default_serializer_type = {{ compute.message_queue.default_serializer_type }}
+{%- endif %}
 
 # Persist notification messages. (boolean value)
 #notification_persistence=false
+{%- if compute.message_queue.notification_persistence is defined %}
+notification_persistence = {{ compute.message_queue.notification_persistence }}
+{%- endif %}
 
 # Exchange name for sending notifications (string value)
 #default_notification_exchange=${control_exchange}_notification
+{%- if compute.message_queue.default_notification_exchange is defined %}
+default_notification_exchange = {{ compute.message_queue.default_notification_exchange }}
+{%- endif %}
 
 # Max number of not acknowledged message which RabbitMQ can send to notification
 # listener. (integer value)
 #notification_listener_prefetch_count=100
+{%- if compute.message_queue.notification_listener_prefetch_count is defined %}
+notification_listener_prefetch_count = {{ compute.message_queue.notification_listener_prefetch_count }}
+{%- endif %}
 
 # Reconnecting retry count in case of connectivity problem during sending
 # notification, -1 means infinite retry. (integer value)
 #default_notification_retry_attempts=-1
+{%- if compute.message_queue.default_notification_retry_attempts is defined %}
+default_notification_retry_attempts = {{ compute.message_queue.default_notification_retry_attempts }}
+{%- endif %}
 
 # Reconnecting retry delay in case of connectivity problem during sending
 # notification message (floating point value)
 #notification_retry_delay=0.25
+{%- if compute.message_queue.notification_retry_delay is defined %}
+notification_retry_delay = {{ compute.message_queue.notification_retry_delay }}
+{%- endif %}
 
 # Time to live for rpc queues without consumers in seconds. (integer value)
 #rpc_queue_expiration=60
+{%- if compute.message_queue.rpc_queue_expiration is defined %}
+rpc_queue_expiration = {{ compute.message_queue.rpc_queue_expiration }}
+{%- endif %}
 
 # Exchange name for sending RPC messages (string value)
 #default_rpc_exchange=${control_exchange}_rpc
+{%- if compute.message_queue.default_rpc_exchange is defined %}
+default_rpc_exchange = {{ compute.message_queue.default_rpc_exchange }}
+{%- endif %}
 
 # Exchange name for receiving RPC replies (string value)
 #rpc_reply_exchange=${control_exchange}_rpc_reply
+{%- if compute.message_queue.rpc_reply_exchange is defined %}
+rpc_reply_exchange = {{ compute.message_queue.rpc_reply_exchange }}
+{%- endif %}
 
 # Max number of not acknowledged message which RabbitMQ can send to rpc
 # listener. (integer value)
 #rpc_listener_prefetch_count=100
+{%- if compute.message_queue.rpc_listener_prefetch_count is defined %}
+rpc_listener_prefetch_count = {{ compute.message_queue.rpc_listener_prefetch_count }}
+{%- endif %}
 
 # Max number of not acknowledged message which RabbitMQ can send to rpc reply
 # listener. (integer value)
 #rpc_reply_listener_prefetch_count=100
+{%- if compute.message_queue.rpc_reply_listener_prefetch_count is defined %}
+rpc_reply_listener_prefetch_count = {{ compute.message_queue.rpc_reply_listener_prefetch_count }}
+{%- endif %}
 
 # Reconnecting retry count in case of connectivity problem during sending reply.
 # -1 means infinite retry during rpc_timeout (integer value)
 #rpc_reply_retry_attempts=-1
+{%- if compute.message_queue.rpc_reply_retry_attempts is defined %}
+rpc_reply_retry_attempts = {{ compute.message_queue.rpc_reply_retry_attempts }}
+{%- endif %}
 
 # Reconnecting retry delay in case of connectivity problem during sending reply.
 # (floating point value)
 #rpc_reply_retry_delay=0.25
+{%- if compute.message_queue.rpc_reply_retry_delay is defined %}
+rpc_reply_retry_delay = {{ compute.message_queue.rpc_reply_retry_delay }}
+{%- endif %}
 
 # Reconnecting retry count in case of connectivity problem during sending RPC
 # message, -1 means infinite retry. If actual retry attempts in not 0 the rpc
 # request could be processed more than one time (integer value)
 #default_rpc_retry_attempts=-1
+{%- if compute.message_queue.default_rpc_retry_attempts is defined %}
+default_rpc_retry_attempts = {{ compute.message_queue.default_rpc_retry_attempts }}
+{%- endif %}
 
 # Reconnecting retry delay in case of connectivity problem during sending RPC
 # message (floating point value)
 #rpc_retry_delay=0.25
+{%- if compute.message_queue.rpc_retry_delay is defined %}
+rpc_retry_delay = {{ compute.message_queue.rpc_retry_delay }}
+{%- endif %}
 
 {# rabbitmq ssl configuration #}
 {%- if compute.message_queue.get('ssl',{}).get('enabled', False) %}
diff --git a/nova/files/pike/nova-controller.conf.Debian b/nova/files/pike/nova-controller.conf.Debian
index 35af0ee..a61c236 100644
--- a/nova/files/pike/nova-controller.conf.Debian
+++ b/nova/files/pike/nova-controller.conf.Debian
@@ -423,6 +423,9 @@
 # Amount of time, in seconds, to wait for NBD device start up. (integer value)
 # Minimum value: 0
 #timeout_nbd=10
+{%- if controller.timeout_nbd is defined %}
+timeout_nbd = {{ controller.timeout_nbd }}
+{%- endif %}
 
 #
 # Location of cached images.
@@ -803,6 +806,10 @@
 # * Any value <=0 will disable the sync. This is not recommended.
 #  (integer value)
 #heal_instance_info_cache_interval=60
+{%- if controller.heal_instance_info_cache_interval is defined %}
+heal_instance_info_cache_interval = {{ controller.heal_instance_info_cache_interval }}
+{%- endif %}
+
 
 #
 # Interval for reclaiming deleted instances.
@@ -2898,12 +2905,21 @@
 # Size of RPC connection pool. (integer value)
 # Deprecated group/name - [DEFAULT]/rpc_conn_pool_size
 #rpc_conn_pool_size=30
+{%- if controller.message_queue.rpc_conn_pool_size is defined %}
+rpc_conn_pool_size = {{ controller.message_queue.rpc_conn_pool_size }}
+{%- endif %}
 
 # The pool size limit for connections expiration policy (integer value)
 #conn_pool_min_size=2
+{%- if controller.message_queue.conn_pool_min_size is defined %}
+conn_pool_min_size = {{ controller.message_queue.conn_pool_min_size }}
+{%- endif %}
 
 # The time-to-live in sec of idle connections in the pool (integer value)
 #conn_pool_ttl=1200
+{%- if controller.message_queue.conn_pool_ttl is defined %}
+conn_pool_ttl = {{ controller.message_queue.conn_pool_ttl }}
+{%- endif %}
 
 # ZeroMQ bind address. Should be a wildcard (*), an ethernet interface, or IP.
 # The "host" option should point or resolve to this address. (string value)
@@ -2946,6 +2962,10 @@
 # exception when timeout expired. (integer value)
 # Deprecated group/name - [DEFAULT]/rpc_poll_timeout
 #rpc_poll_timeout=1
+{%- if controller.message_queue.rpc_poll_timeout is defined %}
+rpc_poll_timeout = {{ controller.message_queue.rpc_poll_timeout }}
+{%- endif %}
+
 
 # Expiration timeout in seconds of a name service record about existing target (
 # < 0 means no timeout). (integer value)
@@ -3030,29 +3050,51 @@
 
 # Maximum number of (green) threads to work concurrently. (integer value)
 #rpc_thread_pool_size=100
+{%- if controller.message_queue.rpc_thread_pool_size is defined %}
+rpc_thread_pool_size = {{ controller.message_queue.rpc_thread_pool_size }}
+{%- endif %}
 
 # Expiration timeout in seconds of a sent/received message after which it is not
 # tracked anymore by a client/server. (integer value)
 #rpc_message_ttl=300
+{%- if controller.message_queue.rpc_message_ttl is defined %}
+rpc_message_ttl = {{ controller.message_queue.rpc_message_ttl }}
+{%- endif %}
 
 # Wait for message acknowledgements from receivers. This mechanism works only
 # via proxy without PUB/SUB. (boolean value)
 #rpc_use_acks=false
+{%- if controller.message_queue.rpc_use_acks is defined %}
+rpc_use_acks = {{ controller.message_queue.rpc_use_acks }}
+{%- endif %}
+
 
 # Number of seconds to wait for an ack from a cast/call. After each retry
 # attempt this timeout is multiplied by some specified multiplier. (integer
 # value)
 #rpc_ack_timeout_base=15
+{%- if controller.message_queue.rpc_ack_timeout_base is defined %}
+rpc_ack_timeout_base = {{ controller.message_queue.rpc_ack_timeout_base }}
+{%- endif %}
+
 
 # Number to multiply base ack timeout by after each retry attempt. (integer
 # value)
 #rpc_ack_timeout_multiplier=2
+{%- if controller.message_queue.rpc_ack_timeout_multiplier is defined %}
+rpc_ack_timeout_multiplier = {{ controller.message_queue.rpc_ack_timeout_multiplier }}
+{%- endif %}
+
 
 # Default number of message sending attempts in case of any problems occurred:
 # positive value N means at most N retries, 0 means no retries, None or -1 (or
 # any other negative values) mean to retry forever. This option is used only if
 # acknowledgments are enabled. (integer value)
 #rpc_retry_attempts=3
+{%- if controller.message_queue.rpc_retry_attempts is defined %}
+rpc_retry_attempts = {{ controller.message_queue.rpc_retry_attempts }}
+{%- endif %}
+
 
 # List of publisher hosts SubConsumer can subscribe on. This option has higher
 # priority then the default publishers list taken from the matchmaker. (list
@@ -3062,6 +3104,10 @@
 # Size of executor thread pool. (integer value)
 # Deprecated group/name - [DEFAULT]/rpc_thread_pool_size
 #executor_thread_pool_size=64
+{%- if controller.message_queue.executor_thread_pool_size is defined %}
+executor_thread_pool_size = {{ controller.message_queue.executor_thread_pool_size }}
+{%- endif %}
+
 
 # Seconds to wait for a response from a call. (integer value)
 #rpc_response_timeout=60
@@ -4272,7 +4318,7 @@
 # number of CPUs available.
 #  (integer value)
 #workers=<None>
-workers = {{ controller.workers }}
+workers = {{ controller.get('conductor', {}).get('workers', controller.workers) }}
 
 [console]
 #
@@ -7544,45 +7590,73 @@
 # Seconds to pause before attempting to re-connect. (integer value)
 # Minimum value: 1
 #connection_retry_interval=1
+{%- if controller.message_queue.connection_retry_interval is defined %}
+connection_retry_interval = {{ controller.message_queue.connection_retry_interval }}
+{%- endif %}
+
 
 # Increase the connection_retry_interval by this many seconds after each
 # unsuccessful failover attempt. (integer value)
 # Minimum value: 0
 #connection_retry_backoff=2
+{%- if controller.message_queue.connection_retry_backoff is defined %}
+connection_retry_backoff = {{ controller.message_queue.connection_retry_backoff }}
+{%- endif %}
 
 # Maximum limit for connection_retry_interval + connection_retry_backoff
 # (integer value)
 # Minimum value: 1
 #connection_retry_interval_max=30
+{%- if controller.message_queue.connection_retry_interval_max is defined %}
+connection_retry_interval_max = {{ controller.message_queue.connection_retry_interval_max }}
+{%- endif %}
 
 # Time to pause between re-connecting an AMQP 1.0 link that failed due to a
 # recoverable error. (integer value)
 # Minimum value: 1
 #link_retry_delay=10
+{%- if controller.message_queue.link_retry_delay is defined %}
+link_retry_delay = {{ controller.message_queue.link_retry_delay }}
+{%- endif %}
 
 # The maximum number of attempts to re-send a reply message which failed due to
 # a recoverable error. (integer value)
 # Minimum value: -1
 #default_reply_retry=0
+{%- if controller.message_queue.default_reply_retry is defined %}
+default_reply_retry = {{ controller.message_queue.default_reply_retry }}
+{%- endif %}
 
 # The deadline for an rpc reply message delivery. (integer value)
 # Minimum value: 5
 #default_reply_timeout=30
+{%- if controller.message_queue.default_reply_timeout is defined %}
+default_reply_timeout = {{ controller.message_queue.default_reply_timeout }}
+{%- endif %}
 
 # The deadline for an rpc cast or call message delivery. Only used when caller
 # does not provide a timeout expiry. (integer value)
 # Minimum value: 5
 #default_send_timeout=30
+{%- if controller.message_queue.default_send_timeout is defined %}
+default_send_timeout = {{ controller.message_queue.default_send_timeout }}
+{%- endif %}
 
 # The deadline for a sent notification message delivery. Only used when caller
 # does not provide a timeout expiry. (integer value)
 # Minimum value: 5
 #default_notify_timeout=30
+{%- if controller.message_queue.default_notify_timeout is defined %}
+default_notify_timeout = {{ controller.message_queue.default_notify_timeout }}
+{%- endif %}
 
 # The duration to schedule a purge of idle sender links. Detach link after
 # expiry. (integer value)
 # Minimum value: 1
 #default_sender_link_timeout=600
+{%- if controller.message_queue.default_sender_link_timeout is defined %}
+default_sender_link_timeout = {{ controller.message_queue.default_sender_link_timeout }}
+{%- endif %}
 
 # Indicates the addressing mode used by the driver.
 # Permitted values:
@@ -7748,9 +7822,6 @@
 #
 # From oslo.messaging
 #
-rabbit_retry_interval = 1
-rabbit_retry_backoff = 2
-rpc_conn_pool_size = 300
 # Use durable queues in AMQP. (boolean value)
 # Deprecated group/name - [DEFAULT]/amqp_durable_queues
 # Deprecated group/name - [DEFAULT]/rabbit_durable_queues
@@ -7854,15 +7925,27 @@
 
 # How frequently to retry connecting with RabbitMQ. (integer value)
 #rabbit_retry_interval=1
+{%- if controller.message_queue.rabbit_retry_interval is defined %}
+rabbit_retry_interval = {{ controller.message_queue.rabbit_retry_interval }}
+{%- endif %}
+
 
 # How long to backoff for between retries when connecting to RabbitMQ. (integer
 # value)
 # Deprecated group/name - [DEFAULT]/rabbit_retry_backoff
 #rabbit_retry_backoff=2
+{%- if controller.message_queue.rabbit_retry_backoff is defined %}
+rabbit_retry_backoff = {{ controller.message_queue.rabbit_retry_backoff }}
+{%- endif %}
+
 
 # Maximum interval of RabbitMQ connection retries. Default is 30 seconds.
 # (integer value)
 #rabbit_interval_max=30
+{%- if controller.message_queue.rabbit_interval_max is defined %}
+rabbit_interval_max = {{ controller.message_queue.rabbit_interval_max }}
+{%- endif %}
+
 
 # DEPRECATED: Maximum number of RabbitMQ connection retries. Default is 0
 # (infinite retry count). (integer value)
@@ -7870,6 +7953,9 @@
 # This option is deprecated for removal.
 # Its value may be silently ignored in the future.
 #rabbit_max_retries=0
+{%- if controller.message_queue.rabbit_max_retries is defined %}
+rabbit_max_retries = {{ controller.message_queue.rabbit_max_retries }}
+{%- endif %}
 
 # Try to use HA queues in RabbitMQ (x-ha-policy: all). If you change this
 # option, you must wipe the RabbitMQ database. In RabbitMQ 3.0, queue mirroring
@@ -7885,32 +7971,56 @@
 # The parameter affects only reply and fanout queues. (integer value)
 # Minimum value: 1
 #rabbit_transient_queues_ttl=1800
+{%- if controller.message_queue.rabbit_transient_queues_ttl is defined %}
+rabbit_transient_queues_ttl = {{ controller.message_queue.rabbit_transient_queues_ttl }}
+{%- endif %}
 
 # Specifies the number of messages to prefetch. Setting to zero allows unlimited
 # messages. (integer value)
 #rabbit_qos_prefetch_count=0
+{%- if controller.message_queue.rabbit_qos_prefetch_count is defined %}
+rabbit_qos_prefetch_count = {{ controller.message_queue.rabbit_qos_prefetch_count }}
+{%- endif %}
 
 # Number of seconds after which the Rabbit broker is considered down if
 # heartbeat's keep-alive fails (0 disable the heartbeat). EXPERIMENTAL (integer
 # value)
 #heartbeat_timeout_threshold=60
+{%- if controller.message_queue.heartbeat_timeout_threshold is defined %}
+heartbeat_timeout_threshold = {{ controller.message_queue.heartbeat_timeout_threshold }}
+{%- endif %}
 
 # How often times during the heartbeat_timeout_threshold we check the heartbeat.
 # (integer value)
 #heartbeat_rate=2
+{%- if controller.message_queue.heartbeat_rate is defined %}
+heartbeat_rate = {{ controller.message_queue.heartbeat_rate }}
+{%- endif %}
 
 # Deprecated, use rpc_backend=kombu+memory or rpc_backend=fake (boolean value)
 # Deprecated group/name - [DEFAULT]/fake_rabbit
 #fake_rabbit=false
+{%- if controller.message_queue.fake_rabbit is defined %}
+fake_rabbit = {{ controller.message_queue.fake_rabbit }}
+{%- endif %}
 
 # Maximum number of channels to allow (integer value)
 #channel_max=<None>
+{%- if controller.message_queue.channel_max is defined %}
+channel_max = {{ controller.message_queue.channel_max }}
+{%- endif %}
 
 # The maximum byte size for an AMQP frame (integer value)
 #frame_max=<None>
+{%- if controller.message_queue.frame_max is defined %}
+frame_max = {{ controller.message_queue.frame_max }}
+{%- endif %}
 
 # How often to send heartbeats for consumer's connections (integer value)
 #heartbeat_interval=3
+{%- if controller.message_queue.heartbeat_interval is defined %}
+heartbeat_interval = {{ controller.message_queue.heartbeat_interval }}
+{%- endif %}
 
 # Enable SSL (boolean value)
 #ssl=<None>
@@ -7920,13 +8030,22 @@
 
 # Set socket timeout in seconds for connection's socket (floating point value)
 #socket_timeout=0.25
+{%- if controller.message_queue.socket_timeout is defined %}
+socket_timeout = {{ controller.message_queue.socket_timeout }}
+{%- endif %}
 
 # Set TCP_USER_TIMEOUT in seconds for connection's socket (floating point value)
 #tcp_user_timeout=0.25
+{%- if controller.message_queue.tcp_user_timeout is defined %}
+tcp_user_timeout = {{ controller.message_queue.tcp_user_timeout }}
+{%- endif %}
 
 # Set delay for reconnection to some host which has connection error (floating
 # point value)
 #host_connection_reconnect_delay=0.25
+{%- if controller.message_queue.host_connection_reconnect_delay is defined %}
+host_connection_reconnect_delay = {{ controller.message_queue.host_connection_reconnect_delay }}
+{%- endif %}
 
 # Connection factory implementation (string value)
 # Allowed values: new, single, read_write
@@ -7934,79 +8053,139 @@
 
 # Maximum number of connections to keep queued. (integer value)
 #pool_max_size=30
+{%- if controller.message_queue.pool_max_size is defined %}
+pool_max_size = {{ controller.message_queue.pool_max_size }}
+{%- endif %}
 
 # Maximum number of connections to create above `pool_max_size`. (integer value)
 #pool_max_overflow=0
+{%- if controller.message_queue.pool_max_overflow is defined %}
+pool_max_overflow = {{ controller.message_queue.pool_max_overflow }}
+{%- endif %}
 
 # Default number of seconds to wait for a connections to available (integer
 # value)
 #pool_timeout=30
+{%- if controller.message_queue.pool_timeout is defined %}
+pool_timeout = {{ controller.message_queue.pool_timeout }}
+{%- endif %}
 
 # Lifetime of a connection (since creation) in seconds or None for no recycling.
 # Expired connections are closed on acquire. (integer value)
 #pool_recycle=600
+{%- if controller.message_queue.pool_recycle is defined %}
+pool_recycle = {{ controller.message_queue.pool_recycle }}
+{%- endif %}
 
 # Threshold at which inactive (since release) connections are considered stale
 # in seconds or None for no staleness. Stale connections are closed on acquire.
 # (integer value)
 #pool_stale=60
+{%- if controller.message_queue.pool_stale is defined %}
+pool_stale = {{ controller.message_queue.pool_stale }}
+{%- endif %}
 
 # Default serialization mechanism for serializing/deserializing
 # outgoing/incoming messages (string value)
 # Allowed values: json, msgpack
 #default_serializer_type=json
+{%- if controller.message_queue.default_serializer_type is defined %}
+default_serializer_type = {{ controller.message_queue.default_serializer_type }}
+{%- endif %}
 
 # Persist notification messages. (boolean value)
 #notification_persistence=false
+{%- if controller.message_queue.notification_persistence is defined %}
+notification_persistence = {{ controller.message_queue.notification_persistence }}
+{%- endif %}
 
 # Exchange name for sending notifications (string value)
 #default_notification_exchange=${control_exchange}_notification
+{%- if controller.message_queue.default_notification_exchange is defined %}
+default_notification_exchange = {{ controller.message_queue.default_notification_exchange }}
+{%- endif %}
 
 # Max number of not acknowledged message which RabbitMQ can send to notification
 # listener. (integer value)
 #notification_listener_prefetch_count=100
+{%- if controller.message_queue.notification_listener_prefetch_count is defined %}
+notification_listener_prefetch_count = {{ controller.message_queue.notification_listener_prefetch_count }}
+{%- endif %}
 
 # Reconnecting retry count in case of connectivity problem during sending
 # notification, -1 means infinite retry. (integer value)
 #default_notification_retry_attempts=-1
+{%- if controller.message_queue.default_notification_retry_attempts is defined %}
+default_notification_retry_attempts = {{ controller.message_queue.default_notification_retry_attempts }}
+{%- endif %}
 
 # Reconnecting retry delay in case of connectivity problem during sending
 # notification message (floating point value)
 #notification_retry_delay=0.25
+{%- if controller.message_queue.notification_retry_delay is defined %}
+notification_retry_delay = {{ controller.message_queue.notification_retry_delay }}
+{%- endif %}
 
 # Time to live for rpc queues without consumers in seconds. (integer value)
 #rpc_queue_expiration=60
+{%- if controller.message_queue.rpc_queue_expiration is defined %}
+rpc_queue_expiration = {{ controller.message_queue.rpc_queue_expiration }}
+{%- endif %}
 
 # Exchange name for sending RPC messages (string value)
 #default_rpc_exchange=${control_exchange}_rpc
+{%- if controller.message_queue.default_rpc_exchange is defined %}
+default_rpc_exchange = {{ controller.message_queue.default_rpc_exchange }}
+{%- endif %}
 
 # Exchange name for receiving RPC replies (string value)
 #rpc_reply_exchange=${control_exchange}_rpc_reply
+{%- if controller.message_queue.rpc_reply_exchange is defined %}
+rpc_reply_exchange = {{ controller.message_queue.rpc_reply_exchange }}
+{%- endif %}
 
 # Max number of not acknowledged message which RabbitMQ can send to rpc
 # listener. (integer value)
 #rpc_listener_prefetch_count=100
+{%- if controller.message_queue.rpc_listener_prefetch_count is defined %}
+rpc_listener_prefetch_count = {{ controller.message_queue.rpc_listener_prefetch_count }}
+{%- endif %}
 
 # Max number of not acknowledged message which RabbitMQ can send to rpc reply
 # listener. (integer value)
 #rpc_reply_listener_prefetch_count=100
+{%- if controller.message_queue.rpc_reply_listener_prefetch_count is defined %}
+rpc_reply_listener_prefetch_count = {{ controller.message_queue.rpc_reply_listener_prefetch_count }}
+{%- endif %}
 
 # Reconnecting retry count in case of connectivity problem during sending reply.
 # -1 means infinite retry during rpc_timeout (integer value)
 #rpc_reply_retry_attempts=-1
+{%- if controller.message_queue.rpc_reply_retry_attempts is defined %}
+rpc_reply_retry_attempts = {{ controller.message_queue.rpc_reply_retry_attempts }}
+{%- endif %}
 
 # Reconnecting retry delay in case of connectivity problem during sending reply.
 # (floating point value)
 #rpc_reply_retry_delay=0.25
+{%- if controller.message_queue.rpc_reply_retry_delay is defined %}
+rpc_reply_retry_delay = {{ controller.message_queue.rpc_reply_retry_delay }}
+{%- endif %}
 
 # Reconnecting retry count in case of connectivity problem during sending RPC
 # message, -1 means infinite retry. If actual retry attempts in not 0 the rpc
 # request could be processed more than one time (integer value)
 #default_rpc_retry_attempts=-1
+{%- if controller.message_queue.default_rpc_retry_attempts is defined %}
+default_rpc_retry_attempts = {{ controller.message_queue.default_rpc_retry_attempts }}
+{%- endif %}
 
 # Reconnecting retry delay in case of connectivity problem during sending RPC
 # message (floating point value)
 #rpc_retry_delay=0.25
+{%- if controller.message_queue.rpc_retry_delay is defined %}
+rpc_retry_delay = {{ controller.message_queue.rpc_retry_delay }}
+{%- endif %}
 
 {# rabbitmq ssl configuration #}
 {%- if controller.message_queue.get('ssl',{}).get('enabled', False) %}
@@ -8077,6 +8256,10 @@
 # exception when timeout expired. (integer value)
 # Deprecated group/name - [DEFAULT]/rpc_poll_timeout
 #rpc_poll_timeout=1
+{%- if controller.message_queue.rpc_poll_timeout is defined %}
+rpc_poll_timeout = {{ controller.message_queue.rpc_poll_timeout }}
+{%- endif %}
+
 
 # Expiration timeout in seconds of a name service record about existing target (
 # < 0 means no timeout). (integer value)
