Availability monitoring agents support
authorMartin Mágr <mmagr@redhat.com>
Thu, 9 Jun 2016 13:39:22 +0000 (15:39 +0200)
committerLars Kellogg-Stedman <lars@redhat.com>
Wed, 31 Aug 2016 13:22:59 +0000 (09:22 -0400)
- adds possibility to install sensu-client on all nodes
- each composable service has it's own subscription

Co-Authored-By: Emilien Macchi <emilien@redhat.com>
Co-Authored-By: Michele Baldessari <michele@redhat.com>
Implements: blueprint tripleo-opstools-availability-monitoring
Change-Id: I6a215763fd0f0015285b3573305d18d0f56c7770

106 files changed:
capabilities-map.yaml
environments/monitoring-environment.yaml [new file with mode: 0644]
overcloud-resource-registry-puppet.yaml
overcloud-without-mergepy.yaml [changed from symlink to file mode: 0644]
overcloud.yaml
puppet/ceph-storage.yaml
puppet/cinder-storage.yaml
puppet/compute.yaml
puppet/controller.yaml
puppet/services/aodh-api.yaml
puppet/services/aodh-evaluator.yaml
puppet/services/aodh-listener.yaml
puppet/services/aodh-notifier.yaml
puppet/services/ceilometer-agent-central.yaml
puppet/services/ceilometer-agent-compute.yaml
puppet/services/ceilometer-agent-notification.yaml
puppet/services/ceilometer-api.yaml
puppet/services/ceilometer-collector.yaml
puppet/services/ceilometer-expirer.yaml
puppet/services/ceph-client.yaml
puppet/services/ceph-external.yaml
puppet/services/ceph-mon.yaml
puppet/services/ceph-osd.yaml
puppet/services/cinder-api.yaml
puppet/services/cinder-backup.yaml
puppet/services/cinder-scheduler.yaml
puppet/services/cinder-volume.yaml
puppet/services/glance-api.yaml
puppet/services/glance-registry.yaml
puppet/services/gnocchi-api.yaml
puppet/services/gnocchi-metricd.yaml
puppet/services/gnocchi-statsd.yaml
puppet/services/haproxy.yaml
puppet/services/heat-api-cfn.yaml
puppet/services/heat-api-cloudwatch.yaml
puppet/services/heat-api.yaml
puppet/services/heat-engine.yaml
puppet/services/horizon.yaml
puppet/services/ironic-api.yaml
puppet/services/ironic-conductor.yaml
puppet/services/keepalived.yaml
puppet/services/keystone.yaml
puppet/services/manila-api.yaml
puppet/services/manila-scheduler.yaml
puppet/services/manila-share.yaml
puppet/services/memcached.yaml
puppet/services/monitoring/sensu-base.yaml [new file with mode: 0644]
puppet/services/monitoring/sensu-client.yaml [new file with mode: 0644]
puppet/services/neutron-api.yaml
puppet/services/neutron-dhcp.yaml
puppet/services/neutron-l3-compute-dvr.yaml
puppet/services/neutron-l3.yaml
puppet/services/neutron-metadata.yaml
puppet/services/neutron-midonet.yaml
puppet/services/neutron-ovs-agent.yaml
puppet/services/nova-api.yaml
puppet/services/nova-compute.yaml
puppet/services/nova-conductor.yaml
puppet/services/nova-consoleauth.yaml
puppet/services/nova-libvirt.yaml
puppet/services/nova-scheduler.yaml
puppet/services/nova-vncproxy.yaml
puppet/services/pacemaker.yaml
puppet/services/pacemaker/ceilometer-agent-central.yaml
puppet/services/pacemaker/ceilometer-agent-notification.yaml
puppet/services/pacemaker/ceilometer-api.yaml
puppet/services/pacemaker/ceilometer-collector.yaml
puppet/services/pacemaker/cinder-api.yaml
puppet/services/pacemaker/cinder-backup.yaml
puppet/services/pacemaker/cinder-scheduler.yaml
puppet/services/pacemaker/cinder-volume.yaml
puppet/services/pacemaker/glance-api.yaml
puppet/services/pacemaker/glance-registry.yaml
puppet/services/pacemaker/gnocchi-api.yaml
puppet/services/pacemaker/gnocchi-metricd.yaml
puppet/services/pacemaker/gnocchi-statsd.yaml
puppet/services/pacemaker/haproxy.yaml
puppet/services/pacemaker/heat-api-cfn.yaml
puppet/services/pacemaker/heat-api-cloudwatch.yaml
puppet/services/pacemaker/heat-api.yaml
puppet/services/pacemaker/heat-engine.yaml
puppet/services/pacemaker/horizon.yaml
puppet/services/pacemaker/keystone.yaml
puppet/services/pacemaker/manila-share.yaml
puppet/services/pacemaker/memcached.yaml
puppet/services/pacemaker/neutron-dhcp.yaml
puppet/services/pacemaker/neutron-l3.yaml
puppet/services/pacemaker/neutron-metadata.yaml
puppet/services/pacemaker/neutron-midonet.yaml
puppet/services/pacemaker/neutron-ovs-agent.yaml
puppet/services/pacemaker/neutron-server.yaml
puppet/services/pacemaker/nova-api.yaml
puppet/services/pacemaker/nova-conductor.yaml
puppet/services/pacemaker/nova-consoleauth.yaml
puppet/services/pacemaker/nova-scheduler.yaml
puppet/services/pacemaker/nova-vncproxy.yaml
puppet/services/pacemaker/rabbitmq.yaml
puppet/services/pacemaker/sahara-api.yaml
puppet/services/pacemaker/sahara-engine.yaml
puppet/services/rabbitmq.yaml
puppet/services/sahara-api.yaml
puppet/services/sahara-engine.yaml
puppet/services/services.yaml
puppet/services/swift-proxy.yaml
puppet/services/swift-storage.yaml
puppet/swift-storage.yaml

index c7816b7..962dfb9 100644 (file)
@@ -224,3 +224,15 @@ topics:
             description:
             requires:
               - overcloud-resource-registry-puppet.yaml
+
+  - title: Operational Tools
+    description:
+    environment_groups:
+      - title: Monitoring agents
+        description: Enable monitoring agents
+        environments:
+          - file: environments/monitoring-environment.yaml
+            title: enable monitoring agents
+            description:
+            requires:
+              - overcloud-resource-registry-puppet.yaml
diff --git a/environments/monitoring-environment.yaml b/environments/monitoring-environment.yaml
new file mode 100644 (file)
index 0000000..a8ad208
--- /dev/null
@@ -0,0 +1,30 @@
+## A Heat environment file which can be used to set up monitoring
+## and logging agents
+
+resource_registry:
+  OS::TripleO::Services::SensuClient: ../puppet/services/monitoring/sensu-client.yaml
+
+parameter_defaults:
+  #### Sensu settings ####
+  ##MonitoringRabbitHost: 10.10.10.10
+  ##MonitoringRabbitPort: 5672
+  ##MonitoringRabbitUserName: sensu
+  ##MonitoringRabbitPassword: sensu
+  ##MonitoringRabbitUseSSL: false
+  ##MonitoringRabbitVhost: "/sensu"
+  ##SensuClientCustomConfig:
+  ##  - api:
+  ##    - warning: 10
+  ##      critical: 20
+  ##    openstack:
+  ##    - username: admin
+  ##      password: changeme
+  ##      project_name: admin
+  ##      auth_url: http://controller:5000/v2.0
+  ##      region_name: RegionOne
+
+  #### EFK settings ####
+  ## TBD
+
+  #### Grafana/Graphite settings ####
+  ## TBD
index a1a8d92..737cb13 100644 (file)
@@ -222,6 +222,7 @@ resource_registry:
   OS::TripleO::Services::TripleoFirewall: puppet/services/tripleo-firewall.yaml
   OS::TripleO::Services::OpenDaylight: OS::Heat::None
   OS::TripleO::Services::OpenDaylightOvs: OS::Heat::None
+  OS::TripleO::Services::SensuClient: OS::Heat::None
 
 parameter_defaults:
   EnablePackageInstall: false
