fog-openstack 1.0.10 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/linting.yml +20 -0
  3. data/.github/workflows/main.yml +37 -0
  4. data/.rubocop.yml +65 -66
  5. data/fog-openstack.gemspec +1 -2
  6. data/lib/fog/openstack/auth/name.rb +1 -1
  7. data/lib/fog/openstack/core.rb +1 -1
  8. data/lib/fog/openstack/orchestration/models/stacks.rb +4 -3
  9. data/lib/fog/openstack/orchestration/requests/show_stack.rb +26 -0
  10. data/lib/fog/openstack/orchestration.rb +1 -0
  11. data/lib/fog/openstack/shared_file_system.rb +2 -2
  12. data/lib/fog/openstack/version.rb +1 -1
  13. data/lib/fog/openstack/volume/v3/mock.rb +68 -0
  14. data/lib/fog/openstack/volume/v3/models/availability_zone.rb +15 -0
  15. data/lib/fog/openstack/volume/v3/models/availability_zones.rb +16 -0
  16. data/lib/fog/openstack/volume/v3/models/backup.rb +15 -0
  17. data/lib/fog/openstack/volume/v3/models/backups.rb +16 -0
  18. data/lib/fog/openstack/volume/v3/models/snapshot.rb +44 -0
  19. data/lib/fog/openstack/volume/v3/models/snapshots.rb +16 -0
  20. data/lib/fog/openstack/volume/v3/models/transfer.rb +18 -0
  21. data/lib/fog/openstack/volume/v3/models/transfers.rb +16 -0
  22. data/lib/fog/openstack/volume/v3/models/volume.rb +37 -0
  23. data/lib/fog/openstack/volume/v3/models/volume_type.rb +16 -0
  24. data/lib/fog/openstack/volume/v3/models/volume_types.rb +16 -0
  25. data/lib/fog/openstack/volume/v3/models/volumes.rb +16 -0
  26. data/lib/fog/openstack/volume/v3/real.rb +23 -0
  27. data/lib/fog/openstack/volume/v3/requests/accept_transfer.rb +2 -0
  28. data/lib/fog/openstack/volume/v3/requests/action.rb +2 -0
  29. data/lib/fog/openstack/volume/v3/requests/create_backup.rb +2 -0
  30. data/lib/fog/openstack/volume/v3/requests/create_snapshot.rb +45 -0
  31. data/lib/fog/openstack/volume/v3/requests/create_transfer.rb +2 -0
  32. data/lib/fog/openstack/volume/v3/requests/create_volume.rb +49 -0
  33. data/lib/fog/openstack/volume/v3/requests/create_volume_type.rb +2 -0
  34. data/lib/fog/openstack/volume/v3/requests/delete_backup.rb +2 -0
  35. data/lib/fog/openstack/volume/v3/requests/delete_metadata.rb +2 -0
  36. data/lib/fog/openstack/volume/v3/requests/delete_snapshot.rb +2 -0
  37. data/lib/fog/openstack/volume/v3/requests/delete_snapshot_metadata.rb +2 -0
  38. data/lib/fog/openstack/volume/v3/requests/delete_transfer.rb +2 -0
  39. data/lib/fog/openstack/volume/v3/requests/delete_volume.rb +2 -0
  40. data/lib/fog/openstack/volume/v3/requests/delete_volume_type.rb +2 -0
  41. data/lib/fog/openstack/volume/v3/requests/extend_volume.rb +2 -0
  42. data/lib/fog/openstack/volume/v3/requests/get_backup_details.rb +2 -0
  43. data/lib/fog/openstack/volume/v3/requests/get_quota.rb +2 -0
  44. data/lib/fog/openstack/volume/v3/requests/get_quota_defaults.rb +2 -0
  45. data/lib/fog/openstack/volume/v3/requests/get_quota_usage.rb +2 -0
  46. data/lib/fog/openstack/volume/v3/requests/get_snapshot_details.rb +32 -0
  47. data/lib/fog/openstack/volume/v3/requests/get_transfer_details.rb +2 -0
  48. data/lib/fog/openstack/volume/v3/requests/get_volume_details.rb +35 -0
  49. data/lib/fog/openstack/volume/v3/requests/get_volume_type_details.rb +2 -0
  50. data/lib/fog/openstack/volume/v3/requests/list_backups.rb +2 -0
  51. data/lib/fog/openstack/volume/v3/requests/list_backups_detailed.rb +2 -0
  52. data/lib/fog/openstack/volume/v3/requests/list_snapshots.rb +2 -0
  53. data/lib/fog/openstack/volume/v3/requests/list_snapshots_detailed.rb +2 -0
  54. data/lib/fog/openstack/volume/v3/requests/list_transfers.rb +2 -0
  55. data/lib/fog/openstack/volume/v3/requests/list_transfers_detailed.rb +2 -0
  56. data/lib/fog/openstack/volume/v3/requests/list_volume_types.rb +2 -0
  57. data/lib/fog/openstack/volume/v3/requests/list_volumes.rb +46 -0
  58. data/lib/fog/openstack/volume/v3/requests/list_volumes_detailed.rb +46 -0
  59. data/lib/fog/openstack/volume/v3/requests/list_zones.rb +2 -0
  60. data/lib/fog/openstack/volume/v3/requests/real.rb +11 -0
  61. data/lib/fog/openstack/volume/v3/requests/real_mock.rb +14 -0
  62. data/lib/fog/openstack/volume/v3/requests/replace_metadata.rb +2 -0
  63. data/lib/fog/openstack/volume/v3/requests/restore_backup.rb +2 -0
  64. data/lib/fog/openstack/volume/v3/requests/set_tenant.rb +2 -0
  65. data/lib/fog/openstack/volume/v3/requests/snapshot_action.rb +2 -0
  66. data/lib/fog/openstack/volume/v3/requests/update_metadata.rb +2 -0
  67. data/lib/fog/openstack/volume/v3/requests/update_quota.rb +2 -0
  68. data/lib/fog/openstack/volume/v3/requests/update_snapshot.rb +2 -0
  69. data/lib/fog/openstack/volume/v3/requests/update_snapshot_metadata.rb +2 -0
  70. data/lib/fog/openstack/volume/v3/requests/update_volume.rb +20 -0
  71. data/lib/fog/openstack/volume/v3/requests/update_volume_type.rb +2 -0
  72. data/lib/fog/openstack/volume/v3.rb +94 -0
  73. data/lib/fog/openstack/volume.rb +11 -10
  74. data/supported.md +1 -2
  75. metadata +72 -23
