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:
parent
6e8760e829
commit
7d8e1ddb73
5 changed files with 80 additions and 0 deletions
13
lib/fog/openstack/models/volume/availability_zone.rb
Normal file
13
lib/fog/openstack/models/volume/availability_zone.rb
Normal 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
|
17
lib/fog/openstack/models/volume/availability_zones.rb
Normal file
17
lib/fog/openstack/models/volume/availability_zones.rb
Normal 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
|
32
lib/fog/openstack/requests/volume/list_zones.rb
Normal file
32
lib/fog/openstack/requests/volume/list_zones.rb
Normal 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
|
|
@ -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
|
||||
|
||||
|
|
13
tests/openstack/requests/volume/availability_zone_tests.rb
Normal file
13
tests/openstack/requests/volume/availability_zone_tests.rb
Normal 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
|
Loading…
Add table
Reference in a new issue