class Kaname::Adapter::ReadOnly

Public Class Methods

new() click to toggle source
# File lib/kaname/adapter/read_only.rb, line 4
def initialize
  Kaname::Config.setup
end

Public Instance Methods

change_user_role(tenant, user_hash, before_role, after_role) click to toggle source
# File lib/kaname/adapter/read_only.rb, line 62
def change_user_role(tenant, user_hash, before_role, after_role)
  delete_user_role(tenant, user_hash, before_role)
  create_user_role(tenant, user_hash, after_role)
end
create_user(name, email) click to toggle source
# File lib/kaname/adapter/read_only.rb, line 45
def create_user(name, email)
  puts "Create User: #{name} #{email}"
  {"name" => name}
end
create_user_role(tenant, user_hash, role) click to toggle source
# File lib/kaname/adapter/read_only.rb, line 50
def create_user_role(tenant, user_hash, role)
  puts "Create User Role: #{tenant} #{user_hash["name"]} #{role}"
end
delete_user(name) click to toggle source
# File lib/kaname/adapter/read_only.rb, line 54
def delete_user(name)
  puts "Delete User: #{name}"
end
delete_user_role(tenant, user_hash, role) click to toggle source
# File lib/kaname/adapter/read_only.rb, line 58
def delete_user_role(tenant, user_hash, role)
  puts "Delete User Role: #{tenant} #{user_hash["name"]} #{role}"
end
find_user(name) click to toggle source
# File lib/kaname/adapter/read_only.rb, line 12
def find_user(name)
  user = Yao::User.find_by_name(name).first
  {"id" => user.id, "name" => user.name}
end
list_role_assignments() click to toggle source
# File lib/kaname/adapter/read_only.rb, line 29
def list_role_assignments
  unless @_role_assignments
    @_role_assignments ||= Yao::RoleAssignment.list
    Yao::Auth.try_new
  end
  @_role_assignments
end
list_roles() click to toggle source
# File lib/kaname/adapter/read_only.rb, line 25
def list_roles
  @_roles ||= Yao::Role.list
end
list_tenants() click to toggle source
# File lib/kaname/adapter/read_only.rb, line 17
def list_tenants
  @_tenants ||= if keystone_v2?
                  Yao::Tenant.list
                else
                  Yao::Project.list
                end
end
list_users() click to toggle source
# File lib/kaname/adapter/read_only.rb, line 8
def list_users
  @_users ||= Yao::User.list
end
users_hash() click to toggle source
# File lib/kaname/adapter/read_only.rb, line 37
def users_hash
  @_user_hash ||= list_users.each_with_object(Hash.new { |h,k| h[k] = {} }) do |u,uh|
    next if ignored_users.include?(u.name)
    uh[u.name]["email"] = u.email
    uh[u.name]["tenants"] = tenant_role_hash(u.id)
  end
end

Private Instance Methods

ignored_users() click to toggle source

default service users

# File lib/kaname/adapter/read_only.rb, line 82
def ignored_users
  %w[
    neutron
    glance
    cinder
    admin
    nova_ec2
    nova
    heat
    ceilometer
    octavia
    placement
  ]
end
keystone_v2?() click to toggle source
# File lib/kaname/adapter/read_only.rb, line 69
def keystone_v2?
  Yao.default_client.pool["identity"].url_prefix.to_s.match(/v2\.0/)
end
tenant_role_hash(user_id) click to toggle source
# File lib/kaname/adapter/read_only.rb, line 73
def tenant_role_hash(user_id)
  list_role_assignments.each_with_object(Hash.new) do |t,th|
    if t.user.id == user_id
      th[list_tenants.find {|ts| ts.id == t.scope["project"]["id"]}["name"]] = list_roles.find {|r| r.id == t.role.id }['name']
    end
  end
end