Hide Forgot
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.
*** Bug 1028615 has been marked as a duplicate of this bug. ***
Auto adding >= MODIFIED bugs to beta
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
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