deleted file mode 120000 (symlink)
index 23dc646495d69e3c2728ddd4f9781726083e9628..0000000000000000000000000000000000000000
+++ /dev/null
@@ -1 +0,0 @@
-overcloud.yaml
\ No newline at end of file
new file mode 100644 (file)
index 0000000000000000000000000000000000000000..a85c57c0486917a9c6aad306f4729dce43f26c31
--- /dev/null
+heat_template_version: 2016-04-08
+
+description: >
+  Deploy an OpenStack environment, consisting of several node types (roles),
+  Controller, Compute, BlockStorage, SwiftStorage and CephStorage. The Storage
+  roles enable independent scaling of the storage components, but the minimal
+  deployment is one Controller and one Compute node.
+
+
+# TODO(shadower): we should probably use the parameter groups to put
+# some order in here.
+parameters:
+
+  # Common parameters (not specific to a role)
+  CloudName:
+    default: overcloud
+    description: The DNS name of this cloud. E.g. ci-overcloud.tripleo.org
+    type: string
+  CloudNameInternal:
+    default: overcloud.internalapi.localdomain
+    description: >
+      The DNS name of this cloud's internal API endpoint. E.g.
+      'ci-overcloud.internalapi.tripleo.org'.
+    type: string
+  CloudNameStorage:
+    default: overcloud.storage.localdomain
+    description: >
+      The DNS name of this cloud's storage endpoint. E.g.
+      'ci-overcloud.storage.tripleo.org'.
+    type: string
+  CloudNameStorageManagement:
+    default: overcloud.storagemgmt.localdomain
+    description: >
+      The DNS name of this cloud's storage management endpoint. E.g.
+      'ci-overcloud.storagemgmt.tripleo.org'.
+    type: string
+  CloudNameManagement:
+    default: overcloud.management.localdomain
+    description: >
+      The DNS name of this cloud's storage management endpoint. E.g.
+      'ci-overcloud.management.tripleo.org'.
+    type: string
+  ControlFixedIPs:
+    default: []
+    description: Should be used for arbitrary ips.
+    type: json
+  InternalApiVirtualFixedIPs:
+    default: []
+    description: >
+        Control the IP allocation for the InternalApiVirtualInterface port. E.g.
+        [{'ip_address':'1.2.3.4'}]
+    type: json
+  NeutronControlPlaneID:
+    default: 'ctlplane'
+    type: string
+    description: Neutron ID or name for ctlplane network.
+  NeutronPublicInterface:
+    default: nic1
+    description: What interface to bridge onto br-ex for network nodes.
+    type: string
+  PublicVirtualFixedIPs:
+    default: []
+    description: >
+        Control the IP allocation for the PublicVirtualInterface port. E.g.
+        [{'ip_address':'1.2.3.4'}]
+    type: json
+  RabbitCookieSalt:
+    type: string
+    default: unset
+    description: Salt for the rabbit cookie, change this to force the randomly generated rabbit cookie to change.
+  StorageVirtualFixedIPs:
+    default: []
+    description: >
+        Control the IP allocation for the StorageVirtualInterface port. E.g.
+        [{'ip_address':'1.2.3.4'}]
+    type: json
+  StorageMgmtVirtualFixedIPs:
+    default: []
+    description: >
+        Control the IP allocation for the StorageMgmgVirtualInterface port. E.g.
+        [{'ip_address':'1.2.3.4'}]
+    type: json
+  RedisVirtualFixedIPs:
+    default: []
+    description: >
+        Control the IP allocation for the virtual IP used by Redis. E.g.
+        [{'ip_address':'1.2.3.4'}]
+    type: json
+  CloudDomain:
+    default: 'localdomain'
+    type: string
+    description: >
+      The DNS domain used for the hosts. This should match the dhcp_domain
+      configured in the Undercloud neutron. Defaults to localdomain.
+  ServerMetadata:
+    default: {}
+    description: >
+      Extra properties or metadata passed to Nova for the created nodes in
+      the overcloud. It's accessible via the Nova metadata API.
+    type: json
+
+  # Controller-specific params
+  ControllerCount:
+    type: number
+    default: 1
+  controllerExtraConfig:
+    default: {}
+    description: |
+      Deprecated. Use ControllerExtraConfig via parameter_defaults instead.
+    type: json
+  ExtraConfig:
+    default: {}
+    description: |
+      Additional configuration to inject into the cluster. The format required
+      may be implementation specific, e.g puppet hieradata.  Any role specific
+      ExtraConfig, e.g controllerExtraConfig takes precedence over ExtraConfig.
+    type: json
+
+# Compute-specific params
+  ComputeCount:
+    type: number
+    default: 1
+  HypervisorNeutronPhysicalBridge:
+    default: 'br-ex'
+    description: >
+      An OVS bridge to create on each hypervisor. This defaults to br-ex the
+      same as the control plane nodes, as we have a uniform configuration of
+      the openvswitch agent. Typically should not need to be changed.
+    type: string
+  HypervisorNeutronPublicInterface:
+    default: nic1
+    description: What interface to add to the HypervisorNeutronPhysicalBridge.
+    type: string
+
+  ControllerServices:
+    default:
+      - OS::TripleO::Services::CACerts
+      - OS::TripleO::Services::CephMon
+      - OS::TripleO::Services::CephExternal
+      - OS::TripleO::Services::CinderApi
+      - OS::TripleO::Services::CinderBackup
+      - OS::TripleO::Services::CinderScheduler
+      - OS::TripleO::Services::CinderVolume
+      - OS::TripleO::Services::Core
+      - OS::TripleO::Services::Kernel
+      - OS::TripleO::Services::Keystone
+      - OS::TripleO::Services::GlanceApi
+      - OS::TripleO::Services::GlanceRegistry
+      - OS::TripleO::Services::HeatApi
+      - OS::TripleO::Services::HeatApiCfn
+      - OS::TripleO::Services::HeatApiCloudwatch
+      - OS::TripleO::Services::HeatEngine
+      - OS::TripleO::Services::MySQL
+      - OS::TripleO::Services::NeutronDhcpAgent
+      - OS::TripleO::Services::NeutronL3Agent
+      - OS::TripleO::Services::NeutronMetadataAgent
+      - OS::TripleO::Services::NeutronApi
+      - OS::TripleO::Services::NeutronCorePlugin
+      - OS::TripleO::Services::NeutronOvsAgent
+      - OS::TripleO::Services::RabbitMQ
+      - OS::TripleO::Services::HAproxy
+      - OS::TripleO::Services::Keepalived
+      - OS::TripleO::Services::Memcached
+      - OS::TripleO::Services::Pacemaker
+      - OS::TripleO::Services::Redis
+      - OS::TripleO::Services::NovaConductor
+      - OS::TripleO::Services::MongoDb
+      - OS::TripleO::Services::NovaApi
+      - OS::TripleO::Services::NovaScheduler
+      - OS::TripleO::Services::NovaConsoleauth
+      - OS::TripleO::Services::NovaVncproxy
+      - OS::TripleO::Services::Ntp
+      - OS::TripleO::Services::SwiftProxy
+      - OS::TripleO::Services::SwiftStorage
+      - OS::TripleO::Services::SwiftRingBuilder
+      - OS::TripleO::Services::Snmp
+      - OS::TripleO::Services::Timezone
+      - OS::TripleO::Services::CeilometerApi
+      - OS::TripleO::Services::CeilometerCollector
+      - OS::TripleO::Services::CeilometerExpirer
+      - OS::TripleO::Services::CeilometerAgentCentral
+      - OS::TripleO::Services::CeilometerAgentNotification
+      - OS::TripleO::Services::Horizon
+      - OS::TripleO::Services::GnocchiApi
+      - OS::TripleO::Services::GnocchiMetricd
+      - OS::TripleO::Services::GnocchiStatsd
+      - OS::Tripleo::Services::ManilaApi
+      - OS::Tripleo::Services::ManilaScheduler
+      - OS::Tripleo::Services::ManilaShare
+      - OS::TripleO::Services::AodhApi
+      - OS::TripleO::Services::AodhEvaluator
+      - OS::TripleO::Services::AodhNotifier
+      - OS::TripleO::Services::AodhListener
+      - OS::TripleO::Services::SaharaApi
+      - OS::TripleO::Services::SaharaEngine
+      - OS::TripleO::Services::IronicApi
+      - OS::TripleO::Services::IronicConductor
+      - OS::TripleO::Services::NovaIronic
+      - OS::TripleO::Services::TripleoPackages
+      - OS::TripleO::Services::TripleoFirewall
+      - OS::TripleO::Services::OpenDaylight
+      - OS::TripleO::Services::SensuClient
+    description: A list of service resources (configured in the Heat
+                 resource_registry) which represent nested stacks
+                 for each service that should get installed on the Controllers.
+    type: comma_delimited_list
+
+  ComputeServices:
+    default:
+      - OS::TripleO::Services::CACerts
+      - OS::TripleO::Services::CephClient
+      - OS::TripleO::Services::CephExternal
+      - OS::TripleO::Services::Timezone
+      - OS::TripleO::Services::Ntp
+      - OS::TripleO::Services::Snmp
+      - OS::TripleO::Services::NovaCompute
+      - OS::TripleO::Services::NovaLibvirt
+      - OS::TripleO::Services::Kernel
+      - OS::TripleO::Services::ComputeNeutronCorePlugin
+      - OS::TripleO::Services::ComputeNeutronOvsAgent
+      - OS::TripleO::Services::ComputeCeilometerAgent
+      - OS::TripleO::Services::ComputeNeutronL3Agent
+      - OS::TripleO::Services::ComputeNeutronMetadataAgent
+      - OS::TripleO::Services::TripleoPackages
+      - OS::TripleO::Services::TripleoFirewall
+      - OS::TripleO::Services::NeutronSriovAgent
+      - OS::TripleO::Services::OpenDaylightOvs
+      - OS::TripleO::Services::SensuClient
+    description: A list of service resources (configured in the Heat
+                 resource_registry) which represent nested stacks
+                 for each service that should get installed on the Compute Nodes.
+    type: comma_delimited_list
+
+# Block storage specific parameters
+  BlockStorageCount:
+    type: number
+    default: 0
+  BlockStorageExtraConfig:
+    default: {}
+    description: |
+      BlockStorage specific configuration to inject into the cluster. Same
+      structure as ExtraConfig.
+    type: json
+  BlockStorageServices:
+    default:
+      - OS::TripleO::Services::CACerts
+      - OS::TripleO::Services::CinderVolume
+      - OS::TripleO::Services::Kernel
+      - OS::TripleO::Services::Ntp
+      - OS::TripleO::Services::Timezone
+      - OS::TripleO::Services::Snmp
+      - OS::TripleO::Services::TripleoPackages
+      - OS::TripleO::Services::TripleoFirewall
+      - OS::TripleO::Services::SensuClient
+    description: A list of service resources (configured in the Heat
+                 resource_registry) which represent nested stacks
+                 for each service that should get installed on the BlockStorage nodes.
+    type: comma_delimited_list
+
+# Object storage specific parameters
+  ObjectStorageCount:
+    type: number
+    default: 0
+  ObjectStorageExtraConfig:
+    default: {}
+    description: |
+      ObjectStorage specific configuration to inject into the cluster. Same
+      structure as ExtraConfig.
+    type: json
+  ObjectStorageServices:
+    default:
+      - OS::TripleO::Services::CACerts
+      - OS::TripleO::Services::Kernel
+      - OS::TripleO::Services::Ntp
+      - OS::TripleO::Services::SwiftStorage
+      - OS::TripleO::Services::SwiftRingBuilder
+      - OS::TripleO::Services::Snmp
+      - OS::TripleO::Services::Timezone
+      - OS::TripleO::Services::TripleoPackages
+      - OS::TripleO::Services::TripleoFirewall
+      - OS::TripleO::Services::SensuClient
+    description: A list of service resources (configured in the Heat
+                 resource_registry) which represent nested stacks
+                 for each service that should get installed on the ObjectStorage nodes.
+                 Note this role currently only supports steps 2, 3 and 4 configuration.
+    type: comma_delimited_list
+
+
+# Ceph storage specific parameters
+  CephStorageCount:
+    type: number
+    default: 0
+  CephStorageExtraConfig:
+    default: {}
+    description: |
+      CephStorage specific configuration to inject into the cluster. Same
+      structure as ExtraConfig.
+    type: json
+  CephStorageServices:
+    default:
+      - OS::TripleO::Services::CACerts
+      - OS::TripleO::Services::CephOSD
+      - OS::TripleO::Services::Kernel
+      - OS::TripleO::Services::Ntp
+      - OS::TripleO::Services::Timezone
+      - OS::TripleO::Services::TripleoPackages
+      - OS::TripleO::Services::TripleoFirewall
+      - OS::TripleO::Services::SensuClient
+    description: A list of service resources (configured in the Heat
+                 resource_registry) which represent nested stacks
+                 for each service that should get installed on the CephStorage nodes.
+    type: comma_delimited_list
+
+  # Hostname format for each role
+  # Note %index% is translated into the index of the node, e.g 0/1/2 etc
+  # and %stackname% is replaced with OS::stack_name in the template below.
+  # If you want to use the heat generated names, pass '' (empty string).
+  ControllerHostnameFormat:
+    type: string
+    description: Format for Controller node hostnames
+    default: '%stackname%-controller-%index%'
+  ComputeHostnameFormat:
+    type: string
+    description: Format for Compute node hostnames
+    default: '%stackname%-novacompute-%index%'
+  BlockStorageHostnameFormat:
+    type: string
+    description: Format for BlockStorage node hostnames
+    default: '%stackname%-blockstorage-%index%'
+  ObjectStorageHostnameFormat:
+    type: string
+    description: Format for SwiftStorage node hostnames
+    default: '%stackname%-objectstorage-%index%'
+  CephStorageHostnameFormat:
+    type: string
+    description: Format for CephStorage node hostnames
+    default: '%stackname%-cephstorage-%index%'
+
+  # Identifiers to trigger tasks on nodes
+  UpdateIdentifier:
+    default: ''
+    type: string
+    description: >
+      Setting to a previously unused value during stack-update will trigger
+      package update on all nodes
+  DeployIdentifier:
+    default: ''
+    type: string
+    description: >
+      Setting this to a unique value will re-run any deployment tasks which
+      perform configuration on a Heat stack-update.
+
+  # If you want to remove a specific node from a resource group, you can pass
+  # the node name or id as a <Group>RemovalPolicies parameter, for example:
+  # ComputeRemovalPolicies: [{'resource_list': ['0']}]
+  ControllerRemovalPolicies:
+    default: []
+    type: json
+    description: >
+      List of resources to be removed from ControllerResourceGroup when
+      doing an update which requires removal of specific resources.
+  ComputeRemovalPolicies:
+    default: []
+    type: json
+    description: >
+      List of resources to be removed from ComputeResourceGroup when
+      doing an update which requires removal of specific resources.
+  BlockStorageRemovalPolicies:
+    default: []
+    type: json
+    description: >
+      List of resources to be removed from BlockStorageResourceGroup when
+      doing an update which requires removal of specific resources.
+  ObjectStorageRemovalPolicies:
+    default: []
+    type: json
+    description: >
+      List of resources to be removed from ObjectStorageResourceGroup when
+      doing an update which requires removal of specific resources.
+  CephStorageRemovalPolicies:
+    default: []
+    type: json
+    description: >
+      List of resources to be removed from CephStorageResourceGroup when
+      doing an update which requires removal of specific resources.
+
+parameter_groups:
+- label: deprecated
+  description: Do not use deprecated params, they will be removed.
+  parameters:
+  - controllerExtraConfig
+
+
+resources:
+
+  HeatAuthEncryptionKey:
+    type: OS::Heat::RandomString
+
+  PcsdPassword:
+    type: OS::Heat::RandomString
+    properties:
+      length: 16
+
+  HorizonSecret:
+    type: OS::Heat::RandomString
+    properties:
+      length: 10
+
+  ServiceNetMap:
+    type: OS::TripleO::ServiceNetMap
+
+  EndpointMap:
+    type: OS::TripleO::EndpointMap
+    properties:
+      CloudEndpoints:
+        external: {get_param: CloudName}
+        internal_api: {get_param: CloudNameInternal}
+        storage: {get_param: CloudNameStorage}
+        storage_mgmt: {get_param: CloudNameStorageManagement}
+        management: {get_param: CloudNameManagement}
+      NetIpMap: {get_attr: [VipMap, net_ip_map]}
+      ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
+
+  ControllerServiceChain:
+    type: OS::TripleO::Services
+    properties:
+      Services: {get_param: ControllerServices}
+      ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
+      EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
+      DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
+
+  Controller:
+    type: OS::Heat::ResourceGroup
+    depends_on: Networks
+    properties:
+      count: {get_param: ControllerCount}
+      removal_policies: {get_param: ControllerRemovalPolicies}
+      resource_def:
+        type: OS::TripleO::Controller
+        properties:
+          CloudDomain: {get_param: CloudDomain}
+          controllerExtraConfig: {get_param: controllerExtraConfig}
+          PcsdPassword: {get_resource: PcsdPassword}
+          RedisVirtualIP: {get_attr: [RedisVirtualIP, ip_address]}
+          RedisVirtualIPUri: {get_attr: [RedisVirtualIP, ip_address_uri]}
+          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
+          EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
+          Hostname:
+            str_replace:
+              template: {get_param: ControllerHostnameFormat}
+              params:
+                '%stackname%': {get_param: 'OS::stack_name'}
+          NodeIndex: '%index%'
+          ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
+          ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
+          MonitoringSubscriptions: {get_attr: [ControllerServiceChain, role_data, monitoring_subscriptions]}
+
+  ComputeServiceChain:
+    type: OS::TripleO::Services
+    properties:
+      Services: {get_param: ComputeServices}
+      ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
+      EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
+      DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
+
+  Compute:
+    type: OS::Heat::ResourceGroup
+    depends_on: Networks
+    properties:
+      count: {get_param: ComputeCount}
+      removal_policies: {get_param: ComputeRemovalPolicies}
+      resource_def:
+        type: OS::TripleO::Compute
+        properties:
+          CloudDomain: {get_param: CloudDomain}
+          NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
+          NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
+          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
+          EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
+          Hostname:
+            str_replace:
+              template: {get_param: ComputeHostnameFormat}
+              params:
+                '%stackname%': {get_param: 'OS::stack_name'}
+          NodeIndex: '%index%'
+          ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
+          ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
+          MonitoringSubscriptions: {get_attr: [ComputeServiceChain, role_data, monitoring_subscriptions]}
+
+  BlockStorageServiceChain:
+    type: OS::TripleO::Services
+    properties:
+      Services: {get_param: BlockStorageServices}
+      ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
+      EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
+      DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
+
+  BlockStorage:
+    type: OS::Heat::ResourceGroup
+    depends_on: Networks
+    properties:
+      count: {get_param: BlockStorageCount}
+      removal_policies: {get_param: BlockStorageRemovalPolicies}
+      resource_def:
+        type: OS::TripleO::BlockStorage
+        properties:
+          UpdateIdentifier: {get_param: UpdateIdentifier}
+          Hostname:
+            str_replace:
+              template: {get_param: BlockStorageHostnameFormat}
+              params:
+                '%stackname%': {get_param: 'OS::stack_name'}
+          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
+          ExtraConfig: {get_param: ExtraConfig}
+          BlockStorageExtraConfig: {get_param: BlockStorageExtraConfig}
+          CloudDomain: {get_param: CloudDomain}
+          ServerMetadata: {get_param: ServerMetadata}
+          NodeIndex: '%index%'
+          ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
+          ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
+          MonitoringSubscriptions: {get_attr: [BlockStorageServiceChain, role_data, monitoring_subscriptions]}
+
+  ObjectStorageServiceChain:
+    type: OS::TripleO::Services
+    properties:
+      Services: {get_param: ObjectStorageServices}
+      ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
+      EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
+      DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
+
+  ObjectStorage:
+    type: OS::Heat::ResourceGroup
+    depends_on: Networks
+    properties:
+      count: {get_param: ObjectStorageCount}
+      removal_policies: {get_param: ObjectStorageRemovalPolicies}
+      resource_def:
+        type: OS::TripleO::ObjectStorage
+        properties:
+          UpdateIdentifier: {get_param: UpdateIdentifier}
+          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
+          Hostname:
+            str_replace:
+              template: {get_param: ObjectStorageHostnameFormat}
+              params:
+                '%stackname%': {get_param: 'OS::stack_name'}
+          ExtraConfig: {get_param: ExtraConfig}
+          ObjectStorageExtraConfig: {get_param: ObjectStorageExtraConfig}
+          CloudDomain: {get_param: CloudDomain}
+          ServerMetadata: {get_param: ServerMetadata}
+          NodeIndex: '%index%'
+          ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
+          ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
+          MonitoringSubscriptions: {get_attr: [ObjectStorageServiceChain, role_data, monitoring_subscriptions]}
+
+  CephStorageServiceChain:
+    type: OS::TripleO::Services
+    properties:
+      Services: {get_param: CephStorageServices}
+      ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
+      EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
+      DefaultPasswords: {get_attr: [DefaultPasswords, passwords]}
+
+  CephStorage:
+    type: OS::Heat::ResourceGroup
+    depends_on: Networks
+    properties:
+      count: {get_param: CephStorageCount}
+      removal_policies: {get_param: CephStorageRemovalPolicies}
+      resource_def:
+        type: OS::TripleO::CephStorage
+        properties:
+          ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map]}
+          UpdateIdentifier: {get_param: UpdateIdentifier}
+          Hostname:
+            str_replace:
+              template: {get_param: CephStorageHostnameFormat}
+              params:
+                '%stackname%': {get_param: 'OS::stack_name'}
+          ExtraConfig: {get_param: ExtraConfig}
+          CephStorageExtraConfig: {get_param: CephStorageExtraConfig}
+          CloudDomain: {get_param: CloudDomain}
+          ServerMetadata: {get_param: ServerMetadata}
+          NodeIndex: '%index%'
+          ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
+          ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
+          MonitoringSubscriptions: {get_attr: [CephStorageServiceChain, role_data, monitoring_subscriptions]}
+
+  ControllerIpListMap:
+    type: OS::TripleO::Network::Ports::NetIpListMap
+    properties:
+      ControlPlaneIpList: {get_attr: [Controller, ip_address]}
+      ExternalIpList: {get_attr: [Controller, external_ip_address]}
+      InternalApiIpList: {get_attr: [Controller, internal_api_ip_address]}
+      StorageIpList: {get_attr: [Controller, storage_ip_address]}
+      StorageMgmtIpList: {get_attr: [Controller, storage_mgmt_ip_address]}
+      TenantIpList: {get_attr: [Controller, tenant_ip_address]}
+      ManagementIpList: {get_attr: [Controller, management_ip_address]}
+      EnabledServices: {get_attr: [ControllerServiceChain, role_data, service_names]}
+      ServiceNetMap: {get_attr: [ServiceNetMap, service_net_map_lower]}
+
+  allNodesConfig:
+    type: OS::TripleO::AllNodes::SoftwareConfig
+    properties:
+      hosts:
+        - list_join:
+            - '\n'
+            - {get_attr: [Compute, hosts_entry]}
+        - list_join:
+            - '\n'
+            - {get_attr: [Controller, hosts_entry]}
+        - list_join:
+            - '\n'
+            - {get_attr: [BlockStorage, hosts_entry]}
+        - list_join:
+            - '\n'
+            - {get_attr: [ObjectStorage, hosts_entry]}
+        - list_join:
+            - '\n'
+            - {get_attr: [CephStorage, hosts_entry]}
+      enabled_services:
+        list_join:
+          - ','
+          - {get_attr: [ControllerServiceChain, role_data, service_names]}
+          - {get_attr: [ComputeServiceChain, role_data, service_names]}
+          - {get_attr: [BlockStorageServiceChain, role_data, service_names]}
+          - {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
+          - {get_attr: [CephStorageServiceChain, role_data, service_names]}
+      controller_ips: {get_attr: [Controller, ip_address]}
+      controller_names: {get_attr: [Controller, hostname]}
+      service_ips: {get_attr: [ControllerIpListMap, service_ips]}
+      # FIXME(shardy): These require further work to move into service_ips
+      rabbit_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitmqNetwork]}]}
+      memcache_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MemcachedNetwork]}]}
+      keystone_public_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
+      keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
+      ceph_mon_node_names: {get_attr: [Controller, hostname]}
+      DeployIdentifier: {get_param: DeployIdentifier}
+      UpdateIdentifier: {get_param: UpdateIdentifier}
+
+  MysqlRootPassword:
+    type: OS::Heat::RandomString
+    properties:
+      length: 10
+
+  RabbitCookie:
+    type: OS::Heat::RandomString
+    properties:
+      length: 20
+      salt: {get_param: RabbitCookieSalt}
+
+  DefaultPasswords:
+    type: OS::TripleO::DefaultPasswords
+    properties:
+      DefaultMysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
+      DefaultRabbitCookie: {get_attr: [RabbitCookie, value]}
+      DefaultHeatAuthEncryptionKey: {get_attr: [HeatAuthEncryptionKey, value]}
+      DefaultPcsdPassword: {get_attr: [PcsdPassword, value]}
+      DefaultHorizonSecret: {get_attr: [HorizonSecret, value]}
+
+  # creates the network architecture
+  Networks:
+    type: OS::TripleO::Network
+
+  ControlVirtualIP:
+    type: OS::Neutron::Port
+    depends_on: Networks
+    properties:
+      name: control_virtual_ip
+      network: {get_param: NeutronControlPlaneID}
+      fixed_ips: {get_param: ControlFixedIPs}
+      replacement_policy: AUTO
+
+  RedisVirtualIP:
+    depends_on: Networks
+    type: OS::TripleO::Network::Ports::RedisVipPort
+    properties:
+      ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+      ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
+      PortName: redis_virtual_ip
+      NetworkName: {get_attr: [ServiceNetMap, service_net_map, RedisNetwork]}
+      ServiceName: redis
+      FixedIPs: {get_param: RedisVirtualFixedIPs}
+
+  # The public VIP is on the External net, falls back to ctlplane
+  PublicVirtualIP:
+    depends_on: Networks
+    type: OS::TripleO::Network::Ports::ExternalVipPort
+    properties:
+      ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+      ControlPlaneNetwork: {get_param: NeutronControlPlaneID}
+      PortName: public_virtual_ip
+      FixedIPs: {get_param: PublicVirtualFixedIPs}
+
+  InternalApiVirtualIP:
+    depends_on: Networks
+    type: OS::TripleO::Network::Ports::InternalApiVipPort
+    properties:
+      ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+      PortName: internal_api_virtual_ip
+      FixedIPs: {get_param: InternalApiVirtualFixedIPs}
+
+  StorageVirtualIP:
+    depends_on: Networks
+    type: OS::TripleO::Network::Ports::StorageVipPort
+    properties:
+      ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+      PortName: storage_virtual_ip
+      FixedIPs: {get_param: StorageVirtualFixedIPs}
+
+  StorageMgmtVirtualIP:
+    depends_on: Networks
+    type: OS::TripleO::Network::Ports::StorageMgmtVipPort
+    properties:
+      ControlPlaneIP: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+      PortName: storage_management_virtual_ip
+      FixedIPs: {get_param: StorageMgmtVirtualFixedIPs}
+
+  VipMap:
+    type: OS::TripleO::Network::Ports::NetVipMap
+    properties:
+      ControlPlaneIp: {get_attr: [ControlVirtualIP, fixed_ips, 0, ip_address]}
+      ExternalIp: {get_attr: [PublicVirtualIP, ip_address]}
+      ExternalIpUri: {get_attr: [PublicVirtualIP, ip_address_uri]}
+      InternalApiIp: {get_attr: [InternalApiVirtualIP, ip_address]}
+      InternalApiIpUri: {get_attr: [InternalApiVirtualIP, ip_address_uri]}
+      StorageIp: {get_attr: [StorageVirtualIP, ip_address]}
+      StorageIpUri: {get_attr: [StorageVirtualIP, ip_address_uri]}
+      StorageMgmtIp: {get_attr: [StorageMgmtVirtualIP, ip_address]}
+      StorageMgmtIpUri: {get_attr: [StorageMgmtVirtualIP, ip_address_uri]}
+      # No tenant or management VIP required
+
+  VipConfig:
+    type: OS::TripleO::VipConfig
+
+  VipDeployment:
+    type: OS::Heat::StructuredDeployments
+    properties:
+      name: VipDeployment
+      config: {get_resource: VipConfig}
+      servers: {get_attr: [Controller, attributes, nova_server_resource]}
+      input_values:
+        # service VIP mappings
+        keystone_admin_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
+        keystone_public_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
+        neutron_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
+        cinder_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
+        glance_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
+        glance_registry_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceRegistryNetwork]}]}
+        swift_proxy_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
+        nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
+        nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaMetadataNetwork]}]}
+        ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
+        aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
+        gnocchi_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
+        heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
+        horizon_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HorizonNetwork]}]}
+        redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
+        manila_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
+        mysql_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, MysqlNetwork]}]}
+        rabbit_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, RabbitMqNetwork]}]}
+        # direct configuration of Virtual IPs for each network
+        control_virtual_ip: {get_attr: [VipMap, net_ip_map, ctlplane]}
+        public_virtual_ip: {get_attr: [VipMap, net_ip_map, external]}
+        internal_api_virtual_ip: {get_attr: [VipMap, net_ip_map, internal_api]}
+        sahara_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
+        ironic_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
+        opendaylight_api_vip: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, OpenDaylightApiNetwork]}]}
+        storage_virtual_ip: {get_attr: [VipMap, net_ip_map, storage]}
+        storage_mgmt_virtual_ip: {get_attr: [VipMap, net_ip_map, storage_mgmt]}
+
+  ControllerSwiftDeployment:
+    type: OS::Heat::StructuredDeployments
+    properties:
+      name: ControllerSwiftDeployment
+      config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
+      servers: {get_attr: [Controller, attributes, nova_server_resource]}
+
+  ObjectStorageSwiftDeployment:
+    type: OS::Heat::StructuredDeployments
+    properties:
+      name: ObjectStorageSwiftDeployment
+      config: {get_attr: [SwiftDevicesAndProxyConfig, config_id]}
+      servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
+
+  SwiftDevicesAndProxyConfig:
+    type: OS::TripleO::SwiftDevicesAndProxy::SoftwareConfig
+    properties:
+      controller_swift_devices: {get_attr: [Controller, swift_device]}
+      object_store_swift_devices: {get_attr: [ObjectStorage, swift_device]}
+      controller_swift_proxy_memcaches: {get_attr: [Controller, swift_proxy_memcache]}
+
+  ControllerAllNodesDeployment:
+    type: OS::Heat::StructuredDeployments
+    properties:
+      name: ControllerAllNodesDeployment
+      config: {get_attr: [allNodesConfig, config_id]}
+      servers: {get_attr: [Controller, attributes, nova_server_resource]}
+      input_values:
+        bootstrap_nodeid: {get_attr: [Controller, resource.0.hostname]}
+        bootstrap_nodeid_ip: {get_attr: [Controller, resource.0.ip_address]}
+
+  ComputeAllNodesDeployment:
+    type: OS::Heat::StructuredDeployments
+    properties:
+      name: ComputeAllNodesDeployment
+      config: {get_attr: [allNodesConfig, config_id]}
+      servers: {get_attr: [Compute, attributes, nova_server_resource]}
+      input_values:
+        bootstrap_nodeid: {get_attr: [Compute, resource.0.hostname]}
+        bootstrap_nodeid_ip: {get_attr: [Compute, resource.0.ip_address]}
+
+  BlockStorageAllNodesDeployment:
+    type: OS::Heat::StructuredDeployments
+    properties:
+      name: BlockStorageAllNodesDeployment
+      config: {get_attr: [allNodesConfig, config_id]}
+      servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
+      input_values:
+        bootstrap_nodeid: {get_attr: [BlockStorage, resource.0.hostname]}
+        bootstrap_nodeid_ip: {get_attr: [BlockStorage, resource.0.ip_address]}
+
+  ObjectStorageAllNodesDeployment:
+    type: OS::Heat::StructuredDeployments
+    properties:
+      name: ObjectStorageAllNodesDeployment
+      config: {get_attr: [allNodesConfig, config_id]}
+      servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
+      input_values:
+        bootstrap_nodeid: {get_attr: [ObjectStorage, resource.0.hostname]}
+        bootstrap_nodeid_ip: {get_attr: [ObjectStorage, resource.0.ip_address]}
+
+  CephStorageAllNodesDeployment:
+    type: OS::Heat::StructuredDeployments
+    properties:
+      name: CephStorageAllNodesDeployment
+      config: {get_attr: [allNodesConfig, config_id]}
+      servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
+      input_values:
+        bootstrap_nodeid: {get_attr: [CephStorage, resource.0.hostname]}
+        bootstrap_nodeid_ip: {get_attr: [CephStorage, resource.0.ip_address]}
+
+  # All Nodes Validations
+  AllNodesValidationConfig:
+    type: OS::TripleO::AllNodes::Validation
+    properties:
+      PingTestIps:
+        list_join:
+        - ' '
+        - - {get_attr: [Controller, resource.0.external_ip_address]}
+          - {get_attr: [Controller, resource.0.internal_api_ip_address]}
+          - {get_attr: [Controller, resource.0.storage_ip_address]}
+          - {get_attr: [Controller, resource.0.storage_mgmt_ip_address]}
+          - {get_attr: [Controller, resource.0.tenant_ip_address]}
+          - {get_attr: [Controller, resource.0.management_ip_address]}
+
+  ControllerAllNodesValidationDeployment:
+    type: OS::Heat::StructuredDeployments
+    depends_on: ControllerAllNodesDeployment
+    properties:
+      name: ControllerAllNodesValidationDeployment
+      config: {get_resource: AllNodesValidationConfig}
+      servers: {get_attr: [Controller, attributes, nova_server_resource]}
+
+  ComputeAllNodesValidationDeployment:
+    type: OS::Heat::StructuredDeployments
+    depends_on: ComputeAllNodesDeployment
+    properties:
+      name: ComputeAllNodesValidationDeployment
+      config: {get_resource: AllNodesValidationConfig}
+      servers: {get_attr: [Compute, attributes, nova_server_resource]}
+
+  BlockStorageAllNodesValidationDeployment:
+    type: OS::Heat::StructuredDeployments
+    depends_on: BlockStorageAllNodesDeployment
+    properties:
+      name: BlockStorageAllNodesValidationDeployment
+      config: {get_resource: AllNodesValidationConfig}
+      servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
+
+  ObjectStorageAllNodesValidationDeployment:
+    type: OS::Heat::StructuredDeployments
+    depends_on: ObjectStorageAllNodesDeployment
+    properties:
+      name: ObjectStorageAllNodesValidationDeployment
+      config: {get_resource: AllNodesValidationConfig}
+      servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
+
+  CephStorageAllNodesValidationDeployment:
+    type: OS::Heat::StructuredDeployments
+    depends_on: CephStorageAllNodesDeployment
+    properties:
+      name: CephStorageAllNodesValidationDeployment
+      config: {get_resource: AllNodesValidationConfig}
+      servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
+
+  UpdateWorkflow:
+    type: OS::TripleO::Tasks::UpdateWorkflow
+    properties:
+      controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
+      compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
+      blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
+      objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
+      cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
+      input_values:
+        deploy_identifier: {get_param: DeployIdentifier}
+        update_identifier: {get_param: UpdateIdentifier}
+
+  # Optional ExtraConfig for all nodes - all roles are passed in here, but
+  # the nested template may configure each role differently (or not at all)
+  AllNodesExtraConfig:
+    type: OS::TripleO::AllNodesExtraConfig
+    depends_on:
+      - UpdateWorkflow
+      - ComputeAllNodesValidationDeployment
+      - BlockStorageAllNodesValidationDeployment
+      - ObjectStorageAllNodesValidationDeployment
+      - CephStorageAllNodesValidationDeployment
+      - ControllerAllNodesValidationDeployment
+    properties:
+      controller_servers: {get_attr: [Controller, attributes, nova_server_resource]}
+      compute_servers: {get_attr: [Compute, attributes, nova_server_resource]}
+      blockstorage_servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
+      objectstorage_servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
+      cephstorage_servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
+
+  # Nested stack deployment runs after all other controller deployments
+  ControllerNodesPostDeployment:
+    type: OS::TripleO::ControllerPostDeployment
+    depends_on: [ControllerAllNodesDeployment, ControllerSwiftDeployment]
+    properties:
+      servers: {get_attr: [Controller, attributes, nova_server_resource]}
+      RoleData: {get_attr: [ControllerServiceChain, role_data]}
+
+  ComputeNodesPostDeployment:
+    type: OS::TripleO::ComputePostDeployment
+    depends_on: [ComputeAllNodesDeployment]
+    properties:
+      servers: {get_attr: [Compute, attributes, nova_server_resource]}
+      RoleData: {get_attr: [ComputeServiceChain, role_data]}
+
+  ObjectStorageNodesPostDeployment:
+    type: OS::TripleO::ObjectStoragePostDeployment
+    depends_on: [ObjectStorageSwiftDeployment, ObjectStorageAllNodesDeployment]
+    properties:
+      servers: {get_attr: [ObjectStorage, attributes, nova_server_resource]}
+      RoleData: {get_attr: [ObjectStorageServiceChain, role_data]}
+
+  BlockStorageNodesPostDeployment:
+    type: OS::TripleO::BlockStoragePostDeployment
+    depends_on: [ControllerNodesPostDeployment, BlockStorageAllNodesDeployment]
+    properties:
+      servers: {get_attr: [BlockStorage, attributes, nova_server_resource]}
+      RoleData: {get_attr: [BlockStorageServiceChain, role_data]}
+
+  CephStorageNodesPostDeployment:
+    type: OS::TripleO::CephStoragePostDeployment
+    depends_on: [ControllerNodesPostDeployment, CephStorageAllNodesDeployment]
+    properties:
+      servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
+      RoleData: {get_attr: [CephStorageServiceChain, role_data]}
+
+
+outputs:
+  ManagedEndpoints:
+    description: Asserts that the keystone endpoints have been provisioned.
+    value: true
+  KeystoneURL:
+    description: URL for the Overcloud Keystone service
+    value: {get_attr: [EndpointMap, endpoint_map, KeystonePublic, uri]}
+  KeystoneAdminVip:
+    description: Keystone Admin VIP endpoint
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystoneAdminApiNetwork]}]}
+  PublicVip:
+    description: Controller VIP for public API endpoints
+    value: {get_attr: [VipMap, net_ip_map, external]}
+  AodhInternalVip:
+    description: VIP for Aodh API internal endpoint
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, AodhApiNetwork]}]}
+  CeilometerInternalVip:
+    description: VIP for Ceilometer API internal endpoint
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CeilometerApiNetwork]}]}
+  CinderInternalVip:
+    description: VIP for Cinder API internal endpoint
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, CinderApiNetwork]}]}
+  GlanceInternalVip:
+    description: VIP for Glance API internal endpoint
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GlanceApiNetwork]}]}
+  GnocchiInternalVip:
+    description: VIP for Gnocchi API internal endpoint
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, GnocchiApiNetwork]}]}
+  HeatInternalVip:
+    description: VIP for Heat API internal endpoint
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, HeatApiNetwork]}]}
+  IronicInternalVip:
+    description: VIP for Ironic API internal endpoint
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, IronicApiNetwork]}]}
+  KeystoneInternalVip:
+    description: VIP for Keystone API internal endpoint
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, KeystonePublicApiNetwork]}]}
+  ManilaInternalVip:
+    description: VIP for Manila API internal endpoint
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, ManilaApiNetwork]}]}
+  NeutronInternalVip:
+    description: VIP for Neutron API internal endpoint
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NeutronApiNetwork]}]}
+  NovaInternalVip:
+    description: VIP for Nova API internal endpoint
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, NovaApiNetwork]}]}
+  OpenDaylightInternalVip:
+    description: VIP for OpenDaylight API internal endpoint
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, OpenDaylightApiNetwork]}]}
+  SaharaInternalVip:
+    description: VIP for Sahara API internal endpoint
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SaharaApiNetwork]}]}
+  SwiftInternalVip:
+    description: VIP for Swift Proxy internal endpoint
+    value: {get_attr: [VipMap, net_ip_map, {get_attr: [ServiceNetMap, service_net_map, SwiftProxyNetwork]}]}
+  EndpointMap:
+    description: |
+      Mapping of the resources with the needed info for their endpoints.
+      This includes the protocol used, the IP, port and also a full
+      representation of the URI.
+    value: {get_attr: [EndpointMap, endpoint_map]}
+  HostsEntry:
+    description: |
+      The content that should be appended to your /etc/hosts if you want to get
+      hostname-based access to the deployed nodes (useful for testing without
+      setting up a DNS).
+    value: {get_attr: [allNodesConfig, hosts_entries]}
+  EnabledServices:
+    description: The services enabled on each role
+    value:
+      Controller: {get_attr: [ControllerServiceChain, role_data, service_names]}
+      Compute: {get_attr: [ComputeServiceChain, role_data, service_names]}
+      BlockStorage: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
+      ObjectStorage: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
+      CephStorage: {get_attr: [CephStorageServiceChain, role_data, service_names]}
index 4bdd0b8..a85c57c 100644 (file)
@@ -2,7 +2,7 @@ heat_template_version: 2016-04-08
 
 description: >
   Deploy an OpenStack environment, consisting of several node types (roles),
