composable neutron ml2 and ovs agent
authorDan Prince <dprince@redhat.com>
Wed, 20 Apr 2016 18:22:27 +0000 (14:22 -0400)
committerDan Prince <dprince@redhat.com>
Thu, 9 Jun 2016 14:45:30 +0000 (10:45 -0400)
Adds new puppet and puppet pacemaker specific services for
the Neutron ml2 configuration and the Ovs agent.

Partially-implements: blueprint composable-services-within-roles

Change-Id: I896e5dfe6fae49371c9fe7f47c4364eb6f621b07

14 files changed:
environments/neutron-midonet.yaml
environments/neutron-nuage-config.yaml
environments/neutron-opencontrail.yaml
environments/neutron-plumgrid.yaml
environments/puppet-pacemaker.yaml
overcloud-resource-registry-puppet.yaml
overcloud.yaml
puppet/controller.yaml
puppet/manifests/overcloud_controller.pp
puppet/manifests/overcloud_controller_pacemaker.pp
puppet/services/neutron-ovs-agent.yaml [new file with mode: 0644]
puppet/services/neutron-plugin-ml2.yaml [new file with mode: 0644]
puppet/services/pacemaker/neutron-ovs-agent.yaml [new file with mode: 0644]
puppet/services/pacemaker/neutron-plugin-ml2.yaml [new file with mode: 0644]

index 463c187..7f50f15 100644 (file)
@@ -3,13 +3,13 @@ resource_registry:
   OS::TripleO::AllNodesExtraConfig: ../puppet/extraconfig/all_nodes/neutron-midonet-all-nodes.yaml
   OS::TripleO::Controller::Net::SoftwareConfig: ../net-config-linux-bridge.yaml # We have to avoid any ovs bridge. MidoNet is incompatible with its datapath
   OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
+  OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None
 
 parameter_defaults:
   EnableZookeeperOnController: true
   EnableCassandraOnController: true
   NeutronCorePlugin: 'midonet.neutron.plugin_v1.MidonetPluginV2' # Overriding default core_plugin in Neutron. Don't touch it
   NeutronEnableIsolatedMetadata: true  # MidoNet 1.9 needs this one to work. Don't change it
-  NeutronEnableOVSAgent: false
 
   # Other available options for MidoNet Services
   # TunnelZoneName: 'tunnelname'
index 0cd49a2..bf5036b 100644 (file)
@@ -4,6 +4,7 @@ resource_registry:
   OS::TripleO::ControllerExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/neutron-nuage.yaml
   OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
   OS::TripleO::Services::NeutronMetadataAgent: OS::Heat::None
+  OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None
 
 parameter_defaults:
   NeutronNuageOSControllerIp: '0.0.0.0'
@@ -17,7 +18,6 @@ parameter_defaults:
   UseForwardedFor: true
   NeutronCorePlugin: 'neutron.plugins.nuage.plugin.NuagePlugin'
   NeutronEnableDHCPAgent: false
-  NeutronEnableOVSAgent: false
   NeutronServicePlugins: []
   NovaOVSBridge: 'alubr0'
   controllerExtraConfig:
index ceccd13..b17c9c0 100644 (file)
@@ -6,11 +6,11 @@ resource_registry:
   OS::TripleO::Services::NeutronDhcpAgent: OS::Heat::None
   OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
   OS::TripleO::Services::NeutronMetadataAgent: OS::Heat::None
+  OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None
 
 parameter_defaults:
   NeutronCorePlugin: neutron_plugin_contrail.plugins.opencontrail.contrail_plugin.NeutronPluginContrailCoreV2
   NeutronServicePlugins: neutron_plugin_contrail.plugins.opencontrail.loadbalancer.plugin.LoadBalancerPlugin
-  NeutronEnableOVSAgent: false
   NeutronEnableTunnelling: false
 
   # required params:
