Changes for configuring Nuage
authorLokesh Jain <lokesh.jain@gmail.com>
Thu, 1 Oct 2015 19:57:57 +0000 (15:57 -0400)
committerLokesh Jain <lokesh.jain@gmail.com>
Mon, 30 Nov 2015 19:22:08 +0000 (14:22 -0500)
Added ExtraConfig templates and environment files for Nuage specific parameters.
Modified overcloud_compute.pp and overcloud_controller.pp to conditionally
include Nuage plugin and agents.

Change-Id: I95510c753b0a262c73566481f9e94279970f4a4f

environments/neutron-nuage-config.yaml [new file with mode: 0644]
environments/nova-nuage-config.yaml [new file with mode: 0644]
puppet/compute.yaml
puppet/controller.yaml
puppet/extraconfig/pre_deploy/compute/nova-nuage.yaml [new file with mode: 0644]
puppet/extraconfig/pre_deploy/controller/neutron-nuage.yaml [new file with mode: 0644]
puppet/manifests/overcloud_compute.pp
puppet/manifests/overcloud_controller.pp

diff --git a/environments/neutron-nuage-config.yaml b/environments/neutron-nuage-config.yaml
new file mode 100644 (file)
index 0000000..4ba8d9c
--- /dev/null
@@ -0,0 +1,14 @@
+# A Heat environment file which can be used to enable a
+# a Neutron Nuage backend on the controller, configured via puppet
+resource_registry:
+  OS::TripleO::ControllerExtraConfigPre: ../puppet/extraconfig/pre_deploy/controller/neutron-nuage.yaml
+
+parameter_defaults:
+  NeutronNuageOSControllerIp: '0.0.0.0'
+  NeutronNuageNetPartitionName: 'default_name'
+  NeutronNuageVSDIp: '0.0.0.0:0'
+  NeutronNuageVSDUsername: 'username'
+  NeutronNuageVSDPassword: 'password'
+  NeutronNuageVSDOrganization: 'organization'
+  NeutronNuageBaseURIVersion: 'default_uri_version'
+  NeutronNuageCMSId: ''
diff --git a/environments/nova-nuage-config.yaml b/environments/nova-nuage-config.yaml
new file mode 100644 (file)
index 0000000..56c64d1
--- /dev/null
@@ -0,0 +1,8 @@
+# A Heat environment file which can be used to enable
+# Nuage backend on the compute, configured via puppet
+resource_registry:
+  OS::TripleO::ComputeExtraConfigPre: ../puppet/extraconfig/pre_deploy/compute/nova-nuage.yaml
+
+parameter_defaults:
+  NuageActiveController: '0.0.0.0'
+  NuageStandbyController: '0.0.0.0'
index 1d16a25..8d40a4f 100644 (file)
@@ -375,6 +375,7 @@ resources:
             - '"%{::osfamily}"'
             - common
             - cisco_n1kv_data  # Optionally provided by ComputeExtraConfigPre
+            - nova_nuage_data  # Optionally provided by ComputeExtraConfigPre
           datafiles:
             compute_extraconfig:
               mapped_data: {get_param: NovaComputeExtraConfig}
index 861b29a..9f127f9 100644 (file)
@@ -1035,6 +1035,7 @@ resources:
             - neutron_bigswitch_data # Optionally provided by ControllerExtraConfigPre
             - neutron_cisco_data # Optionally provided by ControllerExtraConfigPre
             - cisco_n1kv_data # Optionally provided by ControllerExtraConfigPre
+            - neutron_nuage_data # Optionally provided by ControllerExtraConfigPre
           datafiles:
             controller_extraconfig:
               mapped_data: {get_param: ControllerExtraConfig}