-  Controller, Compute, BlockStorage, SwiftStorage and CephStorage.  The Storage
+  Controller, Compute, BlockStorage, SwiftStorage and CephStorage. The Storage
   roles enable independent scaling of the storage components, but the minimal
   deployment is one Controller and one Compute node.
 
@@ -199,6 +199,7 @@ parameters:
       - OS::TripleO::Services::TripleoPackages
       - OS::TripleO::Services::TripleoFirewall
       - OS::TripleO::Services::OpenDaylight
+      - OS::TripleO::Services::SensuClient
     description: A list of service resources (configured in the Heat
                  resource_registry) which represent nested stacks
                  for each service that should get installed on the Controllers.
@@ -224,6 +225,7 @@ parameters:
       - OS::TripleO::Services::TripleoFirewall
       - OS::TripleO::Services::NeutronSriovAgent
       - OS::TripleO::Services::OpenDaylightOvs
+      - OS::TripleO::Services::SensuClient
     description: A list of service resources (configured in the Heat
                  resource_registry) which represent nested stacks
                  for each service that should get installed on the Compute Nodes.
@@ -249,6 +251,7 @@ parameters:
       - OS::TripleO::Services::Snmp
       - OS::TripleO::Services::TripleoPackages
       - OS::TripleO::Services::TripleoFirewall
