# File lib/puppet/util/adsi.rb, line 271 def self.create(name) # Windows error 2224: The account already exists. raise Puppet::Error.new( "Cannot create group if user '#{name}' exists." ) if Puppet::Util::ADSI::User.exists? name new(name, Puppet::Util::ADSI.create(name, 'group')) end
# File lib/puppet/util/adsi.rb, line 281 def self.delete(name) Puppet::Util::ADSI.delete(name, 'group') end
# File lib/puppet/util/adsi.rb, line 285 def self.each(&block) wql = Puppet::Util::ADSI.execquery( "select * from win32_group" ) groups = [] wql.each do |g| groups << new(g.name, g) end groups.each(&block) end
# File lib/puppet/util/adsi.rb, line 277 def self.exists?(name) Puppet::Util::ADSI.connectable?(Group.uri(name)) end
# File lib/puppet/util/adsi.rb, line 210 def initialize(name, native_group = nil) @name = name @native_group = native_group end
# File lib/puppet/util/adsi.rb, line 219 def self.uri(name) Puppet::Util::ADSI.uri(name, 'group') end
# File lib/puppet/util/adsi.rb, line 236 def add_members(*names) names.each do |name| native_group.Add(Puppet::Util::ADSI::User.uri(name)) end end
# File lib/puppet/util/adsi.rb, line 227 def commit begin native_group.SetInfo unless native_group.nil? rescue Exception => e raise Puppet::Error.new( "Group update failed: #{e}" ) end self end
# File lib/puppet/util/adsi.rb, line 250 def members # WIN32OLE objects aren't enumerable, so no map members = [] native_group.Members.each {|m| members << m.Name} members end
# File lib/puppet/util/adsi.rb, line 243 def remove_members(*names) names.each do |name| native_group.Remove(Puppet::Util::ADSI::User.uri(name)) end end
# File lib/puppet/util/adsi.rb, line 257 def set_members(desired_members) return if desired_members.nil? or desired_members.empty? current_members = self.members # First we add all missing members members_to_add = desired_members - current_members add_members(*members_to_add) # Then we remove all extra members members_to_remove = current_members - desired_members remove_members(*members_to_remove) end
# File lib/puppet/util/adsi.rb, line 215 def uri self.class.uri(name) end