index 19f51cf..23c088b 100755 (executable)
@@ -2,10 +2,11 @@
 # extensions, configured via puppet
 resource_registry:
   OS::TripleO::ControllerExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/neutron-plumgrid.yaml
-  # PLUMgrid doesn't require dhcp, l3, and metadata agents
+  # PLUMgrid doesn't require dhcp, l3, metadata, and ovs agents
   OS::TripleO::Services::NeutronDhcpAgent: OS::Heat::None
   OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
   OS::TripleO::Services::NeutronMetadataAgent: OS::Heat::None
+  OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None
 
 parameter_defaults:
   NeutronCorePlugin: networking_plumgrid.neutron.plugins.plugin.NeutronPluginPLUMgridV2
@@ -25,6 +26,3 @@ parameter_defaults:
   #Optional Parameters
   #PLUMgridNeutronPluginVersion: present
   #PLUMgridPlumlibVersion: present
-
-  # PLUMgrid doesn't require the ovs agent
-  NeutronEnableOVSAgent: false
index 3e24f98..b139fc8 100644 (file)
@@ -23,6 +23,8 @@ resource_registry:
   OS::TripleO::Services::NeutronL3Agent: ../puppet/services/pacemaker/neutron-l3.yaml
   OS::TripleO::Services::NeutronMetadataAgent: ../puppet/services/pacemaker/neutron-metadata.yaml
   OS::TripleO::Services::NeutronServer: ../puppet/services/pacemaker/neutron-server.yaml
+  OS::TripleO::Services::NeutronCorePlugin: ../puppet/services/pacemaker/neutron-plugin-ml2.yaml
+  OS::TripleO::Services::NeutronOvsAgent: ../puppet/services/pacemaker/neutron-ovs-agent.yaml
   OS::TripleO::Services::RabbitMQ: ../puppet/services/pacemaker/rabbitmq.yaml
   OS::TripleO::Services::HAproxy: ../puppet/services/pacemaker/haproxy.yaml
   OS::TripleO::Services::Memcached: ../puppet/services/pacemaker/memcached.yaml
index c5c50e3..bfbe278 100644 (file)
@@ -136,6 +136,8 @@ resource_registry:
   OS::TripleO::Services::NeutronL3Agent: puppet/services/neutron-l3.yaml
   OS::TripleO::Services::NeutronMetadataAgent: puppet/services/neutron-metadata.yaml
   OS::TripleO::Services::NeutronServer: puppet/services/neutron-server.yaml
+  OS::TripleO::Services::NeutronCorePlugin: puppet/services/neutron-plugin-ml2.yaml
+  OS::TripleO::Services::NeutronOvsAgent: puppet/services/neutron-ovs-agent.yaml
   OS::TripleO::Services::RabbitMQ: puppet/services/rabbitmq.yaml
   OS::TripleO::Services::HAproxy: puppet/services/haproxy.yaml
   OS::TripleO::Services::Keepalived: puppet/services/keepalived.yaml
index 73f4a2b..8bf5953 100644 (file)
@@ -198,17 +198,6 @@ parameters:
     description: |
         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
-        of GRE tunnel IDs that are available for tenant network allocation
-    default: ["1:4094", ]
-    type: comma_delimited_list
-  NeutronVniRanges:
-    description: |
-        Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges
-        of VXLAN VNI IDs that are available for tenant network allocation
-    default: ["1:4094", ]
     type: comma_delimited_list
   NeutronCorePlugin:
     default: 'ml2'
@@ -232,10 +221,6 @@ parameters:
     description: |
         The mechanism drivers for the Neutron tenant network.
     type: comma_delimited_list
-  NeutronPluginExtensions:
-    default: "qos,port_security"
-    description: |
-        Comma-separated list of extensions enabled for the Neutron plugin.
     type: comma_delimited_list
   NeutronAgentExtensions:
     default: "qos"
@@ -637,6 +622,8 @@ parameters:
       - OS::TripleO::Services::NeutronL3Agent
       - OS::TripleO::Services::NeutronMetadataAgent
       - OS::TripleO::Services::NeutronServer
