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.

Reply via email to