add_user_to_tenant(tenant_id, user_id, role_id)
click to toggle source
def add_user_to_tenant(tenant_id, user_id, role_id)
request(
:expects => 200,
:method => 'PUT',
:path => "/tenants/#{tenant_id}/users/#{user_id}/roles/OS-KSADM/#{role_id}"
)
end
check_token(token_id, tenant_id)
click to toggle source
def check_token(token_id, tenant_id)
request(
:expects => [200, 203],
:method => 'HEAD',
:path => "tokens/#{token_id}?belongsTo=#{tenant_id}"
)
end
create_role(name)
click to toggle source
def create_role(name)
data = {
'role' => {
'name' => name
}
}
request(
:body => MultiJson.encode(data),
:expects => [200, 202],
:method => 'POST',
:path => '/OS-KSADM/roles'
)
end
create_tenant(attributes)
click to toggle source
def create_tenant(attributes)
request(
:expects => [200],
:method => 'POST',
:path => "tenants",
:body => {
'tenant' => attributes
}.to_json
)
end
create_user(name, password, email, tenantId=nil, enabled=true)
click to toggle source
def create_user(name, password, email, tenantId=nil, enabled=true)
data = {
'user' => {
'name' => name,
'password' => password,
'tenantId' => tenantId,
'email' => email,
'enabled' => enabled,
}
}
request(
:body => MultiJson.encode(data),
:expects => [200, 202],
:method => 'POST',
:path => '/users'
)
end
create_user_role(tenant_id, user_id, role_id)
click to toggle source
def create_user_role(tenant_id, user_id, role_id)
request(
:expects => 200,
:method => 'PUT',
:path => "/tenants/#{tenant_id}/users/#{user_id}/roles/OS-KSADM/#{role_id}"
)
end
credentials()
click to toggle source
def credentials
{ :provider => 'openstack',
:openstack_auth_url => @openstack_auth_uri.to_s,
:openstack_auth_token => @auth_token,
:openstack_management_url => @openstack_management_url,
:openstack_current_user_id => @openstack_current_user_id,
:current_user => @current_user,
:current_tenant => @current_tenant }
end
delete_role(role_id)
click to toggle source
def delete_role(role_id)
request(
:expects => [200, 204],
:method => 'DELETE',
:path => "/OS-KSADM/roles/#{role_id}"
)
end
delete_tenant(id)
click to toggle source
def delete_tenant(id)
request(
:expects => [200, 204],
:method => 'DELETE',
:path => "tenants/#{id}"
)
end
delete_user(user_id)
click to toggle source
def delete_user(user_id)
request(
:expects => [200, 204],
:method => 'DELETE',
:path => "users/#{user_id}"
)
end
delete_user_role(tenant_id, user_id, role_id)
click to toggle source
def delete_user_role(tenant_id, user_id, role_id)
request(
:expects => 200,
:method => 'DELETE',
:path => "/tenants/#{tenant_id}/users/#{user_id}/roles/OS-KSADM/#{role_id}"
)
end
get_role(id)
click to toggle source
def get_role(id)
request(
:expects => [200, 204],
:method => 'GET',
:path => "/OS-KSADM/roles/#{id}"
)
end
get_tenant(id)
click to toggle source
def get_tenant(id)
request(
:expects => [200, 204],
:method => 'GET',
:path => "tenants/#{id}"
)
end
get_tenants_by_id(tenant_id)
click to toggle source
def get_tenants_by_id(tenant_id)
request(
:expects => [200],
:method => 'GET',
:path => "tenants/#{tenant_id}"
)
end
get_tenants_by_name(name)
click to toggle source
def get_tenants_by_name(name)
request(
:expects => [200],
:method => 'GET',
:path => "tenants?name=#{name}"
)
end
get_user_by_id(user_id)
click to toggle source
def get_user_by_id(user_id)
request(
:expects => [200, 203],
:method => 'GET',
:path => "users/#{user_id}"
)
end
get_user_by_name(name)
click to toggle source
def get_user_by_name(name)
request(
:expects => [200, 203],
:method => 'GET',
:path => "users?name=#{name}"
)
end
list_endpoints_for_token(token_id)
click to toggle source
def list_endpoints_for_token(token_id)
request(
:expects => [200, 203],
:method => 'HEAD',
:path => "tokens/#{token_id}/endpoints"
)
end
list_roles()
click to toggle source
def list_roles
request(
:expects => 200,
:method => 'GET',
:path => '/OS-KSADM/roles'
)
end
list_roles_for_user_on_tenant(tenant_id, user_id)
click to toggle source
def list_roles_for_user_on_tenant(tenant_id, user_id)
request(
:expects => [200],
:method => 'GET',
:path => "tenants/#{tenant_id}/users/#{user_id}/roles"
)
end
list_tenants(limit = nil, marker = nil)
click to toggle source
def list_tenants(limit = nil, marker = nil)
params = Hash.new
params['limit'] = limit if limit
params['marker'] = marker if marker
request(
:expects => [200, 204],
:method => 'GET',
:path => "tenants",
:query => params
)
end
list_user_global_roles(user_id)
click to toggle source
def list_user_global_roles(user_id)
request(
:expects => [200],
:method => 'GET',
:path => "users/#{user_id}/roles"
)
end
list_users(tenant_id = nil)
click to toggle source
def list_users(tenant_id = nil)
path = tenant_id ? "tenants/#{tenant_id}/users" : 'users'
request(
:expects => [200, 204],
:method => 'GET',
:path => path
)
end
reload()
click to toggle source
def reload
@connection.reset
end
remove_user_from_tenant(tenant_id, user_id, role_id)
click to toggle source
def remove_user_from_tenant(tenant_id, user_id, role_id)
request(
:expects => [200, 204],
:method => 'DELETE',
:path => "/tenants/#{tenant_id}/users/#{user_id}/roles/OS-KSADM/#{role_id}"
)
end
request(params)
click to toggle source
def request(params)
begin
response = @connection.request(params.merge({
:headers => {
'Content-Type' => 'application/json',
'X-Auth-Token' => @auth_token
}.merge!(params[:headers] || {}),
:host => @host,
:path => "#{@path}/#{params[:path]}"
}))
rescue Excon::Errors::Unauthorized => error
if error.response.body != 'Bad username or password'
@openstack_must_reauthenticate = true
authenticate
retry
else
raise error
end
rescue Excon::Errors::HTTPStatusError => error
raise case error
when Excon::Errors::NotFound
Fog::Identity::OpenStack::NotFound.slurp(error)
else
error
end
end
unless response.body.empty?
response.body = MultiJson.decode(response.body)
end
response
end
update_tenant(id, attributes)
click to toggle source
def update_tenant(id, attributes)
request(
:expects => [200],
:method => 'PUT',
:path => "tenants/#{id}",
:body => {
'tenant' => attributes
}.to_json
)
end
update_user(user_id, options = {})
click to toggle source
def update_user(user_id, options = {})
url = options.delete('url') || "/users/#{user_id}"
request(
:body => MultiJson.encode({ 'user' => options }),
:expects => 200,
:method => 'PUT',
:path => url
)
end
validate_token(token_id, tenant_id)
click to toggle source
def validate_token(token_id, tenant_id)
request(
:expects => [200, 203],
:method => 'GET',
:path => "tokens/#{token_id}?belongsTo=#{tenant_id}"
)
end