OS::TripleO::Services::AodhNotifier: OS::Heat::None
   OS::TripleO::Services::AodhListener: OS::Heat::None
   OS::TripleO::Services::PankoApi: OS::Heat::None
+
+parameter_defaults:
+  NotificationDriver: 'noop'
 
   NeutronBigswitchRestproxyServerAuth:
   NeutronMechanismDrivers: openvswitch,bsn_ml2
   NeutronServicePlugins: bsn_l3,bsn_service_plugin
-  KeystoneNotificationDriver: messaging
 
   # Optional:
   # NeutronBigswitchRestproxyAutoSyncOnFailure:
 
     type: string
     default: 'regionOne'
     description: Keystone region for endpoint
+  NotificationDriver:
+    type: string
+    default: 'messagingv2'
+    description: Driver or drivers to handle sending notifications.
+    constraints:
+      - allowed_values: [ 'messagingv2', 'noop' ]
 
 conditions:
   service_debug_unset: {equals : [{get_param: AodhDebug}, '']}
           - {get_param: Debug }
           - {get_param: AodhDebug }
         aodh::auth::auth_url: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix] }
+        aodh::notification_driver: {get_param: NotificationDriver}
         aodh::rabbit_userid: {get_param: RabbitUserName}
         aodh::rabbit_password: {get_param: RabbitPassword}
         aodh::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
 
       e.g. { barbican-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
     default: {}
     type: json
+  NotificationDriver:
+    type: string
+    default: 'messagingv2'
+    description: Driver or drivers to handle sending notifications.
+    constraints:
+      - allowed_values: [ 'messagingv2', 'noop' ]
 
 resources:
 
               - service_debug_unset
               - {get_param: Debug }
               - {get_param: BarbicanDebug }
+            barbican::api::notification_driver: {get_param: NotificationDriver}
             barbican::api::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
             barbican::api::rabbit_userid: {get_param: RabbitUserName}
             barbican::api::rabbit_password: {get_param: RabbitPassword}
 
     description: The user password for SNMPd with readonly rights running on all Overcloud nodes
     type: string
     hidden: true
+  NotificationDriver:
+    type: string
+    default: 'messagingv2'
+    description: Driver or drivers to handle sending notifications.
+    constraints:
+      - allowed_values: [ 'messagingv2', 'noop' ]
 
 conditions:
   service_debug_unset: {equals : [{get_param: CeilometerDebug}, '']}
         ceilometer::dispatcher::gnocchi::filter_project: 'service'
         ceilometer::dispatcher::gnocchi::archive_policy: 'low'
         ceilometer::dispatcher::gnocchi::resources_definition_file: 'gnocchi_resources.yaml'
+        ceilometer::notification_driver: {get_param: NotificationDriver}
         ceilometer::rabbit_userid: {get_param: RabbitUserName}
         ceilometer::rabbit_password: {get_param: RabbitPassword}
         ceilometer::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
 
       e.g. { cinder-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
     default: {}
     type: json
+  NotificationDriver:
+    type: string
+    default: 'messagingv2'
+    description: Driver or drivers to handle sending notifications.
+    constraints:
+      - allowed_values: [ 'messagingv2', 'noop' ]
 
 conditions:
   cinder_workers_zero: {equals : [{get_param: CinderWorkers}, 0]}
             cinder::keystone::authtoken::user_domain_name: 'Default'
             cinder::keystone::authtoken::project_domain_name: 'Default'
             cinder::policy::policies: {get_param: CinderApiPolicies}
+            cinder::ceilometer::notification_driver: {get_param: NotificationDriver}
             cinder::api::enable_proxy_headers_parsing: true
 
             cinder::api::nova_catalog_info: 'compute:nova:internalURL'
 
       e.g. { congress-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
     default: {}
     type: json
+  NotificationDriver:
+    type: string
+    default: 'messagingv2'
+    description: Driver or drivers to handle sending notifications.
+    constraints:
+      - allowed_values: [ 'messagingv2', 'noop' ]
 
 conditions:
   service_debug_unset: {equals : [{get_param: CongressDebug}, '']}
           - {get_param: Debug }
           - {get_param: CongressDebug }
         congress::rpc_backend: rabbit
+        congress::notification_driver: {get_param: NotificationDriver}
         congress::rabbit_userid: {get_param: RabbitUserName}
         congress::rabbit_password: {get_param: RabbitPassword}
         congress::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
 
       e.g. { glance-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
     default: {}
     type: json
+  NotificationDriver:
+    type: string
+    default: 'messagingv2'
+    description: Driver or drivers to handle sending notifications.
+    constraints:
+      - allowed_values: [ 'messagingv2', 'noop' ]
 
 conditions:
   use_tls_proxy: {equals : [{get_param: EnableInternalTLS}, true]}
             glance::notify::rabbitmq::rabbit_port: {get_param: RabbitClientPort}
             glance::notify::rabbitmq::rabbit_password: {get_param: RabbitPassword}
             glance::notify::rabbitmq::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
-            glance::notify::rabbitmq::notification_driver: messagingv2
+            glance::notify::rabbitmq::notification_driver: {get_param: NotificationDriver}
             tripleo::profile::base::glance::api::glance_nfs_enabled: {get_param: GlanceNfsEnabled}
             tripleo::glance::nfs_mount::share: {get_param: GlanceNfsShare}
             tripleo::glance::nfs_mount::options: {get_param: GlanceNfsOptions}
 
     default: 1048576
     description: Maximum raw byte size of the Heat API JSON request body.
     type: number
+  NotificationDriver:
+    type: string
+    default: 'messagingv2'
+    description: Driver or drivers to handle sending notifications.
+    constraints:
+      - allowed_values: [ 'messagingv2', 'noop' ]
 
 conditions:
   service_debug_unset: {equals : [{get_param: HeatDebug}, '']}
     value:
       service_name: heat_base
       config_settings:
+        heat::notification_driver: {get_param: NotificationDriver}
         heat::rabbit_userid: {get_param: RabbitUserName}
         heat::rabbit_password: {get_param: RabbitPassword}
         heat::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
 
     type: json
     default: {}
     hidden: true
+  NotificationDriver:
+    type: string
+    default: 'messagingv2'
+    description: Driver or drivers to handle sending notifications.
+    constraints:
+      - allowed_values: [ 'messagingv2', 'noop' ]
 
 parameter_groups:
 - label: deprecated
   parameters:
   - KeystoneFernetKey0
   - KeystoneFernetKey1
+  - KeystoneNotificationDriver
 
 resources:
 
             keystone::rabbit_password: {get_param: RabbitPassword}
             keystone::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
             keystone::rabbit_port: {get_param: RabbitClientPort}
-            keystone::notification_driver: {get_param: KeystoneNotificationDriver}
+            keystone::notification_driver: {get_param: NotificationDriver}
             keystone::notification_format: {get_param: KeystoneNotificationFormat}
             keystone::roles::admin::email: {get_param: AdminEmail}
             keystone::roles::admin::password: {get_param: AdminPassword}
 
     description: The password for the manila service account.
     type: string
     hidden: true
+  NotificationDriver:
+    type: string
+    default: 'messagingv2'
+    description: Driver or drivers to handle sending notifications.
+    constraints:
+      - allowed_values: [ 'messagingv2', 'noop' ]
 
 conditions:
   service_debug_unset: {equals : [{get_param: ManilaDebug}, '']}
     value:
       service_name: manila_base
       config_settings:
+        manila::notification_driver: {get_param: NotificationDriver}
         manila::rabbit_userid: {get_param: RabbitUserName}
         manila::rabbit_password: {get_param: RabbitPassword}
         manila::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
 
     type: string
     default: 'regionOne'
     description: Keystone region for endpoint
+  NotificationDriver:
+    type: string
+    default: 'messagingv2'
+    description: Driver or drivers to handle sending notifications.
+    constraints:
+      - allowed_values: [ 'messagingv2', 'noop' ]
 
 conditions:
   service_debug_unset: {equals : [{get_param: MistralDebug}, '']}
             query:
               read_default_file: /etc/my.cnf.d/tripleo.cnf
               read_default_group: tripleo
+        mistral::notification_driver: {get_param: NotificationDriver}
         mistral::rabbit_userid: {get_param: RabbitUserName}
         mistral::rabbit_password: {get_param: RabbitPassword}
         mistral::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
 
     description: Mapping of service endpoint -> protocol. Typically set
                  via parameter_defaults in the resource registry.
     type: json
+  NotificationDriver:
+    type: string
+    default: 'messagingv2'
+    description: Driver or drivers to handle sending notifications.
+    constraints:
+      - allowed_values: [ 'messagingv2', 'noop' ]
 
 conditions:
   dhcp_agents_zero: {equals : [{get_param: NeutronDhcpAgentsPerNetwork}, 0]}
             neutron::rabbit_user: {get_param: RabbitUserName}
             neutron::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
             neutron::rabbit_port: {get_param: RabbitClientPort}
+            neutron::notification_driver: {get_param: NotificationDriver}
             neutron::core_plugin: {get_param: NeutronCorePlugin}
             neutron::service_plugins: {get_param: NeutronServicePlugins}
             neutron::debug:
 
     type: string
     default: 'regionOne'
     description: Keystone region for endpoint
+  NotificationDriver:
+    type: string
+    default: 'messagingv2'
+    description: Driver or drivers to handle sending notifications.
+    constraints:
+      - allowed_values: [ 'messagingv2', 'noop' ]
   NovaPassword:
     description: The password for the nova service and db account, used by nova-api.
     type: string
           nova::cinder_catalog_info: 'volumev2:cinderv2:internalURL'
           nova::host: '%{::fqdn}'
           nova::notify_on_state_change: 'vm_and_task_state'
-          nova::notification_driver: messagingv2
+          nova::notification_driver: {get_param: NotificationDriver}
           nova::network::neutron::neutron_auth_type: 'v3password'
           nova::db::database_db_max_retries: -1
           nova::db::database_max_retries: -1
 
     default: 5672
     description: Set rabbit subscriber port, change this if using SSL
     type: number
+  NotificationDriver:
+    type: string
+    default: 'messagingv2'
+    description: Driver or drivers to handle sending notifications.
+    constraints:
+      - allowed_values: [ 'messagingv2', 'noop' ]
 
 conditions:
   service_debug_unset: {equals : [{get_param: OctaviaDebug}, '']}
           - {get_param: Debug }
           - {get_param: OctaviaDebug }
          octavia::purge_config: {get_param: EnableConfigPurge}
+         octavia::notification_driver: {get_param: NotificationDriver}
          octavia::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
          octavia::rabbit_userid: {get_param: RabbitUserName}
          octavia::rabbit_password: {get_param: RabbitPassword}
 
     default: ["ambari","cdh","mapr","vanilla","spark","storm"]
     description: Sahara enabled plugin list
     type: comma_delimited_list
+  NotificationDriver:
+    type: string
+    default: 'messagingv2'
+    description: Driver or drivers to handle sending notifications.
+    constraints:
+      - allowed_values: [ 'messagingv2', 'noop' ]
 
 conditions:
   service_debug_unset: {equals : [{get_param: SaharaDebug}, '']}
             query:
               read_default_file: /etc/my.cnf.d/tripleo.cnf
               read_default_group: tripleo
+        sahara::notify::notification_driver: {get_param: NotificationDriver}
         sahara::rabbit_password: {get_param: RabbitPassword}
         sahara::rabbit_user: {get_param: RabbitUserName}
         sahara::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
 
       e.g. { tacker-context_is_admin: { key: context_is_admin, value: 'role:admin' } }
     default: {}
     type: json
+  NotificationDriver:
+    type: string
+    default: 'messagingv2'
+    description: Driver or drivers to handle sending notifications.
+    constraints:
+      - allowed_values: [ 'messagingv2', 'noop' ]
 
 conditions:
   service_debug_unset: {equals : [{get_param: TackerDebug}, '']}
           - {get_param: Debug }
           - {get_param: TackerDebug }
         tacker::rpc_backend: rabbit
+        tacker::notification_driver: {get_param: NotificationDriver}
         tacker::rabbit_userid: {get_param: RabbitUserName}
         tacker::rabbit_password: {get_param: RabbitPassword}
         tacker::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
 
--- /dev/null
+---
+features:
+  - |
+    Allow to configure the Message Queue notification driver.
+    By default, we'll configure 'messagingv2' but we can now
+    override NotificationDriver parameter and set 'noop' when
+    we don't want notifications, which is the case when
+    we disable Telemetry services.
+deprecations:
+  - KeystoneNotificationDriver is deprecated in favor of NotificationDriver.