Class: VagrantPlugins::Openstack::CinderClient

Inherits:
Object
  • Object
show all
Includes:
Singleton, Domain, HttpUtils
Defined in:
lib/vagrant-openstack-provider/client/cinder.rb

Instance Method Summary collapse

Methods included from HttpUtils

#delete, #get, #post

Methods included from HttpUtils::RequestLogger

#log_request, #log_response

Constructor Details

#initializeCinderClient

Returns a new instance of CinderClient.



15
16
17
18
# File 'lib/vagrant-openstack-provider/client/cinder.rb', line 15

def initialize
  @logger = Log4r::Logger.new('vagrant_openstack::cinder')
  @session = VagrantPlugins::Openstack.session
end

Instance Method Details

#get_all_volumes(env) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/vagrant-openstack-provider/client/cinder.rb', line 20

def get_all_volumes(env)
  volumes_json = get(env, "#{@session.endpoints[:volume]}/volumes/detail")
  JSON.parse(volumes_json)['volumes'].map do |volume|
    name = volume['display_name']
    name = volume['name'] if name.nil? # To be compatible with cinder api v1 and v2
    case volume['attachments'].size
    when 0
      @logger.debug "No attachment found for volume #{volume['id']}"
    else
      attachment = volume['attachments'][0]
      server_id = attachment['server_id']
      device = attachment['device']
      @logger.warn "Found #{attachment.size} attachments for volume #{volume['id']} : " if attachment.size > 1
      @logger.debug "Attachment found for volume #{volume['id']} : #{attachment.to_json}"
    end
    Volume.new(volume['id'], name, volume['size'], volume['status'], volume['bootable'], server_id, device)
  end
end