Wire Neutron ML2 plugin and OVS agent settings as arrays
authorGiulio Fidente <gfidente@redhat.com>
Tue, 2 Jun 2015 13:33:11 +0000 (09:33 -0400)
committerGiulio Fidente <gfidente@redhat.com>
Tue, 15 Dec 2015 12:38:13 +0000 (13:38 +0100)
Wires the following as arrays to the neutron module:
 - mechanism_drivers
 - flat_networks
 - tenant_network_types
 - tunnel_types
 - bridge_mappings

Also updates the template version to use a Liberty feature which
allows serialization of comma_delimited_list into JSON.

Tidies up the manifests by removing the class declarations since
config is passed by the puppet/controller+compute hiera mapped_data.

Change-Id: Ie9f85fb827099f897ef750e267bc3ed3a864fe59
Co-Authored-By: Steven Hardy <shardy@redhat.com>
overcloud.yaml
puppet/compute.yaml
puppet/controller.yaml
puppet/manifests/overcloud_compute.pp
puppet/manifests/overcloud_controller.pp
puppet/manifests/overcloud_controller_pacemaker.pp

index b1eb62a..d7de28f 100644 (file)
@@ -109,7 +109,7 @@ parameters:
       to create provider networks (and we use this for the default floating
       network) - if changing this either use different post-install network
       scripts or be sure to keep 'datacentre' as a mapping network name.
-    type: string
+    type: comma_delimited_list
     default: "datacentre:br-ex"
   NeutronControlPlaneID:
     default: 'ctlplane'
@@ -128,15 +128,15 @@ parameters:
         Enable/disable the L2 population feature in the Neutron agents.
     default: "False"
   NeutronFlatNetworks:
-    type: string
+    type: comma_delimited_list
     default: 'datacentre'
     description: >
       If set, flat networks to configure in neutron plugins. Defaults to
       'datacentre' to permit external network creation.
   NeutronNetworkType:
     default: 'vxlan'
-    description: The tenant network type for Neutron, either gre or vxlan.
-    type: string
+    description: The tenant network type for Neutron.
+    type: comma_delimited_list
   NeutronPassword:
     default: unset
     description: The password for the neutron service account, used by neutron agents.
@@ -176,9 +176,8 @@ parameters:
   NeutronTunnelTypes:
     default: 'vxlan'
     description: |
-        The tunnel types for the Neutron tenant network. To specify multiple
-        values, use a comma separated string, like so: 'gre,vxlan'
-    type: string
+        The tunnel types for the Neutron tenant network.
+    type: comma_delimited_list
   NeutronTunnelIdRanges:
     description: |
         Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges
@@ -211,9 +210,8 @@ parameters:
   NeutronMechanismDrivers:
     default: 'openvswitch'
     description: |
-        The mechanism drivers for the Neutron tenant network. To specify multiple
-        values, use a comma separated string, like so: 'openvswitch,l2_population'
-    type: string
+        The mechanism drivers for the Neutron tenant network.
+    type: comma_delimited_list
   NeutronAllowL3AgentFailover:
     default: 'False'
     description: Allow automatic l3-agent failover
index 247c032..43ef582 100644 (file)
@@ -1,4 +1,4 @@
-heat_template_version: 2015-04-30
+heat_template_version: 2015-10-15
 
 description: >
   OpenStack hypervisor node configured via Puppet.
@@ -80,7 +80,7 @@ parameters:
       to create provider networks (and we use this for the default floating
       network) - if changing this either use different post-install network
       scripts or be sure to keep 'datacentre' as a mapping network name.
-    type: string
+    type: comma_delimited_list
     default: "datacentre:br-ex"
   NeutronEnableTunnelling:
     type: string
@@ -91,7 +91,7 @@ parameters:
         Enable/disable the L2 population feature in the Neutron agents.
     default: "False"
   NeutronFlatNetworks:
-    type: string
+    type: comma_delimited_list
     default: 'datacentre'
     description: >
       If set, flat networks to configure in neutron plugins.
@@ -99,8 +99,8 @@ parameters:
     type: string
     default: ''  # Has to be here because of the ignored empty value bug
   NeutronNetworkType:
-    type: string
-    description: The tenant network type for Neutron, either gre or vxlan.
+    type: comma_delimited_list
+    description: The tenant network type for Neutron.
     default: 'vxlan'
   NeutronNetworkVLANRanges:
     default: 'datacentre'
