Composable Neutron Core Compute Plugin
authorDan Prince <dprince@redhat.com>
Wed, 6 Jul 2016 15:13:15 +0000 (11:13 -0400)
committerDan Prince <dprince@redhat.com>
Tue, 12 Jul 2016 13:48:30 +0000 (09:48 -0400)
Create a new resource registry entry for a Neutron "compute plugin".

For ML2 this may be the same os the NeutronComputePlugin but patches
for other vendors will follow that require extra bits on nodes
where VMs will be created.

This patch removes the ML2 code from the compute role and instead
uses the existing composable services.

NOTE: we are able to remove the puppet resource chain to force OVS to
get restarted due to puppet-neutron commit:
Idb1332dd498bb3065720f2ccaf68e6b0e9fa80c3 which should resolve that
issue.

Co-Authored-By: Emilien Macchi <emilien@redhat.com>
Depends-On: I95b9188607ab6c599ad4cde6faa1deb081618f3e
Change-Id: I2496372ca6e6ba9f52e9a8bb6e8dc731c125af13

environments/neutron-midonet.yaml
environments/neutron-nuage-config.yaml
environments/neutron-opencontrail.yaml
environments/neutron-plumgrid.yaml
overcloud-resource-registry-puppet.yaml
overcloud.yaml
puppet/compute.yaml
puppet/manifests/overcloud_compute.pp

index 90b98ae..cdf5fb6 100644 (file)
@@ -4,8 +4,10 @@ resource_registry:
   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
+  OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None
   # Override the NeutronCorePlugin to use Nuage
   OS::TripleO::Services::NeutronCorePlugin: OS::TripleO::Services::NeutronCorePluginMidonet
+  OS::TripleO::Services::ComputeNeutronCorePlugin: OS::Heat::None
 
 parameter_defaults:
   EnableZookeeperOnController: true
index 28056b3..9d739f0 100644 (file)
@@ -4,8 +4,10 @@ resource_registry:
   OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
   OS::TripleO::Services::NeutronMetadataAgent: OS::Heat::None
   OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None
+  OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None
   # Override the NeutronCorePlugin to use Nuage
   OS::TripleO::Services::NeutronCorePlugin: OS::TripleO::Services::NeutronCorePluginNuage
+  OS::TripleO::Services::ComputeNeutronCorePlugin: OS::Heat::None
 
 parameter_defaults:
   NeutronNuageOSControllerIp: '0.0.0.0'
index 340bac7..d9d234b 100644 (file)
@@ -6,8 +6,10 @@ resource_registry:
   OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
   OS::TripleO::Services::NeutronMetadataAgent: OS::Heat::None
   OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None
+  OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None
   # Override the NeutronCorePlugin to use Nuage
   OS::TripleO::Services::NeutronCorePlugin: OS::TripleO::Services::NeutronCorePluginOpencontrail
+  OS::TripleO::Services::ComputeNeutronCorePlugin: OS::Heat::None
 
 parameter_defaults:
   NeutronCorePlugin: neutron_plugin_contrail.plugins.opencontrail.contrail_plugin.NeutronPluginContrailCoreV2
index 08ace10..78e7d91 100755 (executable)
@@ -6,8 +6,10 @@ resource_registry:
   OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
   OS::TripleO::Services::NeutronMetadataAgent: OS::Heat::None
   OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None
+  OS::TripleO::Services::ComputeNeutronOvsAgent: OS::Heat::None
   # Override the Neutron core plugin to use PLUMgrid
   OS::TripleO::Services::NeutronCorePlugin: OS::TripleO::Services::NeutronCorePluginPlumgrid
+  OS::TripleO::Services::ComputeNeutronCorePlugin: OS::Heat::None
 
 parameter_defaults:
   NeutronCorePlugin: networking_plumgrid.neutron.plugins.plugin.NeutronPluginPLUMgridV2
index 379daab..003a095 100644 (file)
@@ -147,12 +147,16 @@ resource_registry:
   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
