class Kaname::CLI

Public Instance Methods

apply() click to toggle source
# File lib/kaname/cli.rb, line 25
def apply
  adapter = if options[:dryrun]
    Kaname::Adapter::ReadOnly.new
  else
    Kaname::Adapter::ReadAndWrite.new
  end

  if Kaname::Resource.yaml(options[:filename])
    diffs = Hashdiff.diff(adapter.users_hash, Kaname::Resource.yaml)
    diffs.each do |diff|
      resource = diff[1].split('.')
      if resource.size == 1 # "user"
        if diff[0] == "+"
          user = adapter.create_user(resource[0], diff[2]['email'])
          diff[2]["tenants"].each do |tenant, role|
            adapter.create_user_role(tenant, user, role)
          end
        else
          adapter.delete_user(resource[0])
        end
      elsif resource.size == 3 # "user.tenants.foo"
        user_hash = adapter.find_user(resource[0])
        case diff[0]
        when "+"
          adapter.create_user_role(resource[2], user_hash, diff[2])
        when "-"
          adapter.delete_user_role(resource[2], user_hash, diff[2])
        when "~"
          adapter.change_user_role(resource[2], user_hash, diff[2], diff[3])
        end
      else # "user.tenants"
        # XXX
      end
    end
  else
    puts "Please put you keystone configuration file named keystone.yml to current directory."
  end
end
diff() click to toggle source
# File lib/kaname/cli.rb, line 65
def diff
  puts Diffy::Diff.new(YAML.dump(Kaname::Adapter::ReadOnly.new.users_hash), YAML.dump(Kaname::Resource.yaml))
end
dump() click to toggle source
# File lib/kaname/cli.rb, line 70
def dump
  puts YAML.dump(Kaname::Adapter::ReadOnly.new.users_hash)
end
password() click to toggle source
# File lib/kaname/cli.rb, line 9
def password
  puts "current_user: #{Kaname::Config.username}"

  print "type your current password: "
  old_password = STDIN.noecho(&:gets).strip
  puts
  print "type your new password: "
  new_password = STDIN.noecho(&:gets).strip
  puts

  Kaname::Adapter::ReadAndWrite.new.update_user_password(old_password, new_password)
end