Bug 1327475

Summary: Nuage integration fails because templates are missing some parameters
Product: Red Hat OpenStack Reporter: David Gurtner <dgurtner>
Component: rhosp-directorAssignee: Brad P. Crochet <brad>
Status: CLOSED CURRENTRELEASE QA Contact: Arik Chernetsky <achernet>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.0 (Kilo)CC: aschultz, dbecker, mburns, morazi, rhel-osp-director-maint
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-01-27 23:09:18 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description David Gurtner 2016-04-15 08:32:05 UTC
Description of problem:
Deploying with Nuage integration fails because the templates are missing some parameters:

diff --git a/puppet/extraconfig/pre_deploy/compute/nova-nuage.yaml b/puppet/extraconfig/pre_deploy/compute/nova-nuage.yaml
index 96368e3..bc9a3cf 100644
--- a/puppet/extraconfig/pre_deploy/compute/nova-nuage.yaml
+++ b/puppet/extraconfig/pre_deploy/compute/nova-nuage.yaml
@@ -17,6 +17,9 @@ parameters:
     description: TCP Port to listen for metadata server requests
     type: string
     default: '9697'
+  NuageNovaMetadataIp:
+    description: IP address of the Nova metadata server
+    type: string
   NuageNovaMetadataPort:
     description: TCP Port used by Nova metadata server
     type: string
@@ -32,6 +35,9 @@ parameters:
     description: Nova username in keystone_authtoken
     type: string
     default: 'nova'
+  NuageNovaAuthIp:
+    description: IP address of the Keystone server
+    type: string
   NuageMetadataAgentStartWithOvs:
     description: Set to True if nuage-metadata-agent needs to be started with nuage-openvswitch-switch
     type: string
@@ -59,10 +65,12 @@ resources:
                nuage::vrs::active_controller: {get_input: ActiveController}
                nuage::vrs::standby_controller: {get_input: StandbyController}
                nuage::metadataagent::metadata_port: {get_input: MetadataPort}
+               nuage::metadataagent::nova_metadata_ip: {get_input: NovaMetadataIp}
                nuage::metadataagent::nova_metadata_port: {get_input: NovaMetadataPort}
                nuage::metadataagent::metadata_secret: {get_input: SharedSecret}
                nuage::metadataagent::nova_client_version: {get_input: NovaClientVersion}
                nuage::metadataagent::nova_os_username: {get_input: NovaOsUsername}
+               nuage::metadataagent::nova_auth_ip: {get_input: NovaAuthIp}
                nuage::metadataagent::metadata_agent_start_with_ovs: {get_input: MetadataAgentStartWithOvs}
                nuage::metadataagent::nova_api_endpoint_type: {get_input: NovaApiEndpointType}
                nuage::metadataagent::nova_region_name: {get_input: NovaRegionName}
@@ -76,10 +84,12 @@ resources:
         ActiveController: {get_param: NuageActiveController}
         StandbyController: {get_param: NuageStandbyController}
         MetadataPort: {get_param: NuageMetadataPort}
+        NovaMetadataIp: {get_param: NuageNovaMetadataIp}
         NovaMetadataPort: {get_param: NuageNovaMetadataPort}
         SharedSecret: {get_param: NuageMetadataProxySharedSecret}
         NovaClientVersion: {get_param: NuageNovaClientVersion}
         NovaOsUsername: {get_param: NuageNovaOsUsername}
+        NovaAuthIp: {get_param: NuageNovaAuthIp}
         MetadataAgentStartWithOvs: {get_param: NuageMetadataAgentStartWithOvs}
         NovaApiEndpointType: {get_param: NuageNovaApiEndpoint}
         NovaRegionName: {get_param: NuageNovaRegionName}


diff -u /usr/share/openstack-tripleo-heat-templates/environments/neutron-nuage-config.yaml templates/environments/neutron-nuage-config.yaml 
--- /usr/share/openstack-tripleo-heat-templates/environments/neutron-nuage-config.yaml  2016-02-29 19:38:14.000000000 +0100
+++ templates/environments/neutron-nuage-config.yaml    2016-04-14 16:22:17.104925772 +0200
@@ -4,12 +4,22 @@
   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: ''
+  NeutronNuageOSControllerIp: '127.0.0.1' # this doesn't seem to be used but a parameter needs to be passed
+  NeutronNuageNetPartitionName: 'OpenStack'
+  NeutronNuageVSDIp: '<ip>:<port>'
+  NeutronNuageVSDUsername: '<username>'
+  NeutronNuageVSDPassword: '<password>'
+  NeutronNuageVSDOrganization: '<org>'
+  NeutronNuageBaseURIVersion: 'v3_2'
+  NeutronNuageCMSId: '<CMS-ID>'
   UseForwardedFor: true
+  NeutronCorePlugin: 'neutron.plugins.nuage.plugin.NuagePlugin'
+  InstanceNameTemplate: 'inst-%08x'
+  controllerExtraConfig:
+    neutron::enable_dhcp_agent: false
+    neutron::enable_l3_agent: false
+    neutron::enable_metadata_agent: false
+    neutron::enable_ovs_agent:  false
+    nova::network::neutron::neutron_ovs_bridge: 'alubr0'
+    neutron::service_plugins: false
+    neutron::api_extensions_path: '/usr/lib/python2.7/site-packages/neutron/plugins/nuage/'