+  # can be the same as NeutronCorePlugin but some vendors install different
+  # things where VMs run
+  OS::TripleO::Services::ComputeNeutronCorePlugin: puppet/services/neutron-plugin-ml2.yaml
   # Neutron Core Plugin Vendors (these typically override NeutronCorePlugin)
   OS::TripleO::Services::NeutronCorePluginPlumgrid: puppet/services/neutron-plugin-plumgrid.yaml
   OS::TripleO::Services::NeutronCorePluginNuage: puppet/services/neutron-plugin-nuage.yaml
   OS::TripleO::Services::NeutronCorePluginOpencontrail: puppet/services/neutron-plugin-opencontrail.yaml
   OS::TripleO::Services::NeutronCorePluginMidonet: puppet/services/neutron-midonet.yaml
   OS::TripleO::Services::NeutronOvsAgent: puppet/services/neutron-ovs-agent.yaml
+  OS::TripleO::Services::ComputeNeutronOvsAgent: 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 1e56126..ab83733 100644 (file)
@@ -68,38 +68,10 @@ parameters:
     default: false
     description: Enable IPv6 features in Memcached.
     type: boolean
-  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"
   NeutronControlPlaneID:
     default: 'ctlplane'
     type: string
     description: Neutron ID or name for ctlplane network.
-  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. Defaults to
-      'datacentre' to permit external network creation.
-  NeutronNetworkType:
-    default: 'vxlan'
-    description: The tenant network type for Neutron.
-    type: comma_delimited_list
   NeutronPassword:
     description: The password for the neutron service account, used by neutron agents.
     type: string
@@ -108,52 +80,6 @@ parameters:
     default: nic1
     description: What interface to bridge onto br-ex for network nodes.
     type: string
-  NeutronMetadataProxySharedSecret:
-    description: Shared secret to prevent spoofing
-    type: string
-    hidden: true
-  NeutronTunnelTypes:
-    default: 'vxlan'
-    description: |
-        The tunnel types for the Neutron tenant network.
-    type: comma_delimited_list
-    type: comma_delimited_list
-  NeutronCorePlugin:
-    default: 'ml2'
-    description: |
-        The core plugin for Neutron. The value should be the entrypoint to be loaded
-        from neutron.core_plugins namespace.
-    type: string
-  NeutronServicePlugins:
-    default: "router,qos"
-    description: |
-        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
-    type: comma_delimited_list
-  NeutronAgentExtensions:
-    default: "qos"
-    description: |
-        Comma-separated list of extensions enabled for the Neutron agents.
-    type: comma_delimited_list
-  NeutronAllowL3AgentFailover:
-    default: 'False'
-    description: Allow automatic l3-agent failover
-    type: string
-  NeutronL3HA:
-    default: 'False'
-    description: Whether to enable l3-agent HA
-    type: string
   NovaIPv6:
     default: false
     description: Enable IPv6 features in Nova
@@ -378,13 +304,6 @@ parameters:
     default: nic1
     description: What interface to add to the HypervisorNeutronPhysicalBridge.
     type: string
-  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
   NovaComputeDriver:
     type: string
     default: libvirt.LibvirtDriver
@@ -525,6 +444,8 @@ parameters:
       - OS::TripleO::Services::NovaCompute
       - OS::TripleO::Services::NovaLibvirt
       - OS::TripleO::Services::Kernel
+      - OS::TripleO::Services::ComputeNeutronCorePlugin
+      - OS::TripleO::Services::ComputeNeutronOvsAgent
     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.
@@ -799,7 +720,6 @@ resources:
           MysqlRootPassword: {get_attr: [MysqlRootPassword, value]}
           NeutronPublicInterface: {get_param: NeutronPublicInterface}
           NeutronPassword: {get_param: NeutronPassword}
-          NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
           NovaIPv6: {get_param: NovaIPv6}
           NovaPassword: {get_param: NovaPassword}
           PcsdPassword: {get_resource: PcsdPassword}
