diff options
author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-07-04 22:52:06 +0000 |
---|---|---|
committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2007-07-04 22:52:06 +0000 |
commit | 50b8f96f7682d8da83996957aa884044705daf33 (patch) | |
tree | 4712ca0fad42aa990a1b928a29089dc4a1f9c320 | |
parent | c762c1960cc278f974c098ede994bb82f63fd893 (diff) | |
download | puppet-50b8f96f7682d8da83996957aa884044705daf33.tar.gz puppet-50b8f96f7682d8da83996957aa884044705daf33.tar.xz puppet-50b8f96f7682d8da83996957aa884044705daf33.zip |
Fixing #704 -- Puppet was not failing correctly when schedules were missing, I think
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@2648 980ebf18-57e1-0310-9a29-db15c13687c0
-rw-r--r-- | lib/puppet/metatype/metaparams.rb | 8 | ||||
-rw-r--r-- | lib/puppet/metatype/schedules.rb | 29 | ||||
-rwxr-xr-x | test/ral/manager/type.rb | 28 |
3 files changed, 40 insertions, 25 deletions
diff --git a/lib/puppet/metatype/metaparams.rb b/lib/puppet/metatype/metaparams.rb index 168ddb9ee..2d792eeb2 100644 --- a/lib/puppet/metatype/metaparams.rb +++ b/lib/puppet/metatype/metaparams.rb @@ -38,14 +38,6 @@ class Puppet::Type The creation of the schedule object does not need to appear in the configuration before objects that use it." - - munge do |name| - if schedule = Puppet.type(:schedule)[name] - return schedule - else - return name - end - end end newmetaparam(:check) do diff --git a/lib/puppet/metatype/schedules.rb b/lib/puppet/metatype/schedules.rb index 40fa24cc6..7fef707c1 100644 --- a/lib/puppet/metatype/schedules.rb +++ b/lib/puppet/metatype/schedules.rb @@ -3,29 +3,24 @@ class Puppet::Type # the instantiation phase, so that the schedule can be anywhere in the # file. def schedule - - # If we've already set the schedule, then just move on - return if self[:schedule].is_a?(Puppet.type(:schedule)) - - return unless self[:schedule] - - # Schedules don't need to be scheduled - #return if self.is_a?(Puppet.type(:schedule)) - - # Nor do components - #return if self.is_a?(Puppet.type(:component)) - - if sched = Puppet.type(:schedule)[self[:schedule]] - self[:schedule] = sched - else - self.fail "Could not find schedule %s" % self[:schedule] + unless defined? @schedule + if name = self[:schedule] + if sched = Puppet.type(:schedule)[name] + @schedule = sched + else + self.fail "Could not find schedule %s" % name + end + else + @schedule = nil + end end + @schedule end # Check whether we are scheduled to run right now or not. def scheduled? return true if Puppet[:ignoreschedules] - return true unless schedule = self[:schedule] + return true unless schedule = self.schedule # We use 'checked' here instead of 'synced' because otherwise we'll # end up checking most elements most times, because they will generally diff --git a/test/ral/manager/type.rb b/test/ral/manager/type.rb index 58af51fea..09341f10e 100755 --- a/test/ral/manager/type.rb +++ b/test/ral/manager/type.rb @@ -835,6 +835,34 @@ end obj.evaluate end + + # Partially test #704, but also cover the rest of the schedule management bases. + def test_schedule + Puppet::Type.type(:schedule).create(:name => "maint") + + {"maint" => true, nil => false, :fail => :fail}.each do |name, should| + args = {:name => tempfile, :ensure => :file} + if name + args[:schedule] = name + end + resource = Puppet::Type.type(:file).create(args) + + if should == :fail + assert_raise(Puppet::Error, "Did not fail on missing schedule") do + resource.schedule + end + else + sched = nil + assert_nothing_raised("Failed when schedule was %s" % sched) do + sched = resource.schedule + end + + if should + assert_equal(name, sched.name, "did not get correct schedule back") + end + end + end + end end # $Id$ |