Class: Puppet::Util::ADSI::Group
- Extended by:
- Enumerable
- Defined in:
- lib/puppet/util/adsi.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#native_group ⇒ Object
Returns the value of attribute native_group.
Class Method Summary collapse
- .create(name) ⇒ Object
- .delete(name) ⇒ Object
- .each(&block) ⇒ Object
- .exists?(name) ⇒ Boolean
- .uri(name) ⇒ Object
Instance Method Summary collapse
- #add_members(*names) ⇒ Object (also: #add_member)
- #commit ⇒ Object
-
#initialize(name, native_group = nil) ⇒ Group
constructor
A new instance of Group.
- #members ⇒ Object
- #remove_members(*names) ⇒ Object (also: #remove_member)
- #set_members(desired_members) ⇒ Object
- #uri ⇒ Object
Constructor Details
#initialize(name, native_group = nil) ⇒ Group
Returns a new instance of Group.
208 209 210 211 |
# File 'lib/puppet/util/adsi.rb', line 208 def initialize(name, native_group = nil) @name = name @native_group = native_group end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
207 208 209 |
# File 'lib/puppet/util/adsi.rb', line 207 def name @name end |
#native_group ⇒ Object
Returns the value of attribute native_group.
206 207 208 |
# File 'lib/puppet/util/adsi.rb', line 206 def native_group @native_group end |
Class Method Details
.create(name) ⇒ Object
269 270 271 272 273 |
# File 'lib/puppet/util/adsi.rb', line 269 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 |
.delete(name) ⇒ Object
279 280 281 |
# File 'lib/puppet/util/adsi.rb', line 279 def self.delete(name) Puppet::Util::ADSI.delete(name, 'group') end |
.each(&block) ⇒ Object
283 284 285 286 287 288 289 290 291 292 |
# File 'lib/puppet/util/adsi.rb', line 283 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 |
Instance Method Details
#add_members(*names) ⇒ Object Also known as: add_member
234 235 236 237 238 |
# File 'lib/puppet/util/adsi.rb', line 234 def add_members(*names) names.each do |name| native_group.Add(Puppet::Util::ADSI::User.uri(name)) end end |
#commit ⇒ Object
225 226 227 228 229 230 231 232 |
# File 'lib/puppet/util/adsi.rb', line 225 def commit begin native_group.SetInfo unless native_group.nil? rescue Exception => e raise Puppet::Error.new( "Group update failed: #{e}" ) end self end |
#members ⇒ Object
248 249 250 251 252 253 |
# File 'lib/puppet/util/adsi.rb', line 248 def members # WIN32OLE objects aren't enumerable, so no map members = [] native_group.Members.each {|m| members << m.Name} members end |
#remove_members(*names) ⇒ Object Also known as: remove_member
241 242 243 244 245 |
# File 'lib/puppet/util/adsi.rb', line 241 def remove_members(*names) names.each do |name| native_group.Remove(Puppet::Util::ADSI::User.uri(name)) end end |
#set_members(desired_members) ⇒ Object
255 256 257 258 259 260 261 262 263 264 265 266 267 |
# File 'lib/puppet/util/adsi.rb', line 255 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 |
#uri ⇒ Object
213 214 215 |
# File 'lib/puppet/util/adsi.rb', line 213 def uri self.class.uri(name) end |