+      - OS::TripleO::Services::SensuClient
     description: A list of service resources (configured in the Heat
                  resource_registry) which represent nested stacks
                  for each service that should get installed on the BlockStorage nodes.
@@ -275,6 +278,7 @@ parameters:
       - OS::TripleO::Services::Timezone
       - OS::TripleO::Services::TripleoPackages
       - OS::TripleO::Services::TripleoFirewall
+      - OS::TripleO::Services::SensuClient
     description: A list of service resources (configured in the Heat
                  resource_registry) which represent nested stacks
                  for each service that should get installed on the ObjectStorage nodes.
@@ -301,6 +305,7 @@ parameters:
       - OS::TripleO::Services::Timezone
       - OS::TripleO::Services::TripleoPackages
       - OS::TripleO::Services::TripleoFirewall
+      - OS::TripleO::Services::SensuClient
     description: A list of service resources (configured in the Heat
                  resource_registry) which represent nested stacks
                  for each service that should get installed on the CephStorage nodes.
@@ -448,6 +453,7 @@ resources:
           NodeIndex: '%index%'
           ServiceConfigSettings: {get_attr: [ControllerServiceChain, role_data, config_settings]}
           ServiceNames: {get_attr: [ControllerServiceChain, role_data, service_names]}
+          MonitoringSubscriptions: {get_attr: [ControllerServiceChain, role_data, monitoring_subscriptions]}
 
   ComputeServiceChain:
     type: OS::TripleO::Services
@@ -479,6 +485,7 @@ resources:
           NodeIndex: '%index%'
           ServiceConfigSettings: {get_attr: [ComputeServiceChain, role_data, config_settings]}
           ServiceNames: {get_attr: [ComputeServiceChain, role_data, service_names]}
