diff options
author | Nick Lewis <nick@puppetlabs.com> | 2011-08-09 13:04:37 -0700 |
---|---|---|
committer | Jacob Helwig <jacob@puppetlabs.com> | 2011-08-19 13:52:59 -0700 |
commit | a32c8be4b32cfbc0588648e56e9194f3a75bbaa6 (patch) | |
tree | 7086e7db0c6168d7b71b994934bd9979a4049075 /lib/puppet | |
parent | 4f7170a0fd7d77d7d9941001cdb7dbcb0662d6b4 (diff) | |
download | puppet-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.rb | 48 |
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 |