@@ -123,10 +123,9 @@ parameters:
     description: A port to add to the NeutronPhysicalBridge.
     type: string
   NeutronTunnelTypes:
-    type: string
+    type: comma_delimited_list
     description: |
-        The tunnel types for the Neutron tenant network. To specify multiple
-        values, use a comma separated string, like so: 'gre,vxlan'
+        The tunnel types for the Neutron tenant network.
     default: 'vxlan'
   NeutronTunnelIdRanges:
     description: |
@@ -171,9 +170,8 @@ parameters:
   NeutronMechanismDrivers:
     default: 'openvswitch'
     description: |
-        The mechanism drivers for the Neutron tenant network. To specify multiple
-        values, use a comma separated string, like so: 'openvswitch,l2_population'
-    type: string
+        The mechanism drivers for the Neutron tenant network.
+    type: comma_delimited_list
   # Not relevant for Computes, should be removed
   NeutronAllowL3AgentFailover:
     default: 'True'
@@ -452,16 +450,16 @@ resources:
                 neutron::rabbit_user: {get_input: rabbit_username}
                 neutron::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
                 neutron::rabbit_port: {get_input: rabbit_client_port}
-                neutron_flat_networks: {get_input: neutron_flat_networks}
+                neutron::plugins::ml2::flat_networks: {get_input: neutron_flat_networks}
                 neutron_host: {get_input: neutron_host}
                 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
 
-                neutron_tenant_network_type: {get_input: neutron_tenant_network_type}
-                neutron_tunnel_types: {get_input: neutron_tunnel_types}
+                neutron::plugins::ml2::tenant_network_types: {get_input: neutron_tenant_network_types}
+                neutron::agents::ml2::ovs:tunnel_types: {get_input: neutron_tunnel_types}
                 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
                 neutron::plugins::ml2::tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
                 neutron::plugins::ml2::vni_ranges: {get_input: neutron_vni_ranges}
-                neutron_bridge_mappings: {get_input: neutron_bridge_mappings}
+                neutron::agents::ml2::ovs::bridge_mappings: {get_input: neutron_bridge_mappings}
                 neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
                 neutron::agents::ml2::ovs::l2_population: {get_input: neutron_enable_l2pop}
                 neutron_physical_bridge: {get_input: neutron_physical_bridge}
@@ -475,7 +473,7 @@ resources:
                 neutron::core_plugin: {get_input: neutron_core_plugin}
                 neutron::service_plugins: {get_input: neutron_service_plugins}
                 neutron::plugins::ml2::type_drivers: {get_input: neutron_type_drivers}
-                neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
+                neutron::plugins::ml2::mechanism_drivers: {get_input: neutron_mechanism_drivers}
                 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
                 keystone_public_api_virtual_ip: {get_input: keystone_vip}
                 admin_password: {get_input: admin_password}
@@ -510,36 +508,43 @@ resources:
         snmpd_readonly_user_name: {get_param: SnmpdReadonlyUserName}
         snmpd_readonly_user_password: {get_param: SnmpdReadonlyUserPassword}
         glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
-        neutron_flat_networks: {get_param: NeutronFlatNetworks}
+        neutron_flat_networks:
+          str_replace:
+            template: NETWORKS
+            params:
+              NETWORKS: {get_param: NeutronFlatNetworks}
         neutron_host: {get_param: NeutronHost}
         neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
-        neutron_tenant_network_type: {get_param: NeutronNetworkType}
-        neutron_tunnel_types: {get_param: NeutronTunnelTypes}
         neutron_tunnel_id_ranges:
           str_replace:
-            template: "['RANGES']"
+            template: RANGES
             params:
-              RANGES:
-                list_join:
-                - "','"
-                - {get_param: NeutronTunnelIdRanges}
+              RANGES: {get_param: NeutronTunnelIdRanges}
         neutron_vni_ranges:
           str_replace:
-            template: "['RANGES']"
+            template: RANGES
+            params:
+              RANGES: {get_param: NeutronVniRanges}
+        neutron_tenant_network_types:
+          str_replace:
+            template: TYPES
+            params:
+              TYPES: {get_param: NeutronNetworkType}
+        neutron_tunnel_types:
+          str_replace:
+            template: TYPES
             params:
-              RANGES:
-                list_join:
-                - "','"
-                - {get_param: NeutronVniRanges}
+              TYPES: {get_param: NeutronTunnelTypes}
         neutron_network_vlan_ranges:
           str_replace:
