Bug 1045283

Summary: packstack fails with puppet 3.4
Product: [Community] RDO Reporter: Sunil Thaha <sthaha>
Component: openstack-puppet-modulesAssignee: Pádraig Brady <pbrady>
Status: CLOSED CURRENTRELEASE QA Contact: Nir Magnezi <nmagnezi>
Severity: urgent Docs Contact:
Priority: urgent    
Version: unspecifiedCC: aortega, apevec, derekh, euler.jiang, hateya, pbrady, skottler, yeylon
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: openstack-packstack-2013.2.1-0.25.dev936 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2013-12-20 16:37:19 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:
Attachments:
Description Flags
fix neutron dnsmasq install code
none
fix clients install code none

Description Sunil Thaha 2013-12-20 04:34:59 UTC
Running packstack --allinone results in the following error

~~~
ERROR : Error appeared during Puppet run: 192.168.129.92_neutron.pp
Error: Parameter name failed on Package[dnsmasq]: Name must be a String not Array at /var/tmp/packstack/f8898b9f91694fd9b66893e3bcaeaf61/modules/neutron/manifests/agents/dhcp.pp:64
You will find full trace in log /var/tmp/packstack/20131219-204306-9Z1oAx/manifests/192.168.129.92_neutron.pp.log
Please check log file /var/tmp/packstack/20131219-204306-9Z1oAx/openstack-setup.log for more information
~~~

Comment 1 Sunil Thaha 2013-12-20 05:49:52 UTC
It seems to me that this error is due to a recent change[1] in Puppet which enforces package name to be a String. 

[1] https://github.com/puppetlabs/puppet/commit/4b8214d57d2dbc9e1f0e39626fa8d9917244e775

Comment 2 Sunil Thaha 2013-12-20 06:24:10 UTC
To verify that it is the latest puppet that is due the latest puppet, I reverted back from puppet 3.4.0 on F19 to puppet-3.3.2-1.fc19.noarch and packstack runs fine.

Comment 3 Pádraig Brady 2013-12-20 10:05:20 UTC
Hi Sunil,

I confirmed that nothing changed in the RDO repos
in the last while to break this:

Working...

$ grep -E "(packstack|neutron|dnsmasq)" logs/rhel6/log/yum.log 
Dec 19 02:49:06 Installed: openstack-packstack-2013.2.1-0.17.dev876.el6.noarch
Dec 19 02:56:33 Installed: python-neutronclient-2.3.1-2.el6.noarch
Dec 19 02:58:40 Installed: dnsmasq-2.48-13.el6.x86_64
Dec 19 02:59:43 Installed: python-neutron-2013.2.1-1.el6.noarch
Dec 19 02:59:43 Installed: dnsmasq-utils-2.48-13.el6.x86_64
Dec 19 02:59:43 Installed: openstack-neutron-2013.2.1-1.el6.noarch
Dec 19 02:59:58 Installed: openstack-neutron-openvswitch-2013.2.1-1.el6.noarch

Broken...

$ grep -E "(packstack|neutron|dnsmasq)" logs/rhel6/log/yum.log 
Dec 19 20:55:54 Installed: openstack-packstack-2013.2.1-0.17.dev876.el6.noarch
Dec 19 21:03:39 Installed: python-neutronclient-2.3.1-2.el6.noarch
Dec 19 21:05:43 Installed: dnsmasq-2.48-13.el6.x86_64

Hence it must be something external, and yes puppet 3.4 was released yesterday:
http://yum.puppetlabs.com/fedora/f19/products/x86_64/

Comment 4 Alan Pevec 2013-12-20 10:48:33 UTC
I propose to remove puppetlabs repo from rdo-release and instead rely on "native" Puppet from distro.
Main motivation to use puppetlabs repo was when EPEL6 had obsolete Puppet 2.6 but now it has 2.7 which should be good enough.
F19 has Puppet 3.1 in stable and 3.3 in testing.

https://admin.fedoraproject.org/updates/puppet

But separate RDO CI against latest puppetlabs should be kept, it is useful as a pre-warning!

Comment 5 Pádraig Brady 2013-12-20 10:59:00 UTC
Created attachment 839521 [details]
fix neutron dnsmasq install code

Alan I agree mostly. But that would be a bigger change as it would change from puppet 3.3 back to 2.7. For now at least we'll fix the immediate issue.
How about this? I'll test it out internally.

Comment 6 Alan Pevec 2013-12-20 11:39:53 UTC
> ERROR : Error appeared during Puppet run: 192.168.129.92_neutron.pp
> Error: Parameter name failed on Package[dnsmasq]: Name must be a String not
> Array at
> /var/tmp/packstack/f8898b9f91694fd9b66893e3bcaeaf61/modules/neutron/
> manifests/agents/dhcp.pp:64

This is https://github.com/stackforge/puppet-neutron/blob/3c3d3d52ae0d1a655c7f1b09158ad7c924f80279/manifests/agents/dhcp.pp#L64
in the current version of packstack.

> Component: openstack-packstack → openstack-puppet-modules
Note that current packstack is not using standalone puppet modules rpm yet (should be fixed RSN that both openstack-foreman-installer and packstack use it).

Comment 7 Pádraig Brady 2013-12-20 11:53:47 UTC
Created attachment 839533 [details]
fix clients install code

We need this fix also in the clients install path

Comment 8 Euler 2013-12-20 16:09:18 UTC
After the patch fix clients install, I meet problem to install horizon. Could you please also fix it?

I make below change in file /usr/lib/python2.6/site-packages/packstack/puppet/templates/horizon.pp:

$horizonpackages = ["python-memcached", "python-netaddr"]
package { $horizonpackages:
    notify => Class["horizon"],
}

Thanks!

Comment 9 Pádraig Brady 2013-12-20 16:37:19 UTC
@Euler Thanks for pointing that out. Luckily that fix was also included in the version that has now passed CI testing.