fog-openstack 0.1.31 → 0.2.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.
- checksums.yaml +5 -5
- data/.gitignore +1 -0
- data/.rubocop.yml +4 -1
- data/.travis.yml +5 -5
- data/.zuul.yaml +8 -8
- data/Rakefile +14 -4
- data/fog-openstack.gemspec +3 -2
- data/lib/fog/baremetal/openstack.rb +6 -24
- data/lib/fog/compute/openstack.rb +6 -27
- data/lib/fog/compute/openstack/requests/create_security_group.rb +1 -1
- data/lib/fog/compute/openstack/requests/create_server.rb +1 -1
- data/lib/fog/compute/openstack/requests/evacuate_server.rb +1 -5
- data/lib/fog/container_infra/openstack.rb +6 -25
- data/lib/fog/dns/openstack/v1.rb +5 -17
- data/lib/fog/dns/openstack/v2.rb +5 -22
- data/lib/fog/event/openstack.rb +5 -24
- data/lib/fog/identity/openstack.rb +24 -71
- data/lib/fog/identity/openstack/v2.rb +6 -4
- data/lib/fog/identity/openstack/v3.rb +5 -11
- data/lib/fog/image/openstack/v1.rb +8 -21
- data/lib/fog/image/openstack/v2.rb +8 -21
- data/lib/fog/image/openstack/v2/models/image.rb +1 -1
- data/lib/fog/introspection/openstack.rb +4 -19
- data/lib/fog/key_manager/openstack.rb +5 -47
- data/lib/fog/metering/openstack.rb +8 -23
- data/lib/fog/metric/openstack.rb +7 -26
- data/lib/fog/monitoring/openstack.rb +3 -12
- data/lib/fog/network/openstack.rb +5 -26
- data/lib/fog/network/openstack/requests/set_tenant.rb +0 -1
- data/lib/fog/nfv/openstack.rb +4 -24
- data/lib/fog/openstack.rb +17 -431
- data/lib/fog/openstack/auth/catalog.rb +64 -0
- data/lib/fog/openstack/auth/catalog/v2.rb +23 -0
- data/lib/fog/openstack/auth/catalog/v3.rb +23 -0
- data/lib/fog/openstack/auth/name.rb +65 -0
- data/lib/fog/openstack/auth/token.rb +69 -0
- data/lib/fog/openstack/auth/token/v2.rb +70 -0
- data/lib/fog/openstack/auth/token/v3.rb +116 -0
- data/lib/fog/openstack/core.rb +100 -76
- data/lib/fog/openstack/version.rb +1 -1
- data/lib/fog/orchestration/openstack.rb +4 -21
- data/lib/fog/planning/openstack.rb +13 -23
- data/lib/fog/shared_file_system/openstack.rb +10 -27
- data/lib/fog/storage/openstack.rb +6 -11
- data/lib/fog/volume/openstack.rb +1 -1
- data/lib/fog/volume/openstack/models/backup.rb +2 -2
- data/lib/fog/volume/openstack/requests/restore_backup.rb +2 -2
- data/lib/fog/volume/openstack/requests/update_volume.rb +12 -1
- data/lib/fog/volume/openstack/v1.rb +4 -21
- data/lib/fog/volume/openstack/v1/models/volume.rb +1 -2
- data/lib/fog/volume/openstack/v1/requests/update_volume.rb +0 -17
- data/lib/fog/volume/openstack/v2.rb +4 -21
- data/lib/fog/volume/openstack/v2/models/volume.rb +1 -1
- data/lib/fog/volume/openstack/v2/requests/update_volume.rb +0 -18
- data/lib/fog/workflow/openstack/v2.rb +5 -22
- data/playbooks/fog-openstack-unittest-spec/run.yaml +2 -1
- data/playbooks/fog-openstack-unittest-test/run.yaml +2 -1
- data/unit/auth/catalog_test.rb +252 -0
- data/unit/auth/name_test.rb +115 -0
- data/unit/auth/token_test.rb +478 -0
- data/unit/auth_helper.rb +102 -0
- data/unit/test_helper.rb +6 -0
- metadata +41 -16
- data/lib/fog/compute/openstack/requests/list_tenants.rb +0 -43
@@ -13,7 +13,7 @@ module Fog
|
|
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,
|
16
|
-
:
|
16
|
+
:openstack_identity_api_version
|
17
17
|
|
18
18
|
model_path 'fog/orchestration/openstack/models'
|
19
19
|
model :stack
|
@@ -105,10 +105,6 @@ module Fog
|
|
105
105
|
management_url.port = 8774
|
106
106
|
management_url.path = '/v1'
|
107
107
|
@openstack_management_url = management_url.to_s
|
108
|
-
|
109
|
-
identity_public_endpoint = URI.parse(options[:openstack_auth_url])
|
110
|
-
identity_public_endpoint.port = 5000
|
111
|
-
@openstack_identity_public_endpoint = identity_public_endpoint.to_s
|
112
108
|
end
|
113
109
|
|
114
110
|
def data
|
@@ -123,8 +119,7 @@ module Fog
|
|
123
119
|
{:provider => 'openstack',
|
124
120
|
:openstack_auth_url => @openstack_auth_uri.to_s,
|
125
121
|
:openstack_auth_token => @auth_token,
|
126
|
-
:openstack_management_url => @openstack_management_url
|
127
|
-
:openstack_identity_endpoint => @openstack_identity_public_endpoint}
|
122
|
+
:openstack_management_url => @openstack_management_url}
|
128
123
|
end
|
129
124
|
end
|
130
125
|
|
@@ -135,20 +130,8 @@ module Fog
|
|
135
130
|
Fog::Orchestration::OpenStack::NotFound
|
136
131
|
end
|
137
132
|
|
138
|
-
def
|
139
|
-
|
140
|
-
|
141
|
-
@openstack_identity_service_type = options[:openstack_identity_service_type] || 'identity'
|
142
|
-
|
143
|
-
@openstack_service_type = options[:openstack_service_type] || ['orchestration']
|
144
|
-
@openstack_service_name = options[:openstack_service_name]
|
145
|
-
|
146
|
-
@connection_options = options[:connection_options] || {}
|
147
|
-
|
148
|
-
authenticate
|
149
|
-
|
150
|
-
@persistent = options[:persistent] || false
|
151
|
-
@connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
|
133
|
+
def default_service_type
|
134
|
+
%w[orchestration]
|
152
135
|
end
|
153
136
|
end
|
154
137
|
end
|
@@ -15,7 +15,7 @@ module Fog
|
|
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,
|
18
|
-
:
|
18
|
+
:openstack_identity_api_version
|
19
19
|
|
20
20
|
## MODELS
|
21
21
|
#
|
@@ -97,32 +97,22 @@ module Fog
|
|
97
97
|
class Real
|
98
98
|
include Fog::OpenStack::Core
|
99
99
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
# end
|
104
|
-
|
105
|
-
def initialize(options = {})
|
106
|
-
initialize_identity options
|
107
|
-
|
108
|
-
@openstack_service_type = options[:openstack_service_type] || ['management'] # currently Tuskar is configured as 'management' service in Keystone
|
109
|
-
@openstack_service_name = options[:openstack_service_name]
|
110
|
-
@openstack_endpoint_type = options[:openstack_endpoint_type] || 'adminURL'
|
111
|
-
|
112
|
-
@connection_options = options[:connection_options] || {}
|
113
|
-
|
114
|
-
authenticate
|
115
|
-
set_api_path
|
100
|
+
def default_endpoint_type
|
101
|
+
'admin'
|
102
|
+
end
|
116
103
|
|
117
|
-
|
118
|
-
|
104
|
+
def default_path_prefix
|
105
|
+
'v2'
|
119
106
|
end
|
120
107
|
|
121
|
-
def
|
122
|
-
|
123
|
-
@path = "/v2"
|
124
|
-
end
|
108
|
+
def default_service_type
|
109
|
+
%w[management]
|
125
110
|
end
|
111
|
+
|
112
|
+
# NOTE: uncommenting this should be treated as api-change!
|
113
|
+
# def self.not_found_class
|
114
|
+
# Fog::Planning::OpenStack::NotFound
|
115
|
+
# end
|
126
116
|
end
|
127
117
|
end
|
128
118
|
|
@@ -14,7 +14,7 @@ module Fog
|
|
14
14
|
:openstack_project_name, :openstack_project_id,
|
15
15
|
:openstack_project_domain, :openstack_user_domain, :openstack_domain_name,
|
16
16
|
:openstack_project_domain_id, :openstack_user_domain_id, :openstack_domain_id,
|
17
|
-
:
|
17
|
+
:openstack_identity_api_version, :openstack_shared_file_system_microversion
|
18
18
|
|
19
19
|
model_path 'fog/shared_file_system/openstack/models'
|
20
20
|
model :network
|
@@ -351,37 +351,20 @@ module Fog
|
|
351
351
|
Fog::SharedFileSystem::OpenStack::NotFound
|
352
352
|
end
|
353
353
|
|
354
|
+
def action_prefix
|
355
|
+
microversion_newer_than?('2.6') ? '' : 'os-'
|
356
|
+
end
|
357
|
+
|
358
|
+
def default_service_type
|
359
|
+
%w[sharev2]
|
360
|
+
end
|
361
|
+
|
354
362
|
def initialize(options = {})
|
355
363
|
@supported_versions = SUPPORTED_VERSIONS
|
356
364
|
@supported_microversion = SUPPORTED_MICROVERSION
|
357
365
|
@fixed_microversion = options[:openstack_shared_file_system_microversion]
|
358
366
|
@microversion_key = 'X-Openstack-Manila-Api-Version'.freeze
|
359
|
-
|
360
|
-
initialize_identity options
|
361
|
-
|
362
|
-
@openstack_service_type = options[:openstack_service_type] || ['sharev2']
|
363
|
-
@openstack_service_name = options[:openstack_service_name]
|
364
|
-
@connection_options = options[:connection_options] || {}
|
365
|
-
|
366
|
-
authenticate
|
367
|
-
set_api_path
|
368
|
-
set_microversion
|
369
|
-
|
370
|
-
@persistent = options[:persistent] || false
|
371
|
-
@connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
|
372
|
-
end
|
373
|
-
|
374
|
-
def set_api_path
|
375
|
-
unless @path.match(@supported_versions)
|
376
|
-
@path = Fog::OpenStack.get_supported_version_path(@supported_versions,
|
377
|
-
@openstack_management_uri,
|
378
|
-
@auth_token,
|
379
|
-
@connection_options)
|
380
|
-
end
|
381
|
-
end
|
382
|
-
|
383
|
-
def action_prefix
|
384
|
-
microversion_newer_than?('2.6') ? '' : 'os-'
|
367
|
+
super
|
385
368
|
end
|
386
369
|
end
|
387
370
|
end
|
@@ -13,7 +13,7 @@ module Fog
|
|
13
13
|
:openstack_project_name, :openstack_project_id, :openstack_cache_ttl,
|
14
14
|
:openstack_project_domain, :openstack_user_domain, :openstack_domain_name,
|
15
15
|
:openstack_project_domain_id, :openstack_user_domain_id, :openstack_domain_id,
|
16
|
-
:
|
16
|
+
:openstack_identity_api_version, :openstack_temp_url_key
|
17
17
|
|
18
18
|
model_path 'fog/storage/openstack/models'
|
19
19
|
model :directory
|
@@ -112,18 +112,13 @@ module Fog
|
|
112
112
|
Fog::Storage::OpenStack::NotFound
|
113
113
|
end
|
114
114
|
|
115
|
+
def default_service_type
|
116
|
+
%w[object-store]
|
117
|
+
end
|
118
|
+
|
115
119
|
def initialize(options = {})
|
116
120
|
require_mime_types
|
117
|
-
|
118
|
-
|
119
|
-
@openstack_service_type = options[:openstack_service_type] || ['object-store']
|
120
|
-
@openstack_service_name = options[:openstack_service_name]
|
121
|
-
|
122
|
-
@connection_options = options[:connection_options] || {}
|
123
|
-
|
124
|
-
authenticate
|
125
|
-
@persistent = options[:persistent] || false
|
126
|
-
@connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
|
121
|
+
super
|
127
122
|
end
|
128
123
|
|
129
124
|
# Change the current account while re-using the auth token.
|
data/lib/fog/volume/openstack.rb
CHANGED
@@ -15,7 +15,7 @@ module Fog
|
|
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,
|
18
|
-
:
|
18
|
+
:openstack_identity_api_version]
|
19
19
|
|
20
20
|
# Fog::Image::OpenStack.new() will return a Fog::Volume::OpenStack::V2 or a Fog::Volume::OpenStack::V1,
|
21
21
|
# choosing the V2 by default, as V1 is deprecated since OpenStack Juno
|
@@ -2,8 +2,8 @@ module Fog
|
|
2
2
|
module Volume
|
3
3
|
class OpenStack
|
4
4
|
module Real
|
5
|
-
def restore_backup(backup_id, volume_id)
|
6
|
-
data = {
|
5
|
+
def restore_backup(backup_id, volume_id = nil, name = nil)
|
6
|
+
data = {'restore' => {'volume_id' => volume_id, 'name' => name}}
|
7
7
|
request(
|
8
8
|
:expects => 202,
|
9
9
|
:method => 'POST',
|
@@ -1,7 +1,18 @@
|
|
1
1
|
module Fog
|
2
2
|
module Volume
|
3
3
|
class OpenStack
|
4
|
-
|
4
|
+
module Real
|
5
|
+
def update_volume(volume_id, data = {})
|
6
|
+
request(
|
7
|
+
:body => Fog::JSON.encode('volume' => data),
|
8
|
+
:expects => 200,
|
9
|
+
:method => 'PUT',
|
10
|
+
:path => "volumes/#{volume_id}"
|
11
|
+
)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module Mock
|
5
16
|
def update_volume(volume_id, data = {})
|
6
17
|
response = Excon::Response.new
|
7
18
|
response.status = 200
|
@@ -152,29 +152,12 @@ module Fog
|
|
152
152
|
Fog::Volume::OpenStack::NotFound
|
153
153
|
end
|
154
154
|
|
155
|
-
def
|
156
|
-
|
157
|
-
|
158
|
-
@openstack_service_type = options[:openstack_service_type] || ['volume']
|
159
|
-
@openstack_service_name = options[:openstack_service_name]
|
160
|
-
@openstack_endpoint_type = options[:openstack_endpoint_type] || 'adminURL'
|
161
|
-
|
162
|
-
@connection_options = options[:connection_options] || {}
|
163
|
-
|
164
|
-
authenticate
|
165
|
-
set_api_path
|
166
|
-
|
167
|
-
@persistent = options[:persistent] || false
|
168
|
-
@connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
|
155
|
+
def default_endtpoint_type
|
156
|
+
'admin'
|
169
157
|
end
|
170
158
|
|
171
|
-
def
|
172
|
-
|
173
|
-
@path = Fog::OpenStack.get_supported_version_path(SUPPORTED_VERSIONS,
|
174
|
-
@openstack_management_uri,
|
175
|
-
@auth_token,
|
176
|
-
@connection_options)
|
177
|
-
end
|
159
|
+
def default_service_type
|
160
|
+
%w[volume]
|
178
161
|
end
|
179
162
|
end
|
180
163
|
end
|
@@ -17,8 +17,7 @@ module Fog
|
|
17
17
|
data = if id.nil?
|
18
18
|
service.create_volume(display_name, display_description, size, attributes)
|
19
19
|
else
|
20
|
-
|
21
|
-
service.update_volume(id, attrib)
|
20
|
+
service.update_volume(id, attributes.reject { |k, _v| k == :id })
|
22
21
|
end
|
23
22
|
merge_attributes(data.body['volume'])
|
24
23
|
true
|
@@ -1,19 +1,2 @@
|
|
1
1
|
require 'fog/volume/openstack/requests/update_volume'
|
2
2
|
require 'fog/volume/openstack/v1/requests/real'
|
3
|
-
|
4
|
-
module Fog
|
5
|
-
module Volume
|
6
|
-
class OpenStack
|
7
|
-
module Real
|
8
|
-
def update_volume(volume_id, data = {})
|
9
|
-
request(
|
10
|
-
:body => Fog::JSON.encode('volume' => data),
|
11
|
-
:expects => 200,
|
12
|
-
:method => 'PUT',
|
13
|
-
:path => "volumes/#{volume_id}"
|
14
|
-
)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -154,29 +154,12 @@ module Fog
|
|
154
154
|
Fog::Volume::OpenStack::NotFound
|
155
155
|
end
|
156
156
|
|
157
|
-
def
|
158
|
-
|
159
|
-
|
160
|
-
@openstack_service_type = options[:openstack_service_type] || ['volumev2']
|
161
|
-
@openstack_service_name = options[:openstack_service_name]
|
162
|
-
@openstack_endpoint_type = options[:openstack_endpoint_type] || 'adminURL'
|
163
|
-
|
164
|
-
@connection_options = options[:connection_options] || {}
|
165
|
-
|
166
|
-
authenticate
|
167
|
-
set_api_path
|
168
|
-
|
169
|
-
@persistent = options[:persistent] || false
|
170
|
-
@connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
|
157
|
+
def default_endtpoint_type
|
158
|
+
'admin'
|
171
159
|
end
|
172
160
|
|
173
|
-
def
|
174
|
-
|
175
|
-
@path = Fog::OpenStack.get_supported_version_path(SUPPORTED_VERSIONS,
|
176
|
-
@openstack_management_uri,
|
177
|
-
@auth_token,
|
178
|
-
@connection_options)
|
179
|
-
end
|
161
|
+
def default_service_type
|
162
|
+
%w[volumev2]
|
180
163
|
end
|
181
164
|
end
|
182
165
|
end
|
@@ -17,7 +17,7 @@ module Fog
|
|
17
17
|
data = if id.nil?
|
18
18
|
service.create_volume(name, description, size, attributes)
|
19
19
|
else
|
20
|
-
service.update_volume(id, attributes.
|
20
|
+
service.update_volume(id, attributes.reject { |k, _v| k == :id })
|
21
21
|
end
|
22
22
|
merge_attributes(data.body['volume'])
|
23
23
|
true
|
@@ -1,20 +1,2 @@
|
|
1
1
|
require 'fog/volume/openstack/requests/update_volume'
|
2
2
|
require 'fog/volume/openstack/v2/requests/real'
|
3
|
-
|
4
|
-
module Fog
|
5
|
-
module Volume
|
6
|
-
class OpenStack
|
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
|
@@ -83,8 +83,6 @@ module Fog
|
|
83
83
|
def initialize(options = {})
|
84
84
|
@auth_token = Fog::Mock.random_base64(64)
|
85
85
|
@auth_token_expiration = (Time.now.utc + 86_400).iso8601
|
86
|
-
|
87
|
-
initialize_identity options
|
88
86
|
end
|
89
87
|
|
90
88
|
def data
|
@@ -99,27 +97,12 @@ module Fog
|
|
99
97
|
class Real
|
100
98
|
include Fog::OpenStack::Core
|
101
99
|
|
102
|
-
def
|
103
|
-
|
104
|
-
|
105
|
-
@openstack_service_type = options[:openstack_service_type] || ['workflowv2']
|
106
|
-
@openstack_service_name = options[:openstack_service_name]
|
107
|
-
|
108
|
-
@connection_options = options[:connection_options] || {}
|
109
|
-
|
110
|
-
authenticate
|
111
|
-
|
112
|
-
unless @path.match(SUPPORTED_VERSIONS)
|
113
|
-
@path = "/" + Fog::OpenStack.get_supported_version(
|
114
|
-
SUPPORTED_VERSIONS,
|
115
|
-
@openstack_management_uri,
|
116
|
-
@auth_token,
|
117
|
-
@connection_options
|
118
|
-
)
|
119
|
-
end
|
100
|
+
def default_path_prefix
|
101
|
+
'v2'
|
102
|
+
end
|
120
103
|
|
121
|
-
|
122
|
-
|
104
|
+
def default_service_type
|
105
|
+
%w[workflowv2]
|
123
106
|
end
|
124
107
|
|
125
108
|
def request(params)
|
@@ -24,7 +24,8 @@
|
|
24
24
|
rvm use ${version} > /dev/null 2>&1
|
25
25
|
echo "Running tests based on Ruby ${version}..."
|
26
26
|
ruby --version
|
27
|
-
gem install bundler
|
27
|
+
gem install bundler
|
28
|
+
gem update bundler
|
28
29
|
bundle install --jobs=3 --retry=3
|
29
30
|
bundle exec rake spec TESTOPTS="--verbose"
|
30
31
|
done
|