+      - OS::TripleO::Services::NeutronCorePlugin
+      - OS::TripleO::Services::NeutronOvsAgent
       - OS::TripleO::Services::RabbitMQ
       - OS::TripleO::Services::HAproxy
       - OS::TripleO::Services::Keepalived
@@ -911,12 +898,7 @@ resources:
           MysqlMaxConnections: {get_param: MysqlMaxConnections}
           MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
           NeutronPublicInterfaceIP: {get_param: NeutronPublicInterfaceIP}
-          NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
-          NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
           NeutronTenantMtu: {get_param: NeutronTenantMtu}
-          NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
-          NeutronEnableL2Pop: {get_param: NeutronEnableL2Pop}
-          NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
           NeutronPublicInterface: {get_param: NeutronPublicInterface}
           NeutronPublicInterfaceDefaultRoute: {get_param: NeutronPublicInterfaceDefaultRoute}
           NeutronPublicInterfaceRawDevice: {get_param: NeutronPublicInterfaceRawDevice}
@@ -926,12 +908,6 @@ resources:
           NeutronAgentMode: {get_param: NeutronAgentMode}
           NeutronCorePlugin: {get_param: NeutronCorePlugin}
           NeutronServicePlugins: {get_param: NeutronServicePlugins}
-          NeutronTypeDrivers: {get_param: NeutronTypeDrivers}
-          NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
-          NeutronPluginExtensions: {get_param: NeutronPluginExtensions}
-          NeutronAgentExtensions: {get_param: NeutronAgentExtensions}
-          NeutronNetworkType: {get_param: NeutronNetworkType}
-          NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
           NovaIPv6: {get_param: NovaIPv6}
           NovaPassword: {get_param: NovaPassword}
           NtpServer: {get_param: NtpServer}
index ccaa8d2..8eaffd5 100644 (file)
@@ -247,20 +247,6 @@ parameters:
     type: string
     hidden: true
     default: ''  # Has to be here because of the ignored empty value bug
-  NeutronBridgeMappings:
-    description: >
-      The OVS logical->physical bridge mappings to use. See the Neutron
-      documentation for details. Defaults to mapping br-ex - the external
-      bridge on hosts - to a physical name 'datacentre' which can be used
-      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: comma_delimited_list
-    default: "datacentre:br-ex"
-  NeutronEnableOVSAgent:
-    description: Knob to enable/disable OVS Agent
-    type: boolean
-    default: true
   NeutronAgentMode:
     default: 'dvr_snat'
     description: Agent mode for the neutron-l3-agent on the controller hosts
@@ -285,39 +271,6 @@ parameters:
         Comma-separated list of service plugin entrypoints to be loaded from the
         neutron.service_plugins namespace.
     type: comma_delimited_list
-  NeutronTypeDrivers:
-    default: "vxlan,vlan,flat,gre"
-    description: |
-        Comma-separated list of network type driver entrypoints to be loaded.
-    type: comma_delimited_list
-  NeutronMechanismDrivers:
-    default: 'openvswitch'
-    description: |
-        The mechanism drivers for the Neutron tenant network.
-    type: comma_delimited_list
-  NeutronEnableTunnelling:
-    type: string
-    default: "True"
-  NeutronEnableL2Pop:
-    type: string
-    description: >
-        Enable/disable the L2 population feature in the Neutron agents.
-    default: "False"
-  NeutronFlatNetworks:
-    type: comma_delimited_list
-    default: 'datacentre'
-    description: If set, flat networks to configure in neutron plugins.
-  NeutronNetworkType:
-    default: 'vxlan'
-    description: The tenant network type for Neutron.
-    type: comma_delimited_list
-  NeutronNetworkVLANRanges:
-    default: 'datacentre:1:1000'
-    description: >
-      The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
-      Neutron documentation for permitted values. Defaults to permitting any
-      VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
-    type: comma_delimited_list
   NeutronPassword:
     description: The password for the neutron service and db account, used by neutron agents.
     type: string
