Bug 1028928

Summary: No IP address set on private interface causes: value is a required option for Puppet::Parser::Resource::Param
Product: Red Hat OpenStack Reporter: Dominic Cleal <dcleal>
Component: puppetAssignee: RHOS Maint <rhos-maint>
Status: CLOSED ERRATA QA Contact: Jaroslav Henner <jhenner>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 4.0CC: ajeain, breeler, dcleal, hateya, ohochman, sreichar, yeylon
Target Milestone: beta   
Target Release: 4.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: puppet-3.2.4-3.el6_5 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 1028930 (view as bug list) Environment:
Last Closed: 2013-12-20 00:34:59 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:
Embargoed:
Bug Depends On: 1028930    
Bug Blocks:    

Description Dominic Cleal 2013-11-11 09:18:58 UTC
Description of problem:
Configuring a compute node with quickstack::neutron::compute with the "private_interface" set to an interface name without an IP address configured results in the following Puppet error:

Error: Could not retrieve catalog from remote server: Error 400 on
SERVER: value is a required option for Puppet::Parser::Resource::Param
on node example.redhat.com

Version-Release number of selected component (if applicable):
packstack-modules-puppet-2013.2.1-0.7.dev806.el6ost.noarch
openstack-foreman-installer-0.0.21-1.el6ost.noarch
puppet-3.2.4-1.el6_4.noarch

How reproducible:
Always

Steps to Reproduce:
1. Set up openstack-foreman with a private interface present but unconfigured on a compute node
2. Assign the OpenStack Neutron Compute host group to the node
3. Run puppet on the node

Actual results:
Error: Could not retrieve catalog from remote server: Error 400 on
SERVER: value is a required option for Puppet::Parser::Resource::Param
on node example.redhat.com

Expected results:
Error: Could not retrieve catalog from remote server: Local ip for ovs agent must be set when tunneling is enabled at <path to neutron/agents/ovs.pp>:28 on node example.redhat.com

(please ensure the manifest file + line number are present)

Additional info:
Caused by http://projects.puppetlabs.com/issues/23115

For example:
# /etc/puppet/node.rb example.comredhat.com | grep private_interface
    private_interface: p3p1

# egrep "interfaces|ipadd"
/var/lib/puppet/yaml/facts/example.redhat.com.yaml
    ipaddress: "10.16.139.12"
    interfaces: "em1,em2,em3,em4,lo,p3p1,p3p2"
    ipaddress_lo: "127.0.0.1"
    ipaddress_em1: "10.16.139.12"

The ipaddress_p3p1 fact is missing, so the interface must be present but unconfigured.

In /etc/puppet/environments/production/modules/quickstack/manifests/neutron/compute.pp:106:

  class { '::neutron::agents::ovs':
      bridge_uplinks   => $ovs_bridge_uplinks,
      bridge_mappings  => $ovs_bridge_mappings,
      local_ip         => getvar("ipaddress_${private_interface}"),
      enable_tunneling => true,
  }

The getvar() function evaluates to nil, but Puppet should treat this as undef, then it would pass undef through to the neutron::agents::ovs class, which would do this error checking:

  if $enable_tunneling and ! $local_ip {
    fail('Local ip for ovs agent must be set when tunneling is enabled')
  }

Instead we're hitting an internal Puppet bug where the param evaluates to nil.

Comment 2 Dominic Cleal 2013-11-15 19:37:53 UTC
*** Bug 1028615 has been marked as a duplicate of this bug. ***

Comment 4 Scott Lewis 2013-11-19 16:54:58 UTC
Auto adding >= MODIFIED bugs to beta

Comment 5 Omri Hochman 2013-11-19 18:11:06 UTC
Verified with puppet-3.2.4-3.el6_5.noarch

There is a request to have IP Address on the private_interface NIC - When there's no IP address on that NIC the error message that display seems like the expected result.  


Actual Results : 
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Local ip for ovs agent must be set when tunneling is enabled at /usr/share/packstack/modules/neutron/manifests/agents/ovs.pp:28 on node puma02.scl.lab.tlv.redhat.com


Expected results:
Error: Could not retrieve catalog from remote server: Local ip for ovs agent must be set when tunneling is enabled at <path to neutron/agents/ovs.pp>:28 on node example.redhat.com

Comment 8 errata-xmlrpc 2013-12-20 00:34:59 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHEA-2013-1859.html