-            template: "['RANGES']"
+            template: RANGES
+            params:
+              RANGES: {get_param: NeutronNetworkVLANRanges}
+        neutron_bridge_mappings:
+          str_replace:
+            template: MAPPINGS
             params:
-              RANGES:
-                list_join:
-                - "','"
-                - {get_param: NeutronNetworkVLANRanges}
-        neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
+              MAPPINGS: {get_param: NeutronBridgeMappings}
         neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
         neutron_enable_l2pop: {get_param: NeutronEnableL2Pop}
         neutron_physical_bridge: {get_param: NeutronPhysicalBridge}
@@ -551,21 +556,19 @@ resources:
         neutron_core_plugin: {get_param: NeutronCorePlugin}
         neutron_service_plugins:
           str_replace:
-            template: "['PLUGINS']"
+            template: PLUGINS
             params:
-              PLUGINS:
-                list_join:
-                - "','"
-                - {get_param: NeutronServicePlugins}
+              PLUGINS: {get_param: NeutronServicePlugins}
         neutron_type_drivers:
           str_replace:
-            template: "['DRIVERS']"
+            template: DRIVERS
+            params:
+              DRIVERS: {get_param: NeutronTypeDrivers}
+        neutron_mechanism_drivers:
+          str_replace:
+            template: MECHANISMS
             params:
-              DRIVERS:
-                list_join:
-                - "','"
-                - {get_param: NeutronTypeDrivers}
-        neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
+              MECHANISMS: {get_param: NeutronMechanismDrivers}
         neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
         neutron_internal_url: {get_param: [EndpointMap, NeutronInternal, uri]}
         neutron_admin_auth_url: {get_param: [EndpointMap, KeystoneAdmin, uri]}
index 5d39462..e405333 100644 (file)
@@ -1,4 +1,4 @@
-heat_template_version: 2015-04-30
+heat_template_version: 2015-10-15
 
 description: >
   OpenStack controller node configured by Puppet.
@@ -328,7 +328,7 @@ parameters:
       to create provider networks (and we use this for the default floating
       network) - if changing this either use different post-install network
       scripts or be sure to keep 'datacentre' as a mapping network name.
-    type: string
+    type: comma_delimited_list
     default: "datacentre:br-ex"
   NeutronDnsmasqOptions:
     default: 'dhcp-option-force=26,1400'
@@ -391,9 +391,8 @@ parameters:
   NeutronMechanismDrivers:
     default: 'openvswitch'
     description: |
-        The mechanism drivers for the Neutron tenant network. To specify multiple
-        values, use a comma separated string, like so: 'openvswitch,l2_population'
-    type: string
+        The mechanism drivers for the Neutron tenant network.
+    type: comma_delimited_list
   NeutronAllowL3AgentFailover:
     default: 'True'
     description: Allow automatic l3-agent failover
@@ -411,7 +410,7 @@ parameters:
         Enable/disable the L2 population feature in the Neutron agents.
     default: "False"
   NeutronFlatNetworks:
-    type: string
+    type: comma_delimited_list
     default: 'datacentre'
     description: If set, flat networks to configure in neutron plugins.
   NeutronL3HA:
@@ -420,8 +419,8 @@ parameters:
     type: string
   NeutronNetworkType:
     default: 'vxlan'
-    description: The tenant network type for Neutron, either gre or vxlan.
-    type: string
+    description: The tenant network type for Neutron.
+    type: comma_delimited_list
   NeutronNetworkVLANRanges:
     default: 'datacentre'
     description: >
@@ -463,9 +462,8 @@ parameters:
   NeutronTunnelTypes:
     default: 'vxlan'
     description: |
-        The tunnel types for the Neutron tenant network. To specify multiple
-        values, use a comma separated string, like so: 'gre,vxlan'
-    type: string
+        The tunnel types for the Neutron tenant network.
+    type: comma_delimited_list
   NeutronTunnelIdRanges:
     description: |
         Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges
@@ -809,12 +807,9 @@ resources:
         cinder_nfs_mount_options: {get_param: CinderNfsMountOptions}
         cinder_nfs_servers:
           str_replace:
-            template: "['SERVERS']"
+            template: SERVERS
             params:
