Big Switch Neutron ML2 plugin integration
authorJiri Stransky <jistr@redhat.com>
Fri, 14 Aug 2015 13:30:36 +0000 (15:30 +0200)
committerJiri Stransky <jistr@redhat.com>
Wed, 16 Sep 2015 12:32:48 +0000 (14:32 +0200)
Add support for Big Switch Neutron ML2 plugin. Makes sure that the
package is present and sets up the [restproxy] section in ml2_conf.ini.

This also adds support for setting the ovs_use_veth option in
l3_agent.ini. There is no support for this in puppet-neutron l3 class
and it probably doesn't make sense adding it there, because this setting
isn't relevant for all l3 agent drivers, it's specific to
OVSInterfaceDriver. The ovs_use_veth option is also added to
dhcp_agent.ini.

Change-Id: I99635e25b2099dacce68154fe14693d6f06ac19f

environments/neutron-ml2-bigswitch.yaml [new file with mode: 0644]
puppet/controller-puppet.yaml
puppet/extraconfig/pre_deploy/controller/neutron-ml2-bigswitch.yaml [new file with mode: 0644]
puppet/manifests/overcloud_controller.pp
puppet/manifests/overcloud_controller_pacemaker.pp

diff --git a/environments/neutron-ml2-bigswitch.yaml b/environments/neutron-ml2-bigswitch.yaml
new file mode 100644 (file)
index 0000000..69c9132
--- /dev/null
@@ -0,0 +1,17 @@
+# A Heat environment file which can be used to enable Big Switch
+# extensions, configured via puppet
+resource_registry:
+  OS::TripleO::ControllerExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/neutron-ml2-bigswitch.yaml
+
+parameter_defaults:
+  # Required to fill in:
+  NeutronBigswitchRestproxyServers:
+  NeutronBigswitchRestproxyServerAuth:
+
+  # Optional:
+  # NeutronBigswitchRestproxyAutoSyncOnFailure:
+  # NeutronBigswitchRestproxyConsistencyInterval:
+  # NeutronBigswitchRestproxyNeutronId:
+  # NeutronBigswitchRestproxyServerSsl:
+  # NeutronBigswitchRestproxySslCertDirectory:
+
index f47463a..eb19b36 100644 (file)
@@ -910,6 +910,7 @@ resources:
             - '"%{::osfamily}"'
             - common
             - cinder_netapp_data # Optionally provided by ControllerExtraConfigPre
+            - neutron_bigswitch_data # Optionally provided by ControllerExtraConfigPre
             - neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
           datafiles:
             controller_extraconfig:
