Andrew Smith 78bc457585 Support separate oslo.messaging services for RPC and Notification
This commit introduces oslo.messaging services in place of a single
rabbitmq server. This will enable the separation of rpc and
notifications for the continued use of a single backend (e.g.
rabbitmq server) or a dual backend for the messaging communications.

This patch:
* add oslo_messaging_rpc and oslo_messaging_notify services
* add puppet services for rpc and notification
  (rabbitmq and qdrouterd servers)
* add docker services to deploy rpc (rabbitmq or qdrouterd)
  and notify (rabbitmq or shared)
* retains rabbit parameters for core services
* update resource registries, service_net_map, roles, etc.
* update ci environment container scenarios
* add environment generator for messaging
* add release note

Depends-On: Ic2c1a58526febefc1703da5fec12ff68dcc0efa0
Depends-On: I154e2fe6f66b296b9b643627d57696e5178e1815
Depends-On: I03e99d35ed043cf11bea9b7462058bd80f4d99da
Needed-By: Ie181a92731e254b7f613ad25fee6cc37e985c315
Change-Id: I934561612d26befd88a9053262836b47bdf4efb0
2018-04-22 04:33:44 +00:00

151 lines
5.4 KiB
YAML

heat_template_version: queens
description: >
Mapping of service_name_network -> network name
parameters:
ServiceNetMap:
description: Mapping of service_name -> network name. Typically set
via parameter_defaults in the resource registry. This
mapping overrides those in ServiceNetMapDefaults.
Note that the key in this map must match the service_name
in the service template, e.g if the service_name is heat_api
the key must be either heat_api_network, or optionally
HeatApiNetwork (which will be internally converted to
transform captalization to underscores).
default: {}
type: json
# Note that the key in this map must match the service_name
# see the description above about conversion from CamelCase to
# snake_case - the names must still match when converted
ServiceNetMapDefaults:
default:
# Note the values in this map are replaced by *NetName
# to allow for sane defaults when the network names are
# overridden.
ApacheNetwork: internal_api
NeutronTenantNetwork: tenant
CeilometerApiNetwork: internal_api
AodhApiNetwork: internal_api
PankoApiNetwork: internal_api
BarbicanApiNetwork: internal_api
GnocchiApiNetwork: internal_api
MongodbNetwork: internal_api
CinderApiNetwork: internal_api
CinderIscsiNetwork: storage
CongressApiNetwork: internal_api
GlanceApiNetwork: internal_api
IronicApiNetwork: ctlplane
IronicNetwork: ctlplane
IronicInspectorNetwork: ctlplane
KeystoneAdminApiNetwork: ctlplane # allows undercloud to config endpoints
KeystonePublicApiNetwork: internal_api
ManilaApiNetwork: internal_api
NeutronApiNetwork: internal_api
OctaviaApiNetwork: internal_api
HeatApiNetwork: internal_api
HeatApiCfnNetwork: internal_api
HeatApiCloudwatchNetwork: internal_api
NovaApiNetwork: internal_api
NovaPlacementNetwork: internal_api
NovaMetadataNetwork: internal_api
NovaVncProxyNetwork: internal_api
NovaLibvirtNetwork: internal_api
NovajoinNetwork: internal_api
Ec2ApiNetwork: internal_api
Ec2ApiMetadataNetwork: internal_api
TackerApiNetwork: internal_api
SwiftStorageNetwork: storage_mgmt
SwiftProxyNetwork: storage
SaharaApiNetwork: internal_api
HorizonNetwork: internal_api
MemcachedNetwork: internal_api
OsloMessagingRpcNetwork: internal_api
OsloMessagingNotifyNetwork: internal_api
RabbitmqNetwork: internal_api
QdrNetwork: internal_api
RedisNetwork: internal_api
GaneshaNetwork: storage_nfs
MysqlNetwork: internal_api
SnmpdNetwork: internal_api
CephClusterNetwork: storage_mgmt
CephMonNetwork: storage
CephRgwNetwork: storage
PublicNetwork: external
OpendaylightApiNetwork: internal_api
OvnDbsNetwork: internal_api
MistralApiNetwork: internal_api
ZaqarApiNetwork: internal_api
DockerRegistryNetwork: ctlplane
PacemakerRemoteNetwork: internal_api
TripleoUINetwork: internal_api
DesignateApiNetwork: internal_api
# We special-case the default ResolveNetwork for the CephStorage role
# for backwards compatibility, all other roles default to internal_api
CephStorageHostnameResolveNetwork: storage
EtcdNetwork: internal_api
{% for role in roles if role.name != 'CephStorage' %}
{{role.name}}HostnameResolveNetwork: internal_api
{% endfor %}
description: Mapping of service_name -> network name. Typically set
via parameter_defaults in the resource registry.
type: json
# We define mappings to work around names that break when doing the
# CamelCase to snake_case conversion to align with service_names
ServiceNetMapDeprecatedMapping:
default:
MongoDbNetwork: MongodbNetwork
RabbitMqNetwork: RabbitmqNetwork
CephPublicNetwork: CephMonNetwork
SwiftMgmtNetwork: SwiftStorageNetwork
description: Mapping older deprecated service names, intended for
internal use only, this will be removed in future.
type: json
{%- for network in networks %}
{{network.name}}NetName:
default: {{network.name_lower}}
description: The name of the {{network.name_lower}} network.
type: string
{%- endfor %}
parameter_groups:
- label: deprecated
description: Do not use deprecated params, they will be removed.
parameters:
- ServiceNetMapDeprecatedMapping
resources:
ServiceNetMapValue:
type: OS::Heat::Value
properties:
type: json
value:
map_merge:
- map_replace:
- {get_param: ServiceNetMapDefaults}
- values:
{%- for network in networks %}
{{network.name_lower}}: {get_param: {{network.name}}NetName}
{%- endfor %}
- map_replace:
- {get_param: ServiceNetMap}
- keys: {get_param: ServiceNetMapDeprecatedMapping}
outputs:
service_net_map:
value: {get_attr: [ServiceNetMapValue, value]}
service_net_map_lower:
value:
# This does a conversion from CamelCase to snake_case,
# e.g HeatApiNetwork becomes heat_api_network so it
# matches the service names.
yaql:
expression: dict($.data.map.items().select([ regex(`([a-z0-9])([A-Z])`).replace($[0], '\\1_\\2').toLower(), $[1]]))
data:
map: {get_attr: [ServiceNetMapValue, value]}