-              SERVERS:
-                list_join:
-                - "','"
-                - {get_param: CinderNfsServers}
+              SERVERS: {get_param: CinderNfsServers}
         cinder_lvm_loop_device_size: {get_param: CinderLVMLoopDeviceSize}
         cinder_password: {get_param: CinderPassword}
         cinder_enable_iscsi_backend: {get_param: CinderEnableIscsiBackend}
@@ -890,67 +885,72 @@ resources:
             template: tripleo-CLUSTER
             params:
               CLUSTER: {get_param: MysqlClusterUniquePart}
-        neutron_flat_networks: {get_param: NeutronFlatNetworks}
+        neutron_flat_networks:
+          str_replace:
+            template: NETWORKS
+            params:
+              NETWORKS: {get_param: NeutronFlatNetworks}
         neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
         neutron_agent_mode: {get_param: NeutronAgentMode}
         neutron_router_distributed: {get_param: NeutronDVR}
         neutron_core_plugin: {get_param: NeutronCorePlugin}
         neutron_service_plugins:
           str_replace:
-            template: "['PLUGINS']"
+            template: PLUGINS
             params:
-              PLUGINS:
-                list_join:
-                - "','"
-                - {get_param: NeutronServicePlugins}
+              PLUGINS: {get_param: NeutronServicePlugins}
         neutron_type_drivers:
           str_replace:
-            template: "['DRIVERS']"
+            template: DRIVERS
             params:
-              DRIVERS:
-                list_join:
-                - "','"
-                - {get_param: NeutronTypeDrivers}
+              DRIVERS: {get_param: NeutronTypeDrivers}
         neutron_enable_dhcp_agent: {get_param: NeutronEnableDHCPAgent}
         neutron_enable_l3_agent: {get_param: NeutronEnableL3Agent}
         neutron_enable_metadata_agent: {get_param: NeutronEnableMetadataAgent}
         neutron_enable_ovs_agent: {get_param: NeutronEnableOVSAgent}
-        neutron_mechanism_drivers: {get_param: NeutronMechanismDrivers}
+        neutron_mechanism_drivers:
+          str_replace:
+            template: MECHANISMS
+            params:
+              MECHANISMS: {get_param: NeutronMechanismDrivers}
         neutron_allow_l3agent_failover: {get_param: NeutronAllowL3AgentFailover}
         neutron_l3_ha: {get_param: NeutronL3HA}
         neutron_dhcp_agents_per_network: {get_param: NeutronDhcpAgentsPerNetwork}
         neutron_network_vlan_ranges:
           str_replace:
-            template: "['RANGES']"
+            template: RANGES
+            params:
+              RANGES: {get_param: NeutronNetworkVLANRanges}
+        neutron_bridge_mappings:
+          str_replace:
+            template: MAPPINGS
             params:
-              RANGES:
-                list_join:
-                - "','"
-                - {get_param: NeutronNetworkVLANRanges}
-        neutron_bridge_mappings: {get_param: NeutronBridgeMappings}
+              MAPPINGS: {get_param: NeutronBridgeMappings}
         neutron_external_network_bridge: {get_param: NeutronExternalNetworkBridge}
         neutron_public_interface: {get_param: NeutronPublicInterface}
         neutron_public_interface_raw_device: {get_param: NeutronPublicInterfaceRawDevice}
         neutron_public_interface_default_route: {get_param: NeutronPublicInterfaceDefaultRoute}
         neutron_public_interface_tag: {get_param: NeutronPublicInterfaceTag}
-        neutron_tenant_network_type: {get_param: NeutronNetworkType}
-        neutron_tunnel_types: {get_param: NeutronTunnelTypes}
         neutron_tunnel_id_ranges:
           str_replace:
-            template: "['RANGES']"
+            template: RANGES
             params:
-              RANGES:
-                list_join:
-                - "','"
-                - {get_param: NeutronTunnelIdRanges}
+              RANGES: {get_param: NeutronTunnelIdRanges}
         neutron_vni_ranges:
           str_replace:
-            template: "['RANGES']"
+            template: RANGES
+            params:
+              RANGES: {get_param: NeutronVniRanges}
+        neutron_tenant_network_types:
+          str_replace:
+            template: TYPES
+            params:
+              TYPES: {get_param: NeutronNetworkType}
+        neutron_tunnel_types:
+          str_replace:
+            template: TYPES
             params:
-              RANGES:
-                list_join:
-                - "','"
-                - {get_param: NeutronVniRanges}
+              TYPES: {get_param: NeutronTunnelTypes}
         neutron_password: {get_param: NeutronPassword}
         neutron_dnsmasq_options: {get_param: NeutronDnsmasqOptions}
         neutron_dsn:
@@ -1249,7 +1249,7 @@ resources:
                 neutron::agents::ml2::ovs::l2_population: {get_input: neutron_enable_l2pop}
                 neutron::agents::dhcp::enable_isolated_metadata: {get_input: neutron_enable_isolated_metadata}
                 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
-                neutron_flat_networks: {get_input: neutron_flat_networks}
+                neutron::plugins::ml2::flat_networks: {get_input: neutron_flat_networks}
                 neutron::agents::metadata::shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
                 neutron::agents::metadata::metadata_ip: {get_input: neutron_api_network}
                 neutron_agent_mode: {get_input: neutron_agent_mode}
@@ -1261,20 +1261,20 @@ resources:
                 neutron::enable_metadata_agent: {get_input: neutron_enable_metadata_agent}
                 neutron::enable_ovs_agent: {get_input: neutron_enable_ovs_agent}
                 neutron::plugins::ml2::type_drivers: {get_input: neutron_type_drivers}
-                neutron_mechanism_drivers: {get_input: neutron_mechanism_drivers}
+                neutron::plugins::ml2::mechanism_drivers: {get_input: neutron_mechanism_drivers}
                 neutron::server::allow_automatic_l3agent_failover: {get_input: neutron_allow_l3agent_failover}
                 neutron::server::l3_ha: {get_input: neutron_l3_ha}
                 neutron::dhcp_agents_per_network: {get_input: neutron_dhcp_agents_per_network}
                 neutron::plugins::ml2::network_vlan_ranges: {get_input: neutron_network_vlan_ranges}
                 neutron::plugins::ml2::tunnel_id_ranges: {get_input: neutron_tunnel_id_ranges}
                 neutron::plugins::ml2::vni_ranges: {get_input: neutron_vni_ranges}
-                neutron_bridge_mappings: {get_input: neutron_bridge_mappings}
+                neutron::agents::ml2::ovs:bridge_mappings: {get_input: neutron_bridge_mappings}
                 neutron_public_interface: {get_input: neutron_public_interface}
                 neutron_public_interface_raw_device: {get_input: neutron_public_interface_raw_device}
                 neutron_public_interface_default_route: {get_input: neutron_public_interface_default_route}
                 neutron_public_interface_tag: {get_input: neutron_public_interface_tag}
-                neutron_tenant_network_type: {get_input: neutron_tenant_network_type}
-                neutron_tunnel_types: {get_input: neutron_tunnel_types}
+                neutron::plugins::ml2::tenant_network_types: {get_input: neutron_tenant_network_types}
+                neutron::agents::ml2::ovs::tunnel_types: {get_input: neutron_tunnel_types}
                 neutron::server::auth_password: {get_input: neutron_password}
                 neutron::agents::metadata::auth_password: {get_input: neutron_password}
                 neutron_dnsmasq_options: {get_input: neutron_dnsmasq_options}
