Namespace

Files

Class/Module Index [+]

Quicksearch

Fog::OpenStack

Public Class Methods

authenticate_v1(options, connection_options = {}) click to toggle source

legacy v1.0 style auth

# File lib/fog/openstack.rb, line 47
def self.authenticate_v1(options, connection_options = {})
  openstack_auth_url = options[:openstack_auth_url]
  uri = URI.parse(openstack_auth_url)
  connection = Fog::Connection.new(openstack_auth_url, false, connection_options)
  @openstack_api_key  = options[:openstack_api_key]
  @openstack_username = options[:openstack_username]
  response = connection.request({
    :expects  => [200, 204],
    :headers  => {
      'X-Auth-Key'  => @openstack_api_key,
      'X-Auth-User' => @openstack_username
    },
    :host     => uri.host,
    :method   => 'GET',
    :path     =>  (uri.path and not uri.path.empty?) ? uri.path : 'v1.0'
  })

  return {
    :token => response.headers['X-Auth-Token'],
    :server_management_url => response.headers['X-Server-Management-Url'] 
  } 

end
authenticate_v2(options, connection_options = {}) click to toggle source

keystone style auth

# File lib/fog/openstack.rb, line 72
def self.authenticate_v2(options, connection_options = {})
   openstack_auth_url = options[:openstack_auth_url]
   uri = URI.parse(openstack_auth_url)
   connection = Fog::Connection.new(openstack_auth_url, false, connection_options)
   @openstack_api_key  = options[:openstack_api_key]
   @openstack_username = options[:openstack_username]
   @openstack_tenant = options[:openstack_tenant]
   @compute_service_name = options[:openstack_compute_service_name]

   req_body= {
     'passwordCredentials'  => {
       'username' => @openstack_username,
       'password' => @openstack_api_key
     }
   }
   req_body['tenantId'] = @openstack_tenant if @openstack_tenant

   response = connection.request({
     :expects  => [200, 204],
     :headers => {'Content-Type' => 'application/json'},
     :body  => MultiJson.encode(req_body),
     :host     => uri.host,
     :method   => 'POST',
     :path     =>  (uri.path and not uri.path.empty?) ? uri.path : 'v2.0'
   })
   body=MultiJson.decode(response.body)
  
   if body['auth']['serviceCatalog'] and body['auth']['serviceCatalog'][@compute_service_name] and body['auth']['serviceCatalog'][@compute_service_name][0] then
     mgmt_url = body['auth']['serviceCatalog'][@compute_service_name][0]['publicURL']
     token = body['auth']['token']['id']
     return {
       :token => token,
       :server_management_url => mgmt_url
     } 
   else
     raise "Unable to parse service catalog."
   end
 
 end

[Validate]

Generated with the Darkfish Rdoc Generator 2.