Issue #7175 has been reported by Ben Hughes.

----------------------------------------
Bug #7175: Zone provider unable to create new zones since 0.24.8
https://projects.puppetlabs.com/issues/7175

Author: Ben Hughes
Status: Investigating
Priority: Normal
Assignee: 
Category: Solaris
Target version: 
Affected Puppet version: 0.25.0
Keywords: solaris zones
Branch: 


# Overview #

The zone{} provider for Solaris zones is unable to provision new zones since 
Puppet version 0.24.8.

# Expected Behavior #

On 0.24.8:
<pre>
[root@solaris:~]# cat zone.pp                                                   
                                                                    2
zone{
    'testzone':
        ensure           => 'running',
        create_args    => "-b", # not needed, it calls it with -b already
        autoboot        => true,
        path               => '/disky/zones/',
        ip                   => 'e1000g0:192.168.1.240:192.168.1.254',
}
[root@solaris:~]# puppet -dv  --trace zone.pp ; puppet --version                
                                                                      
debug: Creating default schedules
debug: Puppet::Type::Zone::ProviderSolaris: Executing '/usr/sbin/zoneadm -z 
testzone list -p'
debug: Puppet::Type::Zone::ProviderSolaris: Executing '/usr/sbin/zonecfg -z 
testzone info'
debug: Zone[testzone](provider=solaris): Ignoring zone output ' allowed-address 
not specified'
debug: Zone[testzone](provider=solaris): Ignoring zone output ' defrouter not 
specified'
debug: //Zone[testzone]: Changing ensure
debug: //Zone[testzone]: 1 change(s)
debug: Puppet::Type::Zone::ProviderSolaris: Executing '/usr/sbin/zoneadm -z 
testzone list -p'
debug: Puppet::Type::Zone::ProviderSolaris: Executing '/usr/sbin/zonecfg -z 
testzone info'
debug: Zone[testzone](provider=solaris): Ignoring zone output ' allowed-address 
not specified'
debug: Zone[testzone](provider=solaris): Ignoring zone output ' defrouter not 
specified'
debug: Puppet::Type::Zone::ProviderSolaris: Executing '/usr/sbin/zoneadm -z 
testzone install'
debug: Puppet::Type::Zone::ProviderSolaris: Executing '/usr/sbin/zoneadm -z 
testzone list -p'
debug: Puppet::Type::Zone::ProviderSolaris: Executing '/usr/sbin/zonecfg -z 
testzone info'
debug: Zone[testzone](provider=solaris): Ignoring zone output ' allowed-address 
not specified'
debug: Zone[testzone](provider=solaris): Ignoring zone output ' defrouter not 
specified'
debug: Puppet::Type::Zone::ProviderSolaris: Executing '/usr/sbin/zoneadm -z 
testzone boot'
notice: //Zone[testzone]/ensure: ensure changed 'configured' to 'running'
debug: Finishing transaction 69073970 with 1 changes
0.24.8
[root@solaris:~]# zoneadm list -v
  ID NAME             STATUS     PATH                           BRAND    IP    
   0 global           running    /                              ipkg     shared
   1 testzone         running    /disky/zones                   ipkg     shared
</pre>


# Actual Behavior #