index f3a02eb..e0566ac 100644 (file)
@@ -85,17 +85,10 @@ if hiera('neutron::core_plugin') == 'neutron.plugins.nuage.plugin.NuagePlugin' {
     nova_auth_ip        => hiera('keystone_public_api_virtual_ip'),
   }
 } else {
-  class { '::neutron::plugins::ml2':
-    flat_networks        => split(hiera('neutron_flat_networks'), ','),
-    tenant_network_types => [hiera('neutron_tenant_network_type')],
-  }
-
-  class { '::neutron::agents::ml2::ovs':
-    bridge_mappings => split(hiera('neutron_bridge_mappings'), ','),
-    tunnel_types    => split(hiera('neutron_tunnel_types'), ','),
-  }
+  include ::neutron::plugins::ml2
+  include ::neutron::agents::ml2::ovs
 
-  if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
+  if 'cisco_n1kv' in hiera('neutron::plugins::ml2::mechanism_drivers') {
     class { '::neutron::agents::n1kv_vem':
       n1kv_source  => hiera('n1kv_vem_source', undef),
       n1kv_version => hiera('n1kv_vem_version', undef),
index 683c121..7d3012e 100644 (file)
@@ -252,16 +252,10 @@ if hiera('step') >= 3 {
       require => Package['neutron'],
     }
 
-    class { '::neutron::plugins::ml2':
-      flat_networks        => split(hiera('neutron_flat_networks'), ','),
-      tenant_network_types => [hiera('neutron_tenant_network_type')],
-      mechanism_drivers    => [hiera('neutron_mechanism_drivers')],
-    }
-    class { '::neutron::agents::ml2::ovs':
-      bridge_mappings => split(hiera('neutron_bridge_mappings'), ','),
-      tunnel_types    => split(hiera('neutron_tunnel_types'), ','),
-    }
-    if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
+    include ::neutron::plugins::ml2
+    include ::neutron::agents::ml2::ovs
+
+    if 'cisco_n1kv' in hiera('neutron::plugins::ml2::mechanism_drivers') {
       include ::neutron::plugins::ml2::cisco::nexus1000v
 
       class { '::neutron::agents::n1kv_vem':
@@ -276,10 +270,10 @@ if hiera('step') >= 3 {
       }
     }
 
-    if 'cisco_ucsm' in hiera('neutron_mechanism_drivers') {
+    if 'cisco_ucsm' in hiera('neutron::plugins::ml2::mechanism_drivers') {
       include ::neutron::plugins::ml2::cisco::ucsm
     }
-    if 'cisco_nexus' in hiera('neutron_mechanism_drivers') {
+    if 'cisco_nexus' in hiera('neutron::plugins::ml2::mechanism_drivers') {
       include ::neutron::plugins::ml2::cisco::nexus
       include ::neutron::plugins::ml2::cisco::type_nexus_vxlan
     }
@@ -467,7 +461,7 @@ if hiera('step') >= 3 {
   include ::heat::engine
 
   # Horizon
-  if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
+  if 'cisco_n1kv' in hiera('neutron::plugins::ml2::mechanism_drivers') {
     $_profile_support = 'cisco'
   } else {
     $_profile_support = 'None'
index 6c8530f..cf607e5 100644 (file)
@@ -628,27 +628,20 @@ if hiera('step') >= 3 {
       enabled        => false,
     }
   }
-  if hiera('neutron::core_plugin') == 'ml2' {
-    class { '::neutron::plugins::ml2':
-      flat_networks        => split(hiera('neutron_flat_networks'), ','),
-      tenant_network_types => [hiera('neutron_tenant_network_type')],
-      mechanism_drivers    => [hiera('neutron_mechanism_drivers')],
-    }
-    class { '::neutron::agents::ml2::ovs':
-      manage_service  => false,
-      enabled         => false,
-      bridge_mappings => split(hiera('neutron_bridge_mappings'), ','),
-      tunnel_types    => split(hiera('neutron_tunnel_types'), ','),
-    }
+  include ::neutron::plugins::ml2
+  class { '::neutron::agents::ml2::ovs':
+    manage_service => false,
+    enabled        => false,
   }
-  if 'cisco_ucsm' in hiera('neutron_mechanism_drivers') {
+
+  if 'cisco_ucsm' in hiera('neutron::plugins::ml2::mechanism_drivers') {
     include ::neutron::plugins::ml2::cisco::ucsm
   }
-  if 'cisco_nexus' in hiera('neutron_mechanism_drivers') {
+  if 'cisco_nexus' in hiera('neutron::plugins::ml2::mechanism_drivers') {
     include ::neutron::plugins::ml2::cisco::nexus
     include ::neutron::plugins::ml2::cisco::type_nexus_vxlan
   }
-  if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
+  if 'cisco_n1kv' in hiera('neutron::plugins::ml2::mechanism_drivers') {
     include ::neutron::plugins::ml2::cisco::nexus1000v
 
     class { '::neutron::agents::n1kv_vem':
@@ -896,7 +889,7 @@ if hiera('step') >= 3 {
     # service_manage => false, # <-- not supported with horizon&apache mod_wsgi?
   }
   include ::apache::mod::status
-  if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
+  if 'cisco_n1kv' in hiera('neutron::plugins::ml2::mechanism_drivers') {
     $_profile_support = 'cisco'
   } else {
     $_profile_support = 'None'
@@ -1503,7 +1496,7 @@ if hiera('step') >= 4 {
     }
 
     #VSM
-    if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
+    if 'cisco_n1kv' in hiera('neutron::plugins::ml2::mechanism_drivers') {
       pacemaker::resource::ocf { 'vsm-p' :
         ocf_agent_name  => 'heartbeat:VirtualDomain',
         resource_params => 'force_stop=true config=/var/spool/cisco/vsm/vsm_primary_deploy.xml',