1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 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 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
|
require 'fog/openstack/identity'
module Fog
module OpenStack
class Identity
class V3 < Fog::Service
requires :openstack_auth_url
recognizes :openstack_auth_token, :openstack_management_url, :persistent,
:openstack_service_type, :openstack_service_name, :openstack_tenant,
:openstack_endpoint_type, :openstack_region, :openstack_domain_id,
:openstack_project_name, :openstack_domain_name,
:openstack_user_domain, :openstack_project_domain,
:openstack_user_domain_id, :openstack_project_domain_id,
:openstack_api_key, :openstack_current_user_id, :openstack_userid, :openstack_username,
:current_user, :current_user_id, :current_tenant,
:provider, :openstack_identity_api_version, :openstack_cache_ttl, :openstack_application_credential_id,
:openstack_application_credential_secret
model_path 'fog/openstack/identity/v3/models'
model :domain
collection :domains
model :endpoint
collection :endpoints
model :project
collection :projects
model :service
collection :services
model :token
collection :tokens
model :user
collection :users
model :group
collection :groups
model :role
collection :roles
model :role_assignment
collection :role_assignments
model :os_credential
collection :os_credentials
model :application_credential
collection :application_credentials
model :policy
collection :policies
request_path 'fog/openstack/identity/v3/requests'
request :list_users
request :get_user
request :create_user
request :update_user
request :delete_user
request :list_user_groups
request :list_user_projects
request :list_groups
request :get_group
request :create_group
request :update_group
request :delete_group
request :add_user_to_group
request :remove_user_from_group
request :group_user_check
request :list_group_users
request :list_roles
request :list_role_assignments
request :get_role
request :create_role
request :update_role
request :delete_role
request :auth_domains
request :auth_projects
request :list_domains
request :get_domain
request :create_domain
request :update_domain
request :delete_domain
request :list_domain_user_roles
request :grant_domain_user_role
request :check_domain_user_role
request :revoke_domain_user_role
request :list_domain_group_roles
request :grant_domain_group_role
request :check_domain_group_role
request :revoke_domain_group_role
request :list_endpoints
request :get_endpoint
request :create_endpoint
request :update_endpoint
request :delete_endpoint
request :list_projects
request :get_project
request :create_project
request :update_project
request :delete_project
request :list_project_user_roles
request :grant_project_user_role
request :check_project_user_role
request :revoke_project_user_role
request :list_project_group_roles
request :grant_project_group_role
request :check_project_group_role
request :revoke_project_group_role
request :list_services
request :get_service
request :create_service
request :update_service
request :delete_service
request :token_authenticate
request :token_validate
request :token_check
request :token_revoke
request :list_os_credentials
request :get_os_credential
request :create_os_credential
request :update_os_credential
request :delete_os_credential
request :list_application_credentials
request :create_application_credentials
request :delete_application_credentials
request :get_application_credentials
request :list_policies
request :get_policy
request :create_policy
request :update_policy
request :delete_policy
class Mock
include Fog::OpenStack::Core
def initialize(options = {})
end
end
def self.get_api_version(uri, connection_options = {})
connection = Fog::Core::Connection.new(uri, false, connection_options)
response = connection.request(:expects => [200],
:headers => {'Content-Type' => 'application/json',
'Accept' => 'application/json'},
:method => 'GET')
body = Fog::JSON.decode(response.body)
version = nil
unless body['version'].empty?
version = body['version']['id']
end
if version.nil?
raise Fog::OpenStack::Errors::ServiceUnavailable, "No version available at #{uri}"
end
version
end
class Real < Fog::OpenStack::Identity::Real
def api_path_prefix
@path_prefix = version_in_path?(@openstack_management_uri.path) ? '' : 'v3'
super
end
def default_path_prefix
@path_prefix
end
def default_service_type
%w[identity_v3 identityv3 identity]
end
def version_in_path?(url)
true if url =~ /\/v3(\/)*.*$/
end
end
end
end
end
end
|