On 2.6.7 (and 0.25.4)
<pre>
[root@solaris:~]# puppet -dv  --trace zone.pp ; puppet --version
debug: Creating default schedules
debug: Failed to load library 'shadow' for feature 'libshadow'
debug: Failed to load library 'ldap' for feature 'ldap'
debug: Puppet::Type::User::ProviderLdap: feature ldap is missing
debug: Puppet::Type::User::ProviderDirectoryservice: file /usr/bin/dscl does 
not exist
debug: Puppet::Type::User::ProviderUseradd: file chage does not exist
debug: Puppet::Type::User::ProviderPw: file pw does not exist
debug: Failed to load library 'selinux' for feature 'selinux'
debug: Puppet::Type::File::ProviderMicrosoft_windows: feature microsoft_windows 
is missing
debug: /File[/etc/puppet/ssl]: Autorequiring File[/etc/puppet]
debug: /File[/etc/puppet/ssl/certs/solaris.home.gateway.pem]: Autorequiring 
File[/etc/puppet/ssl/certs]
debug: /File[/etc/puppet/ssl/private_keys/solaris.home.gateway.pem]: 
Autorequiring File[/etc/puppet/ssl/private_keys]
debug: /File[/etc/puppet/ssl/public_keys]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/lib/puppet/run]: Autorequiring File[/var/lib/puppet]
debug: /File[/var/lib/puppet/facts]: Autorequiring File[/var/lib/puppet]
debug: /File[/etc/puppet/ssl/certificate_requests]: Autorequiring 
File[/etc/puppet/ssl]
debug: /File[/var/lib/puppet/client_yaml]: Autorequiring File[/var/lib/puppet]
debug: /File[/var/lib/puppet/state/graphs]: Autorequiring 
File[/var/lib/puppet/state]
debug: /File[/etc/puppet/ssl/public_keys/solaris.home.gateway.pem]: 
Autorequiring File[/etc/puppet/ssl/public_keys]
debug: /File[/var/lib/puppet/client_data]: Autorequiring File[/var/lib/puppet]
debug: /File[/etc/puppet/ssl/certs]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/lib/puppet/state]: Autorequiring File[/var/lib/puppet]
debug: /File[/etc/puppet/ssl/private]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/lib/puppet/log]: Autorequiring File[/var/lib/puppet]
debug: /File[/var/lib/puppet/clientbucket]: Autorequiring File[/var/lib/puppet]
debug: /File[/etc/puppet/ssl/crl.pem]: Autorequiring File[/etc/puppet/ssl]
debug: /File[/var/lib/puppet/state/state.yaml]: Autorequiring 
File[/var/lib/puppet/state]
debug: /File[/var/lib/puppet/lib]: Autorequiring File[/var/lib/puppet]
debug: /File[/etc/puppet/ssl/certs/ca.pem]: Autorequiring 
File[/etc/puppet/ssl/certs]
debug: /File[/etc/puppet/ssl/private_keys]: Autorequiring File[/etc/puppet/ssl]
debug: Finishing transaction 73584620
debug: Loaded state in 0.00 seconds
debug: Loaded state in 0.00 seconds
info: Applying configuration version '1303219224'
debug: Puppet::Type::Zone::ProviderSolaris: Executing '/usr/sbin/zoneadm -z 
testzone list -p'
debug: Puppet::Type::Zone::ProviderSolaris: Executing '/usr/sbin/zonecfg -z 
testzone info'
debug: Zone[testzone](provider=solaris): Ignoring zone output ' allowed-address 
not specified'
debug: Zone[testzone](provider=solaris): Ignoring zone output ' defrouter not 
specified'
/home/ben/repos//puppet/lib/puppet/type/zone.rb:183:in `<'
/home/ben/repos//puppet/lib/puppet/type/zone.rb:183:in `up?'
/home/ben/repos//puppet/lib/puppet/type/zone.rb:153:in `sync'
/home/ben/repos//puppet/lib/puppet/transaction/resource_harness.rb:114:in 
`apply_parameter'
/home/ben/repos//puppet/lib/puppet/transaction/resource_harness.rb:56:in 
`perform_changes'
/home/ben/repos//puppet/lib/puppet/transaction/resource_harness.rb:133:in 
`evaluate'
/home/ben/repos//puppet/lib/puppet/transaction.rb:48:in `apply'
/home/ben/repos//puppet/lib/puppet/transaction.rb:113:in 
`eval_children_and_apply_resource'
/home/ben/repos//puppet/lib/puppet/transaction.rb:91:in `eval_resource'
/home/ben/repos//puppet/lib/puppet/transaction.rb:142:in `evaluate'
/home/ben/repos//puppet/lib/puppet/util.rb:429:in `thinmark'
/opt/csw/lib/ruby/1.8/benchmark.rb:308:in `realtime'
/home/ben/repos//puppet/lib/puppet/util.rb:428:in `thinmark'
/home/ben/repos//puppet/lib/puppet/transaction.rb:141:in `evaluate'
/home/ben/repos//puppet/lib/puppet/transaction.rb:134:in `each'
/home/ben/repos//puppet/lib/puppet/transaction.rb:134:in `evaluate'
/home/ben/repos//puppet/lib/puppet/resource/catalog.rb:144:in `apply'
/home/ben/repos//puppet/lib/puppet/configurer.rb:150:in `run'
/home/ben/repos//puppet/lib/puppet/util.rb:193:in `benchmark'
/opt/csw/lib/ruby/1.8/benchmark.rb:308:in `realtime'
/home/ben/repos//puppet/lib/puppet/util.rb:192:in `benchmark'
/home/ben/repos//puppet/lib/puppet/configurer.rb:149:in `run'
/home/ben/repos//puppet/lib/puppet/application/apply.rb:126:in `main'
/home/ben/repos//puppet/lib/puppet/application/apply.rb:35:in `run_command'
/home/ben/repos//puppet/lib/puppet/application.rb:304:in `run'
/home/ben/repos//puppet/lib/puppet/application.rb:410:in `exit_on_fail'
/home/ben/repos//puppet/lib/puppet/application.rb:304:in `run'
/home/ben/repos//puppet/lib/puppet/util/command_line.rb:59:in `execute'
/home/ben/repos//puppet/bin/puppet:4
err: /Stage[main]//Zone[testzone]/ensure: change from running to running 
failed: comparison of Fixnum with nil failed
debug: Finishing transaction 73360500
debug: Storing state
debug: Stored state in 0.02 seconds
notice: Finished catalog run in 0.36 seconds
2.6.7
</pre>

Same function on 0.25.0.

# Detail #

The comparison in the trace points to lib/puppet/type/zone.rb:
<pre>
    # Are we moving up the property tree?
    def up?
      current_value = self.retrieve
      self.class.state_index(current_value) < 
self.class.state_index(self.should)
    end
</pre>

Tested on:
<pre>
[ben@solaris:~]% uname -a                        
SunOS solaris 5.11 snv_151a i86pc i386 i86pc
</pre>


# Work Around #

None. That's the minimal zone.pp I could muster really so I can't see there 
being much scope for doing it differently.



-- 
You have received this notification because you have either subscribed to it, 
or are involved in it.
To change your notification preferences, please click here: 
http://projects.puppetlabs.com/my/account

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Bugs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-bugs?hl=en.

Reply via email to