class Itamae::Resource::User

Public Instance Methods

action_create(options) click to toggle source
# File lib/itamae/resource/user.rb, line 38
def action_create(options)
  if run_specinfra(:check_user_exists, attributes.username)
    if attributes.uid && attributes.uid != current.uid
      run_specinfra(:update_user_uid, attributes.username, attributes.uid)
      updated!
    end

    if attributes.gid && attributes.gid != current.gid
      run_specinfra(:update_user_gid, attributes.username, attributes.gid)
      updated!
    end

    if attributes.password && attributes.password != current.password
      run_specinfra(:update_user_encrypted_password, attributes.username, attributes.password)
      updated!
    end

    if attributes.home && attributes.home != current.home
      run_specinfra(:update_user_home_directory, attributes.username, attributes.home)
      updated!
    end

    if attributes.shell && attributes.shell != current.shell
      run_specinfra(:update_user_login_shell, attributes.username, attributes.shell)
      updated!
    end
  else
    options = {
      gid:            attributes.gid,
      home_directory: attributes.home,
      password:       attributes.password,
      system_user:    attributes.system_user,
      uid:            attributes.uid,
      shell:          attributes.shell,
      create_home:    attributes.create_home,
    }

    run_specinfra(:add_user, attributes.username, options)

    updated!
  end
end
pre_action() click to toggle source
# File lib/itamae/resource/user.rb, line 14
def pre_action
  case @current_action
  when :create
    attributes.exist = true
  end

  if attributes.gid.is_a?(String)
    # convert name to gid
    attributes.gid = run_specinfra(:get_group_gid, attributes.gid).stdout.to_i
  end
end
set_current_attributes() click to toggle source
# File lib/itamae/resource/user.rb, line 26
def set_current_attributes
  current.exist = exist?

  if current.exist
    current.uid = run_specinfra(:get_user_uid, attributes.username).stdout.strip.to_i
    current.gid = run_specinfra(:get_user_gid, attributes.username).stdout.strip.to_i
    current.home = run_specinfra(:get_user_home_directory, attributes.username).stdout.strip
    current.shell = run_specinfra(:get_user_login_shell, attributes.username).stdout.strip
    current.password = current_password
  end
end

Private Instance Methods

current_password() click to toggle source
# File lib/itamae/resource/user.rb, line 86
def current_password
  result = run_specinfra(:get_user_encrypted_password, attributes.username)
  if result.success?
    result.stdout.strip
  else
    nil
  end
end
exist?() click to toggle source
# File lib/itamae/resource/user.rb, line 82
def exist?
  run_specinfra(:check_user_exists, attributes.username)
end