Files

Class/Module Index [+]

Quicksearch

Chef::Provider::User::Pw

Public Instance Methods

check_lock() click to toggle source
# File lib/chef/provider/user/pw.rb, line 51
def check_lock
  case @current_resource.password
  when /^\*LOCKED\*/
    @locked = true
  else
    @locked = false
  end
  @locked
end
create_user() click to toggle source
# File lib/chef/provider/user/pw.rb, line 31
def create_user
  command = "pw useradd"
  command << set_options
  run_command(:command => command)
  modify_password
end
load_current_resource() click to toggle source
# File lib/chef/provider/user/pw.rb, line 26
def load_current_resource
  super
  raise Chef::Exceptions::User, "Could not find binary /usr/sbin/pw for #{@new_resource}" unless ::File.exists?("/usr/sbin/pw")
end
lock_user() click to toggle source
# File lib/chef/provider/user/pw.rb, line 61
def lock_user
  run_command(:command => "pw lock #{@new_resource.username}")
end
manage_user() click to toggle source
# File lib/chef/provider/user/pw.rb, line 38
def manage_user
  command = "pw usermod"
  command << set_options
  run_command(:command => command)
  modify_password
end
modify_password() click to toggle source
# File lib/chef/provider/user/pw.rb, line 95
def modify_password
  if (not @new_resource.password.nil?) && (@current_resource.password != @new_resource.password)
    Chef::Log.debug("#{new_resource} updating password")
    command = "pw usermod #{@new_resource.username} -H 0"
    status = popen4(command, :waitlast => true) do |pid, stdin, stdout, stderr|
      stdin.puts "#{@new_resource.password}"
    end

    unless status.exitstatus == 0
      raise Chef::Exceptions::User, "pw failed - #{status.inspect}!"
    end
  else
    Chef::Log.debug("#{new_resource} no change needed to password")
  end
end
remove_user() click to toggle source
# File lib/chef/provider/user/pw.rb, line 45
def remove_user
  command = "pw userdel #{@new_resource.username}"
  command << " -r" if @new_resource.supports[:manage_home]
  run_command(:command => command)
end
set_options() click to toggle source
# File lib/chef/provider/user/pw.rb, line 69
def set_options
  opts = " #{@new_resource.username}"

  field_list = {
    'comment' => "-c",
    'home' => "-d",
    'gid' => "-g",
    'uid' => "-u",
    'shell' => "-s"
  }
  field_list.sort{ |a,b| a[0] <=> b[0] }.each do |field, option|
    field_symbol = field.to_sym
    if @current_resource.send(field_symbol) != @new_resource.send(field_symbol)
      if @new_resource.send(field_symbol)
        Chef::Log.debug("#{@new_resource} setting #{field} to #{@new_resource.send(field_symbol)}")
        opts << " #{option} '#{@new_resource.send(field_symbol)}'"
      end
    end
  end
  if @new_resource.supports[:manage_home]
    Chef::Log.debug("#{@new_resource} is managing the users home directory")
    opts << " -m"
  end
  opts
end
unlock_user() click to toggle source
# File lib/chef/provider/user/pw.rb, line 65
def unlock_user
  run_command(:command => "pw unlock #{@new_resource.username}")
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.