def apply
Generator.password_length = options[:password_length]
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
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