diff --git a/puppet/extraconfig/pre_deploy/controller/neutron-ml2-bigswitch.yaml b/puppet/extraconfig/pre_deploy/controller/neutron-ml2-bigswitch.yaml
new file mode 100644 (file)
index 0000000..bf06d25
--- /dev/null
@@ -0,0 +1,73 @@
+heat_template_version: 2015-04-30
+
+description: Configure hieradata for Neutron Big Switch configuration
+
+parameters:
+  server:
+    description: ID of the controller node to apply this config to
+    type: string
+  NeutronBigswitchRestproxyServers:
+    description: 'Big Switch controllers ("IP:port,IP:port")'
+    type: string
+  NeutronBigswitchRestproxyServerAuth:
+    description: 'Big Switch controller credentials ("username:password")'
+    type: string
+  NeutronBigswitchRestproxyAutoSyncOnFailure:
+    description: Resynchronize with the new master server on Big Switch failover.
+    type: boolean
+    default: true
+  NeutronBigswitchRestproxyConsistencyInterval:
+    description: Keepalive message interval (from Neutron to Big Switch controller).
+    type: number
+    default: 60
+  NeutronBigswitchRestproxyNeutronId:
+    description: Unique identifier of the Neutron instance for the Big Switch controller.
+    type: string
+    default: 'neutron'
+  NeutronBigswitchRestproxyServerSsl:
+    description: Whether Neutron should use SSL to talk to the Big Switch controllers.
+    type: boolean
+    default: true
+  NeutronBigswitchRestproxySslCertDirectory:
+    description: Directory where Big Switch controller certificate will be stored.
+    type: string
+    default: '/var/lib/neutron'
+
+
+resources:
+  NeutronBigswitchConfig:
+    type: OS::Heat::StructuredConfig
+    properties:
+      group: os-apply-config
+      config:
+        hiera:
+          datafiles:
+            neutron_bigswitch_data:
+              mapped_data:
+                neutron_enable_bigswitch_ml2: true
+                neutron::plugins::ml2::bigswitch::restproxy::servers: {get_input: restproxy_servers}
+                neutron::plugins::ml2::bigswitch::restproxy::server_auth: {get_input: restproxy_server_auth}
+                neutron::plugins::ml2::bigswitch::restproxy::auto_sync_on_failure: {get_input: restproxy_auto_sync_on_failure}
+                neutron::plugins::ml2::bigswitch::restproxy::consistency_interval: {get_input: restproxy_consistency_interval}
+                neutron::plugins::ml2::bigswitch::restproxy::neutron_id: {get_input: restproxy_neutron_id}
+                neutron::plugins::ml2::bigswitch::restproxy::server_ssl: {get_input: restproxy_server_ssl}
+                neutron::plugins::ml2::bigswitch::restproxy::ssl_cert_directory: {get_input: restproxy_ssl_cert_directory}
+
+  NeutronBigswitchDeployment:
+    type: OS::Heat::StructuredDeployment
+    properties:
+      config: {get_resource: NeutronBigswitchConfig}
+      server: {get_param: server}
+      input_values:
+        restproxy_servers: {get_param: NeutronBigswitchRestproxyServers}
+        restproxy_server_auth: {get_param: NeutronBigswitchRestproxyServerAuth }
+        restproxy_auto_sync_on_failure: {get_param: NeutronBigswitchRestproxyAutoSyncOnFailure}
+        restproxy_consistency_interval: {get_param: NeutronBigswitchRestproxyConsistencyInterval}
+        restproxy_neutron_id: {get_param: NeutronBigswitchRestproxyNeutronId}
+        restproxy_server_ssl: {get_param: NeutronBigswitchRestproxyServerSsl}
+        restproxy_ssl_cert_directory: {get_param: NeutronBigswitchRestproxySslCertDirectory}
+
+outputs:
+  deploy_stdout:
+    description: Deployment reference, used to trigger puppet apply on changes
+    value: {get_attr: [NeutronBigswitchDeployment, deploy_stdout]}
index b98c3a4..fdb16ea 100644 (file)
@@ -254,6 +254,16 @@ if hiera('step') >= 3 {
     include ::neutron::plugins::ml2::cisco::type_nexus_vxlan
   }
 
+  if hiera('neutron_enable_bigswitch_ml2', false) {
+    include neutron::plugins::ml2::bigswitch::restproxy
+  }
+  neutron_l3_agent_config {
+    'DEFAULT/ovs_use_veth': value => hiera('neutron_ovs_use_veth', false);
+  }
+  neutron_dhcp_agent_config {
+    'DEFAULT/ovs_use_veth': value => hiera('neutron_ovs_use_veth', false);
+  }
+
   Service['neutron-server'] -> Service['neutron-dhcp-service']
   Service['neutron-server'] -> Service['neutron-l3']
   Service['neutron-server'] -> Service['neutron-ovs-agent-service']
index 862c7bd..4e70c86 100644 (file)
@@ -616,6 +616,16 @@ if hiera('step') >= 3 {
     include ::neutron::plugins::ml2::cisco::type_nexus_vxlan
   }
 
+  if hiera('neutron_enable_bigswitch_ml2', false) {
+    include neutron::plugins::ml2::bigswitch::restproxy
+  }
+  neutron_l3_agent_config {
+    'DEFAULT/ovs_use_veth': value => hiera('neutron_ovs_use_veth', false);
+  }
+  neutron_dhcp_agent_config {
+    'DEFAULT/ovs_use_veth': value => hiera('neutron_ovs_use_veth', false);
+  }
+
   include ::cinder
   class { '::cinder::api':
     sync_db => $sync_db,