diff -u /usr/share/openstack-tripleo-heat-templates/environments/nova-nuage-config.yaml templates/environments/nova-nuage-config.yaml 
--- /usr/share/openstack-tripleo-heat-templates/environments/nova-nuage-config.yaml     2016-02-29 19:38:14.000000000 +0100
+++ templates/environments/nova-nuage-config.yaml       2016-04-13 13:58:24.000000000 +0200
@@ -4,5 +4,19 @@
   OS::TripleO::ComputeExtraConfigPre: ../puppet/extraconfig/pre_deploy/compute/nova-nuage.yaml
 
 parameter_defaults:
-  NuageActiveController: '0.0.0.0'
-  NuageStandbyController: '0.0.0.0'
+  NuageActiveController: '<vsc1 ip>'
+  NuageStandbyController: '<vsc2 ip>'
+  NuageMetadataPort: '9697' # default
+  NuageNovaMetadataIp: '<os vip>'
+  NuageNovaMetadataPort: '8775' # default
+  NuageMetadataProxySharedSecret: '<secret>'
+  NuageNovaClientVersion: '2' # default
+  NuageNovaOsUsername: 'service'
+  NuageNovaAuthIp: '<os vip>'
+  NuageMetadataAgentStartWithOvs: 'True' # default
+  NuageNovaApiEndpoint: 'internalURL'
+  NuageNovaRegionName: 'RegionOne'
+  NovaComputeExtraConfig:
+    nova::network::neutron::neutron_ovs_bridge: 'alubr0'
+
+


Version-Release number of selected component (if applicable):
openstack-tripleo-heat-templates-0.8.6-123.el7ost.noarch


How reproducible:
always


Steps to Reproduce:
1. Deploy with Nuage support: openstack overcloud deploy --templates ~/templates \
--environment-file ~/templates/environments/network-isolation.yaml \
--environment-file ~/templates/environments/network-environment.yaml \
--environment-file ~/templates/environments/neutron-nuage-config.yaml \
--environment-file ~/templates/environments/nova-nuage-config.yaml \
--ntp-server 0.fedora.pool.ntp.org \
--neutron-network-type vxlan \
--neutron-tunnel-types vxlan

Additional info:
Implementing the changes described in this BZ, I could successfully deploy with Nuage integration.
The following is required in addition though:
- A Nuage environment VSD, VSC, VSG
- The overcloud-full image has some incompatible and missing Puppet code, I described this in BZ 1327459
- Remove parts of the Neutron and OpenVSwitch bits:
openvswitch
openstack-neutron-lbaas
openstack-neutron-ml2
openstack-neutron-openvswitch
python-openvswitch
openstack-neutron-lbaas
- Install the Nuage bits, I use the following:
nuage-metadata-agent-3.2.6-232.el7.x86_64.rpm
nuagenetlib-2015.1.3.2.6_228-nuage.noarch.rpm
nuage-openstack-heat-2015.1.1818-nuage.noarch.rpm
nuage-openstack-horizon-2015.1.1818-nuage.noarch.rpm
nuage-openstack-neutron-2015.1.1818-nuage.noarch.rpm
nuage-openstack-neutronclient-2015.1.1818-nuage.noarch.rpm
nuage-openvswitch-3.2.6-232.el7.x86_64.rpm
perl-JSON-2.59-2.el7.noarch.rpm
perl-Sys-Syslog-0.33-3.el7.x86_64.rpm
protobuf-2.5.0-7.el7.x86_64.rpm
protobuf-c-1.0.1-1.el7.x86_64.rpm
protobuf-compiler-2.5.0-7.el7.x86_64.rpm
pyserial-2.6-5.el7.noarch.rpm
python-setproctitle-1.1.6-5.el7.x86_64.rpm
python-twisted-core-12.2.0-4.el7.x86_64.rpm

Comment 2 David Gurtner 2016-04-15 09:19:24 UTC
Just found the following bits:

  class { '::nuage::metadataagent':
    nova_os_tenant_name => hiera('nova::api::admin_tenant_name'),
    nova_os_password    => hiera('nova_password'),
    nova_metadata_ip    => hiera('nova_metadata_node_ips'),
    nova_auth_ip        => hiera('keystone_public_api_virtual_ip'),
  }

Which means that the parts of this BZ around /puppet/extraconfig/pre_deploy/compute/nova-nuage.yaml are invalid. Sorry for the extra noise.

The other parts, specifically the parts enabling the core plugin and to disable service_plugins:

 parameter_defaults:
  NeutronCorePlugin: 'neutron.plugins.nuage.plugin.NuagePlugin'
  InstanceNameTemplate: 'inst-%08x'
  controllerExtraConfig:
    neutron::enable_dhcp_agent: false
    neutron::enable_l3_agent: false
    neutron::enable_metadata_agent: false
    neutron::enable_ovs_agent:  false
    nova::network::neutron::neutron_ovs_bridge: 'alubr0'
    neutron::service_plugins: false
    neutron::api_extensions_path: '/usr/lib/python2.7/site-packages/neutron/plugins/nuage/'

Comment 3 David Gurtner 2016-04-15 09:20:57 UTC
that sentence should read:

The other parts, specifically the parts enabling the core plugin and to disable service_plugins *are still needed*

Comment 4 David Gurtner 2016-05-10 16:15:55 UTC
The proposed changes have been merge upstream in https://review.openstack.org/#/c/307884/

Comment 5 Alex Schultz 2017-01-27 23:09:18 UTC
The fix for this was included in 9.