@@ -859,26 +779,10 @@ resources:
           KeyName: {get_param: KeyName}
           KeystoneAdminApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
           KeystonePublicApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, KeystonePublicApiNetwork]}]}
-          NeutronBridgeMappings: {get_param: NeutronBridgeMappings}
-          NeutronEnableTunnelling: {get_param: NeutronEnableTunnelling}
-          NeutronEnableL2Pop : {get_param: NeutronEnableL2Pop}
-          NeutronFlatNetworks: {get_param: NeutronFlatNetworks}
-          NeutronHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
-          NeutronNetworkType: {get_param: NeutronNetworkType}
-          NeutronTunnelTypes: {get_param: NeutronTunnelTypes}
-          NeutronNetworkVLANRanges: {get_param: NeutronNetworkVLANRanges}
           NeutronPassword: {get_param: NeutronPassword}
           NeutronPhysicalBridge: {get_param: HypervisorNeutronPhysicalBridge}
           NeutronPublicInterface: {get_param: HypervisorNeutronPublicInterface}
-          NeutronMetadataProxySharedSecret: {get_param: NeutronMetadataProxySharedSecret}
-          NeutronCorePlugin: {get_param: NeutronCorePlugin}
-          NeutronServicePlugins: {get_param: NeutronServicePlugins}
-          NeutronTypeDrivers: {get_param: NeutronTypeDrivers}
-          NeutronMechanismDrivers: {get_param: NeutronMechanismDrivers}
-          NeutronAgentExtensions: {get_param: NeutronAgentExtensions}
           # L3 HA and Failover is not relevant for Computes, should be removed
-          NeutronAllowL3AgentFailover: {get_param: NeutronAllowL3AgentFailover}
-          NeutronL3HA: {get_param: NeutronL3HA}
           NovaApiHost: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
           NovaComputeDriver: {get_param: NovaComputeDriver}
           NovaComputeExtraConfig: {get_param: NovaComputeExtraConfig}
index 01807f3..ae47f16 100644 (file)
@@ -69,43 +69,6 @@ parameters:
   KeystonePublicApiVirtualIP:
      type: string
      default: ''
-  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"
-  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.
-  NeutronHost:
-    type: string
-    default: ''  # Has to be here because of the ignored empty value bug
-  NeutronNetworkType:
-    type: comma_delimited_list
-    description: The tenant network type for Neutron.
-    default: 'vxlan'
-  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 account, used by neutron agents.
     type: string
@@ -118,64 +81,6 @@ parameters:
     default: nic1
     description: A port to add to the NeutronPhysicalBridge.
     type: string
-  NeutronTunnelTypes:
-    type: comma_delimited_list
-    description: |
-        The tunnel types for the Neutron tenant network.
-    default: 'vxlan'
-  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
-  NeutronMetadataProxySharedSecret:
-    description: Shared secret to prevent spoofing
-    type: string
-    hidden: true
-  NeutronCorePlugin:
-    default: 'ml2'
-    description: |
-        The core plugin for Neutron. The value should be the entrypoint to be loaded
-        from neutron.core_plugins namespace.
-    type: string
-  NeutronServicePlugins:
-    default: "router,qos"
-    description: |
-        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
-  NeutronAgentExtensions:
-    default: "qos"
-    description: |
-        Comma-separated list of extensions enabled for the Neutron agents.
-    type: comma_delimited_list
-  # Not relevant for Computes, should be removed
-  NeutronAllowL3AgentFailover:
-    default: 'True'
-    description: Allow automatic l3-agent failover
-    type: string
-  # Not relevant for Computes, should be removed
-  NeutronL3HA:
-    default: 'False'
-    description: Whether to enable l3-agent HA
-    type: string
   NodeIndex:
     type: number
     default: 0
