class Chef::Knife::UserTarUpload

Public Class Methods

upload_users(tar_file) click to toggle source
# File lib/chef/knife/user_tar_upload.rb, line 27
def self.upload_users(tar_file)
  current_users = Chef::User.list.keys
  users_loader = Chef::Knife::Core::ObjectLoader.new(Chef::User, ui)
  
  tar_file.web_users.each do |web_user_path|
    
    unless users_loader.find_file("users", web_user_path).nil?
      user_hash = Yajl::Parser.parse(IO.read(web_user_path))
    end
    user = Chef::User.from_hash(user_hash)
    
     # Update existing users, otherwise save the new user
    if current_users.include? user.name
      user.update
    else
      user.save
    end
 
    ui.info("Updated User : #{user.name}")
  end
end

Public Instance Methods

run() click to toggle source
# File lib/chef/knife/user_tar_upload.rb, line 14
def run
  #Get Arguments
  if @name_args.size != 1
    ui.info("Please specify a tar path")
    show_usage
    exit 1
  end
  
  tar_file = Chef::TarFile.new(@name_args.first)
  UserTarUpload.upload_users tar_file
  
end