diff --git a/puppet/extraconfig/pre_deploy/compute/nova-nuage.yaml b/puppet/extraconfig/pre_deploy/compute/nova-nuage.yaml
new file mode 100644 (file)
index 0000000..64d0a63
--- /dev/null
@@ -0,0 +1,42 @@
+heat_template_version: 2015-04-30
+
+description: Configure hieradata for Nuage configuration on the Compute
+
+parameters:
+  server:
+    description: ID of the compute node to apply this config to
+    type: string
+
+  NuageActiveController:
+    description: IP address of the Active Virtualized Services Controller (VSC)
+    type: string
+  NuageStandbyController:
+    description: IP address of the Standby Virtualized Services Controller (VSC)
+    type: string
+
+resources:
+  NovaNuageConfig:
+    type: OS::Heat::StructuredConfig
+    properties:
+      group: os-apply-config
+      config:
+        hiera:
+          datafiles:
+            nova_nuage_data:
+              mapped_data:
+               nuage::vrs::active_controller: {get_input: ActiveController}
+               nuage::vrs::standby_controller: {get_input: StandbyController}
+
+  NovaNuageDeployment:
+    type: OS::Heat::StructuredDeployment
+    properties:
+      config: {get_resource: NovaNuageConfig}
+      server: {get_param: server}
+      input_values:
+        ActiveController: {get_param: NuageActiveController}
+        StandbyController: {get_param: NuageStandbyController}
+
+outputs:
+  deploy_stdout:
+    description: Deployment reference, used to trigger puppet apply on changes
+    value: {get_attr: [NovaNuageDeployment, deploy_stdout]}
diff --git a/puppet/extraconfig/pre_deploy/controller/neutron-nuage.yaml b/puppet/extraconfig/pre_deploy/controller/neutron-nuage.yaml
new file mode 100644 (file)
index 0000000..60f02bf
--- /dev/null
@@ -0,0 +1,83 @@
+heat_template_version: 2015-04-30
+
+description: Configure hieradata for Nuage configuration on the Controller
+
+parameters:
+  server:
+    description: ID of the controller node to apply this config to
+    type: string
+
+  # Config specific parameters, to be provided via parameter_defaults
+  NeutronNuageOSControllerIp:
+    description: IP address of the OpenStack Controller
+    type: string
+
+  NeutronNuageNetPartitionName:
+    description: Specifies the title that you will see on the VSD
+    type: string
+    default: 'default_name'
+
+  NeutronNuageVSDIp:
+    description: IP address and port of the Virtual Services Directory
+    type: string
+
+  NeutronNuageVSDUsername:
+    description: Username to be used to log into VSD
+    type: string
+
+  NeutronNuageVSDPassword:
+    description: Password to be used to log into VSD
+    type: string
+
+  NeutronNuageVSDOrganization:
+    description: Organization parameter required to log into VSD
+    type: string
+    default: 'organization'
+
+  NeutronNuageBaseURIVersion:
+    description: URI version to be used based on the VSD release
+    type: string
+    default: 'default_uri_version'
+
+  NeutronNuageCMSId:
+    description: Cloud Management System ID (CMS ID) to distinguish between OS instances on the same VSD
+    type: string
+
+resources:
+  NeutronNuageConfig:
+    type: OS::Heat::StructuredConfig
+    properties:
+      group: os-apply-config
+      config:
+        hiera:
+          datafiles:
+            neutron_nuage_data:
+              mapped_data:
+               neutron::plugins::nuage::nuage_oscontroller_ip: {get_input: NuageOSControllerIp}
+               neutron::plugins::nuage::nuage_net_partition_name: {get_input: NuageNetPartitionName}
+               neutron::plugins::nuage::nuage_vsd_ip: {get_input: NuageVSDIp}
+               neutron::plugins::nuage::nuage_vsd_username: {get_input: NuageVSDUsername}
+               neutron::plugins::nuage::nuage_vsd_password: {get_input: NuageVSDPassword}
+               neutron::plugins::nuage::nuage_vsd_organization: {get_input: NuageVSDOrganization}
+               neutron::plugins::nuage::nuage_base_uri_version: {get_input: NuageBaseURIVersion}
+               neutron::plugins::nuage::nuage_cms_id: {get_input: NuageCMSId}
+
+  NeutronNuageDeployment:
+    type: OS::Heat::StructuredDeployment
+    properties:
+      config: {get_resource: NeutronNuageConfig}
+      server: {get_param: server}
+      input_values:
+        NuageOSControllerIp: {get_param: NeutronNuageOSControllerIp}
+        NuageNetPartitionName: {get_param: NeutronNuageNetPartitionName}
+        NuageVSDIp: {get_param: NeutronNuageVSDIp}
+        NuageVSDUsername: {get_param: NeutronNuageVSDUsername}
+        NuageVSDPassword: {get_param: NeutronNuageVSDPassword}
+        NuageVSDOrganization: {get_param: NeutronNuageVSDOrganization}
+        NuageBaseURIVersion: {get_param: NeutronNuageBaseURIVersion}
+        NuageCMSId: {get_param: NeutronNuageCMSId}
+
+outputs:
+  deploy_stdout:
+    description: Deployment reference, used to trigger puppet apply on changes
+    value: {get_attr: [NeutronNuageDeployment, deploy_stdout]}
index 5818234..2e450a4 100644 (file)
@@ -71,20 +71,28 @@ include ::nova::compute::libvirt
 include ::nova::network::neutron
 include ::neutron
 
