Details
-
Bug
-
Status: Closed
-
Normal
-
Resolution: Fixed
-
PUP 3.6.2
-
All open source edition
Client:
Windows Server 2012 R2
Puppet 3.6.2
ruby 1.9.3p484 (2013-11-22) [i386-mingw32]Master:
CentOS
Puppet 3.6.2
Description
package { 'NetFx452':
|
ensure => installed,
|
source => '//dfs_share/software/dotNetFx452_Full_x86_x64.exe',
|
install_options => ['/q'],
|
}
|
fails with error
Error: The source does not exist: '//dfs_share/software/dotNetFx452_Full_x86_x64.exe'
|
Digging through the source code (I'm one of those dangerous users ) it works fine if I revert the change in package.rb from this commit
https://github.com/puppetlabs/puppet/commit/780ecb238d47f1ab5d6ce18fc8e38f98a12d66c0#diff-2499957120d586e4d51a5c151467348b
Digging a little further into the current code it appears the file has the flag indicating it as a sym link, FILE_ATTRIBUTE_REPARSE_POINT, so Puppet::FileSystem::File19Windows.symlink? returns true, but Puppet::FileSystem::File19Windows.readlink returns "".
Some of my tom-hackery here...
C:\Windows\system32>irb
|
irb(main):001:0> require 'C:\Program Files (x86)\Puppet Labs\Puppet\puppet\lib\puppet.rb'
|
=> true
|
irb(main):004:0> Puppet::FileSystem::exist?('//dfs_share/software/jdk6/jdk-6u45-windows-x64.exe')
|
=> false
|
irb(main):005:0> File.exist?('//dfs_share/software/jdk6/jdk-6u45-windows-x64.exe')
|
=> true
|
irb(main):006:0> Puppet::Util::Windows::File.symlink?('//dfs_share/software/jdk6/jdk-6u45-windows-x64.exe')
|
=> true
|
irb(main):006:0> Puppet::Util::Windows::File.symlink?('//actual_server/software/jdk6/jdk-6u45-windows-x64.exe')
|
=> true
|
irb(main):007:0> Puppet::Util::Windows::File.readlink('//dfs_share/software/jdk6/jdk-6u45-windows-x64.exe')
|
=> ""
|
irb(main):017:0> Puppet::Util::Windows::File.get_file_attributes('//actual_server/software/jdk6/jdk-6u45-windows-x64.exe')
|
=> 1568
|
irb(main):018:0> 1568 & 0x400
|
=> 1024 # FILE_ATTRIBUTE_REPARSE_POINT = 0x400
|
Stack trace for reproducing with puppet resource:
PS C:\temp> puppet resource package ensure=installed source='//vmdfsp01-hs/software/dotNet/dotNetFx452_Full_x86_x64.exe'
|
--trace --debug --verbose
|
Debug: Puppet::Type::Package::ProviderJgem: file jgem does not exist
|
Debug: Puppet::Type::Package::ProviderPe_gem: file /opt/puppet/bin/gem does not exist
|
Debug: Puppet::Type::Package::ProviderAix: file /usr/bin/lslpp does not exist
|
Debug: Puppet::Type::Package::ProviderDpkg: file /usr/bin/dpkg does not exist
|
Debug: Puppet::Type::Package::ProviderApt: file /usr/bin/apt-get does not exist
|
Debug: Puppet::Type::Package::ProviderAptitude: file /usr/bin/aptitude does not exist
|
Debug: Puppet::Type::Package::ProviderRpm: file rpm does not exist
|
Debug: Puppet::Type::Package::ProviderAptrpm: file apt-get does not exist
|
Debug: Puppet::Type::Package::ProviderSun: file /usr/bin/pkginfo does not exist
|
Debug: Puppet::Type::Package::ProviderFink: file /sw/bin/fink does not exist
|
Debug: Puppet::Type::Package::ProviderOpenbsd: file pkg_info does not exist
|
Debug: Puppet::Type::Package::ProviderFreebsd: file /usr/sbin/pkg_info does not exist
|
Debug: Puppet::Type::Package::ProviderHpux: file /usr/sbin/swinstall does not exist
|
Debug: Puppet::Type::Package::ProviderNim: file /usr/sbin/nimclient does not exist
|
Debug: Puppet::Type::Package::ProviderOpkg: file opkg does not exist
|
Debug: Puppet::Type::Package::ProviderPacman: file /usr/bin/pacman does not exist
|
Debug: Puppet::Type::Package::ProviderPkg: file /usr/bin/pkg does not exist
|
Debug: Puppet::Type::Package::ProviderPkgin: file pkgin does not exist
|
Debug: Puppet::Type::Package::ProviderPortage: file /usr/bin/emerge does not exist
|
Debug: Puppet::Type::Package::ProviderPorts: file /usr/local/sbin/portupgrade does not exist
|
Debug: Puppet::Type::Package::ProviderPortupgrade: file /usr/local/sbin/portupgrade does not exist
|
Debug: Puppet::Type::Package::ProviderRug: file /usr/bin/rug does not exist
|
Debug: Puppet::Type::Package::ProviderSunfreeware: file pkg-get does not exist
|
Debug: Puppet::Type::Package::ProviderUp2date: file /usr/sbin/up2date-nox does not exist
|
Debug: Puppet::Type::Package::ProviderUrpmi: file urpmi does not exist
|
Debug: Puppet::Type::Package::ProviderYum: file yum does not exist
|
Debug: Puppet::Type::Package::ProviderZypper: file /usr/bin/zypper does not exist
|
Debug: /Package[ensure=installed]: Provider windows does not support features virtual_packages; not managing attribute a
|
llow_virtual
|
Debug: Loaded state in 0.13 seconds
|
Debug: Failed to load library 'selinux' for feature 'selinux'
|
Debug: Prefetching windows resources for package
|
Error: The source does not exist: '//vmdfsp01-hs/software/dotNet/dotNetFx452_Full_x86_x64.exe'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/util/errors.rb:104:in `fail'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/provider/package/windows/package.rb:61:in `installer_class'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/provider/package/windows.rb:58:in `install'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/type/package.rb:73:in `block (3 levels) in <module:Puppet>'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/property.rb:197:in `call_valuemethod'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/property.rb:498:in `set'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/property.rb:581:in `sync'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/transaction/resource_harness.rb:191:in `sync'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/transaction/resource_harness.rb:128:in `sync_if_needed'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/transaction/resource_harness.rb:81:in `perform_changes'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/transaction/resource_harness.rb:20:in `evaluate'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/transaction.rb:174:in `apply'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/transaction.rb:187:in `eval_resource'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/transaction.rb:117:in `call'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/transaction.rb:117:in `block (2 levels) in evaluate'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/util.rb:327:in `block in thinmark'
|
C:/Program Files (x86)/Puppet Labs/Puppet/sys/ruby/lib/ruby/1.9.1/benchmark.rb:295:in `realtime'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/util.rb:326:in `thinmark'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/transaction.rb:117:in `block in evaluate'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/graph/relationship_graph.rb:118:in `traverse'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/transaction.rb:108:in `evaluate'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/resource/catalog.rb:167:in `block in apply'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/util/log.rb:153:in `with_destination'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/transaction/report.rb:112:in `as_logging_destination'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/resource/catalog.rb:166:in `apply'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/indirector/resource/ral.rb:41:in `save'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/indirector/indirection.rb:283:in `save'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/application/resource.rb:219:in `find_or_save_resources'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/application/resource.rb:143:in `main'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/application.rb:379:in `run_command'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/application.rb:371:in `block (2 levels) in run'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/application.rb:477:in `plugin_hook'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/application.rb:371:in `block in run'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/util.rb:479:in `exit_on_fail'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/application.rb:371:in `run'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/util/command_line.rb:137:in `run'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/lib/puppet/util/command_line.rb:91:in `execute'
|
C:/Program Files (x86)/Puppet Labs/Puppet/puppet/bin/puppet:8:in `<main>'
|
Error: /Package[ensure=installed]/ensure: change from absent to present failed: The source does not exist: '//vmdfsp01-h
|
s/software/dotNet/dotNetFx452_Full_x86_x64.exe'
|
Debug: Finishing transaction 37765356
|
Debug: Storing state
|
Debug: Stored state in 0.14 seconds
|
package { 'ensure=installed':
|
ensure => 'absent',
|
}
|
PS C:\temp>
|
All works fine using a local share so may be something to do with (our?) DFS share.