+          MonitoringSubscriptions: {get_attr: [ComputeServiceChain, role_data, monitoring_subscriptions]}
 
   BlockStorageServiceChain:
     type: OS::TripleO::Services
@@ -511,6 +518,7 @@ resources:
           NodeIndex: '%index%'
           ServiceConfigSettings: {get_attr: [BlockStorageServiceChain, role_data, config_settings]}
           ServiceNames: {get_attr: [BlockStorageServiceChain, role_data, service_names]}
+          MonitoringSubscriptions: {get_attr: [BlockStorageServiceChain, role_data, monitoring_subscriptions]}
 
   ObjectStorageServiceChain:
     type: OS::TripleO::Services
@@ -543,6 +551,7 @@ resources:
           NodeIndex: '%index%'
           ServiceConfigSettings: {get_attr: [ObjectStorageServiceChain, role_data, config_settings]}
           ServiceNames: {get_attr: [ObjectStorageServiceChain, role_data, service_names]}
+          MonitoringSubscriptions: {get_attr: [ObjectStorageServiceChain, role_data, monitoring_subscriptions]}
 
   CephStorageServiceChain:
     type: OS::TripleO::Services
@@ -575,6 +584,7 @@ resources:
           NodeIndex: '%index%'
           ServiceConfigSettings: {get_attr: [CephStorageServiceChain, role_data, config_settings]}
           ServiceNames: {get_attr: [CephStorageServiceChain, role_data, service_names]}
+          MonitoringSubscriptions: {get_attr: [CephStorageServiceChain, role_data, monitoring_subscriptions]}
 
   ControllerIpListMap:
     type: OS::TripleO::Network::Ports::NetIpListMap
@@ -950,6 +960,7 @@ resources:
       servers: {get_attr: [CephStorage, attributes, nova_server_resource]}
       RoleData: {get_attr: [CephStorageServiceChain, role_data]}
 
+
 outputs:
   ManagedEndpoints:
     description: Asserts that the keystone endpoints have been provisioned.
index 829456b..fe2a916 100644 (file)
@@ -90,6 +90,9 @@ parameters:
   ServiceNames:
     type: comma_delimited_list
     default: []
+  MonitoringSubscriptions:
+    type: comma_delimited_list
+    default: []
   ConfigCommand:
     type: string
     description: Command which will be run whenever configuration data changes
@@ -252,6 +255,7 @@ resources:
             service_names:
               mapped_data:
                 service_names: {get_param: ServiceNames}
+                sensu::subscriptions: {get_param: MonitoringSubscriptions}
             service_configs:
               mapped_data:
                 map_replace:
index ef3f08f..2690653 100644 (file)
@@ -92,6 +92,9 @@ parameters:
   ServiceNames:
     type: comma_delimited_list
     default: []
+  MonitoringSubscriptions:
+    type: comma_delimited_list
+    default: []
   ConfigCommand:
     type: string
     description: Command which will be run whenever configuration data changes
@@ -258,6 +261,7 @@ resources:
             service_names:
               mapped_data:
                 service_names: {get_param: ServiceNames}
+                sensu::subscriptions: {get_param: MonitoringSubscriptions}
             service_configs:
               mapped_data:
                 map_replace:
index 1790aa0..0f9e031 100644 (file)
@@ -107,6 +107,9 @@ parameters:
   ServiceNames:
     type: comma_delimited_list
     default: []
+  MonitoringSubscriptions:
+    type: comma_delimited_list
+    default: []
   ConfigCommand:
     type: string
     description: Command which will be run whenever configuration data changes
@@ -271,6 +274,7 @@ resources:
             service_names:
               mapped_data:
                 service_names: {get_param: ServiceNames}
+                sensu::subscriptions: {get_param: MonitoringSubscriptions}
             service_configs:
               mapped_data:
                 map_replace:
index 0225231..a6efe1a 100644 (file)
@@ -188,6 +188,9 @@ parameters:
   ServiceNames:
     type: comma_delimited_list
     default: []
+  MonitoringSubscriptions:
+    type: comma_delimited_list
+    default: []
   ConfigCommand:
     type: string
     description: Command which will be run whenever configuration data changes
@@ -400,6 +403,7 @@ resources:
             service_names:
               mapped_data:
                 service_names: {get_param: ServiceNames}
+                sensu::subscriptions: {get_param: MonitoringSubscriptions}
             service_configs:
               mapped_data:
                 map_replace:
index cc1f4b0..65afffa 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionAodhApi:
+    default: 'overcloud-ceilometer-aodh-api'
+    type: string
 
 resources:
   AodhBase:
@@ -39,6 +42,7 @@ outputs:
     description: Role data for the Aodh API service.
     value:
       service_name: aodh_api
+      monitoring_subscription: {get_param: MonitoringSubscriptionAodhApi}
       config_settings:
         map_merge:
           - get_attr: [AodhBase, role_data, config_settings]
index 3988c94..405c500 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionAodhEvaluator:
+    default: 'overcloud-ceilometer-aodh-evaluator'
+    type: string
 
 resources:
   AodhBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Aodh Evaluator service.
     value:
       service_name: aodh_evaluator
+      monitoring_subscription: {get_param: MonitoringSubscriptionAodhEvaluator}
       config_settings:
         get_attr: [AodhBase, role_data, config_settings]
       step_config: |
index bc1ccde..fc4e8b3 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionAodhListener:
+    default: 'overcloud-ceilometer-aodh-listener'
+    type: string
 
 resources:
   AodhBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Aodh Listener service.
     value:
       service_name: aodh_listener
+      monitoring_subscription: {get_param: MonitoringSubscriptionAodhListener}
       config_settings:
         get_attr: [AodhBase, role_data, config_settings]
       step_config: |
index 66e9f3e..2e51c63 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionAodhNotifier:
+    default: 'overcloud-ceilometer-aodh-notifier'
+    type: string
 
 resources:
   AodhBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Aodh Notifier service.
     value:
       service_name: aodh_notifier
+      monitoring_subscription: {get_param: MonitoringSubscriptionAodhNotifier}
       config_settings:
         get_attr: [AodhBase, role_data, config_settings]
       step_config: |
index 72bad63..5d980d7 100644 (file)
@@ -22,6 +22,9 @@ parameters:
     description: The password for the redis service account.
     type: string
     hidden: true
+  MonitoringSubscriptionCeilometerCentral:
+    default: 'overcloud-ceilometer-agent-central'
+    type: string
 
 resources:
   CeilometerServiceBase:
@@ -36,6 +39,7 @@ outputs:
     description: Role data for the Ceilometer Central Agent role.
     value:
       service_name: ceilometer_agent_central
+      monitoring_subscription: {get_param: MonitoringSubscriptionCeilometerCentral}
       config_settings:
         map_merge:
           - get_attr: [CeilometerServiceBase, role_data, config_settings]
index 5bfecfe..5457539 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionCeilometerCompute:
+    default: 'overcloud-ceilometer-agent-compute'
+    type: string
 
 resources:
   CeilometerServiceBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Ceilometer Compute Agent role.
     value:
       service_name: ceilometer_agent_compute
+      monitoring_subscription: {get_param: MonitoringSubscriptionCeilometerCompute}
       config_settings:
         get_attr: [CeilometerServiceBase, role_data, config_settings]
       step_config: |
index 7873706..bedb8b0 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionCeilometerNotification:
+    default: 'overcloud-ceilometer-agent-notification'
+    type: string
 
 
 resources:
@@ -33,6 +36,7 @@ outputs:
     description: Role data for the Ceilometer Notification Agent role.
     value:
       service_name: ceilometer_agent_notification
+      monitoring_subscription: {get_param: MonitoringSubscriptionCeilometerNotification}
       config_settings:
         get_attr: [CeilometerServiceBase, role_data, config_settings]
       step_config: |
index 2baac51..5df9f2b 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionCeilometerApi:
+    default: 'overcloud-ceilometer-api'
+    type: string
 
 
 resources:
@@ -40,6 +43,7 @@ outputs:
     description: Role data for the Ceilometer API role.
     value:
       service_name: ceilometer_api
+      monitoring_subscription: {get_param: MonitoringSubscriptionCeilometerApi}
       config_settings:
         map_merge:
           - get_attr: [ApacheServiceBase, role_data, config_settings]
index ef7ffbd..9dbb275 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionCeilometerCollector:
+    default: 'overcloud-ceilometer-collector'
+    type: string
 
 resources:
   CeilometerServiceBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Ceilometer Collector role.
     value:
       service_name: ceilometer_collector
+      monitoring_subscription: {get_param: MonitoringSubscriptionCeilometerCollector}
       config_settings:
         get_attr: [CeilometerServiceBase, role_data, config_settings]
       step_config: |
index 63a6d41..3b811c4 100644 (file)
@@ -18,7 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
-
+  MonitoringSubscriptionCeilometerExpirer:
+    default: 'overcloud-ceilometer-expirer'
+    type: string
 
 resources:
   CeilometerServiceBase:
@@ -33,6 +35,7 @@ outputs:
     description: Role data for the Ceilometer Expirer role.
     value:
       service_name: ceilometer_expirer
+      monitoring_subscription: {get_param: MonitoringSubscriptionCeilometerExpirer}
       config_settings:
         get_attr: [CeilometerServiceBase, role_data, config_settings]
       step_config: |
index a9e4621..b482dd2 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionCephClient:
+    default: 'overcloud-ceph-client'
+    type: string
 
 resources:
   CephBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Cinder OSD service.
     value:
       service_name: ceph_client
+      monitoring_subscription: {get_param: MonitoringSubscriptionCephClient}
       config_settings:
         get_attr: [CephBase, role_data, config_settings]
       step_config: |
index 959cee2..52c4824 100644 (file)
@@ -47,12 +47,16 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionCephExternal:
+    default: 'overcloud-ceph-external'
+    type: string
 
 outputs:
   role_data:
     description: Role data for the Ceph External service.
     value:
       service_name: ceph_external
+      monitoring_subscription: {get_param: MonitoringSubscriptionCephExternal}
       config_settings:
         tripleo::profile::base::ceph::ceph_mon_host: {get_param: CephExternalMonHost}
         ceph::profile::params::fsid: {get_param: CephClusterFSID}
index f634ce8..a2b3f13 100644 (file)
@@ -53,6 +53,9 @@ parameters:
       }
     default: {}
     type: json
+  MonitoringSubscriptionCephMon:
+    default: 'overcloud-ceph-mon'
+    type: string
 
 resources:
   CephBase:
@@ -67,6 +70,7 @@ outputs:
     description: Role data for the Ceph Monitor service.
     value:
       service_name: ceph_mon
+      monitoring_subscription: {get_param: MonitoringSubscriptionCephMon}
       config_settings:
         map_merge:
           - get_attr: [CephBase, role_data, config_settings]
index d18ccab..f637872 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionCephOsd:
+    default: 'overcloud-ceph-osd'
+    type: string
 
 resources:
   CephBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Cinder OSD service.
     value:
       service_name: ceph_osd
+      monitoring_subscription: {get_param: MonitoringSubscriptionCephOsd}
       config_settings:
         map_merge:
           - get_attr: [CephBase, role_data, config_settings]
index 5df0739..94c94a6 100644 (file)
@@ -31,6 +31,9 @@ parameters:
     type: string
     default: 'regionOne'
     description: Keystone region for endpoint
+  MonitoringSubscriptionCinderApi:
+    default: 'overcloud-cinder-api'
+    type: string
 
 resources:
 
@@ -46,6 +49,7 @@ outputs:
     description: Role data for the Cinder API role.
     value:
       service_name: cinder_api
+      monitoring_subscription: {get_param: MonitoringSubscriptionCinderApi}
       config_settings:
         map_merge:
           - get_attr: [CinderBase, role_data, config_settings]
index f92fdfd..8079545 100644 (file)
@@ -30,6 +30,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionCinderBackup:
+    default: 'overcloud-cinder-backup'
+    type: string
 
 resources:
 
@@ -45,6 +48,7 @@ outputs:
     description: Role data for the Cinder Backup role.
     value:
       service_name: cinder_backup
+      monitoring_subscription: {get_param: MonitoringSubscriptionCinderBackup}
       config_settings:
         map_merge:
           - get_attr: [CinderBase, role_data, config_settings]
index 129706b..1326e26 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionCinderScheduler:
+    default: 'overcloud-cinder-scheduler'
+    type: string
 
 resources:
 
@@ -33,6 +36,7 @@ outputs:
     description: Role data for the Cinder Scheduler role.
     value:
       service_name: cinder_scheduler
+      monitoring_subscription: {get_param: MonitoringSubscriptionCinderScheduler}
       config_settings:
         map_merge:
           - get_attr: [CinderBase, role_data, config_settings]
index de7e6ba..5b63da4 100644 (file)
@@ -56,6 +56,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionCinderVolume:
+    default: 'overcloud-cinder-volume'
+    type: string
 
 resources:
 
@@ -71,6 +74,7 @@ outputs:
     description: Role data for the Cinder Volume role.
     value:
       service_name: cinder_volume