@@ -0,0 +1,16 @@
1
+ require 'fog/openstack/models/collection'
2
+ require 'fog/openstack/volume/v3/models/volume'
3
+ require 'fog/openstack/volume/models/volumes'
4
+
5
+ module Fog
6
+ module OpenStack
7
+ class Volume
8
+ class V3
9
+ class Volumes < Fog::OpenStack::Collection
10
+ model Fog::OpenStack::Volume::V3::Volume
11
+ include Fog::OpenStack::Volume::Volumes
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,23 @@
1
+ module Fog
2
+ module OpenStack
3
+ class Volume
4
+ class V3 < Fog::OpenStack::Volume
5
+ class Real
6
+ include Fog::OpenStack::Core
7
+
8
+ def self.not_found_class
9
+ Fog::OpenStack::Volume::NotFound
10
+ end
11
+
12
+ def default_endtpoint_type
13
+ 'admin'
14
+ end
15
+
16
+ def default_service_type
17
+ %w[volumev3]
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/accept_transfer'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/action'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/create_backup'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,45 @@
1
+ require 'fog/openstack/volume/requests/create_snapshot'
2
+
3
+ module Fog
4
+ module OpenStack
5
+ class Volume
6
+ class V3
7
+ class Real
8
+ include Fog::OpenStack::Volume::Real
9
+
10
+ def create_snapshot(volume_id, name, description, force = false)
11
+ data = {
12
+ 'snapshot' => {
13
+ 'volume_id' => volume_id,
14
+ 'name' => name,
15
+ 'description' => description,
16
+ 'force' => force.nil? ? false : force
17
+ }
18
+ }
19
+
20
+ _create_snapshot(data)
21
+ end
22
+ end
23
+
24
+ class Mock
25
+ def create_snapshot(volume_id, name, description, _force = false)
26
+ response = Excon::Response.new
27
+ response.status = 202
28
+ response.body = {
29
+ "snapshot" => {
30
+ "status" => "creating",
31
+ "name" => name,
32
+ "created_at" => Time.now,
33
+ "description" => description,
34
+ "volume_id" => volume_id,
35
+ "id" => "5",
36
+ "size" => 1
37
+ }
38
+ }
39
+ response
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/create_transfer'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,49 @@
1
+ require 'fog/openstack/volume/requests/create_volume'
2
+
3
+ module Fog
4
+ module OpenStack
5
+ class Volume
6
+ class V3
7
+ class Real
8
+ def create_volume(name, description, size, options = {})
9
+ data = {
10
+ 'volume' => {
11
+ 'name' => name,
12
+ 'description' => description,
13
+ 'size' => size
14
+ }
15
+ }
16
+
17
+ _create_volume(data, options)
18
+ end
19
+
20
+ include Fog::OpenStack::Volume::Real
21
+ end
22
+
23
+ class Mock
24
+ def create_volume(name, description, size, options = {})
25
+ response = Excon::Response.new
26
+ response.status = 202
27
+ response.body = {
28
+ 'volume' => {
29
+ 'id' => Fog::Mock.random_numbers(2),
30
+ 'name' => name,
31
+ 'description' => description,
32
+ 'metadata' => options['metadata'] || {},
33
+ 'size' => size,
34
+ 'status' => 'creating',
35
+ 'snapshot_id' => options[:snapshot_id] || nil,
36
+ 'image_id' => options[:imageRef] || nil,
37
+ 'volume_type' => nil,
38
+ 'availability_zone' => 'nova',
39
+ 'created_at' => Time.now,
40
+ 'attachments' => []
41
+ }
42
+ }
43
+ response
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/create_volume_type'
2
+ require 'fog/openstack/volume/v3/requests/real_mock'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/delete_backup'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/delete_metadata'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/delete_snapshot'
2
+ require 'fog/openstack/volume/v3/requests/real_mock'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/delete_snapshot_metadata'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/delete_transfer'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/delete_volume'
2
+ require 'fog/openstack/volume/v3/requests/real_mock'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/delete_volume_type'
2
+ require 'fog/openstack/volume/v3/requests/real_mock'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/extend_volume'
2
+ require 'fog/openstack/volume/v3/requests/real_mock'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/get_backup_details'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/get_quota'
2
+ require 'fog/openstack/volume/v3/requests/real_mock'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/get_quota_defaults'
2
+ require 'fog/openstack/volume/v3/requests/real_mock'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/get_quota_usage'
2
+ require 'fog/openstack/volume/v3/requests/real_mock'
@@ -0,0 +1,32 @@
1
+ require 'fog/openstack/volume/requests/get_snapshot_details'
2
+
3
+ module Fog
4
+ module OpenStack
5
+ class Volume
6
+ class V3
7
+ class Real
8
+ include Fog::OpenStack::Volume::Real
9
+ end
10
+
11
+ class Mock
12
+ def get_snapshot_details(_detailed = true)
13
+ response = Excon::Response.new
14
+ response.status = 200
15
+ response.body = {
16
+ 'snapshot' => {
17
+ 'id' => '1',
18
+ 'name' => 'Snapshot1',
19
+ 'description' => 'Volume1 snapshot',
20
+ 'size' => 1,
21
+ 'volume_id' => '1',
22
+ 'status' => 'available',
23
+ 'created_at' => Time.now
24
+ }
25
+ }
26
+ response
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/get_transfer_details'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,35 @@
1
+ require 'fog/openstack/volume/requests/get_volume_details'
2
+
3
+ module Fog
4
+ module OpenStack
5
+ class Volume
6
+ class V3
7
+ class Real
8
+ include Fog::OpenStack::Volume::Real
9
+ end
10
+
11
+ class Mock
12
+ def get_volume_details(_detailed = true)
13
+ response = Excon::Response.new
14
+ response.status = 200
15
+ response.body = {
16
+ 'volume' => {
17
+ 'id' => '1',
18
+ 'name' => Fog::Mock.random_letters(rand(8) + 5),
19
+ 'description' => Fog::Mock.random_letters(rand(12) + 10),
20
+ 'size' => 3,
21
+ 'volume_type' => nil,
22
+ 'snapshot_id' => '4',
23
+ 'status' => 'online',
24
+ 'availability_zone' => 'nova',
25
+ 'created_at' => Time.now,
26
+ 'attachments' => []
27
+ }
28
+ }
29
+ response
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/get_volume_type_details'
2
+ require 'fog/openstack/volume/v3/requests/real_mock'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/list_backups'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/list_backups_detailed'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/list_snapshots'
2
+ require 'fog/openstack/volume/v3/requests/real_mock'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/list_snapshots_detailed'
2
+ require 'fog/openstack/volume/v3/requests/real_mock'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/list_transfers'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/list_transfers_detailed'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/list_volume_types'
2
+ require 'fog/openstack/volume/v3/requests/real_mock'
@@ -0,0 +1,46 @@
1
+ require 'fog/openstack/volume/requests/list_volumes'
2
+
3
+ module Fog
4
+ module OpenStack
5
+ class Volume
6
+ class V3
7
+ class Real
8
+ include Fog::OpenStack::Volume::Real
9
+ end
10
+
11
+ class Mock
12
+ def list_volumes(_options = true, _options_deprecated = {})
13
+ response = Excon::Response.new
14
+ response.status = 200
15
+ data[:volumes] ||= [
16
+ {"status" => "available",
17
+ "description" => "test 1 desc",
18
+ "availability_zone" => "nova",
19
+ "name" => "Volume1",
20
+ "attachments" => [{}],
21
+ "volume_type" => nil,
22
+ "snapshot_id" => nil,
23
+ "size" => 1,
24
+ "id" => 1,
25
+ "created_at" => Time.now,
26
+ "metadata" => {}},
27
+ {"status" => "available",
28
+ "description" => "test 2 desc",
29
+ "availability_zone" => "nova",
30
+ "name" => "Volume2",
31
+ "attachments" => [{}],
32
+ "volume_type" => nil,
33
+ "snapshot_id" => nil,
34
+ "size" => 1,
35
+ "id" => 2,
36
+ "created_at" => Time.now,
37
+ "metadata" => {}}
38
+ ]
39
+ response.body = {'volumes' => data[:volumes]}
40
+ response
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,46 @@
1
+ require 'fog/openstack/volume/requests/list_volumes_detailed'
2
+
3
+ module Fog
4
+ module OpenStack
5
+ class Volume
6
+ class V3
7
+ class Real
8
+ include Fog::OpenStack::Volume::Real
9
+ end
10
+
11
+ class Mock
12
+ def list_volumes_detailed(_options = {})
13
+ response = Excon::Response.new
14
+ response.status = 200
15
+ data[:volumes] ||= [
16
+ {"status" => "available",
17
+ "description" => "test 1 desc",
18
+ "availability_zone" => "nova",
19
+ "name" => "Volume1",
20
+ "attachments" => [{}],
21
+ "volume_type" => nil,
22
+ "snapshot_id" => nil,
23
+ "size" => 1,
24
+ "id" => 1,
25
+ "created_at" => Time.now,
26
+ "metadata" => {}},
27
+ {"status" => "available",
28
+ "description" => "test 2 desc",
29
+ "availability_zone" => "nova",
30
+ "name" => "Volume2",
31
+ "attachments" => [{}],
32
+ "volume_type" => nil,
33
+ "snapshot_id" => nil,
34
+ "size" => 1,
35
+ "id" => 2,
36
+ "created_at" => Time.now,
37
+ "metadata" => {}}
38
+ ]
39
+ response.body = {'volumes' => data[:volumes]}
40
+ response
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/list_zones'
2
+ require 'fog/openstack/volume/v3/requests/real_mock'
@@ -0,0 +1,11 @@
1
+ module Fog
2
+ module OpenStack
3
+ class Volume
4
+ class V3
5
+ class Real
6
+ include Fog::OpenStack::Volume::Real
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,14 @@
1
+ module Fog
2
+ module OpenStack
3
+ class Volume
4
+ class V3
5
+ class Real
6
+ include Fog::OpenStack::Volume::Real
7
+ end
8
+ class Mock
9
+ include Fog::OpenStack::Volume::Mock
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/replace_metadata'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/restore_backup'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/set_tenant'
2
+ require 'fog/openstack/volume/v3/requests/real_mock'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/snapshot_action'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/update_metadata'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/update_quota'
2
+ require 'fog/openstack/volume/v3/requests/real_mock'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/update_snapshot'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/update_snapshot_metadata'
2
+ require 'fog/openstack/volume/v3/requests/real'
@@ -0,0 +1,20 @@
1
+ require 'fog/openstack/volume/requests/update_volume'
2
+ require 'fog/openstack/volume/v3/requests/real'
3
+
4
+ module Fog
5
+ module OpenStack
6
+ class Volume
7
+ module Real
8
+ def update_volume(volume_id, data = {})
9
+ data = data.select { |key| key == :name || key == :description || key == :metadata }
10
+ request(
11
+ :body => Fog::JSON.encode('volume' => data),
12
+ :expects => 200,
13
+ :method => 'PUT',
14
+ :path => "volumes/#{volume_id}"
15
+ )
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,2 @@
1
+ require 'fog/openstack/volume/requests/update_volume_type'
2
+ require 'fog/openstack/volume/v3/requests/real_mock'
@@ -0,0 +1,94 @@
1
+ require 'fog/openstack/core'
2
+ require 'fog/openstack/volume'
3
+
4
+ module Fog
5
+ module OpenStack
6
+ class Volume
7
+ class V3 < Fog::OpenStack::Volume
8
+ SUPPORTED_VERSIONS = /v3(\.(0-9))*/
9
+
10
+ requires :openstack_auth_url
11
+
12
+ recognizes *@@recognizes
13
+
14
+ model_path 'fog/openstack/volume/v3/models'
15
+
16
+ model :volume
17
+ collection :volumes
18
+
19
+ model :availability_zone
20
+ collection :availability_zones
21
+
22
+ model :volume_type
23
+ collection :volume_types
24
+
25
+ model :snapshot
26
+ collection :snapshots
27
+
28
+ model :transfer
29
+ collection :transfers
30
+
31
+ model :backup
32
+ collection :backups
33
+
34
+ request_path 'fog/openstack/volume/v3/requests'
35
+
36
+ # Volume
37
+ request :list_volumes
38
+ request :list_volumes_detailed
39
+ request :create_volume
40
+ request :update_volume
41
+ request :get_volume_details
42
+ request :extend_volume
43
+ request :delete_volume
44
+
45
+ request :list_zones
46
+
47
+ request :list_volume_types
48
+ request :create_volume_type
49
+ request :update_volume_type
50
+ request :delete_volume_type
51
+ request :get_volume_type_details
52
+
53
+ request :create_snapshot
54
+ request :update_snapshot
55
+ request :list_snapshots
56
+ request :list_snapshots_detailed
57
+ request :get_snapshot_details
58
+ request :delete_snapshot
59
+ request :update_snapshot_metadata
60
+ request :delete_snapshot_metadata
61
+
62
+ request :list_transfers
63
+ request :list_transfers_detailed
64
+ request :create_transfer
65
+ request :get_transfer_details
66
+ request :accept_transfer
67
+ request :delete_transfer
68
+
69
+ request :list_backups
70
+ request :list_backups_detailed
71
+ request :create_backup
72
+ request :get_backup_details
73
+ request :restore_backup
74
+ request :delete_backup
75
+
76
+ request :update_quota
77
+ request :get_quota
78
+ request :get_quota_defaults
79
+ request :get_quota_usage
80
+
81
+ request :update_metadata
82
+ request :replace_metadata
83
+ request :delete_metadata
84
+
85
+ request :set_tenant
86
+ request :action
87
+ request :snapshot_action
88
+
89
+ autoload :Mock, 'fog/openstack/volume/v3/mock'
90
+ autoload :Real, 'fog/openstack/volume/v3/real'
91
+ end
92
+ end
93
+ end
94
+ end
@@ -1,10 +1,9 @@
1
-
2
-
3
1
  module Fog