@@ -357,33 +310,6 @@ parameters:
       will determine the MTU that is assigned to the VM host through DHCP.
     default: 1400
     type: number
-  NeutronTunnelTypes:
-    default: 'vxlan'
-    description: |
-        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
-        of GRE tunnel IDs that are available for tenant network allocation
-    default: ["1:4094", ]
-    type: comma_delimited_list
-  NeutronVniRanges:
-    description: |
-        Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges
-        of VXLAN VNI IDs that are available for tenant network allocation
-    default: ["1:4094", ]
-    type: comma_delimited_list
-  NeutronPluginExtensions:
-    default: "qos,port_security"
-    description: |
-        Comma-separated list of extensions enabled for the Neutron plugin.
-    type: comma_delimited_list
-  NeutronAgentExtensions:
-    default: "qos"
-    description: |
-        Comma-separated list of extensions enabled for the Neutron agents.
-    type: comma_delimited_list
   NovaApiVirtualIP:
     type: string
     default: ''
@@ -744,8 +670,6 @@ resources:
         bootstack_nodeid: {get_attr: [Controller, name]}
         ceilometer_workers: {get_param: CeilometerWorkers}
         nova_workers: {get_param: NovaWorkers}
-        neutron_enable_tunneling: {get_param: NeutronEnableTunnelling}
-        neutron_enable_l2pop: {get_param: NeutronEnableL2Pop}
         haproxy_log_address: {get_param: HAProxySyslogAddress}
         haproxy_stats_password: {get_param: HAProxyStatsPassword}
         haproxy_stats_user: {get_param: HAProxyStatsUser}
@@ -780,11 +704,6 @@ resources:
             template: tripleo-CLUSTER
             params:
               CLUSTER: {get_param: MysqlClusterUniquePart}
-        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}
@@ -794,61 +713,10 @@ resources:
             template: PLUGINS
             params:
               PLUGINS: {get_param: NeutronServicePlugins}
-        neutron_type_drivers:
-          str_replace:
-            template: DRIVERS
-            params:
-              DRIVERS: {get_param: NeutronTypeDrivers}
-        neutron_enable_ovs_agent: {get_param: NeutronEnableOVSAgent}
-        neutron_mechanism_drivers:
-          str_replace:
-            template: MECHANISMS
-            params:
-              MECHANISMS: {get_param: NeutronMechanismDrivers}
-        neutron_network_vlan_ranges:
-          str_replace:
-            template: RANGES
-            params:
-              RANGES: {get_param: NeutronNetworkVLANRanges}
-        neutron_bridge_mappings:
-          str_replace:
-            template: MAPPINGS
-            params:
-              MAPPINGS: {get_param: NeutronBridgeMappings}
         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_tunnel_id_ranges:
-          str_replace:
-            template: RANGES
-            params:
-              RANGES: {get_param: NeutronTunnelIdRanges}
-        neutron_vni_ranges:
-          str_replace:
-            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:
-              TYPES: {get_param: NeutronTunnelTypes}
-        neutron_plugin_extensions:
-          str_replace:
-            template: PLUGIN_EXTENSIONS
-            params:
-              PLUGIN_EXTENSIONS: {get_param: NeutronPluginExtensions}
-        neutron_agent_extensions:
-          str_replace:
-            template: AGENT_EXTENSIONS
-            params:
-              AGENT_EXTENSIONS: {get_param: NeutronAgentExtensions}
         neutron_password: {get_param: NeutronPassword}
         neutron_tenant_mtu: {get_param: NeutronTenantMtu}
         neutron_internal_url: { get_param: [ EndpointMap, NeutronInternal, uri ] }
@@ -1125,30 +993,16 @@ resources:
                 # Neutron
                 neutron::bind_host: {get_input: neutron_api_network}
                 neutron::network_device_mtu: {get_input: neutron_tenant_mtu}
