diff --git a/README.rst b/README.rst
index 7024ceca06..6cda648927 100644
--- a/README.rst
+++ b/README.rst
@@ -141,7 +141,9 @@ Kolla provides images to deploy the following infrastructure components:
- `MongoDB `__ as a database back end for Ceilometer
and Gnocchi.
- `Open vSwitch `__ and Linuxbridge back ends for Neutron.
-- `RabbitMQ `__ as a messaging back end for
+- `Qdrouterd `__ as a
+ direct messaging back end for communication between services.
+- `RabbitMQ `__ as a broker messaging back end for
communication between services.
- `Telegraf `__ as a plugin-driven server
agent for collecting & reporting metrics.
diff --git a/docker/base/Dockerfile.j2 b/docker/base/Dockerfile.j2
index 2e575df82e..8a6d044701 100644
--- a/docker/base/Dockerfile.j2
+++ b/docker/base/Dockerfile.j2
@@ -297,6 +297,7 @@ COPY apt_preferences.{{ base_distro }} /etc/apt/preferences
{# 46095ACC8548582C1A2699A9D27D666CD88E42B4 -- Elasticsearch (Elasticsearch Signing Key) #}
{# 4D1BB29D63D98E422B2113B19334A25F8507EFA5 -- Percona MySQL Development Team (Packaging key) #}
{# 58118E89F3A912897C070ADBF76221572C52609D -- Docker Release Tool (releasedocker) #}
+ {# 4D8EB5FDA37AB55F41A135203BF88A0C6A770882 -- Apache Qpid PPA Signing Key #}
{# 901F9177AB97ACBE -- Treasure Data, Inc (Treasure Agent Official Signing key) #}
{% set base_apt_keys = [
'05CE15085FC09D18E99EFB22684A14CF2582E0C5',
@@ -306,6 +307,7 @@ COPY apt_preferences.{{ base_distro }} /etc/apt/preferences
'46095ACC8548582C1A2699A9D27D666CD88E42B4',
'4D1BB29D63D98E422B2113B19334A25F8507EFA5',
'58118E89F3A912897C070ADBF76221572C52609D',
+ '4D8EB5FDA37AB55F41A135203BF88A0C6A770882',
'901F9177AB97ACBE',
] %}
{% elif base_distro == 'debian' %}
diff --git a/docker/base/sources.list.ubuntu b/docker/base/sources.list.ubuntu
index 9ec6da2e56..d81692fdb4 100644
--- a/docker/base/sources.list.ubuntu
+++ b/docker/base/sources.list.ubuntu
@@ -35,3 +35,6 @@ deb https://packagecloud.io/grafana/stable/debian/ jessie main
# Fluentd repo
deb http://packages.treasuredata.com/2/ubuntu/xenial/ xenial contrib
+
+# Qdrouterd repo
+deb http://ppa.launchpad.net/qpid/released/ubuntu/ xenial main
diff --git a/docker/qdrouterd/Dockerfile.j2 b/docker/qdrouterd/Dockerfile.j2
new file mode 100644
index 0000000000..e8ce9339a3
--- /dev/null
+++ b/docker/qdrouterd/Dockerfile.j2
@@ -0,0 +1,41 @@
+FROM {{ namespace }}/{{ image_prefix }}base:{{ tag }}
+LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"
+
+{% block qdrouterd_header %}{% endblock %}
+
+{% import "macros.j2" as macros with context %}
+
+{{ macros.configure_user(name='qdrouterd') }}
+
+{% block qdrouterd_install %}
+{% if base_distro in ['centos', 'oraclelinux', 'rhel'] %}
+ {% set qdrouterd_packages = [
+ 'cyrus-sasl-lib',
+ 'cyrus-sasl-plain',
+ 'qpid-dispatch-router'
+ ] %}
+
+{{ macros.install_packages(qdrouterd_packages | customizable("packages")) }}
+
+{% elif base_distro in ['debian', 'ubuntu'] %}
+ {% set qdrouterd_packages = [
+ 'sasl2-bin',
+ 'libpython2.7',
+ 'qdrouterd',
+ ] %}
+
+{{ macros.install_packages(qdrouterd_packages | customizable("packages")) }}
+
+{% endif %}
+{% endblock %}
+
+COPY extend_start.sh /usr/local/bin/kolla_extend_start
+COPY qdrouterd_sudoers /etc/sudoers.d/kolla_qdrouterd_sudoers
+RUN chmod 755 /usr/local/bin/kolla_extend_start \
+ && chmod 750 /etc/sudoers.d \
+ && chmod 440 /etc/sudoers.d/kolla_qdrouterd_sudoers
+
+{% block qdrouterd_footer %}{% endblock %}
+{% block footer %}{% endblock %}
+
+USER qdrouterd
diff --git a/docker/qdrouterd/extend_start.sh b/docker/qdrouterd/extend_start.sh
new file mode 100644
index 0000000000..829b0758b8
--- /dev/null
+++ b/docker/qdrouterd/extend_start.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+# Create log directory, with appropriate permissions
+QDROUTERD_LOG_DIR="/var/log/kolla/qdrouterd"
+if [[ ! -d "${QDROUTERD_LOG_DIR}" ]]; then
+ mkdir -p ${QDROUTERD_LOG_DIR}
+fi
+if [[ $(stat -c %a ${QDROUTERD_LOG_DIR}) != "755" ]]; then
+ chmod 755 ${QDROUTERD_LOG_DIR}
+fi
diff --git a/docker/qdrouterd/qdrouterd_sudoers b/docker/qdrouterd/qdrouterd_sudoers
new file mode 100644
index 0000000000..dbcd341a4d
--- /dev/null
+++ b/docker/qdrouterd/qdrouterd_sudoers
@@ -0,0 +1 @@
+%kolla ALL=(root) NOPASSWD: /usr/bin/chown -R qdrouterd\: /var/lib/qdrouterd, /bin/chown -R qdrouterd\: /var/lib/qdrouterd
diff --git a/kolla/common/config.py b/kolla/common/config.py
index bb838314be..90fbc2777d 100755
--- a/kolla/common/config.py
+++ b/kolla/common/config.py
@@ -70,6 +70,7 @@ _PROFILE_OPTS = [
'mongodb',
'opendaylight',
'openvswitch',
+ 'qdrouterd',
'rabbitmq',
'redis',
'tgtd',
@@ -848,6 +849,10 @@ USERS = {
'dragonflow-user': {
'uid': 42464,
'gid': 42464,
+ },
+ 'qdrouterd-user': {
+ 'uid': 42465,
+ 'gid': 42465,
}
}
diff --git a/releasenotes/notes/add-qdrouterd-4676f6cad921a3f8.yaml b/releasenotes/notes/add-qdrouterd-4676f6cad921a3f8.yaml
new file mode 100644
index 0000000000..8317a805a2
--- /dev/null
+++ b/releasenotes/notes/add-qdrouterd-4676f6cad921a3f8.yaml
@@ -0,0 +1,6 @@
+---
+features:
+ - Introduce qdrouterd (dispatch router) infrastructure component for
+ oslo.messaging backend. The AMQP 1.0 oslo.messaging driver supports
+ integration with this high performance AMQP 1.0 message router for
+ RPC messaging backend.