summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
authorNick Lewis <nick@puppetlabs.com>2011-08-09 13:04:37 -0700
committerNick Lewis <nick@puppetlabs.com>2011-08-10 11:42:19 -0700
commit01f09f5f395bab66b90a4e81e958aa89025977b4 (patch)
tree28656f82827ba450dcb801c09fb3c170b755a6be /lib/puppet
parentac00e9e289f8fdc81f060e7dd289e1a8e0f133c0 (diff)
downloadpuppet-01f09f5f395bab66b90a4e81e958aa89025977b4.tar.gz
puppet-01f09f5f395bab66b90a4e81e958aa89025977b4.tar.xz
puppet-01f09f5f395bab66b90a4e81e958aa89025977b4.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>
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