diff options
| author | Nick Lewis <nick@puppetlabs.com> | 2011-08-09 13:04:37 -0700 |
|---|---|---|
| committer | Nick Lewis <nick@puppetlabs.com> | 2011-08-10 11:42:19 -0700 |
| commit | 01f09f5f395bab66b90a4e81e958aa89025977b4 (patch) | |
| tree | 28656f82827ba450dcb801c09fb3c170b755a6be /lib/puppet | |
| parent | ac00e9e289f8fdc81f060e7dd289e1a8e0f133c0 (diff) | |
| download | puppet-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.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 |
