Issue #3537 has been updated by micah -.

I have an example. Lets say I have an exec, which updates apt:
<pre>
  exec {
    'refresh_apt':
      command => '/usr/bin/apt-get update && sleep 1',
      refreshonly => true,
      subscribe => [ File['/etc/apt/apt.conf.d'], 
Config_file['/etc/apt/sources.list'] ];
</pre>

when I install packages, i want to make sure that my apt information is 
up-to-date before I do the install. So how can I trigger this exec *before* a 
package resource is realized? I cannot do "Package { require => 
Exec[refresh_apt] }" because 'refreshonly' is only triggered by 'notify' or 
'subscribe'. I can't use 'notify' because that will be run after the package 
resource has been realized. Subscribing to the exec isn't going to do anything 
either. 
----------------------------------------
Feature #3537: It should be possible to trigger (exec) resources with require
https://projects.puppetlabs.com/issues/3537

Author: Kjetil Torgrim Homme
Status: Re-opened
Priority: Normal
Assignee: 
Category: 
Target version: 
Affected Puppet version: 0.25.4
Keywords: 
Branch: 


When an Exec has conditions associated with it (unless, creates, onlyif), it 
can be useful to be state prerequisites which are only run when the exec itself 
is run.

Consider this simple example::
<pre>
  exec { "prereq":
      command => "/bin/echo prereq",
      refreshonly => true
 }
  
  exec { "main":
      command => "/bin/echo main",
      onlyif  => "/bin/grep foobar /etc/issue",
      require => Exec["prereq"]
 }
</pre>
Here, the refreshonly will cause "prereq" to never run, since a require isn't 
enough to trigger it.  Without refreshonly, it will run every time, but the 
desired behaviour is that "prereq" is run iff the onlyif command succeeds.

Obviously the behaviour of "refreshonly => true" can't change, and I can't 
think of a good name for a tri-state alternative -- "refreshonly => 
'requires-too'" ?  "allevents" may be more workable.

My prefered solution would be a new parameter "requireonly".  Perhaps slightly 
misleading name, since "before" should trigger execution, too, but I think most 
people will understand that require/before are inherently intertwined.  This 
could later be generalised into a metaparameter to work for more types, e.g. 
you could have a parent File which is only checked/updated/created when some 
other File requires it.



-- 
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