+      monitoring_subscription: {get_param: MonitoringSubscriptionCinderVolume}
       config_settings:
         map_merge:
           - get_attr: [CinderBase, role_data, config_settings]
index d2376af..23689e2 100644 (file)
@@ -73,12 +73,16 @@ parameters:
     type: string
     default: 'regionOne'
     description: Keystone region for endpoint
+  MonitoringSubscriptionGlanceApi:
+    default: 'overcloud-glance-api'
+    type: string
 
 outputs:
   role_data:
     description: Role data for the Glance API role.
     value:
       service_name: glance_api
+      monitoring_subscription: {get_param: MonitoringSubscriptionGlanceApi}
       config_settings:
         glance::api::database_connection:
           list_join:
index 06ef937..f633567 100644 (file)
@@ -30,12 +30,16 @@ parameters:
     default: 0
     description: Number of workers for Glance service.
     type: number
+  MonitoringSubscriptionGlanceRegistry:
+    default: 'overcloud-glance-registry'
+    type: string
 
 outputs:
   role_data:
     description: Role data for the Glance Registry role.
     value:
       service_name: glance_registry
+      monitoring_subscription: {get_param: MonitoringSubscriptionGlanceRegistry}
       config_settings:
         glance::registry::database_connection:
           list_join:
@@ -61,7 +65,6 @@ outputs:
           - "%{hiera('mysql_bind_host')}"
         glance::registry::db::database_db_max_retries: -1
         glance::registry::db::database_max_retries: -1
-
         tripleo.glance_registry.firewall_rules:
           '112 glance_registry':
             dport:
index dc6e7de..650865e 100644 (file)
@@ -33,6 +33,9 @@ parameters:
     type: string
     default: 'regionOne'
     description: Keystone region for endpoint
+  MonitoringSubscriptionGnocchiApi:
+    default: 'overcloud-gnocchi-api'
+    type: string
 
 resources:
 
@@ -55,6 +58,7 @@ outputs:
     description: Role data for the Gnocchi role.
     value:
       service_name: gnocchi_api
+      monitoring_subscription: {get_param: MonitoringSubscriptionGnocchiApi}
       config_settings:
         map_merge:
           - get_attr: [ApacheServiceBase, role_data, config_settings]
index 205d055..ebdebd1 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionGnocchiMetricd:
+    default: 'overcloud-gnocchi-metricd'
+    type: string
 
 resources:
   GnocchiServiceBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Gnocchi role.
     value:
       service_name: gnocchi_metricd
+      monitoring_subscription: {get_param: MonitoringSubscriptionGnocchiMetricd}
       config_settings:
         map_merge:
           - get_attr: [GnocchiServiceBase, role_data, config_settings]
index 018ad2b..04339f4 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionGnocchiStatsd:
+    default: 'overcloud-gnocchi-statsd'
+    type: string
 
 resources:
   GnocchiServiceBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Gnocchi role.
     value:
       service_name: gnocchi_statsd
+      monitoring_subscription: {get_param: MonitoringSubscriptionGnocchiStatsd}
       config_settings:
         map_merge:
           - get_attr: [GnocchiServiceBase, role_data, config_settings]
index 6885449..df23e6e 100644 (file)
@@ -44,12 +44,16 @@ parameters:
         Specifies the interface where the public-facing virtual ip will be assigned.
         This should be int_public when a VLAN is being used.
     type: string
+  MonitoringSubscriptionHaproxy:
+    default: 'overcloud-haproxy'
+    type: string
 
 outputs:
   role_data:
     description: Role data for the HAproxy role.
     value:
       service_name: haproxy
+      monitoring_subscription: {get_param: MonitoringSubscriptionHaproxy}
       config_settings:
         tripleo.haproxy.firewall_rules:
           '107 haproxy stats':
index a15ea32..61a6907 100644 (file)
@@ -30,6 +30,9 @@ parameters:
     type: string
     default: 'regionOne'
     description: Keystone region for endpoint
+  MonitoringSubscriptionHeatApiCnf:
+    default: 'overcloud-heat-api-cfn'
+    type: string
 
 resources:
   HeatBase:
@@ -44,6 +47,7 @@ outputs:
     description: Role data for the Heat CloudFormation API role.
     value:
       service_name: heat_api_cfn
+      monitoring_subscription: {get_param: MonitoringSubscriptionHeatApiCnf}
       config_settings:
         map_merge:
           - get_attr: [HeatBase, role_data, config_settings]
index 6d645ee..c12e56e 100644 (file)
@@ -22,6 +22,9 @@ parameters:
     default: 0
     description: Number of workers for Heat service.
     type: number
+  MonitoringSubscriptionHeatApiCloudwatch:
+    default: 'overcloud-heat-api-cloudwatch'
+    type: string
 
 resources:
   HeatBase:
@@ -36,6 +39,7 @@ outputs:
     description: Role data for the Heat Cloudwatch API role.
     value:
       service_name: heat_api_cloudwatch
+      monitoring_subscription: {get_param: MonitoringSubscriptionHeatApiCloudwatch}
       config_settings:
         map_merge:
           - get_attr: [HeatBase, role_data, config_settings]
index ec3b0e3..64b0c53 100644 (file)
@@ -30,6 +30,9 @@ parameters:
     type: string
     default: 'regionOne'
     description: Keystone region for endpoint
+  MonitoringSubscriptionHeatApi:
+    default: 'overcloud-heat-api'
+    type: string
 
 resources:
   HeatBase:
@@ -44,6 +47,7 @@ outputs:
     description: Role data for the Heat API role.
     value:
       service_name: heat_api
+      monitoring_subscription: {get_param: MonitoringSubscriptionHeatApi}
       config_settings:
         map_merge:
           - get_attr: [HeatBase, role_data, config_settings]
index 1b4f8e7..089bf53 100644 (file)
@@ -40,6 +40,9 @@ parameters:
     type: string
     hidden: true
     default: ''
+  MonitoringSubscriptionHeatEngine:
+    default: 'overcloud-heat-engine'
+    type: string
 
 resources:
   HeatBase:
@@ -54,6 +57,7 @@ outputs:
     description: Role data for the Heat Engine role.
     value:
       service_name: heat_engine
+      monitoring_subscription: {get_param: MonitoringSubscriptionHeatEngine}
       config_settings:
         map_merge:
           - get_attr: [HeatBase, role_data, config_settings]
index 1ea686b..c8ec2b2 100644 (file)
@@ -40,12 +40,16 @@ parameters:
     default: false
     description: Enable IPv6 features in Memcached.
     type: boolean
+  MonitoringSubscriptionHorizon:
+    default: 'overcloud-horizon'
+    type: string
 
 outputs:
   role_data:
     description: Role data for the Horizon role.
     value:
       service_name: horizon
+      monitoring_subscription: {get_param: MonitoringSubscriptionHorizon}
       config_settings:
         horizon::allowed_hosts: {get_param: HorizonAllowedHosts}
         neutron::plugins::ml2::mechanism_drivers:
index 96ba7aa..5b55bd5 100644 (file)
@@ -22,6 +22,9 @@ parameters:
     description: The password for the Ironic service and db account, used by the Ironic services
     type: string
     hidden: true
+  MonitoringSubscriptionIronicApi:
+    default: 'overcloud-ironic-api'
+    type: string
 
 resources:
   IronicBase:
@@ -36,6 +39,7 @@ outputs:
     description: Role data for the Ironic API role.
     value:
       service_name: ironic_api
+      monitoring_subscription: {get_param: MonitoringSubscriptionIronicApi}
       config_settings:
         map_merge:
           - get_attr: [IronicBase, role_data, config_settings]
index 4008f97..97369cd 100644 (file)
@@ -22,6 +22,9 @@ parameters:
     default: ['pxe_ipmitool', 'agent_ipmitool']
     description: Enabled Ironic drivers
     type: comma_delimited_list
+  MonitoringSubscriptionIronicConductor:
+    default: 'overcloud-ironic-conductor'
+    type: string
 
 resources:
   IronicBase:
@@ -36,6 +39,7 @@ outputs:
     description: Role data for the Ironic conductor role.
     value:
       service_name: ironic_conductor
+      monitoring_subscription: {get_param: MonitoringSubscriptionIronicConductor}
       config_settings:
         map_merge:
           - get_attr: [IronicBase, role_data, config_settings]
index b783345..2b069d6 100644 (file)
@@ -28,12 +28,16 @@ parameters:
         Specifies the interface where the public-facing virtual ip will be assigned.
         This should be int_public when a VLAN is being used.
     type: string
+  MonitoringSubscriptionKeepalived:
+    default: 'overcloud-keepalived'
+    type: string
 
 outputs:
   role_data:
     description: Role data for the Keepalived role.
     value:
       service_name: keepalived
+      monitoring_subscription: {get_param: MonitoringSubscriptionKeepalived}
       config_settings:
         tripleo::keepalived::control_virtual_interface: {get_param: ControlVirtualInterface}
         tripleo::keepalived::public_virtual_interface: {get_param: PublicVirtualInterface}
index 45531ab..7903304 100644 (file)
@@ -84,6 +84,9 @@ parameters:
     type: string
     description: Set the number of workers for keystone::wsgi::apache
     default: '"%{::processorcount}"'
+  MonitoringSubscriptionKeystone:
+    default: 'overcloud-kestone'
+    type: string
 
 resources:
 
@@ -99,6 +102,7 @@ outputs:
     description: Role data for the Keystone role.
     value:
       service_name: keystone
+      monitoring_subscription: {get_param: MonitoringSubscriptionKeystone}
       config_settings:
       config_settings:
         map_merge:
index b398774..2e43730 100644 (file)
@@ -26,6 +26,9 @@ parameters:
     type: string
     default: 'regionOne'
     description: Keystone region for endpoint
+  MonitoringSubscriptionManilaApi:
+    default: 'overcloud-manila-api'
+    type: string
 
 resources:
   ManilaBase:
@@ -40,6 +43,7 @@ outputs:
     description: Role data for the Manila-api role.
     value:
       service_name: manila_api
+      monitoring_subscription: {get_param: MonitoringSubscriptionManilaApi}
       config_settings:
         map_merge:
           - get_attr: [ManilaBase, role_data, config_settings]
index a5122ba..28addd6 100644 (file)
@@ -30,6 +30,9 @@ parameters:
     description: The password for the manila service account.
     type: string
     hidden: true
+  MonitoringSubscriptionManilaScheduler:
+    default: 'overcloud-manila-scheduler'
+    type: string
 
 resources:
   ManilaBase:
@@ -44,6 +47,7 @@ outputs:
     description: Role data for the Manila-scheduler role.
     value:
       service_name: manila_scheduler
+      monitoring_subscription: {get_param: MonitoringSubscriptionManilaScheduler}
       config_settings:
         map_merge:
           - get_attr: [ManilaBase, role_data, config_settings]
@@ -65,4 +69,3 @@ outputs:
                   - '/manila'
       step_config: |
         include ::tripleo::profile::base::manila::scheduler
-
index 184f369..e42d2fa 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionManilaShare:
+    default: 'overcloud-manila-share'
+    type: string
 
 resources:
   ManilaBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Manila-share role.
     value:
       service_name: manila_share
+      monitoring_subscription: {get_param: MonitoringSubscriptionManilaShare}
       config_settings:
         map_merge:
           - get_attr: [ManilaBase, role_data, config_settings]
index 3b47261..9e3f637 100644 (file)
@@ -18,12 +18,16 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionMemcached:
+    default: 'overcloud-memcached'
+    type: string
 
 outputs:
   role_data:
     description: Role data for the Memcached role.
     value:
       service_name: memcached
+      monitoring_subscription: {get_param: MonitoringSubscriptionMemcached}
       config_settings:
         # NOTE: bind IP is found in Heat replacing the network name with the local node IP
         # for the given network; replacement examples (eg. for internal_api):