4
2
  module OpenStack
5
3
  class Volume < Fog::Service
6
4
  autoload :V1, 'fog/openstack/volume/v1'
7
5
  autoload :V2, 'fog/openstack/volume/v2'
6
+ autoload :V3, 'fog/openstack/volume/v3'
8
7
 
9
8
  @@recognizes = [:openstack_auth_token, :openstack_management_url,
10
9
  :persistent, :openstack_service_type, :openstack_service_name,
@@ -17,16 +16,18 @@ module Fog
17
16
  :openstack_project_domain_id, :openstack_user_domain_id, :openstack_domain_id,
18
17
  :openstack_identity_api_version]
19
18
 
20
- # Fog::OpenStack::Image.new() will return a Fog::OpenStack::Volume::V2 or a Fog::OpenStack::Volume::V1,
21
- # choosing the V2 by default, as V1 is deprecated since OpenStack Juno
19
+ # Fog::OpenStack::Image.new() will return a Fog::OpenStack::Volume::V3 or a Fog::OpenStack::Volume::V2 or a
20
+ # Fog::OpenStack::Volume::V1, choosing the V3 by default, as V2 is deprecated since OpenStackWallaby and V1 is
21
+ # deprecated since OpenStack Juno
22
22
  def self.new(args = {})
23
23
  @openstack_auth_uri = URI.parse(args[:openstack_auth_url]) if args[:openstack_auth_url]
24
- service = if inspect == 'Fog::OpenStack::Volume'
25
- Fog::OpenStack::Volume::V2.new(args) || Fog::OpenStack::Volume::V1.new(args)
26
- else
27
- super
28
- end
29
- service
24
+ if inspect == 'Fog::OpenStack::Volume'
25
+ Fog::OpenStack::Volume::V3.new(args) \
26
+ || Fog::OpenStack::Volume::V2.new(args) \
27
+ || Fog::OpenStack::Volume::V1.new(args)
28
+ else
29
+ super
30
+ end
30
31
  end
31
32
  end
32
33
  end