Qpid dispatch router composable role

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
This commit is contained in:
John Eckersberg 2016-11-03 13:54:18 -04:00 committed by Michele Baldessari
parent 0ae9d9b346
commit 1ca3c2c4b0
6 changed files with 75 additions and 1 deletions

View File

@ -0,0 +1,2 @@
resource_registry:
OS::TripleO::Services::Qdr: ../../puppet/services/qdr.yaml

View 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

View 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

60
puppet/services/qdr.yaml Normal file
View File

@ -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

View File

@ -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.

View File

@ -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