-class { '::neutron::plugins::ml2':
-  flat_networks        => split(hiera('neutron_flat_networks'), ','),
-  tenant_network_types => [hiera('neutron_tenant_network_type')],
-}
+# If the value of core plugin is set to 'nuage',
+# include nuage agent,
+# else use the default value of 'ml2'
+if hiera('neutron::core_plugin') == 'neutron.plugins.nuage.plugin.NuagePlugin' {
+  include ::nuage::vrs
+  include ::nova::compute::neutron
+} 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'), ','),
-}
+  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') {
-  class { '::neutron::agents::n1kv_vem':
-    n1kv_source  => hiera('n1kv_vem_source', undef),
-    n1kv_version => hiera('n1kv_vem_version', undef),
+  if 'cisco_n1kv' in hiera('neutron_mechanism_drivers') {
+    class { '::neutron::agents::n1kv_vem':
+      n1kv_source  => hiera('n1kv_vem_source', undef),
+      n1kv_version => hiera('n1kv_vem_version', undef),
+    }
   }
 }
 
index afbdd19..a8abbb7 100644 (file)
@@ -233,64 +233,72 @@ if hiera('step') >= 3 {
   include ::neutron
   include ::neutron::server
   include ::neutron::server::notifications
-  include ::neutron::agents::l3
-  include ::neutron::agents::dhcp
-  include ::neutron::agents::metadata
 
-  file { '/etc/neutron/dnsmasq-neutron.conf':
-    content => hiera('neutron_dnsmasq_options'),
-    owner   => 'neutron',
-    group   => 'neutron',
-    notify  => Service['neutron-dhcp-service'],
-    require => Package['neutron'],
-  }
+  # If the value of core plugin is set to 'nuage',
+  # include nuage core plugin,
+  # else use the default value of 'ml2'
+  if hiera('neutron::core_plugin') == 'neutron.plugins.nuage.plugin.NuagePlugin' {
+    include ::neutron::plugins::nuage
+  } else {
+    include ::neutron::agents::l3
+    include ::neutron::agents::dhcp
+    include ::neutron::agents::metadata
+
+    file { '/etc/neutron/dnsmasq-neutron.conf':
+      content => hiera('neutron_dnsmasq_options'),
+      owner   => 'neutron',
+      group   => 'neutron',
+      notify  => Service['neutron-dhcp-service'],
+      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::cisco::nexus1000v
+    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::cisco::nexus1000v
 
-    class { '::neutron::agents::n1kv_vem':
-      n1kv_source  => hiera('n1kv_vem_source', undef),
-      n1kv_version => hiera('n1kv_vem_version', undef),
+      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,
+      }
     }
 
-    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_mechanism_drivers') {
+      include ::neutron::plugins::ml2::cisco::ucsm
+    }
+    if 'cisco_nexus' in hiera('neutron_mechanism_drivers') {
+      include ::neutron::plugins::ml2::cisco::nexus
+      include ::neutron::plugins::ml2::cisco::type_nexus_vxlan
     }
-  }
 
-  if 'cisco_ucsm' in hiera('neutron_mechanism_drivers') {
-    include ::neutron::plugins::ml2::cisco::ucsm
-  }
-  if 'cisco_nexus' in hiera('neutron_mechanism_drivers') {
-    include ::neutron::plugins::ml2::cisco::nexus
-    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);
+    }
 
-  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);
+    Service['neutron-server'] -> Service['neutron-dhcp-service']
+    Service['neutron-server'] -> Service['neutron-l3']
+    Service['neutron-server'] -> Service['neutron-ovs-agent-service']
+    Service['neutron-server'] -> Service['neutron-metadata']
   }
-  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']
-  Service['neutron-server'] -> Service['neutron-metadata']
 
   include ::cinder
   include ::cinder::api