Issue #15080 has been updated by jayendren maduray.

File puppet_provider_exec_rb_15080.txt added

* Puppet Versions: 2.7.14_1/2.7.16
* Operating System: FreeBSD
* Steps to Reproduce: 
* Using the following definition that is used to add/update entries in 
/etc/rc.conf

`
define shell_config($file, $key, $value, $ensure = 'present')
{
  case $ensure {
    default: { err ( "unknown ensure value ${ensure}" ) }
    present: {
      exec {
        "shell_config_unique_$ensure '$file$key'":
         path => ["/sbin","/bin","/usr/sbin","/usr/bin"],
          unless => "test `grep -cE '^[ \t]*$key=' -- $file` -le 1",
          command => "sed -i '' -e '/$key=\".*\"/d' $file";
        "shell_config_create_$ensure '$file$key'":
         path => ["/sbin","/bin","/usr/sbin","/usr/bin"],
          unless => "grep -qE '^[ \t]*$key=' -- $file",
          command => "echo 'testing!'; printf '%s=\"%s\"\n' '$key' '$value' >> 
'${file}'";
        "shell_config_update_$ensure '$file$key'":
          unless => "grep -qE '^[ \t]*$key=\"$value\"' -- $file",
          command => "sed -i '' -e 's/$key=\".*\"/$key=\"$value\"/' $file";
      }
    }
    absent: {
      exec {  "shell_config_delete_$ensure $file$key":
         path => ["/sbin","/bin","/usr/sbin","/usr/bin"],
          onlyif => "grep -qE '^[ \t]*$key=' -- $file",
          command => "sed -i '' -e '/$key=\".*\"/d' $file";
      }
    }
  }
}

define rc_conf($value)
{
  shell_config { "rc_conf_local_${name}":
    file => "/etc/rc.conf",
    key => $name,
    value => $value;
  }
}
`

* class entry in nodefile:
rc_conf { vmware_guest_vmhgfs_enable: value => "YES" } 