@@ -536,29 +441,11 @@ 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::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::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::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::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}
-                neutron_public_interface: {get_input: neutron_public_interface}
                 nova::network::neutron::neutron_password: {get_input: neutron_password}
                 nova::network::neutron::neutron_url: {get_input: neutron_internal_url}
                 nova::network::neutron::neutron_auth_url: {get_input: neutron_auth_url}
-                neutron_metadata_proxy_shared_secret: {get_input: neutron_metadata_proxy_shared_secret}
-                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::plugins::ml2::mechanism_drivers: {get_input: neutron_mechanism_drivers}
                 keystone_public_api_virtual_ip: {get_input: keystone_vip}
                 admin_password: {get_input: admin_password}
                 tripleo::packages::enable_install: {get_input: enable_package_install}
@@ -602,70 +489,8 @@ resources:
         ceilometer_compute_agent: {get_param: CeilometerComputeAgent}
         ceilometer_agent_auth_url: {get_param: [EndpointMap, KeystoneInternal, uri]}
         glance_api_servers: {get_param: [EndpointMap, GlanceInternal, uri]}
-        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_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_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_enable_tunneling: {get_param: NeutronEnableTunnelling}
-        neutron_enable_l2pop: {get_param: NeutronEnableL2Pop}
-        neutron_physical_bridge: {get_param: NeutronPhysicalBridge}
-        neutron_public_interface: {get_param: NeutronPublicInterface}
         neutron_password: {get_param: NeutronPassword}
-        neutron_metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
-        neutron_core_plugin: {get_param: NeutronCorePlugin}
-        neutron_service_plugins:
-          str_replace:
-            template: PLUGINS
-            params:
-              PLUGINS: {get_param: NeutronServicePlugins}
-        neutron_type_drivers:
-          str_replace:
-            template: DRIVERS
-            params:
-              DRIVERS: {get_param: NeutronTypeDrivers}
-        neutron_mechanism_drivers:
-          str_replace:
-            template: MECHANISMS
-            params:
-              MECHANISMS: {get_param: NeutronMechanismDrivers}
-        neutron_agent_extensions:
-          str_replace:
-            template: AGENT_EXTENSIONS
-            params:
-              AGENT_EXTENSIONS: {get_param: NeutronAgentExtensions}
         neutron_internal_url: {get_param: [EndpointMap, NeutronInternal, uri]}
         neutron_auth_url: {get_param: [EndpointMap, KeystoneV3Admin, uri]}
         keystone_vip: {get_param: KeystonePublicApiVirtualIP}
index b25d62f..9bebec6 100644 (file)
@@ -40,9 +40,6 @@ if hiera('step') >= 4 {
     }
   }
 
-  include ::neutron
-  include ::neutron::config
-
   # If the value of core plugin is set to 'nuage',
   # include nuage agent,
   # If the value of core plugin is set to 'midonet',
@@ -93,32 +90,6 @@ if hiera('step') >= 4 {
       content => "nova ALL=(root) NOPASSWD: /opt/pg/bin/ifc_ctl_pp *\n",
     }
   }
-  else {
-
-    # NOTE: this code won't live in puppet-neutron until Neutron OVS agent
-    # can be gracefully restarted. See https://review.openstack.org/#/c/297211
-    # In the meantime, it's safe to restart the agent on each change in neutron.conf,
-    # because Puppet changes are supposed to be done during bootstrap and upgrades.
-    # Some resource managed by Neutron_config (like messaging and logging options) require
-    # a restart of OVS agent. This code does it.
-    # In Newton, OVS agent will be able to be restarted gracefully so we'll drop the code
-    # from here and fix it in puppet-neutron.
-    Neutron_config<||> ~> Service['neutron-ovs-agent-service']
-
-    include ::neutron::plugins::ml2
-    include ::neutron::agents::ml2::ovs
-
-    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),
-      }
-    }
-
-    if 'bsn_ml2' in hiera('neutron::plugins::ml2::mechanism_drivers') {
-      include ::neutron::agents::bigswitch
-    }
-  }
 
   include ::ceilometer
   include ::ceilometer::config