# class Chef::User

### Public Class Methods

from_hash(user_hash) click to toggle source

Class Methods

    # File lib/chef/user.rb, line 128
    def self.from_hash(user_hash)
      user = Chef::User.new
      user.name user_hash['name']
      user.private_key user_hash['private_key'] if user_hash.key?('private_key')
      user.password user_hash['password'] if user_hash.key?('password')
      user.public_key user_hash['public_key']
      user.admin user_hash['admin']
      user
    end

from_json(json) click to toggle source

    # File lib/chef/user.rb, line 138
    def self.from_json(json)
      Chef::User.from_hash(Chef::JSONCompat.from_json(json))
    end

Also aliased as: json_create
json_create(json)
Alias for: from_json
list(inflate=false) click to toggle source

    # File lib/chef/user.rb, line 146
    def self.list(inflate=false)
      response = if inflate
                   users = Chef::REST.new(Chef::Config[:chef_server_url]).get_rest('users')
                   users.map do |name|
                     Chef::User.load(name)
                   end
                 else
                   Chef::REST.new(Chef::Config[:chef_server_url]).get_rest('users')
                 end
      if response.is_a? Array
        transform_ohc_list_response(response)
      else
        response
      end
    end

load(name) click to toggle source

    # File lib/chef/user.rb, line 162
    def self.load(name)
      response = Chef::REST.new(Chef::Config[:chef_server_url]).get_rest("users/#{name}")
      Chef::User.from_hash(response)
    end

new() click to toggle source

    # File lib/chef/user.rb, line 31
    def initialize
      @name = ''
      @public_key = nil
      @private_key = nil
      @password = nil
      @admin = false
    end

### Public Instance Methods

admin(arg=nil) click to toggle source

    # File lib/chef/user.rb, line 44
    def admin(arg=nil)
      set_or_return(:admin,
                    arg, :kind_of => [TrueClass, FalseClass])
    end

create() click to toggle source

    # File lib/chef/user.rb, line 83
    def create
      payload = {:name => self.name, :admin => self.admin, :password => self.password }
      payload[:public_key] = public_key if public_key
      new_user =Chef::REST.new(Chef::Config[:chef_server_url]).post_rest("users", payload)
      Chef::User.from_hash(self.to_hash.merge(new_user))
    end

destroy() click to toggle source

    # File lib/chef/user.rb, line 79
    def destroy
      Chef::REST.new(Chef::Config[:chef_server_url]).delete_rest("users/#{@name}")
    end

inspect() click to toggle source

    # File lib/chef/user.rb, line 121
    def inspect
      "Chef::User name:'#{name}' admin:'#{admin.inspect}'" +
      "public_key:'#{public_key}' private_key:#{private_key}"
    end

name(arg=nil) click to toggle source

    # File lib/chef/user.rb, line 39
    def name(arg=nil)
      set_or_return(:name, arg,
                    :regex => /^[a-z0-9\-_]+$/)
    end

password(arg=nil) click to toggle source

    # File lib/chef/user.rb, line 59
    def password(arg=nil)
      set_or_return(:password,
                    arg, :kind_of => String)
    end

private_key(arg=nil) click to toggle source

    # File lib/chef/user.rb, line 54
    def private_key(arg=nil)
      set_or_return(:private_key,
                    arg, :kind_of => String)
    end

public_key(arg=nil) click to toggle source

    # File lib/chef/user.rb, line 49
    def public_key(arg=nil)
      set_or_return(:public_key,
                    arg, :kind_of => String)
    end

reregister() click to toggle source

    # File lib/chef/user.rb, line 110
    def reregister
      r = Chef::REST.new(Chef::Config[:chef_server_url])
      reregistered_self = r.put_rest("users/#{name}", { :name => name, :admin => admin, :private_key => true })
      private_key(reregistered_self["private_key"])
      self
    end

save(new_key=false) click to toggle source

    # File lib/chef/user.rb, line 98
    def save(new_key=false)
      begin
        create
      rescue Net::HTTPServerException => e
        if e.response.code == "409"
          update(new_key)
        else
          raise e
        end
      end
    end

to_hash() click to toggle source

    # File lib/chef/user.rb, line 64
    def to_hash
      result = {
        "name" => @name,
        "public_key" => @public_key,
        "admin" => @admin
      }
      result["private_key"] = @private_key if @private_key
      result["password"] = @password if @password
      result
    end

to_json(*a) click to toggle source

    # File lib/chef/user.rb, line 75
    def to_json(*a)
      to_hash.to_json(*a)
    end

to_s() click to toggle source

    # File lib/chef/user.rb, line 117
    def to_s
      "user[#{@name}]"
    end

update(new_key=false) click to toggle source

    # File lib/chef/user.rb, line 90
    def update(new_key=false)
      payload = {:name => name, :admin => admin}
      payload[:private_key] = new_key if new_key
      payload[:password] = password if password
      updated_user = Chef::REST.new(Chef::Config[:chef_server_url]).put_rest("users/#{name}", payload)
      Chef::User.from_hash(self.to_hash.merge(updated_user))
    end