1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00

Adding OpenStack volume availability_zones

Adding OpenStack volume availability_zones
This commit is contained in:
Ladislav Smola 2015-07-29 12:49:43 +02:00
parent 6e8760e829
commit 7d8e1ddb73
5 changed files with 80 additions and 0 deletions

View file

@ -0,0 +1,13 @@
require 'fog/openstack/models/model'
module Fog
module Volume
class OpenStack
class AvailabilityZone < Fog::OpenStack::Model
identity :zoneName
attribute :zoneState
end
end
end
end

View file

@ -0,0 +1,17 @@
require 'fog/openstack/models/collection'
require 'fog/openstack/models/volume/availability_zone'
module Fog
module Volume
class OpenStack
class AvailabilityZones < Fog::OpenStack::Collection
model Fog::Volume::OpenStack::AvailabilityZone
def all(options = {})
data = service.list_zones(options)
load_response(data, 'availabilityZoneInfo')
end
end
end
end
end

View file

@ -0,0 +1,32 @@
module Fog
module Volume
class OpenStack
class Real
def list_zones(options = {})
request(
:expects => 200,
:method => 'GET',
:path => 'os-availability-zone.json',
:query => options
)
end
end
class Mock
def list_zones(options = {})
Excon::Response.new(
:body => {
"availabilityZoneInfo" => [
{
"zoneState" => { "available" => true },
"zoneName" => "nova"
}
]
},
:status => 200
)
end
end
end
end
end

View file

@ -15,6 +15,9 @@ module Fog
model :volume
collection :volumes
model :availability_zone
collection :availability_zones
model :volume_type
collection :volume_types
@ -31,6 +34,8 @@ module Fog
request :extend_volume
request :delete_volume
request :list_zones
request :list_volume_types
request :get_volume_type_details

View file

@ -0,0 +1,13 @@
Shindo.tests('Fog::Volume[:openstack] | availability zone requests', ['openstack']) do
@flavor_format = {
'zoneName' => String,
'zoneState' => Hash,
}
tests('success') do
tests('#list_zones').data_matches_schema({'availabilityZoneInfo' => [@flavor_format]}) do
Fog::Volume[:openstack].list_zones.body
end
end
end