-
-
Notifications
You must be signed in to change notification settings - Fork 130
/
v2.rb
168 lines (135 loc) · 4.52 KB
/
v2.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
require 'fog/openstack/core'
require 'fog/openstack/volume/volume'
module Fog
module OpenStack
class Volume
class V2 < Fog::OpenStack::Volume
SUPPORTED_VERSIONS = /v2(\.(0-9))*/
requires :openstack_auth_url
recognizes *@@recognizes
model_path 'fog/openstack/volume/v2/models'
model :volume
collection :volumes
model :availability_zone
collection :availability_zones
model :volume_type
collection :volume_types
model :snapshot
collection :snapshots
model :transfer
collection :transfers
model :backup
collection :backups
request_path 'fog/openstack/volume/v2/requests'
# Volume
request :list_volumes
request :list_volumes_detailed
request :create_volume
request :update_volume
request :get_volume_details
request :extend_volume
request :delete_volume
request :list_zones
request :list_volume_types
request :create_volume_type
request :update_volume_type
request :delete_volume_type
request :get_volume_type_details
request :create_snapshot
request :update_snapshot
request :list_snapshots
request :list_snapshots_detailed
request :get_snapshot_details
request :delete_snapshot
request :update_snapshot_metadata
request :delete_snapshot_metadata
request :list_transfers
request :list_transfers_detailed
request :create_transfer
request :get_transfer_details
request :accept_transfer
request :delete_transfer
request :list_backups
request :list_backups_detailed
request :create_backup
request :get_backup_details
request :restore_backup
request :delete_backup
request :update_quota
request :get_quota
request :get_quota_defaults
request :get_quota_usage
request :update_metadata
request :replace_metadata
request :delete_metadata
request :set_tenant
request :action
request :snapshot_action
class Mock
def self.data
@data ||= Hash.new do |hash, key|
hash[key] = {
:users => {},
:tenants => {},
:quota => {
'gigabytes' => 1000,
'volumes' => 10,
'snapshots' => 10
}
}
end
end
def self.reset
@data = nil
end
def initialize(options = {})
@openstack_username = options[:openstack_username]
@openstack_tenant = options[:openstack_tenant]
@openstack_auth_uri = URI.parse(options[:openstack_auth_url])
@auth_token = Fog::Mock.random_base64(64)
@auth_token_expiration = (Time.now.utc + 86400).iso8601
management_url = URI.parse(options[:openstack_auth_url])
management_url.port = 8776
management_url.path = '/v1'
@openstack_management_url = management_url.to_s
@data ||= {:users => {}}
unless @data[:users].find { |u| u['name'] == options[:openstack_username] }
id = Fog::Mock.random_numbers(6).to_s
@data[:users][id] = {
'id' => id,
'name' => options[:openstack_username],
'email' => "#{options[:openstack_username]}@mock.com",
'tenantId' => Fog::Mock.random_numbers(6).to_s,
'enabled' => true
}
end
end
def data
self.class.data[@openstack_username]
end
def reset_data
self.class.data.delete(@openstack_username)
end
def credentials
{:provider => 'openstack',
:openstack_auth_url => @openstack_auth_uri.to_s,
:openstack_auth_token => @auth_token,
:openstack_management_url => @openstack_management_url}
end
end
class Real
include Fog::OpenStack::Core
def self.not_found_class
Fog::OpenStack::Volume::NotFound
end
def default_endtpoint_type
'admin'
end
def default_service_type
%w[volumev2]
end
end
end
end
end
end