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.
Files changed (64) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +4 -1
  4. data/.travis.yml +5 -5
  5. data/.zuul.yaml +8 -8
  6. data/Rakefile +14 -4
  7. data/fog-openstack.gemspec +3 -2
  8. data/lib/fog/baremetal/openstack.rb +6 -24
  9. data/lib/fog/compute/openstack.rb +6 -27
  10. data/lib/fog/compute/openstack/requests/create_security_group.rb +1 -1
  11. data/lib/fog/compute/openstack/requests/create_server.rb +1 -1
  12. data/lib/fog/compute/openstack/requests/evacuate_server.rb +1 -5
  13. data/lib/fog/container_infra/openstack.rb +6 -25
  14. data/lib/fog/dns/openstack/v1.rb +5 -17
  15. data/lib/fog/dns/openstack/v2.rb +5 -22
  16. data/lib/fog/event/openstack.rb +5 -24
  17. data/lib/fog/identity/openstack.rb +24 -71
  18. data/lib/fog/identity/openstack/v2.rb +6 -4
  19. data/lib/fog/identity/openstack/v3.rb +5 -11
  20. data/lib/fog/image/openstack/v1.rb +8 -21
  21. data/lib/fog/image/openstack/v2.rb +8 -21
  22. data/lib/fog/image/openstack/v2/models/image.rb +1 -1
  23. data/lib/fog/introspection/openstack.rb +4 -19
  24. data/lib/fog/key_manager/openstack.rb +5 -47
  25. data/lib/fog/metering/openstack.rb +8 -23
  26. data/lib/fog/metric/openstack.rb +7 -26
  27. data/lib/fog/monitoring/openstack.rb +3 -12
  28. data/lib/fog/network/openstack.rb +5 -26
  29. data/lib/fog/network/openstack/requests/set_tenant.rb +0 -1
  30. data/lib/fog/nfv/openstack.rb +4 -24
  31. data/lib/fog/openstack.rb +17 -431
  32. data/lib/fog/openstack/auth/catalog.rb +64 -0
  33. data/lib/fog/openstack/auth/catalog/v2.rb +23 -0
  34. data/lib/fog/openstack/auth/catalog/v3.rb +23 -0
  35. data/lib/fog/openstack/auth/name.rb +65 -0
  36. data/lib/fog/openstack/auth/token.rb +69 -0
  37. data/lib/fog/openstack/auth/token/v2.rb +70 -0
  38. data/lib/fog/openstack/auth/token/v3.rb +116 -0
  39. data/lib/fog/openstack/core.rb +100 -76
  40. data/lib/fog/openstack/version.rb +1 -1
  41. data/lib/fog/orchestration/openstack.rb +4 -21
  42. data/lib/fog/planning/openstack.rb +13 -23
  43. data/lib/fog/shared_file_system/openstack.rb +10 -27
  44. data/lib/fog/storage/openstack.rb +6 -11
  45. data/lib/fog/volume/openstack.rb +1 -1
  46. data/lib/fog/volume/openstack/models/backup.rb +2 -2
  47. data/lib/fog/volume/openstack/requests/restore_backup.rb +2 -2
  48. data/lib/fog/volume/openstack/requests/update_volume.rb +12 -1
  49. data/lib/fog/volume/openstack/v1.rb +4 -21
  50. data/lib/fog/volume/openstack/v1/models/volume.rb +1 -2
  51. data/lib/fog/volume/openstack/v1/requests/update_volume.rb +0 -17
  52. data/lib/fog/volume/openstack/v2.rb +4 -21
  53. data/lib/fog/volume/openstack/v2/models/volume.rb +1 -1
  54. data/lib/fog/volume/openstack/v2/requests/update_volume.rb +0 -18
  55. data/lib/fog/workflow/openstack/v2.rb +5 -22
  56. data/playbooks/fog-openstack-unittest-spec/run.yaml +2 -1
  57. data/playbooks/fog-openstack-unittest-test/run.yaml +2 -1
  58. data/unit/auth/catalog_test.rb +252 -0
  59. data/unit/auth/name_test.rb +115 -0
  60. data/unit/auth/token_test.rb +478 -0
  61. data/unit/auth_helper.rb +102 -0
  62. data/unit/test_helper.rb +6 -0
  63. metadata +41 -16
  64. data/lib/fog/compute/openstack/requests/list_tenants.rb +0 -43
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module OpenStack
3
- VERSION = '0.1.31'.freeze
3
+ VERSION = '0.2.0'.freeze
4
4
  end
5
5
  end
@@ -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
- :openstack_identity_prefix
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 initialize(options = {})
139
- initialize_identity options
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
- :openstack_identity_prefix
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
- # NOTE: uncommenting this should be treated as api-change!
101
- # def self.not_found_class
102
- # Fog::Planning::OpenStack::NotFound
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
- @persistent = options[:persistent] || false
118
- @connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
104
+ def default_path_prefix
105
+ 'v2'
119
106
  end
120
107
 
121
- def set_api_path
122
- unless @path.match(SUPPORTED_VERSIONS)
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
- :openstack_identity_prefix, :openstack_shared_file_system_microversion
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
- :openstack_identity_prefix, :openstack_temp_url_key
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
- initialize_identity options
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.
@@ -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
- :openstack_identity_prefix]
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
@@ -30,9 +30,9 @@ module Fog
30
30
  true
31
31
  end
32
32
 
33
- def restore(volume_id)
33
+ def restore(volume_id = nil, name = nil)
34
34
  requires :id
35
- service.restore_backup(id, volume_id)
35
+ service.restore_backup(id, volume_id, name)
36
36
  true
37
37
  end
38
38
 
@@ -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 = { 'restore' => { 'volume_id' => volume_id } }
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
- module Mock
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 initialize(options = {})
156
- initialize_identity options
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 set_api_path
172
- unless @path.match(SUPPORTED_VERSIONS)
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
- attrib = attributes.select { |key| %i(display_name display_description metadata).include?(key) }
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 initialize(options = {})
158
- initialize_identity options
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 set_api_path
174
- unless @path.match(SUPPORTED_VERSIONS)
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.select { |key| %i(name description metadata).include?(key) })
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 initialize(options = {})
103
- initialize_identity options
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
- @persistent = options[:persistent] || false
122
- @connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
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 --version '~> 1'
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