* Expected Results:
* If the entry is not present /etc/rc.conf, puppet should add the entry 
(working on puppet-2.7.10)
*
`
notice: 
/Stage[main]/Virtualguest/Rc_conf[vmware_guest_vmhgfs_enable]/Shell_config[rc_conf_local_vmware_guest_vmhgfs_enable]/Exec[shell_config_update_present
 '/etc/rc.confvmware_guest_vmhgfs_enable']/returns: executed successfully
debug: 
/Stage[main]/Virtualguest/Rc_conf[vmware_guest_vmhgfs_enable]/Shell_config[rc_conf_local_vmware_guest_vmhgfs_enable]/Exec[shell_config_update_present
 '/etc/rc.confvmware_guest_vmhgfs_enable']: The container 
Shell_config[rc_conf_local_vmware_guest_vmhgfs_enable] will propagate my 
refresh event
debug: Exec[shell_config_unique_present 
'/etc/rc.confvmware_guest_vmhgfs_enable'](provider=posix): Executing check 
'test `grep -cE '^[ ]*vmware_guest_vmhgfs_enable=' -- /etc/rc.conf` -le 1'
debug: Executing 'test `grep -cE '^[ ]*vmware_guest_vmhgfs_enable=' -- 
/etc/rc.conf` -le 1'
debug: Exec[shell_config_create_present 
'/etc/rc.confvmware_guest_vmhgfs_enable'](provider=posix): Executing check 
'grep -qE '^[ ]*vmware_guest_vmhgfs_enable=' -- /etc/rc.conf'
debug: Executing 'grep -qE '^[ ]*vmware_guest_vmhgfs_enable=' -- /etc/rc.conf'
debug: Exec[shell_config_create_present 
'/etc/rc.confvmware_guest_vmhgfs_enable'](provider=posix): Executing 'printf 
'%s="%s"
' 'vmware_guest_vmhgfs_enable' 'YES' >> '/etc/rc.conf''
debug: Executing 'printf '%s="%s"
' 'vmware_guest_vmhgfs_enable' 'YES' >> '/etc/rc.conf''
notice: 
/Stage[main]/Virtualguest/Rc_conf[vmware_guest_vmhgfs_enable]/Shell_config[rc_conf_local_vmware_guest_vmhgfs_enable]/Exec[shell_config_create_present
 '/etc/rc.confvmware_guest_vmhgfs_enable']/returns: executed successfully
` 
* Actual Results:
* puppet 2.7.14_1 and puppet 2.7.16:
*
`
notice: 
/Stage[main]/Virtualguest/Rc_conf[vmware_guest_vmhgfs_enable]/Shell_config[rc_conf_local_vmware_guest_vmhgfs_enable]/Exec[shell_config_update_present
 '/etc/rc.confvmware_guest_vmhgfs_enable']/returns: executed successfully
debug: 
/Stage[main]/Virtualguest/Rc_conf[vmware_guest_vmhgfs_enable]/Shell_config[rc_conf_local_vmware_guest_vmhgfs_enable]/Exec[shell_config_update_present
 '/etc/rc.confvmware_guest_vmhgfs_enable']: The container 
Shell_config[rc_conf_local_vmware_guest_vmhgfs_enable] will propagate my 
refresh event
debug: Exec[shell_config_unique_present 
'/etc/rc.confvmware_guest_vmhgfs_enable'](provider=posix): Executing check 
'test `grep -cE '^[ ]*vmware_guest_vmhgfs_enable=' -- /etc/rc.conf` -le 1'
debug: Executing 'test `grep -cE '^[ ]*vmware_guest_vmhgfs_enable=' -- 
/etc/rc.conf` -le 1'
debug: Exec[shell_config_create_present 
'/etc/rc.confvmware_guest_vmhgfs_enable'](provider=posix): Executing check 
'grep -qE '^[ ]*vmware_guest_vmhgfs_enable=' -- /etc/rc.conf'
debug: Executing 'grep -qE '^[ ]*vmware_guest_vmhgfs_enable=' -- /etc/rc.conf'
err: 
/Stage[main]/Virtualguest/Rc_conf[vmware_guest_vmhgfs_enable]/Shell_config[rc_conf_local_vmware_guest_vmhgfs_enable]/Exec[shell_config_create_present
 '/etc/rc.confvmware_guest_vmhgfs_enable']/returns: change from notrun to 0 
failed: Could not find command ' '
` 
* Notes:
* Resolved by using provider/exec.rb from puppet 2.7.10
* File: /usr/local/lib/ruby/site_ruby/1.8/puppet/provider/exec.rb
*
`
--- /usr/local/lib/ruby/site_ruby/1.8/puppet/provider/exec.rb   2012-06-18 
11:27:07.000000000 +0200
+++ /root/provider_exec.rb      2012-06-18 11:26:20.000000000 +0200
@@ -1,3 +1,6 @@
+require 'puppet/provider'
+require 'puppet/util/execution'
+
 class Puppet::Provider::Exec < Puppet::Provider
   include Puppet::Util::Execution
 
@@ -63,9 +66,11 @@
   end
 
   def extractexe(command)
-    # easy case: command was quoted
-    if command =~ /^"([^"]+)"/
-      $1
+    if command.is_a? Array
+      command.first
+    elsif match = /^"([^"]+)"|^'([^']+)'/.match(command)
+      # extract whichever of the two sides matched the content.
+      match[1] or match[2]
     else
       command.split(/ /)[0]
     end
`
----------------------------------------
Bug #15080: puppet provider/exec.rb issue on puppet 2.7.14/2.7.16
https://projects.puppetlabs.com/issues/15080#change-65259

Author: jayendren maduray
Status: Unreviewed
Priority: Normal
Assignee: 
Category: exec
Target version: 
Affected Puppet version: 
Keywords: 
Branch: 





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