From: Joel Rosario <[email protected]>
Signed-off-by: James Turnbull <[email protected]> --- Local-branch: tickets/master/6693 lib/puppet/feature/windows.rb | 16 ++++++++++++++++ lib/puppet/provider/group/groupadd_win.rb | 4 ++-- lib/puppet/provider/user/useradd_win.rb | 6 ++---- lib/puppet/util/windows_system.rb | 24 ++++++++++++------------ 4 files changed, 32 insertions(+), 18 deletions(-) create mode 100644 lib/puppet/feature/windows.rb diff --git a/lib/puppet/feature/windows.rb b/lib/puppet/feature/windows.rb new file mode 100644 index 0000000..d5e4f38 --- /dev/null +++ b/lib/puppet/feature/windows.rb @@ -0,0 +1,16 @@ +require 'puppet/util/feature' + +Puppet.features.add(:windows) do + result = false + + if Facter.operatingsystem == 'windows' + begin + require 'win32ole' + require 'Win32API' + result = true + rescue + end + end + + result +end diff --git a/lib/puppet/provider/group/groupadd_win.rb b/lib/puppet/provider/group/groupadd_win.rb index dcefd2f..3aa7ee1 100644 --- a/lib/puppet/provider/group/groupadd_win.rb +++ b/lib/puppet/provider/group/groupadd_win.rb @@ -1,9 +1,9 @@ -require 'puppet/util/windows_system' +require 'puppet/util/windows_system' if Puppet.features.windows? Puppet::Type.type(:group).provide :groupadd_win do desc "Group management for windows" - confine :operatingsystem => :windows + confine :true => Puppet.features.windows? has_features :manages_members diff --git a/lib/puppet/provider/user/useradd_win.rb b/lib/puppet/provider/user/useradd_win.rb index 0fdd8c6..851de90 100644 --- a/lib/puppet/provider/user/useradd_win.rb +++ b/lib/puppet/provider/user/useradd_win.rb @@ -1,12 +1,10 @@ require 'puppet/provider' -require 'puppet/util/windows_system' - -raise "ERROR: A windowsuser resource can only be configured on Windows. This OS is is #{Facter['kernel'].value}" if Facter['kernel'].value != 'windows' +require 'puppet/util/windows_system' if Puppet.features.windows? Puppet::Type.type(:user).provide :useradd_win do desc "User management for windows" - confine :operatingsystem => :windows + confine :true => Puppet.features.windows? has_features :manages_passwords diff --git a/lib/puppet/util/windows_system.rb b/lib/puppet/util/windows_system.rb index 14bb80c..1ea42a0 100644 --- a/lib/puppet/util/windows_system.rb +++ b/lib/puppet/util/windows_system.rb @@ -1,18 +1,18 @@ -if Facter.operatingsystem == "windows" - require 'win32ole' - require 'Win32API' +if Puppet.features.windows? + require 'win32ole' + require 'Win32API' end module Puppet::Util::ADSI - def self.connectable?(uri) - begin - adsi_obj = WIN32OLE.connect(uri) - return adsi_obj != nil; - rescue - end - - return false - end + def self.connectable?(uri) + begin + adsi_obj = WIN32OLE.connect(uri) + return adsi_obj != nil; + rescue + end + + return false + end end module Puppet::Util::Windows -- 1.7.1 -- You received this message because you are subscribed to the Google Groups "Puppet Developers" 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-dev?hl=en.