-                neutron::agents::ml2::ovs::enable_tunneling: {get_input: neutron_enable_tunneling}
-                neutron::agents::ml2::ovs::l2_population: {get_input: neutron_enable_l2pop}
                 neutron::agents::ml2::ovs::local_ip: {get_input: neutron_local_ip}
-                neutron::plugins::ml2::flat_networks: {get_input: neutron_flat_networks}
                 neutron::agents::metadata::metadata_ip: {get_input: neutron_api_network}
                 neutron_agent_mode: {get_input: neutron_agent_mode}
                 neutron_router_distributed: {get_input: neutron_router_distributed}
                 neutron::core_plugin: {get_input: neutron_core_plugin}
                 neutron::service_plugins: {get_input: neutron_service_plugins}
-                neutron::enable_ovs_agent: {get_input: neutron_enable_ovs_agent}
-                neutron::plugins::ml2::type_drivers: {get_input: neutron_type_drivers}
-                neutron::plugins::ml2::mechanism_drivers: {get_input: neutron_mechanism_drivers}
-                neutron::plugins::ml2::extension_drivers: {get_input: neutron_plugin_extensions}
-                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::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::plugins::ml2::tenant_network_types: {get_input: neutron_tenant_network_types}
-                neutron::agents::ml2::ovs::tunnel_types: {get_input: neutron_tunnel_types}
-                neutron::agents::ml2::ovs::extensions: {get_input: neutron_agent_extensions}
                 neutron::keystone::auth::public_url: {get_input: neutron_public_url }
                 neutron::keystone::auth::internal_url: {get_input: neutron_internal_url }
                 neutron::keystone::auth::admin_url: {get_input: neutron_admin_url }
index bd54e2a..0f76915 100644 (file)
@@ -247,42 +247,10 @@ if hiera('step') >= 4 {
         keystone_tenant   => hiera('neutron::server::auth_tenant'),
         keystone_password => hiera('neutron::server::password')
       }
-    } else {
-
-      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':
-          n1kv_source  => hiera('n1kv_vem_source', undef),
-          n1kv_version => hiera('n1kv_vem_version', undef),
-        }
-
-        class { '::n1k_vsm':
-          n1kv_source       => hiera('n1kv_vsm_source', undef),
-          n1kv_version      => hiera('n1kv_vsm_version', undef),
-          pacemaker_control => false,
-        }
-      }
-
-      if 'cisco_ucsm' in hiera('neutron::plugins::ml2::mechanism_drivers') {
-        include ::neutron::plugins::ml2::cisco::ucsm
-      }
-      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 'bsn_ml2' in hiera('neutron::plugins::ml2::mechanism_drivers') {
-        include ::neutron::plugins::ml2::bigswitch::restproxy
-        include ::neutron::agents::bigswitch
-      }
-      Service['neutron-server'] -> Service['neutron-ovs-agent-service']
     }
 
     Service['neutron-server'] -> Service['neutron-metadata']
+
   }
 
   if $enable_ceph {
index a2322be..0e2112c 100644 (file)
@@ -469,37 +469,6 @@ MYSQL_HOST=localhost\n",
       metadata_proxy_shared_secret => hiera('nova::api::neutron_metadata_proxy_shared_secret'),
     }
   }
-  include ::neutron::plugins::ml2
-  class { '::neutron::agents::ml2::ovs':
-    manage_service => false,
-    enabled        => false,
-  }
-
-  if 'cisco_ucsm' in hiera('neutron::plugins::ml2::mechanism_drivers') {
-    include ::neutron::plugins::ml2::cisco::ucsm
-  }
-  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::plugins::ml2::mechanism_drivers') {
-    include ::neutron::plugins::ml2::cisco::nexus1000v
-
-    class { '::neutron::agents::n1kv_vem':
-      n1kv_source  => hiera('n1kv_vem_source', undef),
-      n1kv_version => hiera('n1kv_vem_version', undef),
-    }
-
-    class { '::n1k_vsm':
-      n1kv_source  => hiera('n1kv_vsm_source', undef),
-      n1kv_version => hiera('n1kv_vsm_version', undef),
-    }
-  }
-
-  if 'bsn_ml2' in hiera('neutron::plugins::ml2::mechanism_drivers') {
-    include ::neutron::plugins::ml2::bigswitch::restproxy
-    include ::neutron::agents::bigswitch
-  }
 
   if $enable_ceph {
     $ceph_pools = hiera('ceph_pools')
@@ -730,60 +699,11 @@ password=\"${mysql_root_password}\"",
                           Pacemaker::Resource::Ocf['openstack-core']],
     }
 
