summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorNick Lewis <nick@puppetlabs.com>2011-08-09 13:04:37 -0700
committerJacob Helwig <jacob@puppetlabs.com>2011-08-19 13:52:59 -0700
commita32c8be4b32cfbc0588648e56e9194f3a75bbaa6 (patch)
tree7086e7db0c6168d7b71b994934bd9979a4049075 /lib/puppet
parent4f7170a0fd7d77d7d9941001cdb7dbcb0662d6b4 (diff)
downloadpuppet-a32c8be4b32cfbc0588648e56e9194f3a75bbaa6.tar.gz
puppet-a32c8be4b32cfbc0588648e56e9194f3a75bbaa6.tar.xz
puppet-a32c8be4b32cfbc0588648e56e9194f3a75bbaa6.zip
(#8409) Add a default group provider for Windows
This provider, windows_adsi, uses the Puppet::Util::ADSI module to manage groups. It can only manage group existence and memberships, but is fully functional in those regards. Based on work by: Joel Rosario <joel.r@.internal.directi.com> Based on work by: Cameron Thomas <cameron@puppetlabs.com> Reviewed-By: Matt Robinson <matt@puppetlabs.com> (cherry picked from commit 01f09f5f395bab66b90a4e81e958aa89025977b4)
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/provider/group/windows_adsi.rb48
1 files changed, 48 insertions, 0 deletions
diff --git a/lib/puppet/provider/group/windows_adsi.rb b/lib/puppet/provider/group/windows_adsi.rb
new file mode 100644
index 000000000..4468d0071
--- /dev/null
+++ b/lib/puppet/provider/group/windows_adsi.rb
@@ -0,0 +1,48 @@
+require 'puppet/util/adsi'
+
+Puppet::Type.type(:group).provide :windows_adsi do
+ desc "Group management for Windows"
+
+ defaultfor :operatingsystem => :windows
+ confine :operatingsystem => :windows
+ confine :feature => :microsoft_windows
+
+ has_features :manages_members
+
+ def group
+ @group ||= Puppet::Util::ADSI::Group.new(@resource[:name])
+ end
+
+ def members
+ group.members
+ end
+
+ def members=(members)
+ group.set_members(members)
+ end
+
+ def create
+ @group = Puppet::Util::ADSI::Group.create(@resource[:name])
+ self.members = @resource[:members]
+ end
+
+ def exists?
+ Puppet::Util::ADSI::Group.exists?(@resource[:name])
+ end
+
+ def delete
+ Puppet::Util::ADSI::Group.delete(@resource[:name])
+ end
+
+ def gid
+ nil
+ end
+
+ def gid=(value)
+ warning "No support for managing property gid of group #{@resource[:name]} on Windows"
+ end
+
+ def self.instances
+ Puppet::Util::ADSI::Group.map { |g| new(:ensure => :present, :name => g.name) }
+ end
+end