Class: VagrantPlugins::Openstack::KeystoneClient
- Inherits:
- 
      Object
      
        - Object
- VagrantPlugins::Openstack::KeystoneClient
 
- Includes:
- Singleton, HttpUtils::RequestLogger
- Defined in:
- lib/vagrant-openstack-provider/client/keystone.rb
Instance Method Summary collapse
- #authenticate(env) ⇒ Object
- 
  
    
      #initialize  ⇒ KeystoneClient 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    A new instance of KeystoneClient. 
Methods included from HttpUtils::RequestLogger
Constructor Details
#initialize ⇒ KeystoneClient
Returns a new instance of KeystoneClient.
| 12 13 14 15 | # File 'lib/vagrant-openstack-provider/client/keystone.rb', line 12 def initialize @logger = Log4r::Logger.new('vagrant_openstack::keystone') @session = VagrantPlugins::Openstack.session end | 
Instance Method Details
#authenticate(env) ⇒ Object
| 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 | # File 'lib/vagrant-openstack-provider/client/keystone.rb', line 17 def authenticate(env) @logger.info('Authenticating on Keystone') config = env[:machine].provider_config @logger.info(I18n.t('vagrant_openstack.client.authentication', project: config.tenant_name, user: config.username)) if config.identity_api_version == '2' post_body = get_body_2 config auth_url = get_auth_url_2 env elsif config.identity_api_version == '3' post_body = get_body_3 config auth_url = get_auth_url_3 env end headers = { content_type: :json, accept: :json } log_request(:POST, auth_url, post_body.to_json, headers) if config.identity_api_version == '2' post_body[:auth][:passwordCredentials][:password] = config.password elsif config.identity_api_version == '3' post_body[:auth][:identity][:password][:user][:password] = config.password end authentication = RestUtils.post(env, auth_url, post_body.to_json, headers) do |response| log_response(response) case response.code when 200 response when 201 response when 401 fail Errors::AuthenticationFailed when 404 fail Errors::BadAuthenticationEndpoint else fail Errors::VagrantOpenstackError, message: response.to_s end end if config.identity_api_version == '2' access = JSON.parse(authentication)['access'] response_token = access['token'] @session.token = response_token['id'] @session.project_id = response_token['tenant']['id'] return access['serviceCatalog'] elsif config.identity_api_version == '3' body = JSON.parse(authentication) @session.token = authentication.headers[:x_subject_token] @session.project_id = body['token']['project']['id'] return body['token']['catalog'] end end |