fog-openstack 0.1.5 → 0.1.6
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -0
- data/.travis.yml +6 -2
- data/README.md +4 -0
- data/Rakefile +10 -2
- data/fog-openstack.gemspec +2 -3
- data/gemfiles/Gemfile-1.9 +1 -1
- data/lib/fog/openstack.rb +14 -6
- data/lib/fog/openstack/baremetal.rb +1 -1
- data/lib/fog/openstack/common.rb +0 -2
- data/lib/fog/openstack/compute.rb +78 -75
- data/lib/fog/openstack/core.rb +2 -1
- data/lib/fog/openstack/docs/compute.md +1 -1
- data/lib/fog/openstack/docs/network.md +283 -0
- data/lib/fog/openstack/docs/nfv.md +144 -0
- data/lib/fog/openstack/examples/compute/block_device_mapping_v2.rb +4 -4
- data/lib/fog/openstack/examples/network/network_add_port.rb +21 -0
- data/lib/fog/openstack/examples/network/network_rbac.rb +69 -0
- data/lib/fog/openstack/identity.rb +14 -22
- data/lib/fog/openstack/identity_v2.rb +1 -1
- data/lib/fog/openstack/image_v1.rb +13 -28
- data/lib/fog/openstack/image_v2.rb +15 -17
- data/lib/fog/openstack/introspection.rb +1 -1
- data/lib/fog/openstack/metering.rb +1 -1
- data/lib/fog/openstack/models/collection.rb +4 -1
- data/lib/fog/openstack/models/compute/availability_zone.rb +5 -0
- data/lib/fog/openstack/models/compute/flavor.rb +21 -9
- data/lib/fog/openstack/models/compute/server.rb +64 -77
- data/lib/fog/openstack/models/compute/snapshot.rb +6 -6
- data/lib/fog/openstack/models/compute/volume_attachment.rb +15 -0
- data/lib/fog/openstack/models/compute/volume_attachments.rb +20 -0
- data/lib/fog/openstack/models/identity_v3/projects.rb +1 -1
- data/lib/fog/openstack/models/identity_v3/users.rb +2 -2
- data/lib/fog/openstack/models/image_v2/image.rb +41 -22
- data/lib/fog/openstack/models/network/floating_ip.rb +1 -0
- data/lib/fog/openstack/models/network/rbac_policies.rb +33 -0
- data/lib/fog/openstack/models/network/rbac_policy.rb +35 -0
- data/lib/fog/openstack/models/nfv/vnf.rb +58 -0
- data/lib/fog/openstack/models/nfv/vnfd.rb +53 -0
- data/lib/fog/openstack/models/nfv/vnfds.rb +28 -0
- data/lib/fog/openstack/models/nfv/vnfs.rb +28 -0
- data/lib/fog/openstack/models/volume/snapshot.rb +38 -0
- data/lib/fog/openstack/models/volume/snapshots.rb +26 -0
- data/lib/fog/openstack/models/volume/volume.rb +32 -2
- data/lib/fog/openstack/models/volume/volume_type.rb +3 -4
- data/lib/fog/openstack/models/volume_v1/snapshot.rb +43 -0
- data/lib/fog/openstack/models/volume_v1/snapshots.rb +16 -0
- data/lib/fog/openstack/models/volume_v1/volume.rb +12 -2
- data/lib/fog/openstack/models/volume_v2/snapshot.rb +43 -0
- data/lib/fog/openstack/models/volume_v2/snapshots.rb +16 -0
- data/lib/fog/openstack/models/volume_v2/volume.rb +12 -3
- data/lib/fog/openstack/network.rb +53 -46
- data/lib/fog/openstack/nfv.rb +158 -0
- data/lib/fog/openstack/orchestration.rb +1 -1
- data/lib/fog/openstack/planning.rb +1 -1
- data/lib/fog/openstack/requests/compute/create_server.rb +1 -1
- data/lib/fog/openstack/requests/compute/{create_volume_snapshot.rb → create_snapshot.rb} +16 -16
- data/lib/fog/openstack/requests/compute/delete_flavor_metadata.rb +30 -0
- data/lib/fog/openstack/requests/compute/evacuate_server.rb +8 -7
- data/lib/fog/openstack/requests/compute/get_key_pair.rb +49 -0
- data/lib/fog/openstack/requests/compute/list_availability_zones.rb +23 -0
- data/lib/fog/openstack/requests/compute/list_volume_attachments.rb +31 -0
- data/lib/fog/openstack/requests/compute/update_flavor_metadata.rb +33 -0
- data/lib/fog/openstack/requests/network/create_rbac_policy.rb +42 -0
- data/lib/fog/openstack/requests/network/delete_rbac_policy.rb +28 -0
- data/lib/fog/openstack/requests/network/get_rbac_policy.rb +28 -0
- data/lib/fog/openstack/requests/network/list_rbac_policies.rb +25 -0
- data/lib/fog/openstack/requests/network/update_port.rb +8 -7
- data/lib/fog/openstack/requests/network/update_rbac_policy.rb +41 -0
- data/lib/fog/openstack/requests/nfv/create_vnf.rb +37 -0
- data/lib/fog/openstack/requests/nfv/create_vnfd.rb +35 -0
- data/lib/fog/openstack/requests/nfv/delete_vnf.rb +23 -0
- data/lib/fog/openstack/requests/nfv/delete_vnfd.rb +23 -0
- data/lib/fog/openstack/requests/nfv/get_vnf.rb +24 -0
- data/lib/fog/openstack/requests/nfv/get_vnfd.rb +24 -0
- data/lib/fog/openstack/requests/nfv/list_vnfds.rb +25 -0
- data/lib/fog/openstack/requests/nfv/list_vnfs.rb +25 -0
- data/lib/fog/openstack/requests/nfv/update_vnf.rb +35 -0
- data/lib/fog/openstack/requests/volume/action.rb +16 -0
- data/lib/fog/openstack/requests/volume/create_snapshot.rb +18 -0
- data/lib/fog/openstack/requests/volume/delete_metadata.rb +15 -0
- data/lib/fog/openstack/requests/volume/delete_snapshot.rb +5 -5
- data/lib/fog/openstack/requests/volume/delete_snapshot_metadata.rb +15 -0
- data/lib/fog/openstack/requests/volume/replace_metadata.rb +20 -0
- data/lib/fog/openstack/requests/volume/update_metadata.rb +20 -0
- data/lib/fog/openstack/requests/volume/update_snapshot.rb +37 -0
- data/lib/fog/openstack/requests/volume/update_snapshot_metadata.rb +20 -0
- data/lib/fog/openstack/requests/volume/update_volume.rb +25 -0
- data/lib/fog/openstack/requests/volume_v1/action.rb +2 -0
- data/lib/fog/openstack/requests/volume_v1/create_snapshot.rb +45 -0
- data/lib/fog/openstack/requests/volume_v1/delete_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v1/delete_snapshot_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v1/replace_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v1/update_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v1/update_snapshot.rb +2 -0
- data/lib/fog/openstack/requests/volume_v1/update_snapshot_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v1/update_volume.rb +2 -0
- data/lib/fog/openstack/requests/volume_v2/action.rb +2 -0
- data/lib/fog/openstack/requests/volume_v2/create_snapshot.rb +45 -0
- data/lib/fog/openstack/requests/volume_v2/delete_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v2/delete_snapshot_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v2/replace_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v2/update_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v2/update_snapshot.rb +2 -0
- data/lib/fog/openstack/requests/volume_v2/update_snapshot_metadata.rb +2 -0
- data/lib/fog/openstack/requests/volume_v2/update_volume.rb +2 -0
- data/lib/fog/openstack/storage.rb +1 -1
- data/lib/fog/openstack/version.rb +1 -1
- data/lib/fog/openstack/volume.rb +1 -1
- data/lib/fog/openstack/volume_v1.rb +29 -21
- data/lib/fog/openstack/volume_v2.rb +29 -21
- data/supported.md +54 -0
- data/tests/openstack/models/identity/ec2_credential_tests.rb +1 -1
- data/tests/openstack/models/identity/ec2_credentials_tests.rb +1 -1
- data/tests/openstack/models/identity/role_tests.rb +8 -3
- data/tests/openstack/models/identity/roles_tests.rb +5 -4
- data/tests/openstack/models/identity/tenant_tests.rb +7 -4
- data/tests/openstack/models/identity/tenants_tests.rb +10 -5
- data/tests/openstack/models/identity/user_tests.rb +4 -3
- data/tests/openstack/models/identity/users_tests.rb +10 -6
- data/tests/openstack/models/nfv/vnf_tests.rb +35 -0
- data/tests/openstack/models/nfv/vnfd_tests.rb +23 -0
- data/tests/openstack/models/nfv/vnfds_tests.rb +31 -0
- data/tests/openstack/models/nfv/vnfs_tests.rb +38 -0
- data/tests/openstack/requests/identity/ec2_credentials_tests.rb +6 -9
- data/tests/openstack/requests/identity/helper.rb +12 -4
- data/tests/openstack/requests/identity/role_tests.rb +13 -10
- data/tests/openstack/requests/identity/tenant_tests.rb +10 -9
- data/tests/openstack/requests/identity/user_tests.rb +11 -6
- data/tests/openstack/requests/image/image_tests.rb +1 -0
- data/tests/openstack/requests/nfv/vnf_tests.rb +70 -0
- data/tests/openstack/requests/nfv/vnfd_tests.rb +44 -0
- metadata +81 -31
- data/lib/fog/openstack/requests/volume/create_volume_snapshot.rb +0 -26
- data/lib/fog/openstack/requests/volume_v1/create_volume_snapshot.rb +0 -44
- data/lib/fog/openstack/requests/volume_v2/create_volume_snapshot.rb +0 -43
- data/tests/openstack/authenticate_tests.rb +0 -200
- data/tests/openstack/identity_version_tests.rb +0 -25
- data/tests/openstack/storage_tests.rb +0 -18
- data/tests/openstack/version_tests.rb +0 -55
- data/tests/openstack/volume_tests.rb +0 -18
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 266dcbc5dc6dbde51beb0aeb2e2b8caacb3a9a68
|
|
4
|
+
data.tar.gz: a1b4dadc45afb05a56967d2d22c93bba19206ca1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2cb29370444ea727a5ddcb831bd43247110015485ce100451ec3cfb98a819b94f89ef819cd54b4c152f34a0b9aec511428601ccc3a3b473c77ff6fa44c7c4322
|
|
7
|
+
data.tar.gz: 6905cd3f139d98cbb958b37401737f977af61a0b6deac8519aedc8c73f4ea84566f8e1dc2e486572cbe47b10be01fa4cc4db770f3caa416b9ad13a530843dfe5
|
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
data/README.md
CHANGED
|
@@ -6,6 +6,10 @@ This is the plugin Gem to talk to [OpenStack](http://openstack.org) clouds via f
|
|
|
6
6
|
|
|
7
7
|
The main maintainers for the OpenStack sections are @dhague, @Ladas, @seanhandley, @mdarby and @jjasghar. Please send CC them on pull requests.
|
|
8
8
|
|
|
9
|
+
## Supported OpenStack APIs
|
|
10
|
+
|
|
11
|
+
See the list of [supported OpenStack projects](supported.md).
|
|
12
|
+
|
|
9
13
|
## Installation
|
|
10
14
|
|
|
11
15
|
Add this line to your application's Gemfile:
|
data/Rakefile
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require 'bundler/gem_tasks'
|
|
2
2
|
require 'rubocop/rake_task'
|
|
3
|
-
require
|
|
3
|
+
require 'rake/testtask'
|
|
4
4
|
|
|
5
5
|
RuboCop::RakeTask.new
|
|
6
6
|
|
|
@@ -12,7 +12,15 @@ task :test do
|
|
|
12
12
|
sh("export FOG_MOCK=#{mock} && bundle exec shindont")
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
# The following is transition period until all shindo tests in /tests have been
|
|
16
|
+
# migrated over minitest /test
|
|
17
|
+
desc "Run fog-openstack unit tests for /test"
|
|
18
|
+
Rake::TestTask.new do |t|
|
|
19
|
+
t.name = 'minitest'
|
|
20
|
+
t.libs.push [ "lib", "test" ]
|
|
21
|
+
t.test_files = FileList['test/openstack/*.rb']
|
|
22
|
+
t.verbose = true
|
|
23
|
+
end
|
|
16
24
|
|
|
17
25
|
desc "Run fog-openstack unit tests for /spec"
|
|
18
26
|
Rake::TestTask.new do |t|
|
data/fog-openstack.gemspec
CHANGED
|
@@ -19,9 +19,8 @@ Gem::Specification.new do |spec|
|
|
|
19
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
20
20
|
spec.require_paths = ["lib"]
|
|
21
21
|
|
|
22
|
-
spec.add_dependency 'fog-core', '>= 1.
|
|
22
|
+
spec.add_dependency 'fog-core', '>= 1.39'
|
|
23
23
|
spec.add_dependency 'fog-json', '>= 1.0'
|
|
24
|
-
spec.add_dependency 'fog-xml', '>= 0.1'
|
|
25
24
|
spec.add_dependency 'ipaddress', '>= 0.8'
|
|
26
25
|
|
|
27
26
|
spec.add_development_dependency 'bundler', '~> 1.6'
|
|
@@ -33,5 +32,5 @@ Gem::Specification.new do |spec|
|
|
|
33
32
|
spec.add_development_dependency 'shindo', '~> 0.3'
|
|
34
33
|
spec.add_development_dependency 'minitest'
|
|
35
34
|
spec.add_development_dependency 'vcr'
|
|
36
|
-
spec.add_development_dependency 'webmock'
|
|
35
|
+
spec.add_development_dependency 'webmock', '~> 1.24.6'
|
|
37
36
|
end
|
data/gemfiles/Gemfile-1.9
CHANGED
data/lib/fog/openstack.rb
CHANGED
|
@@ -41,6 +41,10 @@ module Fog
|
|
|
41
41
|
autoload :OpenStack, File.expand_path('../openstack/orchestration', __FILE__)
|
|
42
42
|
end
|
|
43
43
|
|
|
44
|
+
module NFV
|
|
45
|
+
autoload :OpenStack, File.expand_path('../openstack/nfv', __FILE__)
|
|
46
|
+
end
|
|
47
|
+
|
|
44
48
|
module Volume
|
|
45
49
|
autoload :OpenStack, File.expand_path('../openstack/volume', __FILE__)
|
|
46
50
|
end
|
|
@@ -64,6 +68,7 @@ module Fog
|
|
|
64
68
|
service(:volume, 'Volume')
|
|
65
69
|
service(:metering, 'Metering')
|
|
66
70
|
service(:orchestration, 'Orchestration')
|
|
71
|
+
service(:nfv, 'NFV')
|
|
67
72
|
service(:baremetal, 'Baremetal')
|
|
68
73
|
service(:planning, 'Planning')
|
|
69
74
|
service(:introspection, 'Introspection')
|
|
@@ -220,13 +225,16 @@ module Fog
|
|
|
220
225
|
:method => 'GET'
|
|
221
226
|
}
|
|
222
227
|
user_id = body['token']['user']['id']
|
|
223
|
-
|
|
224
|
-
|
|
228
|
+
project_uri = uri.clone
|
|
229
|
+
project_uri.path = uri.path.sub('/auth/tokens', "/users/#{user_id}/projects")
|
|
230
|
+
project_uri_param = "#{project_uri.scheme}://#{project_uri.host}:#{project_uri.port}#{project_uri.path}"
|
|
231
|
+
response = Fog::Core::Connection.new(project_uri_param, false, connection_options).request(request_body)
|
|
225
232
|
|
|
226
233
|
projects_body = Fog::JSON.decode(response.body)
|
|
227
234
|
if projects_body['projects'].empty?
|
|
228
235
|
options[:openstack_domain_id] = body['token']['user']['domain']['id']
|
|
229
236
|
else
|
|
237
|
+
options[:openstack_project_id] = projects_body['projects'].first['id']
|
|
230
238
|
options[:openstack_project_name] = projects_body['projects'].first['name']
|
|
231
239
|
options[:openstack_domain_id] = projects_body['projects'].first['domain_id']
|
|
232
240
|
end
|
|
@@ -274,9 +282,9 @@ module Fog
|
|
|
274
282
|
identity_url = identity_service['endpoints'].find { |e| e['interface']=='public' }['url'] if identity_service
|
|
275
283
|
|
|
276
284
|
if body['token']['project']
|
|
277
|
-
tenant = body['token']['project']
|
|
278
|
-
|
|
279
|
-
tenant = body['token']['user']['project']
|
|
285
|
+
tenant = body['token']['project']
|
|
286
|
+
elsif body['token']['user']['project']
|
|
287
|
+
tenant = body['token']['user']['project']
|
|
280
288
|
end
|
|
281
289
|
|
|
282
290
|
return {
|
|
@@ -497,7 +505,7 @@ module Fog
|
|
|
497
505
|
# Find a version in the path (e.g. the v1 in /xyz/v1/tenantid/abc) and get the path up until that version (e.g. /xyz))
|
|
498
506
|
path_components = uri.path.split '/'
|
|
499
507
|
version_component_index = path_components.index{|comp| comp.match(/v[0-9].?[0-9]?/) }
|
|
500
|
-
versionless_path = (path_components.take(version_component_index).join '/' if version_component_index) ||
|
|
508
|
+
versionless_path = (path_components.take(version_component_index).join '/' if version_component_index) || uri.path
|
|
501
509
|
connection = Fog::Core::Connection.new("#{uri.scheme}://#{uri.host}:#{uri.port}#{versionless_path}", false, connection_options)
|
|
502
510
|
response = connection.request({
|
|
503
511
|
:expects => [200, 204, 300],
|
|
@@ -11,7 +11,7 @@ module Fog
|
|
|
11
11
|
:openstack_tenant, :openstack_tenant_id,
|
|
12
12
|
:openstack_api_key, :openstack_username, :openstack_identity_endpoint,
|
|
13
13
|
:current_user, :current_tenant, :openstack_region,
|
|
14
|
-
:openstack_endpoint_type,
|
|
14
|
+
:openstack_endpoint_type, :openstack_cache_ttl,
|
|
15
15
|
:openstack_project_name, :openstack_project_id,
|
|
16
16
|
:openstack_project_domain, :openstack_user_domain, :openstack_domain_name,
|
|
17
17
|
:openstack_project_domain_id, :openstack_user_domain_id, :openstack_domain_id
|
data/lib/fog/openstack/common.rb
CHANGED
|
@@ -9,7 +9,7 @@ module Fog
|
|
|
9
9
|
:openstack_tenant, :openstack_tenant_id,
|
|
10
10
|
:openstack_api_key, :openstack_username, :openstack_identity_endpoint,
|
|
11
11
|
:current_user, :current_tenant, :openstack_region,
|
|
12
|
-
:openstack_endpoint_type,
|
|
12
|
+
:openstack_endpoint_type, :openstack_cache_ttl,
|
|
13
13
|
:openstack_project_name, :openstack_project_id,
|
|
14
14
|
:openstack_project_domain, :openstack_user_domain, :openstack_domain_name,
|
|
15
15
|
:openstack_project_domain_id, :openstack_user_domain_id, :openstack_domain_id,
|
|
@@ -44,6 +44,8 @@ module Fog
|
|
|
44
44
|
collection :tenants
|
|
45
45
|
model :volume
|
|
46
46
|
collection :volumes
|
|
47
|
+
model :volume_attachment
|
|
48
|
+
collection :volume_attachments
|
|
47
49
|
model :network
|
|
48
50
|
collection :networks
|
|
49
51
|
model :snapshot
|
|
@@ -133,6 +135,8 @@ module Fog
|
|
|
133
135
|
# Flavor Actions
|
|
134
136
|
request :get_flavor_metadata
|
|
135
137
|
request :create_flavor_metadata
|
|
138
|
+
request :update_flavor_metadata
|
|
139
|
+
request :delete_flavor_metadata
|
|
136
140
|
|
|
137
141
|
# Flavor Access
|
|
138
142
|
request :add_flavor_access
|
|
@@ -176,6 +180,7 @@ module Fog
|
|
|
176
180
|
|
|
177
181
|
# Key Pair
|
|
178
182
|
request :list_key_pairs
|
|
183
|
+
request :get_key_pair
|
|
179
184
|
request :create_key_pair
|
|
180
185
|
request :delete_key_pair
|
|
181
186
|
|
|
@@ -193,9 +198,10 @@ module Fog
|
|
|
193
198
|
request :attach_volume
|
|
194
199
|
request :detach_volume
|
|
195
200
|
request :get_server_volumes
|
|
201
|
+
request :list_volume_attachments
|
|
196
202
|
|
|
197
203
|
# Snapshot
|
|
198
|
-
request :
|
|
204
|
+
request :create_snapshot
|
|
199
205
|
request :list_snapshots
|
|
200
206
|
request :list_snapshots_detail
|
|
201
207
|
request :get_snapshot_details
|
|
@@ -217,6 +223,7 @@ module Fog
|
|
|
217
223
|
# Zones
|
|
218
224
|
request :list_zones
|
|
219
225
|
request :list_zones_detailed
|
|
226
|
+
request :list_availability_zones
|
|
220
227
|
|
|
221
228
|
class Mock
|
|
222
229
|
attr_reader :auth_token
|
|
@@ -227,73 +234,75 @@ module Fog
|
|
|
227
234
|
def self.data
|
|
228
235
|
@data ||= Hash.new do |hash, key|
|
|
229
236
|
hash[key] = {
|
|
230
|
-
:last_modified
|
|
231
|
-
:images
|
|
232
|
-
:servers
|
|
233
|
-
:key_pairs
|
|
237
|
+
:last_modified => {
|
|
238
|
+
:images => {},
|
|
239
|
+
:servers => {},
|
|
240
|
+
:key_pairs => {},
|
|
234
241
|
:security_groups => {},
|
|
235
|
-
:addresses
|
|
242
|
+
:addresses => {}
|
|
236
243
|
},
|
|
237
|
-
:aggregates
|
|
244
|
+
:aggregates => [{
|
|
238
245
|
"availability_zone" => "nova",
|
|
239
|
-
"created_at"
|
|
240
|
-
"deleted"
|
|
241
|
-
"deleted_at"
|
|
242
|
-
"id"
|
|
243
|
-
"name"
|
|
244
|
-
"updated_at"
|
|
246
|
+
"created_at" => "2012-11-16T06:22:23.032493",
|
|
247
|
+
"deleted" => false,
|
|
248
|
+
"deleted_at" => nil,
|
|
249
|
+
"id" => 1,
|
|
250
|
+
"name" => "name",
|
|
251
|
+
"updated_at" => nil
|
|
245
252
|
}],
|
|
246
|
-
:images
|
|
253
|
+
:images => {
|
|
247
254
|
"0e09fbd6-43c5-448a-83e9-0d3d05f9747e" => {
|
|
248
|
-
"id"=>"0e09fbd6-43c5-448a-83e9-0d3d05f9747e",
|
|
249
|
-
"name"=>"cirros-0.3.0-x86_64-blank",
|
|
250
|
-
'progress'
|
|
251
|
-
'status'
|
|
252
|
-
'updated'
|
|
253
|
-
'minRam'
|
|
254
|
-
'minDisk'
|
|
255
|
-
'metadata'
|
|
256
|
-
'links'
|
|
255
|
+
"id" => "0e09fbd6-43c5-448a-83e9-0d3d05f9747e",
|
|
256
|
+
"name" => "cirros-0.3.0-x86_64-blank",
|
|
257
|
+
'progress' => 100,
|
|
258
|
+
'status' => "ACTIVE",
|
|
259
|
+
'updated' => "",
|
|
260
|
+
'minRam' => 0,
|
|
261
|
+
'minDisk' => 0,
|
|
262
|
+
'metadata' => {},
|
|
263
|
+
'links' => [{"href" => "http://nova1:8774/v1.1/admin/images/1", "rel" => "self"},
|
|
264
|
+
{"href" => "http://nova1:8774/admin/images/2", "rel" => "bookmark"}]
|
|
257
265
|
}
|
|
258
266
|
},
|
|
259
|
-
:servers
|
|
260
|
-
:key_pairs
|
|
261
|
-
:security_groups
|
|
267
|
+
:servers => {},
|
|
268
|
+
:key_pairs => {},
|
|
269
|
+
:security_groups => {
|
|
262
270
|
'0' => {
|
|
263
271
|
"id" => 0,
|
|
264
272
|
"tenant_id" => Fog::Mock.random_hex(8),
|
|
265
273
|
"name" => "default",
|
|
266
274
|
"description" => "default",
|
|
267
275
|
"rules" => [
|
|
268
|
-
{
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
276
|
+
{"id" => 0,
|
|
277
|
+
"parent_group_id" => 0,
|
|
278
|
+
"from_port" => 68,
|
|
279
|
+
"to_port" => 68,
|
|
280
|
+
"ip_protocol" => "udp",
|
|
281
|
+
"ip_range" => {"cidr" => "0.0.0.0/0"},
|
|
282
|
+
"group" => {},
|
|
283
|
+
},
|
|
275
284
|
],
|
|
276
285
|
},
|
|
277
286
|
},
|
|
278
287
|
:server_security_group_map => {},
|
|
279
|
-
:addresses
|
|
280
|
-
:quota
|
|
281
|
-
'security_group_rules'
|
|
282
|
-
'security_groups'
|
|
288
|
+
:addresses => {},
|
|
289
|
+
:quota => {
|
|
290
|
+
'security_group_rules' => 20,
|
|
291
|
+
'security_groups' => 10,
|
|
283
292
|
'injected_file_content_bytes' => 10240,
|
|
284
|
-
'injected_file_path_bytes'
|
|
285
|
-
'injected_files'
|
|
286
|
-
'metadata_items'
|
|
287
|
-
'floating_ips'
|
|
288
|
-
'instances'
|
|
289
|
-
'key_pairs'
|
|
290
|
-
'gigabytes'
|
|
291
|
-
'volumes'
|
|
292
|
-
'cores'
|
|
293
|
-
'ram'
|
|
293
|
+
'injected_file_path_bytes' => 256,
|
|
294
|
+
'injected_files' => 5,
|
|
295
|
+
'metadata_items' => 128,
|
|
296
|
+
'floating_ips' => 10,
|
|
297
|
+
'instances' => 10,
|
|
298
|
+
'key_pairs' => 10,
|
|
299
|
+
'gigabytes' => 5000,
|
|
300
|
+
'volumes' => 10,
|
|
301
|
+
'cores' => 20,
|
|
302
|
+
'ram' => 51200
|
|
294
303
|
},
|
|
295
|
-
:volumes
|
|
296
|
-
:snapshots
|
|
304
|
+
:volumes => {},
|
|
305
|
+
:snapshots => {}
|
|
297
306
|
}
|
|
298
307
|
end
|
|
299
308
|
end
|
|
@@ -304,7 +313,7 @@ module Fog
|
|
|
304
313
|
|
|
305
314
|
include Fog::OpenStack::Core
|
|
306
315
|
|
|
307
|
-
def initialize(options={})
|
|
316
|
+
def initialize(options = {})
|
|
308
317
|
@auth_token = Fog::Mock.random_base64(64)
|
|
309
318
|
@auth_token_expiration = (Time.now.utc + 86400).iso8601
|
|
310
319
|
|
|
@@ -327,27 +336,26 @@ module Fog
|
|
|
327
336
|
def reset_data
|
|
328
337
|
self.class.data.delete("#{@openstack_username}-#{@current_tenant}")
|
|
329
338
|
end
|
|
330
|
-
|
|
331
339
|
end
|
|
332
340
|
|
|
333
341
|
class Real
|
|
334
342
|
include Fog::OpenStack::Core
|
|
335
343
|
|
|
336
|
-
def initialize(options={})
|
|
344
|
+
def initialize(options = {})
|
|
337
345
|
initialize_identity options
|
|
338
346
|
|
|
339
347
|
@openstack_identity_service_type = options[:openstack_identity_service_type] || 'identity'
|
|
340
348
|
|
|
341
|
-
@openstack_service_type = options[:openstack_service_type] ||
|
|
349
|
+
@openstack_service_type = options[:openstack_service_type] || %w(nova compute)
|
|
342
350
|
@openstack_service_name = options[:openstack_service_name]
|
|
343
351
|
|
|
344
352
|
@connection_options = options[:connection_options] || {}
|
|
345
353
|
|
|
346
354
|
authenticate
|
|
347
355
|
|
|
348
|
-
unless @path
|
|
349
|
-
raise Fog::OpenStack::Errors::ServiceUnavailable
|
|
350
|
-
|
|
356
|
+
unless @path =~ /1\.1|v2/
|
|
357
|
+
raise Fog::OpenStack::Errors::ServiceUnavailable,
|
|
358
|
+
"OpenStack compute binding only supports version 2 (a.k.a. 1.1)"
|
|
351
359
|
end
|
|
352
360
|
|
|
353
361
|
@persistent = options[:persistent] || false
|
|
@@ -356,15 +364,13 @@ module Fog
|
|
|
356
364
|
|
|
357
365
|
def request(params)
|
|
358
366
|
begin
|
|
359
|
-
response = @connection.request(params.merge({
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
:query => params[:query]
|
|
367
|
-
}))
|
|
367
|
+
response = @connection.request(params.merge(:headers => {
|
|
368
|
+
'Content-Type' => 'application/json',
|
|
369
|
+
'Accept' => 'application/json',
|
|
370
|
+
'X-Auth-Token' => @auth_token
|
|
371
|
+
}.merge!(params[:headers] || {}),
|
|
372
|
+
:path => "#{@path}/#{params[:path]}",
|
|
373
|
+
:query => params[:query]))
|
|
368
374
|
rescue Excon::Errors::Unauthorized => error
|
|
369
375
|
if error.response.body != 'Bad username or password' # token expiration
|
|
370
376
|
@openstack_must_reauthenticate = true
|
|
@@ -375,22 +381,19 @@ module Fog
|
|
|
375
381
|
end
|
|
376
382
|
rescue Excon::Errors::HTTPStatusError => error
|
|
377
383
|
raise case error
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
384
|
+
when Excon::Errors::NotFound
|
|
385
|
+
Fog::Compute::OpenStack::NotFound.slurp(error)
|
|
386
|
+
else
|
|
387
|
+
error
|
|
388
|
+
end
|
|
383
389
|
end
|
|
384
390
|
|
|
385
|
-
if !response.body.empty?
|
|
391
|
+
if !response.body.empty? && response.get_header('Content-Type') == 'application/json'
|
|
386
392
|
response.body = Fog::JSON.decode(response.body)
|
|
387
393
|
end
|
|
388
394
|
|
|
389
395
|
response
|
|
390
396
|
end
|
|
391
|
-
|
|
392
|
-
private
|
|
393
|
-
|
|
394
397
|
end
|
|
395
398
|
end
|
|
396
399
|
end
|
data/lib/fog/openstack/core.rb
CHANGED
|
@@ -2,7 +2,7 @@ module Fog
|
|
|
2
2
|
module OpenStack
|
|
3
3
|
module Core
|
|
4
4
|
attr_accessor :auth_token
|
|
5
|
-
attr_reader
|
|
5
|
+
attr_reader :openstack_cache_ttl
|
|
6
6
|
attr_reader :auth_token_expiration
|
|
7
7
|
attr_reader :current_user
|
|
8
8
|
attr_reader :current_user_id
|
|
@@ -12,6 +12,7 @@ module Fog
|
|
|
12
12
|
attr_reader :openstack_project_domain
|
|
13
13
|
attr_reader :openstack_domain_id
|
|
14
14
|
attr_reader :openstack_user_domain_id
|
|
15
|
+
attr_reader :openstack_project_id
|
|
15
16
|
attr_reader :openstack_project_domain_id
|
|
16
17
|
attr_reader :openstack_identity_prefix
|
|
17
18
|
|