diff --git a/puppet/services/monitoring/sensu-base.yaml b/puppet/services/monitoring/sensu-base.yaml
new file mode 100644 (file)
index 0000000..d7350d0
--- /dev/null
@@ -0,0 +1,68 @@
+heat_template_version: 2016-04-08
+
+description: Sensu base service
+
+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
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  DefaultPasswords:
+    default: {}
+    type: json
+  MonitoringRabbitHost:
+    description: RabbitMQ host Sensu has to connect to.
+    type: string
+    default: ''
+  MonitoringRabbitPort:
+    default: 5672
+    description: Set RabbitMQ subscriber port, change this if using SSL.
+    type: number
+  MonitoringRabbitUseSSL:
+    default: false
+    description: >
+        RabbitMQ client subscriber parameter to specify an SSL connection
+        to the RabbitMQ host.
+    type: string
+  MonitoringRabbitPassword:
+    description: The RabbitMQ password used for monitoring purposes.
+    type: string
+    hidden: true
+  MonitoringRabbitUserName:
+    description: The RabbitMQ username used for monitoring purposes.
+    type: string
+    default: sensu
+  MonitoringRabbitVhost:
+    description: The RabbitMQ vhost used for monitoring purposes.
+    type: string
+    default: '/sensu'
+
+
+outputs:
+  role_data:
+    description: Role data for the Sensu role.
+    value:
+      service_name: sensu_base
+      config_settings:
+        sensu::enterprise: false
+        sensu::enterprise_dashboard: false
+        sensu::install_repo: false
+        sensu::manage_user: false
+        sensu::rabbitmq_host: {get_param: MonitoringRabbitHost}
+        sensu::rabbitmq_password: {get_param: MonitoringRabbitPassword}
+        sensu::rabbitmq_port: {get_param: MonitoringRabbitPort}
+        sensu::rabbitmq_ssl: {get_param: MonitoringRabbitUseSSL}
+        sensu::rabbitmq_user: {get_param: MonitoringRabbitUserName}
+        sensu::rabbitmq_vhost: {get_param: MonitoringRabbitVhost}
+        #sensu::redis_host: {get_param: MonitoringRedisHost}
+        #sensu::redis_password: {get_param: MonitoringRedisPassword}
+        sensu::sensu_plugin_provider: 'yum'
+        sensu::sensu_plugin_name: 'rubygem-sensu-plugin'
+        sensu::version: 'present'
diff --git a/puppet/services/monitoring/sensu-client.yaml b/puppet/services/monitoring/sensu-client.yaml
new file mode 100644 (file)
index 0000000..3f37e75
--- /dev/null
@@ -0,0 +1,49 @@
+heat_template_version: 2016-04-08
+
+description: Sensu client 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
+  SensuClientCustomConfig:
+    default: {}
+    description: Hash containing custom sensu-client variables.
+    type: json
+    label: Custom configuration for Sensu Client variables
+
+resources:
+  SensuBase:
+    type: ./sensu-base.yaml
+    properties:
+      ServiceNetMap: {get_param: ServiceNetMap}
+      DefaultPasswords: {get_param: DefaultPasswords}
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Sensu client role.
+    value:
+      service_name: sensu_client
+      monitoring_subscription: all
+      config_settings:
+        map_merge:
+          - get_attr: [SensuBase, role_data, config_settings]
+          - sensu::api: false
+            sensu::client: true
+            sensu::server: false
+            sensu::client_custom: {get_param: SensuClientCustomConfig}
+      step_config: |
+        include ::tripleo::profile::base::monitoring::sensu
index cd8a20a..023d136 100644 (file)
@@ -46,6 +46,9 @@ parameters:
     type: string
     default: 'regionOne'
     description: Keystone region for endpoint
+  MonitoringSubscriptionNeutronServer:
+    default: 'overcloud-neutron-server'
+    type: string
 
 resources:
 
@@ -61,6 +64,7 @@ outputs:
     description: Role data for the Neutron Server agent service.
     value:
       service_name: neutron_api
+      monitoring_subscription: {get_param: MonitoringSubscriptionNeutronServer}
       config_settings:
         map_merge:
           - get_attr: [NeutronBase, role_data, config_settings]
index 513cb2d..b2ad5da 100644 (file)
@@ -31,6 +31,9 @@ parameters:
     default: false
     description: If True, DHCP always provides metadata route to VM.
     type: boolean
+  MonitoringSubscriptionNeutronDhcp:
+    default: 'overcloud-neutron-dhcp'
+    type: string
 
 resources:
 
@@ -46,6 +49,7 @@ outputs:
     description: Role data for the Neutron DHCP agent service.
     value:
       service_name: neutron_dhcp
+      monitoring_subscription: {get_param: MonitoringSubscriptionNeutronDhcp}
       config_settings:
         map_merge:
           - get_attr: [NeutronBase, role_data, config_settings]
index 0f3c2a7..5eb3e25 100644 (file)
@@ -26,6 +26,9 @@ parameters:
     description: Name of bridge used for external network traffic.
     type: string
     default: 'br-ex'
+  MonitoringSubscriptionNeutronL3Dvr:
+    default: 'overcloud-neutron-l3-dvr'
+    type: string
 
 resources:
 
@@ -41,6 +44,7 @@ outputs:
     description: Role data for DVR L3 Agent on Compute Nodes
     value:
       service_name: neutron_l3_compute_dvr
+      monitoring_subscription: {get_param: MonitoringSubscriptionNeutronL3Dvr}
       config_settings:
         map_merge:
           - get_attr: [NeutronBase, role_data, config_settings]
index 54beee6..de62a50 100644 (file)
@@ -34,6 +34,9 @@ parameters:
       - allowed_values:
         - legacy
         - dvr_snat
+  MonitoringSubscriptionNeutronL3:
+    default: 'overcloud-neutron-l3-agent'
+    type: string
 
 resources:
 
@@ -49,6 +52,7 @@ outputs:
     description: Role data for the Neutron L3 agent service.
     value:
       service_name: neutron_l3
+      monitoring_subscription: {get_param: MonitoringSubscriptionNeutronL3}
       config_settings:
         map_merge:
           - get_attr: [NeutronBase, role_data, config_settings]
index 6bb931b..320ae0c 100644 (file)
@@ -30,6 +30,9 @@ parameters:
     description: The password for the neutron service and db account, used by neutron agents.
     type: string
     hidden: true
+  MonitoringSubscriptionNeutronMetadata:
+    default: 'overcloud-neutron-metadata'
+    type: string
 
 resources:
 
@@ -45,6 +48,7 @@ outputs:
     description: Role data for the Neutron Metadata agent service.
     value:
       service_name: neutron_metadata
+      monitoring_subscription: {get_param: MonitoringSubscriptionNeutronMetadata}
       config_settings:
         map_merge:
           - get_attr: [NeutronBase, role_data, config_settings]
index 48830d8..0de256c 100644 (file)
@@ -40,12 +40,16 @@ parameters:
     description: 'Whether enable Cassandra cluster on Controller'
     type: boolean
     default: false
+  MonitoringSubscriptionNeutronMidonet:
+    default: 'overcloud-neutron-midonet'
+    type: string
 
 outputs:
   role_data:
     description: Role data for the Neutron Midonet plugin and services
     value:
       service_name: neutron_midonet
+      monitoring_subscription: {get_param: MonitoringSubscriptionNeutronMidonet}
       config_settings:
         tripleo::profile::base::neutron::midonet::admin_password: {get_param: AdminPassword}
         tripleo::profile::base::neutron::midonet::keystone_admin_token: {get_param: AdminToken}
index 1b19f90..36b609f 100644 (file)
@@ -53,6 +53,9 @@ parameters:
     description: |
       Enable ARP responder feature in the OVS Agent.
     type: boolean
+  MonitoringSubscriptionNeutronOvs:
+    default: 'overcloud-neutron-ovs-agent'
+    type: string
 
 resources:
 
@@ -68,6 +71,7 @@ outputs:
     description: Role data for the Neutron OVS agent service.
     value:
       service_name: neutron_ovs_agent
+      monitoring_subscription: {get_param: MonitoringSubscriptionNeutronOvs}
       config_settings:
         map_merge:
           - get_attr: [NeutronBase, role_data, config_settings]
index b5c3815..e1dbd8e 100644 (file)
@@ -43,6 +43,9 @@ parameters:
     description: |
         Whether to create cron job for purging soft deleted rows in Nova database.
     type: boolean
+  MonitoringSubscriptionNovaApi:
+    default: 'overcloud-nova-api'
+    type: string
 
 resources:
   NovaBase:
@@ -57,6 +60,7 @@ outputs:
     description: Role data for the Nova API service.
     value:
       service_name: nova_api
+      monitoring_subscription: {get_param: MonitoringSubscriptionNovaApi}
       config_settings:
         map_merge:
           - get_attr: [NovaBase, role_data, config_settings]
index e8849a0..ccdcb52 100644 (file)
@@ -67,6 +67,9 @@ parameters:
     default: 2048
     constraints:
       - range: { min: 512 }
+  MonitoringSubscriptionNovaCompute:
+    default: 'overcloud-nova-compute'
+    type: string
 
 resources:
   NovaBase:
@@ -81,6 +84,7 @@ outputs:
     description: Role data for the Nova Compute service.
     value:
       service_name: nova_compute
+      monitoring_subscription: {get_param: MonitoringSubscriptionNovaCompute}
       config_settings:
         map_merge:
           - get_attr: [NovaBase, role_data, config_settings]
index 0b6169d..5dbc7ca 100644 (file)
@@ -22,6 +22,9 @@ parameters:
     default: 0
     description: Number of workers for Nova Conductor service.
     type: number
+  MonitoringSubscriptionNovaConductor:
+    default: 'overcloud-nova-conductor'
+    type: string
 
 resources:
   NovaBase:
@@ -36,6 +39,7 @@ outputs:
     description: Role data for the Nova Conductor service.
     value:
       service_name: nova_conductor
+      monitoring_subscription: {get_param: MonitoringSubscriptionNovaConductor}
       config_settings:
         map_merge:
           - get_attr: [NovaBase, role_data, config_settings]
index 67ff2ec..13e3a26 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionNovaConsoleauth:
+    default: 'overcloud-nova-consoleauth'
+    type: string
 
 resources:
   NovaBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Nova Consoleauth service.
     value:
       service_name: nova_consoleauth
+      monitoring_subscription: {get_param: MonitoringSubscriptionNovaConsoleauth}
       config_settings:
         get_attr: [NovaBase, role_data, config_settings]
       step_config: |
index 1ebec97..b5ca243 100644 (file)
@@ -21,6 +21,9 @@ parameters:
   NovaComputeLibvirtType:
     type: string
     default: kvm
+  MonitoringSubscriptionNovaLibvirt:
+    default: 'overcloud-nova-libvirt'
+    type: string
 
 resources:
   NovaBase:
@@ -35,6 +38,7 @@ outputs:
     description: Role data for the Libvirt service.
     value:
       service_name: nova_libvirt
+      monitoring_subscription: {get_param: MonitoringSubscriptionNovaLibvirt}
       config_settings:
         map_merge:
           - get_attr: [NovaBase, role_data, config_settings]
index c8f2591..3ffc9c5 100644 (file)
@@ -29,6 +29,9 @@ parameters:
       An array of filters used by Nova to filter a node.These filters will be
       applied in the order they are listed, so place your most restrictive
       filters first to make the filtering process more efficient.
+  MonitoringSubscriptionNovaScheduler:
+    default: 'overcloud-nova-scheduler'
+    type: string
 
 resources:
   NovaBase:
@@ -43,6 +46,7 @@ outputs:
     description: Role data for the Nova Scheduler service.
     value:
       service_name: nova_scheduler
+      monitoring_subscription: {get_param: MonitoringSubscriptionNovaScheduler}
       config_settings:
         map_merge:
           - get_attr: [NovaBase, role_data, config_settings]
index 7444d7d..ce15fcc 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionNovaVNCProxy:
+    default: 'overcloud-nova-vncproxy'
+    type: string
 
 resources:
   NovaBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Nova Vncproxy service.
     value:
       service_name: nova_vncproxy
+      monitoring_subscription: {get_param: MonitoringSubscriptionNovaVNCProxy}
       config_settings:
         map_merge:
           - get_attr: [NovaBase, role_data, config_settings]
index ac5b85c..3101676 100644 (file)
@@ -18,12 +18,16 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionPacemaker:
+    default: 'overcloud-pacemaker'
+    type: string
 
 outputs:
   role_data:
     description: Role data for the Pacemaker role.
     value:
       service_name: pacemaker
+      monitoring_subscription: {get_param: MonitoringSubscriptionPacemaker}
       config_settings:
         pacemaker::corosync::cluster_name: 'tripleo_cluster'
         pacemaker::corosync::manage_fw: false
index 7871487..5dcb62c 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionCeilometerCentral:
+    default: 'overcloud-ceilometer-agent-central'
+    type: string
 
 resources:
   CeilometerServiceBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Ceilometer Central Agent pacemaker role.
     value:
       service_name: ceilometer_agent_central
+      monitoring_subscription: {get_param: MonitoringSubscriptionCeilometerCentral}
       config_settings:
         map_merge:
           - get_attr: [CeilometerServiceBase, role_data, config_settings]
index 6290203..dbe1449 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionCeilometerNotification:
+    default: 'overcloud-ceilometer-agent-notification'
+    type: string
 
 resources:
   CeilometerServiceBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Ceilometer Notification Agent pacemaker role.
     value:
       service_name: ceilometer_agent_notification
+      monitoring_subscription: {get_param: MonitoringSubscriptionCeilometerNotification}
       config_settings:
         map_merge:
           - get_attr: [CeilometerServiceBase, role_data, config_settings]
index d130a4b..4b6c18f 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionCeilometerApi:
+    default: 'overcloud-ceilometer-api'
+    type: string
 
 resources:
   CeilometerServiceBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Ceilometer API pacemaker role.
     value:
       service_name: ceilometer_api
+      monitoring_subscription: {get_param: MonitoringSubscriptionCeilometerApi}
       config_settings:
         map_merge:
           - get_attr: [CeilometerServiceBase, role_data, config_settings]
index 97da92e..4c91951 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionCeilometerCollector:
+    default: 'overcloud-ceilometer-collector'
+    type: string
 
 resources:
   CeilometerServiceBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Ceilometer Collector pacemaker role.
     value:
       service_name: ceilometer_collector
+      monitoring_subscription: {get_param: MonitoringSubscriptionCeilometerCollector}
       config_settings:
         map_merge:
           - get_attr: [CeilometerServiceBase, role_data, config_settings]
