# File lib/puppet/provider/nameservice/directoryservice.rb, line 379
379:     def set(param, value)
380:         self.class.validate(param, value)
381:         current_members = @property_value_cache_hash[:members]
382:         if param == :members
383:             # If we are meant to be authoritative for the group membership
384:             # then remove all existing members who haven't been specified
385:             # in the manifest.
386:             if @resource[:auth_membership] and not current_members.nil?
387:                 remove_unwanted_members(current_members, value)
388:              end
389: 
390:              # if they're not a member, make them one.
391:              add_members(current_members, value)
392:         else
393:             exec_arg_vector = self.class.get_exec_preamble("-create", @resource[:name])
394:             # JJM: The following line just maps the NS name to the DS name
395:             #      e.g. { :uid => 'UniqueID' }
396:             exec_arg_vector << @@ns_to_ds_attribute_map[symbolize(param)]
397:             # JJM: The following line sends the actual value to set the property to
398:             exec_arg_vector << value.to_s
399:             begin
400:                 execute(exec_arg_vector)
401:             rescue Puppet::ExecutionFailure => detail
402:                 fail("Could not set %s on %s[%s]: %s" % [param, @resource.class.name, @resource.name, detail])
403:             end
404:         end
405:     end