Class: Kaname::CLI

Inherits:
Thor
  • Object
show all
Defined in:
lib/kaname/cli.rb

Instance Method Summary collapse

Instance Method Details

#applyObject



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/kaname/cli.rb', line 24

def apply
  adapter = if options[:dryrun]
    Kaname::Adapter::ReadOnly.new
  else
    Kaname::Adapter::ReadAndWrite.new
  end

  if Kaname::Resource.yaml
    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

#diffObject



64
65
66
# File 'lib/kaname/cli.rb', line 64

def diff
  puts Diffy::Diff.new(YAML.dump(Kaname::Adapter::ReadOnly.new.users_hash), YAML.dump(Kaname::Resource.yaml))
end

#dumpObject



69
70
71
# File 'lib/kaname/cli.rb', line 69

def dump
  puts YAML.dump(Kaname::Adapter::ReadOnly.new.users_hash)
end

#passwordObject



9
10
11
12
13
14
15
16
17
18
19
20
# 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