Qpid dispatch router composable role
authorJohn Eckersberg <jeckersb@redhat.com>
Thu, 3 Nov 2016 17:54:18 +0000 (13:54 -0400)
committerMichele Baldessari <michele@acksyn.org>
Wed, 29 Mar 2017 08:19:41 +0000 (10:19 +0200)
Note: since it replaces rabbitmq, in order to aim for the smallest
amount of changes the service_name is called 'rabbitmq' so all the
other services do not need additional logic to use qdr.

Depends-On: Idecbbabdd4f06a37ff0cfb34dc23732b1176a608
Change-Id: I27f01d2570fa32de91ffe1991dc873cdf2293dbc

environments/services/qdr.yaml [new file with mode: 0644]
network/service_net_map.j2.yaml
overcloud-resource-registry-puppet.j2.yaml
puppet/services/qdr.yaml [new file with mode: 0644]
releasenotes/notes/add-qdr-99a27dffef42c13e.yaml [new file with mode: 0644]
tools/yaml-validate.py

diff --git a/environments/services/qdr.yaml b/environments/services/qdr.yaml
new file mode 100644 (file)
index 0000000..e4ad87b
--- /dev/null
@@ -0,0 +1,2 @@
+resource_registry:
+  OS::TripleO::Services::Qdr: ../../puppet/services/qdr.yaml
index a1042eb..7fb9420 100644 (file)
@@ -67,6 +67,7 @@ parameters:
       HorizonNetwork: internal_api
       MemcachedNetwork: internal_api
       RabbitmqNetwork: internal_api
+      QdrNetwork: internal_api
       RedisNetwork: internal_api
       MysqlNetwork: internal_api
       CephClusterNetwork: storage_mgmt
index b294d7c..8eabd97 100644 (file)
@@ -168,6 +168,7 @@ resource_registry:
   OS::TripleO::Services::PacemakerRemote: OS::Heat::None
   OS::TripleO::Services::NeutronSriovAgent: OS::Heat::None
   OS::TripleO::Services::RabbitMQ: puppet/services/rabbitmq.yaml
+  OS::TripleO::Services::Qdr: OS::Heat::None
   OS::TripleO::Services::HAproxy: puppet/services/haproxy.yaml
   OS::TripleO::Services::HAProxyPublicTLS: OS::Heat::None
   OS::TripleO::Services::HAProxyInternalTLS: OS::Heat::None
diff --git a/puppet/services/qdr.yaml b/puppet/services/qdr.yaml
new file mode 100644 (file)
index 0000000..f8746ce
--- /dev/null
@@ -0,0 +1,60 @@
+heat_template_version: ocata
+
+description: >
+  Qpid dispatch router service configured with Puppet
+
+parameters:
+  ServiceNetMap:
+    default: {}
+    description: Mapping of service_name -> network name. Typically set
+                 via parameter_defaults in the resource registry.  This
+                 mapping overrides those in ServiceNetMapDefaults.
+    type: json
+  DefaultPasswords:
+    default: {}
+    type: json
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  RabbitUserName:
+    default: guest
+    description: The username for Qdr
+    type: string
+  RabbitPassword:
+    description: The password for Qdr
+    type: string
+    hidden: true
+  RabbitClientPort:
+    description: Listening port for Qdr
+    default: 5672
+    type: number
+  MonitoringSubscriptionQdr:
+    default: 'overcloud-qdr'
+    type: string
+
+outputs:
+  role_data:
+    description: Role data for the Qdr role.
+    value:
+      service_name: rabbitmq
+      monitoring_subscription: {get_param: MonitoringSubscriptionQdr}
+      global_config_settings:
+        messaging_notify_service_name: 'amqp'
+        messaging_rpc_service_name: 'amqp'
+        keystone::messaging::amqp::amqp_pre_settled: 'notify'
+      config_settings:
+        tripleo.rabbitmq.firewall_rules:
+          '109 qdr':
+            dport:
+              - {get_param: RabbitClientPort}
+        qdr::listener_addr: {get_param: [ServiceNetMap, QdrNetwork]}
+        # cannot pass qdr::listener_port directly because it needs to be a string
+        # we do the conversion in the puppet layer
+        tripleo::profile::base::qdr::qdr_listener_port: {get_param: RabbitClientPort}
+        tripleo::profile::base::qdr::qdr_username: {get_param: RabbitUserName}
+        tripleo::profile::base::qdr::qdr_password: {get_param: RabbitPassword}
+
+      step_config: |
+        include ::tripleo::profile::base::qdr
diff --git a/releasenotes/notes/add-qdr-99a27dffef42c13e.yaml b/releasenotes/notes/add-qdr-99a27dffef42c13e.yaml
new file mode 100644 (file)
index 0000000..163536d
--- /dev/null
@@ -0,0 +1,8 @@
+---
+features:
+  - Introduce the ability to deploy the qpid-dispatch-router (Qdr) for
+    the oslo.messaging AMQP 1.0 driver backend. The Qdr provides
+    direct messaging (e.g. brokerless) communications for
+    oslo.messaging services. To facilitate simple use for evaluation
+    in an overcloud deployment, the Qdr aliases the RabbitMQ service
+    to provide the messaging backend.
index 5ff6f13..5669a8a 100755 (executable)
@@ -212,8 +212,10 @@ def validate(filename):
                   % filename)
             return 1
 
+        # qdr aliases rabbitmq service to provide alternative messaging backend
         if (filename.startswith('./puppet/services/') and
-                filename != './puppet/services/services.yaml'):
+                filename not in ['./puppet/services/services.yaml',
+                                 './puppet/services/qdr.yaml']):
             retval = validate_service(filename, tpl)
 
         if (filename.startswith('./docker/services/') and