-    if hiera('neutron::enable_ovs_agent', true) {
-      pacemaker::resource::service { $::neutron::params::ovs_agent_service:
-        clone_params => 'interleave=true',
-      }
-    }
     if hiera('neutron::core_plugin') == 'midonet.neutron.plugin_v1.MidonetPluginV2' {
       pacemaker::resource::service {'tomcat':
         clone_params => 'interleave=true',
       }
     }
-    if hiera('neutron::enable_ovs_agent', true) {
-      pacemaker::resource::ocf { $::neutron::params::ovs_cleanup_service:
-        ocf_agent_name => 'neutron:OVSCleanup',
-        clone_params   => 'interleave=true',
-      }
-      pacemaker::resource::ocf { 'neutron-netns-cleanup':
-        ocf_agent_name => 'neutron:NetnsCleanup',
-        clone_params   => 'interleave=true',
-      }
-
-      # neutron - one chain ovs-cleanup-->netns-cleanup-->ovs-agent
-      pacemaker::constraint::base { 'neutron-ovs-cleanup-to-netns-cleanup-constraint':
-        constraint_type => 'order',
-        first_resource  => "${::neutron::params::ovs_cleanup_service}-clone",
-        second_resource => 'neutron-netns-cleanup-clone',
-        first_action    => 'start',
-        second_action   => 'start',
-        require         => [Pacemaker::Resource::Ocf[$::neutron::params::ovs_cleanup_service],
-                            Pacemaker::Resource::Ocf['neutron-netns-cleanup']],
-      }
-      pacemaker::constraint::colocation { 'neutron-ovs-cleanup-to-netns-cleanup-colocation':
-        source  => 'neutron-netns-cleanup-clone',
-        target  => "${::neutron::params::ovs_cleanup_service}-clone",
-        score   => 'INFINITY',
-        require => [Pacemaker::Resource::Ocf[$::neutron::params::ovs_cleanup_service],
-                    Pacemaker::Resource::Ocf['neutron-netns-cleanup']],
-      }
-      pacemaker::constraint::base { 'neutron-netns-cleanup-to-openvswitch-agent-constraint':
-        constraint_type => 'order',
-        first_resource  => 'neutron-netns-cleanup-clone',
-        second_resource => "${::neutron::params::ovs_agent_service}-clone",
-        first_action    => 'start',
-        second_action   => 'start',
-        require         => [Pacemaker::Resource::Ocf['neutron-netns-cleanup'],
-                            Pacemaker::Resource::Service[$::neutron::params::ovs_agent_service]],
-      }
-      pacemaker::constraint::colocation { 'neutron-netns-cleanup-to-openvswitch-agent-colocation':
-        source  => "${::neutron::params::ovs_agent_service}-clone",
-        target  => 'neutron-netns-cleanup-clone',
-        score   => 'INFINITY',
-        require => [Pacemaker::Resource::Ocf['neutron-netns-cleanup'],
-                    Pacemaker::Resource::Service[$::neutron::params::ovs_agent_service]],
-      }
-    }
     if hiera('neutron::core_plugin') == 'midonet.neutron.plugin_v1.MidonetPluginV2' {
       #midonet-chain chain keystone-->neutron-server-->dhcp-->metadata->tomcat
       pacemaker::constraint::base { 'neutron-server-to-dhcp-agent-constraint':
diff --git a/puppet/services/neutron-ovs-agent.yaml b/puppet/services/neutron-ovs-agent.yaml
new file mode 100644 (file)
index 0000000..0e1dbb2
--- /dev/null
@@ -0,0 +1,71 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Neutron OVS agent configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  NeutronEnableTunnelling:
+    type: string
+    default: "True"
+  NeutronEnableL2Pop:
+    type: string
+    description: >
+        Enable/disable the L2 population feature in the Neutron agents.
+    default: "False"
+  NeutronBridgeMappings:
+    description: >
+      The OVS logical->physical bridge mappings to use. See the Neutron
+      documentation for details. Defaults to mapping br-ex - the external
+      bridge on hosts - to a physical name 'datacentre' which can be used
+      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: comma_delimited_list
+    default: "datacentre:br-ex"
+  NeutronTunnelTypes:
+    default: 'vxlan'
+    description: |
+        The tunnel types for the Neutron tenant network.
+    type: comma_delimited_list
+  NeutronAgentExtensions:
+    default: "qos"
+    description: |
+        Comma-separated list of extensions enabled for the Neutron agents.
+    type: comma_delimited_list
+
+resources:
+
+  NeutronBase:
+    type: ./neutron-base.yaml
+
+outputs:
+  role_data:
+    description: Role data for the Neutron OVS agent service.
+    value:
+      config_settings:
+        map_merge:
+          - get_attr: [NeutronBase, role_data, config_settings]
+            neutron::agents::ml2::ovs::enable_tunneling: {get_param: NeutronEnableTunnelling}
+            neutron::agents::ml2::ovs::l2_population: {get_param: NeutronEnableL2Pop}
+            neutron::agents::ml2::ovs::bridge_mappings:
+              str_replace:
+                template: MAPPINGS
+                params:
+                  MAPPINGS: {get_param: NeutronBridgeMappings}
+            neutron::agents::ml2::ovs::tunnel_types:
+              str_replace:
+                template: TYPES
+                params:
+                  TYPES: {get_param: NeutronTunnelTypes}
+            neutron::agents::ml2::ovs::extensions:
+              str_replace:
+                template: AGENT_EXTENSIONS
+                params:
+                  AGENT_EXTENSIONS: {get_param: NeutronAgentExtensions}
+      step_config: |
+        include ::tripleo::profile::base::neutron::ovs
diff --git a/puppet/services/neutron-plugin-ml2.yaml b/puppet/services/neutron-plugin-ml2.yaml
new file mode 100644 (file)
index 0000000..435a6de
--- /dev/null
@@ -0,0 +1,109 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Neutron ML2 Plugin configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  NeutronMechanismDrivers:
+    default: 'openvswitch'
+    description: |
+        The mechanism drivers for the Neutron tenant network.
+    type: comma_delimited_list
+  NeutronTypeDrivers:
+    default: "vxlan,vlan,flat,gre"
+    description: |
+        Comma-separated list of network type driver entrypoints to be loaded.
+    type: comma_delimited_list
+  NeutronFlatNetworks:
+    type: comma_delimited_list
+    default: 'datacentre'
+    description: If set, flat networks to configure in neutron plugins.
+  NeutronPluginExtensions:
+    default: "qos,port_security"
+    description: |
+        Comma-separated list of extensions enabled for the Neutron plugin.
+    type: comma_delimited_list
+  NeutronNetworkVLANRanges:
+    default: 'datacentre:1:1000'
+    description: >
+      The Neutron ML2 and OpenVSwitch vlan mapping range to support. See the
+      Neutron documentation for permitted values. Defaults to permitting any
+      VLAN on the 'datacentre' physical network (See NeutronBridgeMappings).
+    type: comma_delimited_list
+  NeutronTunnelIdRanges:
+    description: |
+        Comma-separated list of <tun_min>:<tun_max> tuples enumerating ranges
+        of GRE tunnel IDs that are available for tenant network allocation
+    default: ["1:4094", ]
+    type: comma_delimited_list
+  NeutronVniRanges:
+    description: |
+        Comma-separated list of <vni_min>:<vni_max> tuples enumerating ranges
+        of VXLAN VNI IDs that are available for tenant network allocation
+    default: ["1:4094", ]
+    type: comma_delimited_list
+  NeutronNetworkType:
+    default: 'vxlan'
+    description: The tenant network type for Neutron.
+    type: comma_delimited_list
+
+resources:
+
+  NeutronBase:
+    type: ./neutron-base.yaml
+
+outputs:
+  role_data:
+    description: Role data for the Neutron ML2 plugin.
+    value:
+      config_settings:
+        map_merge:
+          - get_attr: [NeutronBase, role_data, config_settings]
+          - neutron::plugins::ml2::mechanism_drivers:
+              str_replace:
+                template: MECHANISMS
+                params:
+                  MECHANISMS: {get_param: NeutronMechanismDrivers}
+            neutron::plugins::ml2::type_drivers:
+              str_replace:
+                template: DRIVERS
+                params:
+                  DRIVERS: {get_param: NeutronTypeDrivers}
+            neutron::plugins::ml2::flat_networks:
+              str_replace:
+                template: NETWORKS
+                params:
+                  NETWORKS: {get_param: NeutronFlatNetworks}
+            neutron::plugins::ml2::extension_drivers:
+              str_replace:
+                template: PLUGIN_EXTENSIONS
+                params:
+                  PLUGIN_EXTENSIONS: {get_param: NeutronPluginExtensions}
+            neutron::plugins::ml2::network_vlan_ranges:
+              str_replace:
+                template: RANGES
+                params:
+                  RANGES: {get_param: NeutronNetworkVLANRanges}
+            neutron::plugins::ml2::tunnel_id_ranges:
+              str_replace:
+                template: RANGES
+                params:
+                  RANGES: {get_param: NeutronTunnelIdRanges}
+            neutron::plugins::ml2::vni_ranges:
+              str_replace:
+                template: RANGES
+                params:
+                  RANGES: {get_param: NeutronVniRanges}
+            neutron::plugins::ml2::tenant_network_types:
+              str_replace:
+                template: TYPES
+                params:
+                  TYPES: {get_param: NeutronNetworkType}
+
+      step_config: |
+        include ::tripleo::profile::base::neutron::ml2
diff --git a/puppet/services/pacemaker/neutron-ovs-agent.yaml b/puppet/services/pacemaker/neutron-ovs-agent.yaml
new file mode 100644 (file)
index 0000000..a17d7a6
--- /dev/null
@@ -0,0 +1,25 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Neutron OVS agent with Pacemaker configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+
+resources:
+
+  NeutronOvsBase:
+    type: ../neutron-ovs-agent.yaml
+
+outputs:
+  role_data:
+    description: Role data for the Neutron OVS agent service.
+    value:
+      config_settings:
+        get_attr: [NeutronOvsBase, role_data, config_settings]
+      step_config: |
+        include ::tripleo::profile::pacemaker::neutron::ovs
diff --git a/puppet/services/pacemaker/neutron-plugin-ml2.yaml b/puppet/services/pacemaker/neutron-plugin-ml2.yaml
new file mode 100644 (file)
index 0000000..ac9d240
--- /dev/null
@@ -0,0 +1,28 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Neutron ML2 Plugin with Pacemaker configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+
+resources:
+
+  NeutronMl2Base:
+    type: ../neutron-plugin-ml2.yaml
+
+outputs:
+  role_data:
+    description: Role data for the Neutron ML2 plugin.
+    value:
+      config_settings:
+        map_merge:
+          - get_attr: [NeutronMl2Base, role_data, config_settings]
+          - neutron::agents::ml2::ovs::enabled: false
+            neutron::agents::ml2::ovs::manage_service: false
+      step_config: |
+        include ::tripleo::profile::pacemaker::neutron::ml2