Class: Bosh::OpenStackCloud::AvailabilityZoneProvider

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/cloud/openstack/availability_zone_provider.rb

Constant Summary

Constants included from Helpers

Helpers::DEFAULT_RETRY_TIMEOUT, Helpers::DEFAULT_STATE_TIMEOUT, Helpers::MAX_RETRIES

Instance Method Summary collapse

Methods included from Helpers

#cloud_error, #parse_openstack_response, #wait_resource, #with_openstack

Constructor Details

#initialize(openstack, ignore_server_availability_zone) ⇒ AvailabilityZoneProvider

Returns a new instance of AvailabilityZoneProvider.



5
6
7
8
# File 'lib/cloud/openstack/availability_zone_provider.rb', line 5

def initialize(openstack, ignore_server_availability_zone)
  @openstack = openstack
  @ignore_server_availability_zone = ignore_server_availability_zone
end

Instance Method Details

#constrain_to_server_availability_zone?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/cloud/openstack/availability_zone_provider.rb', line 21

def constrain_to_server_availability_zone?
  !@ignore_server_availability_zone
end

#select(volume_ids, resource_pool_az) ⇒ Object



10
11
12
13
14
15
16
17
18
19
# File 'lib/cloud/openstack/availability_zone_provider.rb', line 10

def select(volume_ids, resource_pool_az)
  if volume_ids && !volume_ids.empty? && constrain_to_server_availability_zone?
    fog_volume_map = @openstack.volumes
    volumes = volume_ids.map { |vid| with_openstack { fog_volume_map.get(vid) } }
    ensure_same_availability_zone(volumes, resource_pool_az)
    volumes.first.availability_zone
  else
    resource_pool_az
  end
end