index 7c83037..e4bcfc3 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Cinder API role.
     value:
       service_name: cinder_api
+      monitoring_subscription: {get_attr: [CinderApiBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [CinderApiBase, role_data, config_settings]
index 7e940c7..2ebc768 100644 (file)
@@ -48,6 +48,7 @@ outputs:
     description: Role data for the Cinder Backup role.
     value:
       service_name: cinder_backup
+      monitoring_subscription: {get_attr: [CinderBackupBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [CinderBackupBase, role_data, config_settings]
index 6f26b41..eb578e5 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Cinder Scheduler role.
     value:
       service_name: cinder_scheduler
+      monitoring_subscription: {get_attr: [CinderSchedulerBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [CinderSchedulerBase, role_data, config_settings]
index ffcdb52..d5dedf3 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Cinder Volume role.
     value:
       service_name: cinder_volume
+      monitoring_subscription: {get_attr: [CinderVolumeBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [CinderVolumeBase, role_data, config_settings]
index ef4ba79..684785a 100644 (file)
@@ -57,6 +57,7 @@ outputs:
     description: Role data for the Glance role.
     value:
       service_name: glance_api
+      monitoring_subscription: {get_attr: [GlanceApiBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [GlanceApiBase, role_data, config_settings]
index e417f09..5bcabca 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Glance role.
     value:
       service_name: glance_registry
+      monitoring_subscription: {get_attr: [GlanceRegistryBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [GlanceRegistryBase, role_data, config_settings]
index 42c7131..6a9161f 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionGnocchiApi:
+    default: 'overcloud-gnocchi-api'
+    type: string
 
 resources:
   GnocchiServiceBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Gnocchi role.
     value:
       service_name: gnocchi_api
+      monitoring_subscription: {get_param: MonitoringSubscriptionGnocchiApi}
       config_settings:
         map_merge:
           - get_attr: [GnocchiServiceBase, role_data, config_settings]
index 177d774..0f36b5d 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionGnocchiMetricd:
+    default: 'overcloud-gnocchi-metricd'
+    type: string
 
 resources:
   GnocchiServiceBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Gnocchi role.
     value:
       service_name: gnocchi_metricd
+      monitoring_subscription: {get_param: MonitoringSubscriptionGnocchiMetricd}
       config_settings:
         map_merge:
           - get_attr: [GnocchiServiceBase, role_data, config_settings]
index a247a51..b9afc59 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionGnocchiStatsd:
+    default: 'overcloud-gnocchi-statsd'
+    type: string
 
 resources:
   GnocchiServiceBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Gnocchi role.
     value:
       service_name: gnocchi_statsd
+      monitoring_subscription: {get_param: MonitoringSubscriptionGnocchiStatsd}
       config_settings:
         map_merge:
           - get_attr: [GnocchiServiceBase, role_data, config_settings]
index de02833..52104a7 100644 (file)
@@ -32,6 +32,7 @@ outputs:
     description: Role data for the HAproxy with pacemaker role.
     value:
       service_name: haproxy
+      monitoring_subscription: {get_attr: [LoadbalancerServiceBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [LoadbalancerServiceBase, role_data, config_settings]
index 155a35e..eae01b5 100644 (file)
@@ -32,6 +32,7 @@ outputs:
     description: Role data for the Heat CloudFormation API role.
     value:
       service_name: heat_api_cfn
+      monitoring_subscription: {get_attr: [HeatApiCfnBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [HeatApiCfnBase, role_data, config_settings]
index 8592765..5608ae9 100644 (file)
@@ -32,6 +32,7 @@ outputs:
     description: Role data for the Heat Cloudwatch API role.
     value:
       service_name: heat_api_cloudwatch
+      monitoring_subscription: {get_attr: [HeatApiCloudwatchBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
            - get_attr: [HeatApiCloudwatchBase, role_data, config_settings]
index d722061..6fd790c 100644 (file)
@@ -32,6 +32,7 @@ outputs:
     description: Role data for the Heat API role.
     value:
       service_name: heat_api
+      monitoring_subscription: {get_attr: [HeatApiBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [HeatApiBase, role_data, config_settings]
index 579f5f1..b8c962a 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Heat engine role.
     value:
       service_name: heat_engine
+      monitoring_subscription: {get_attr: [HeatEngineBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [HeatEngineBase, role_data, config_settings]
index bd1ff04..18de23a 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Horizon role.
     value:
       service_name: horizon
+      monitoring_subscription: {get_attr: [HorizonBase, role_data, monitoring_subscription]}
       config_settings:
         get_attr: [HorizonBase, role_data, config_settings]
       step_config: |
index 701f01f..0a479c9 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Keystone pacemaker role.
     value:
       service_name: keystone
+      monitoring_subscription: {get_attr: [KeystoneServiceBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [KeystoneServiceBase, role_data, config_settings]
index 7479eb0..cabc31a 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the manila-share pacemaker role.
     value:
       service_name: manila_share
+      monitoring_subscription: {get_attr: [ManilaShareBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [ManilaShareBase, role_data, config_settings]
index e612d77..04b895b 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Memcached pacemaker role.
     value:
       service_name: memcached
+      monitoring_subscription: {get_attr: [MemcachedServiceBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [MemcachedServiceBase, role_data, config_settings]
index f5f785e..9b9e584 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Neutron DHCP role.
     value:
       service_name: neutron_dhcp
+      monitoring_subscription: {get_attr: [NeutronDhcpBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [NeutronDhcpBase, role_data, config_settings]
index 8717663..21ac02d 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Neutron L3 role.
     value:
       service_name: neutron_l3
+      monitoring_subscription: {get_attr: [NeutronL3Base, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [NeutronL3Base, role_data, config_settings]
index e00c242..8c22d42 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Neutron Metadata role.
     value:
       service_name: neutron_metadata
+      monitoring_subscription: {get_attr: [NeutronMetadataBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [NeutronMetadataBase, role_data, config_settings]
index fb39ea4..fdd5daf 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Neutron Midonet plugin.
     value:
       service_name: neutron_midonet
+      monitoring_subscription: {get_attr: [NeutronMidonetBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [NeutronMidonetBase, role_data, config_settings]
index 353c295..18d6073 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Neutron OVS agent service.
     value:
       service_name: neutron_ovs_agent
+      monitoring_subscription: {get_attr: [NeutronOvsBase, role_data, monitoring_subscription]}
       config_settings:
         get_attr: [NeutronOvsBase, role_data, config_settings]
       step_config: |
index fc04e5e..33bc2d9 100644 (file)
@@ -37,6 +37,7 @@ outputs:
     description: Role data for the Neutron Server.
     value:
       service_name: neutron_server
+      monitoring_subscription: {get_attr: [NeutronServerBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [NeutronServerBase, role_data, config_settings]
index 709761e..3d56534 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Nova API role.
     value:
       service_name: nova_api
+      monitoring_subscription: {get_attr: [NovaApiBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [NovaApiBase, role_data, config_settings]
index 7a2313c..9d55a48 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Nova Conductor role.
     value:
       service_name: nova_conductor
+      monitoring_subscription: {get_attr: [NovaConductorBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [NovaConductorBase, role_data, config_settings]
index 77550c8..814505f 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Nova Consoleauth role.
     value:
       service_name: nova_consoleauth
+      monitoring_subscription: {get_attr: [NovaConsoleauthBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [NovaConsoleauthBase, role_data, config_settings]
index 2571ec4..2769226 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Nova Scheduler role.
     value:
       service_name: nova_scheduler
+      monitoring_subscription: {get_attr: [NovaSchedulerBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [NovaSchedulerBase, role_data, config_settings]
index e536826..0ec5de6 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Nova Vncproxy role.
     value:
       service_name: nova_vncproxy
+      monitoring_subscription: {get_attr: [NovaVncproxyBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [NovaVncproxyBase, role_data, config_settings]
index 3eb0139..f3fa2d2 100644 (file)
@@ -32,6 +32,7 @@ outputs:
     description: Role data for the RabbitMQ pacemaker role.
     value:
       service_name: rabbitmq
+      monitoring_subscription: {get_attr: [RabbitMQServiceBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [RabbitMQServiceBase, role_data, config_settings]
index e20b7a0..214e8db 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Sahara API role.
     value:
       service_name: sahara_api
+      monitoring_subscription: {get_attr: [SaharaApiBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [SaharaApiBase, role_data, config_settings]
index 07de74c..aa85115 100644 (file)
@@ -33,6 +33,7 @@ outputs:
     description: Role data for the Sahara Engine role.
     value:
       service_name: sahara_engine
+      monitoring_subscription: {get_attr: [SaharaEngineBase, role_data, monitoring_subscription]}
       config_settings:
         map_merge:
           - get_attr: [SaharaEngineBase, role_data, config_settings]
index 06595b0..a0669dc 100644 (file)
@@ -38,12 +38,16 @@ parameters:
     type: string
     default: ''
     hidden: true
+  MonitoringSubscriptionRabbitmq:
+    default: 'overcloud-rabbitmq'
+    type: string
 
 outputs:
   role_data:
     description: Role data for the RabbitMQ role.
     value:
       service_name: rabbitmq
+      monitoring_subscription: {get_param: MonitoringSubscriptionRabbitmq}
       config_settings:
         rabbitmq::file_limit: {get_param: RabbitFDLimit}
         rabbitmq::default_user: {get_param: RabbitUserName}
index fae9c43..7f15ca7 100644 (file)
@@ -30,6 +30,9 @@ parameters:
     type: string
     default: 'regionOne'
     description: Keystone region for endpoint
+  MonitoringSubscriptionSaharaApi:
+    default: 'overcloud-sahara-api'
+    type: string
 
 resources:
   SaharaBase:
@@ -44,6 +47,7 @@ outputs:
     description: Role data for the Sahara API role.
     value:
       service_name: sahara_api
+      monitoring_subscription: {get_param: MonitoringSubscriptionSaharaApi}
       config_settings:
         map_merge:
           - get_attr: [SaharaBase, role_data, config_settings]
index fcf4d48..9224fd5 100644 (file)
@@ -18,6 +18,9 @@ parameters:
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  MonitoringSubscriptionSaharaEngine:
+    default: 'overcloud-sahara-engine'
+    type: string
 
 resources:
   SaharaBase:
@@ -32,6 +35,7 @@ outputs:
     description: Role data for the Sahara Engine role.
     value:
       service_name: sahara_engine
+      monitoring_subscription: {get_param: MonitoringSubscriptionSaharaEngine}
       config_settings:
         map_merge:
           - get_attr: [SaharaBase, role_data, config_settings]
index bb40001..669e287 100644 (file)
@@ -49,5 +49,9 @@ outputs:
         yaql:
           expression: list($.data.s_names.where($ != null))
           data: {s_names: {get_attr: [ServiceChain, role_data, service_name]}}
+      monitoring_subscriptions:
+        yaql:
+          expression: list($.data.subscriptions.where($ != null))
+          data: {subscriptions: {get_attr: [ServiceChain, role_data, monitoring_subscription]}}
       config_settings: {map_merge: {get_attr: [ServiceChain, role_data, config_settings]}}
       step_config: {list_join: ["\n", {get_attr: [ServiceChain, role_data, step_config]}]}
index cba0809..1052187 100644 (file)
@@ -38,6 +38,9 @@ parameters:
     type: string
     default: 'regionOne'
     description: Keystone region for endpoint
+  MonitoringSubscriptionSwiftProxy:
+    default: 'overcloud-swift-proxy'
+    type: string
 
 resources:
   SwiftBase:
@@ -52,6 +55,7 @@ outputs:
     description: Role data for the Swift proxy service.
     value:
       service_name: swift_proxy
+      monitoring_subscription: {get_param: MonitoringSubscriptionSwiftProxy}
       config_settings:
         map_merge:
           - get_attr: [SwiftBase, role_data, config_settings]
index 6c7c3c7..91d5256 100644 (file)
@@ -30,6 +30,9 @@ parameters:
     default: {}
     description: 'A hash of additional raw devices to use as Swift backend (eg. {sdb: {}})'
     type: json
+  MonitoringSubscriptionSwiftStorage:
+    default: 'overcloud-swift-storage'
+    type: string
 
   # DEPRECATED options for compatibility with overcloud.yaml
   # This should be removed and manipulation of the ControllerServices list
@@ -58,6 +61,7 @@ outputs:
     description: Role data for the Swift Proxy role.
     value:
       service_name: swift_storage
+      monitoring_subscription: {get_param: MonitoringSubscriptionSwiftStorage}
       config_settings:
         map_merge:
           - get_attr: [SwiftBase, role_data, config_settings]
index b933c54..a5bb140 100644 (file)
@@ -84,6 +84,9 @@ parameters:
   ServiceNames:
     type: comma_delimited_list
     default: []
+  MonitoringSubscriptions:
+    type: comma_delimited_list
+    default: []
   ConfigCommand:
     type: string
     description: Command which will be run whenever configuration data changes
@@ -242,6 +245,7 @@ resources:
             service_names:
               mapped_data:
                 service_names: {get_param: ServiceNames}
+                sensu::subscriptions: {get_param: MonitoringSubscriptions}
             service_configs:
               mapped_data:
                 map_replace: