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 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_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 end
end
else
puts "Please put you keystone configuration file named keystone.yml to current directory."
end
end
|