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