Class: Kitchen::Driver::Openstack::Volume
- Inherits:
-
Object
- Object
- Kitchen::Driver::Openstack::Volume
- Defined in:
- lib/kitchen/driver/openstack/volume.rb
Overview
A class to allow the Kitchen Openstack driver to use Openstack volumes
Instance Method Summary collapse
- #create_volume(config, os) ⇒ Object
- #get_bdm(config, os) ⇒ Object
- #volume(openstack_server) ⇒ Object
- #volume_ready?(vol_id, os) ⇒ Boolean
Instance Method Details
#create_volume(config, os) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/kitchen/driver/openstack/volume.rb', line 41 def create_volume(config, os) opt = {} bdm = config[:block_device_mapping] = [:snapshot_id, :imageRef, :volume_type, :source_volid, :availability_zone] .select { |o| bdm[o] }.each do |key| opt[key] = bdm[key] end resp = volume(os).create_volume("#{config[:server_name]}-volume", "#{config[:server_name]} volume", bdm[:volume_size], opt) vol_id = resp[:body]['volume']['id'] sleep(1) until volume_ready?(vol_id, os) vol_id end |
#get_bdm(config, os) ⇒ Object
58 59 60 61 62 63 64 |
# File 'lib/kitchen/driver/openstack/volume.rb', line 58 def get_bdm(config, os) bdm = config[:block_device_mapping] bdm[:volume_id] = create_volume(config, os) if bdm[:make_volume] bdm.delete_if { |k, _| k == :make_volume } bdm.delete_if { |k, _| k == :snapshot_id } bdm end |
#volume(openstack_server) ⇒ Object
30 31 32 |
# File 'lib/kitchen/driver/openstack/volume.rb', line 30 def volume(openstack_server) Fog::Volume.new(openstack_server) end |
#volume_ready?(vol_id, os) ⇒ Boolean
34 35 36 37 38 39 |
# File 'lib/kitchen/driver/openstack/volume.rb', line 34 def volume_ready?(vol_id, os) resp = volume(os).get_volume_details(vol_id) status = resp[:body]['volume']['status'] fail "Failed to make volume <#{vol_id}>" if status == 'error' status == 'available' end |