Composable Neutron Plumgrid plugin
authorDan Prince <dprince@redhat.com>
Wed, 8 Jun 2016 19:57:18 +0000 (15:57 -0400)
committerDan Prince <dprince@redhat.com>
Tue, 14 Jun 2016 01:57:58 +0000 (21:57 -0400)
Partially-implements: blueprint composable-services-within-roles

Depends-On: I8536782d433f97a9b619e54a1eb1ea0edb8fdaf0
Change-Id: I3309997413998f1d90117e361d1578da3633e56c

environments/neutron-plumgrid.yaml
environments/puppet-pacemaker.yaml
overcloud-resource-registry-puppet.yaml
puppet/manifests/overcloud_controller.pp
puppet/manifests/overcloud_controller_pacemaker.pp
puppet/services/neutron-plugin-plumgrid.yaml [new file with mode: 0644]
puppet/services/pacemaker/neutron-plugin-plumgrid.yaml [new file with mode: 0644]

index 23c088b..333d44d 100755 (executable)
@@ -7,6 +7,8 @@ resource_registry:
   OS::TripleO::Services::NeutronL3Agent: OS::Heat::None
   OS::TripleO::Services::NeutronMetadataAgent: OS::Heat::None
   OS::TripleO::Services::NeutronOvsAgent: OS::Heat::None
+  # Override the Neutron core plugin to use PLUMgrid
+  OS::TripleO::Services::NeutronCorePlugin: OS::TripleO::Services::NeutronCorePluginPlumgrid
 
 parameter_defaults:
   NeutronCorePlugin: networking_plumgrid.neutron.plugins.plugin.NeutronPluginPLUMgridV2
index b139fc8..32d0d91 100644 (file)
@@ -24,6 +24,9 @@ resource_registry:
   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
+  # Neutron Core Plugin Vendors (these typically override NeutronCorePlugin)
+  OS::TripleO::Services::NeutronCorePluginPlumgrid: ../puppet/services/pacemaker/neutron-plugin-plumgrid.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
index f140383..339dc14 100644 (file)
@@ -137,6 +137,9 @@ 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
+  # Neutron Core Plugin Vendors (these typically override NeutronCorePlugin)
+  OS::TripleO::Services::NeutronCorePluginPlumgrid: puppet/services/neutron-plugin-plumgrid.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
index ba0ad5c..88ae895 100644 (file)
@@ -215,21 +215,13 @@ if hiera('step') >= 4 {
 
   }
 
-  # If the value of core plugin is set to 'nuage' or'opencontrail' or 'plumgrid',
-  # include nuage or opencontrail or plumgrid core plugins
+  # If the value of core plugin is set to 'nuage' or'opencontrail'
+  # include nuage or opencontrail core plugins
   # else use the default value of 'ml2'
   if hiera('neutron::core_plugin') == 'neutron.plugins.nuage.plugin.NuagePlugin' {
     include ::neutron::plugins::nuage
   } elsif hiera('neutron::core_plugin') == 'neutron_plugin_contrail.plugins.opencontrail.contrail_plugin.NeutronPluginContrailCoreV2' {
     include ::neutron::plugins::opencontrail
-  }
-  elsif hiera('neutron::core_plugin') == 'networking_plumgrid.neutron.plugins.plugin.NeutronPluginPLUMgridV2' {
-    class { '::neutron::plugins::plumgrid' :
-      connection                   => hiera('neutron::server::database_connection'),
-      controller_priv_host         => hiera('keystone_admin_api_vip'),
-      admin_password               => hiera('admin_password'),
-      metadata_proxy_shared_secret => hiera('nova::api::neutron_metadata_proxy_shared_secret'),
-    }
   } else {
 
     # If the value of core plugin is set to 'midonet',
index 81cdb10..7a31dd7 100644 (file)
@@ -454,14 +454,6 @@ MYSQL_HOST=localhost\n",
       keystone_password => hiera('neutron::server::password')
     }
   }
-  if hiera('neutron::core_plugin') == 'networking_plumgrid.neutron.plugins.plugin.NeutronPluginPLUMgridV2' {
-    class { '::neutron::plugins::plumgrid' :
-      connection                   => hiera('neutron::server::database_connection'),
-      controller_priv_host         => hiera('keystone_admin_api_vip'),
-      admin_password               => hiera('admin_password'),
-      metadata_proxy_shared_secret => hiera('nova::api::neutron_metadata_proxy_shared_secret'),
-    }
-  }
 
   if $enable_ceph {
     $ceph_pools = hiera('ceph_pools')
diff --git a/puppet/services/neutron-plugin-plumgrid.yaml b/puppet/services/neutron-plugin-plumgrid.yaml
new file mode 100644 (file)
index 0000000..9f62691
--- /dev/null
@@ -0,0 +1,43 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Neutron Plumgrid plugin
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  NeutronPassword:
+    description: The password for the neutron service and db account, used by neutron agents.
+    type: string
+    hidden: true
+  NeutronMetadataProxySharedSecret:
+    description: Shared secret to prevent spoofing
+    type: string
+    hidden: true
+  AdminPassword:
+    description: The password for the keystone admin account, used for monitoring, querying neutron etc.
+    type: string
+    hidden: true
+
+outputs:
+  role_data:
+    description: Role data for the Neutron Plumgrid plugin
+    value:
+      config_settings:
+        neutron::plugins::plumgrid::connection:
+          list_join:
+            - ''
+            - - {get_param: [EndpointMap, MysqlInternal, protocol]}
+              - '://neutron:'
+              - {get_param: NeutronPassword}
+              - '@'
+              - {get_param: [EndpointMap, MysqlInternal, host]}
+              - '/ovs_neutron?charset=utf8'
+        neutron::plugins::plumgrid::controller_priv_host: {get_param: [EndpointMap, KeystoneAdmin, host]}
+        neutron::plugins::plumgrid::admin_password: {get_param: AdminPassword}
+        neutron::plugins::plumgrid::metadata_proxy_shared_secret: {get_param: NeutronMetadataProxySharedSecret}
+      step_config: |
+        include tripleo::profile::base::neutron::plugins::plumgrid
diff --git a/puppet/services/pacemaker/neutron-plugin-plumgrid.yaml b/puppet/services/pacemaker/neutron-plugin-plumgrid.yaml
new file mode 100644 (file)
index 0000000..c2e8eaa
--- /dev/null
@@ -0,0 +1,28 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Neutron PLUMgrid 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:
+
+  NeutronPluginPlumgridBase:
+    type: ../neutron-plugin-ml2.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Neutron PLUMgrid plugin.
+    value:
+      config_settings:
+        map_merge:
+          - get_attr: [NeutronPluginPlumgridBase, role_data, config_settings]
+      step_config: |
+        include ::tripleo::profile::pacemaker::neutron::plugins::plumgrid