fog-openstack 0.1.7 → 0.1.8

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 (162) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +12 -28
  3. data/docs/workflow.md +129 -0
  4. data/examples/workflow/workflow-examples.rb +387 -0
  5. data/gemfiles/Gemfile-1.9 +1 -0
  6. data/lib/fog/openstack.rb +5 -1
  7. data/lib/fog/openstack/baremetal.rb +14 -38
  8. data/lib/fog/openstack/compute.rb +4 -33
  9. data/lib/fog/openstack/core.rb +104 -50
  10. data/lib/fog/openstack/identity.rb +2 -1
  11. data/lib/fog/openstack/identity_v2.rb +0 -2
  12. data/lib/fog/openstack/identity_v3.rb +0 -2
  13. data/lib/fog/openstack/image_v1.rb +6 -6
  14. data/lib/fog/openstack/image_v2.rb +7 -6
  15. data/lib/fog/openstack/introspection.rb +10 -35
  16. data/lib/fog/openstack/metering.rb +16 -35
  17. data/lib/fog/openstack/monitoring.rb +5 -31
  18. data/lib/fog/openstack/network.rb +5 -34
  19. data/lib/fog/openstack/nfv.rb +10 -35
  20. data/lib/fog/openstack/orchestration.rb +5 -40
  21. data/lib/fog/openstack/planning.rb +11 -36
  22. data/lib/fog/openstack/requests/compute/get_limits.rb +8 -7
  23. data/lib/fog/openstack/requests/network/update_router.rb +1 -1
  24. data/lib/fog/openstack/requests/workflow_v2/create_action.rb +28 -0
  25. data/lib/fog/openstack/requests/workflow_v2/create_action_execution.rb +31 -0
  26. data/lib/fog/openstack/requests/workflow_v2/create_cron_trigger.rb +55 -0
  27. data/lib/fog/openstack/requests/workflow_v2/create_environment.rb +31 -0
  28. data/lib/fog/openstack/requests/workflow_v2/create_execution.rb +30 -0
  29. data/lib/fog/openstack/requests/workflow_v2/create_workbook.rb +28 -0
  30. data/lib/fog/openstack/requests/workflow_v2/create_workflow.rb +28 -0
  31. data/lib/fog/openstack/requests/workflow_v2/delete_action.rb +25 -0
  32. data/lib/fog/openstack/requests/workflow_v2/delete_action_execution.rb +25 -0
  33. data/lib/fog/openstack/requests/workflow_v2/delete_cron_trigger.rb +25 -0
  34. data/lib/fog/openstack/requests/workflow_v2/delete_environment.rb +25 -0
  35. data/lib/fog/openstack/requests/workflow_v2/delete_execution.rb +25 -0
  36. data/lib/fog/openstack/requests/workflow_v2/delete_workbook.rb +25 -0
  37. data/lib/fog/openstack/requests/workflow_v2/delete_workflow.rb +25 -0
  38. data/lib/fog/openstack/requests/workflow_v2/get_action.rb +27 -0
  39. data/lib/fog/openstack/requests/workflow_v2/get_action_execution.rb +26 -0
  40. data/lib/fog/openstack/requests/workflow_v2/get_cron_trigger.rb +28 -0
  41. data/lib/fog/openstack/requests/workflow_v2/get_environment.rb +28 -0
  42. data/lib/fog/openstack/requests/workflow_v2/get_execution.rb +26 -0
  43. data/lib/fog/openstack/requests/workflow_v2/get_task.rb +27 -0
  44. data/lib/fog/openstack/requests/workflow_v2/get_workbook.rb +28 -0
  45. data/lib/fog/openstack/requests/workflow_v2/get_workflow.rb +28 -0
  46. data/lib/fog/openstack/requests/workflow_v2/list_action_executions.rb +28 -0
  47. data/lib/fog/openstack/requests/workflow_v2/list_actions.rb +30 -0
  48. data/lib/fog/openstack/requests/workflow_v2/list_cron_triggers.rb +28 -0
  49. data/lib/fog/openstack/requests/workflow_v2/list_environments.rb +28 -0
  50. data/lib/fog/openstack/requests/workflow_v2/list_executions.rb +28 -0
  51. data/lib/fog/openstack/requests/workflow_v2/list_services.rb +28 -0
  52. data/lib/fog/openstack/requests/workflow_v2/list_tasks.rb +28 -0
  53. data/lib/fog/openstack/requests/workflow_v2/list_workbooks.rb +28 -0
  54. data/lib/fog/openstack/requests/workflow_v2/list_workflows.rb +30 -0
  55. data/lib/fog/openstack/requests/workflow_v2/rerun_task.rb +33 -0
  56. data/lib/fog/openstack/requests/workflow_v2/update_action.rb +28 -0
  57. data/lib/fog/openstack/requests/workflow_v2/update_action_execution.rb +33 -0
  58. data/lib/fog/openstack/requests/workflow_v2/update_environment.rb +31 -0
  59. data/lib/fog/openstack/requests/workflow_v2/update_execution.rb +33 -0
  60. data/lib/fog/openstack/requests/workflow_v2/update_workbook.rb +28 -0
  61. data/lib/fog/openstack/requests/workflow_v2/update_workflow.rb +28 -0
  62. data/lib/fog/openstack/requests/workflow_v2/validate_action.rb +28 -0
  63. data/lib/fog/openstack/requests/workflow_v2/validate_workbook.rb +28 -0
  64. data/lib/fog/openstack/requests/workflow_v2/validate_workflow.rb +28 -0
  65. data/lib/fog/openstack/storage.rb +4 -35
  66. data/lib/fog/openstack/version.rb +1 -1
  67. data/lib/fog/openstack/volume_v1.rb +7 -5
  68. data/lib/fog/openstack/volume_v2.rb +7 -5
  69. data/lib/fog/openstack/workflow.rb +12 -0
  70. data/lib/fog/openstack/workflow_v2.rb +160 -0
  71. metadata +48 -95
  72. data/lib/fog/openstack/common.rb +0 -44
  73. data/tests/openstack/models/compute/images_tests.rb +0 -13
  74. data/tests/openstack/models/compute/security_group_tests.rb +0 -54
  75. data/tests/openstack/models/compute/server_tests.rb +0 -220
  76. data/tests/openstack/models/compute/service_tests.rb +0 -17
  77. data/tests/openstack/models/image/image_tests.rb +0 -36
  78. data/tests/openstack/models/image/images_tests.rb +0 -19
  79. data/tests/openstack/models/network/floating_ip_tests.rb +0 -35
  80. data/tests/openstack/models/network/floating_ips_tests.rb +0 -19
  81. data/tests/openstack/models/network/ike_policies_tests.rb +0 -28
  82. data/tests/openstack/models/network/ike_policy_tests.rb +0 -36
  83. data/tests/openstack/models/network/ipsec_policies_tests.rb +0 -26
  84. data/tests/openstack/models/network/ipsec_policy_tests.rb +0 -36
  85. data/tests/openstack/models/network/ipsec_site_connection_tests.rb +0 -50
  86. data/tests/openstack/models/network/ipsec_site_connections_tests.rb +0 -32
  87. data/tests/openstack/models/network/lb_health_monitor_tests.rb +0 -52
  88. data/tests/openstack/models/network/lb_health_monitors_tests.rb +0 -21
  89. data/tests/openstack/models/network/lb_member_tests.rb +0 -28
  90. data/tests/openstack/models/network/lb_members_tests.rb +0 -21
  91. data/tests/openstack/models/network/lb_pool_tests.rb +0 -53
  92. data/tests/openstack/models/network/lb_pools_tests.rb +0 -20
  93. data/tests/openstack/models/network/lb_vip_tests.rb +0 -39
  94. data/tests/openstack/models/network/lb_vips_tests.rb +0 -21
  95. data/tests/openstack/models/network/network_tests.rb +0 -61
  96. data/tests/openstack/models/network/networks_tests.rb +0 -21
  97. data/tests/openstack/models/network/port_tests.rb +0 -28
  98. data/tests/openstack/models/network/ports_tests.rb +0 -25
  99. data/tests/openstack/models/network/router_tests.rb +0 -39
  100. data/tests/openstack/models/network/routers_tests.rb +0 -21
  101. data/tests/openstack/models/network/security_group_rule_tests.rb +0 -27
  102. data/tests/openstack/models/network/security_group_rules_tests.rb +0 -25
  103. data/tests/openstack/models/network/security_group_tests.rb +0 -17
  104. data/tests/openstack/models/network/security_groups_tests.rb +0 -16
  105. data/tests/openstack/models/network/subnet_tests.rb +0 -30
  106. data/tests/openstack/models/network/subnets_tests.rb +0 -27
  107. data/tests/openstack/models/network/vpn_service_tests.rb +0 -27
  108. data/tests/openstack/models/network/vpn_services_tests.rb +0 -22
  109. data/tests/openstack/models/nfv/vnf_tests.rb +0 -35
  110. data/tests/openstack/models/nfv/vnfd_tests.rb +0 -23
  111. data/tests/openstack/models/nfv/vnfds_tests.rb +0 -31
  112. data/tests/openstack/models/nfv/vnfs_tests.rb +0 -38
  113. data/tests/openstack/models/planning/.gitkeep +0 -0
  114. data/tests/openstack/models/planning/plan_tests.rb +0 -51
  115. data/tests/openstack/models/planning/plans_tests.rb +0 -18
  116. data/tests/openstack/models/planning/role_tests.rb +0 -14
  117. data/tests/openstack/models/storage/file_tests.rb +0 -251
  118. data/tests/openstack/requests/compute/address_tests.rb +0 -58
  119. data/tests/openstack/requests/compute/aggregate_tests.rb +0 -59
  120. data/tests/openstack/requests/compute/availability_zone_tests.rb +0 -18
  121. data/tests/openstack/requests/compute/flavor_tests.rb +0 -95
  122. data/tests/openstack/requests/compute/helper.rb +0 -41
  123. data/tests/openstack/requests/compute/image_tests.rb +0 -58
  124. data/tests/openstack/requests/compute/keypair_tests.rb +0 -30
  125. data/tests/openstack/requests/compute/limit_tests.rb +0 -59
  126. data/tests/openstack/requests/compute/quota_tests.rb +0 -60
  127. data/tests/openstack/requests/compute/security_group_tests.rb +0 -61
  128. data/tests/openstack/requests/compute/server_tests.rb +0 -289
  129. data/tests/openstack/requests/compute/service_tests.rb +0 -33
  130. data/tests/openstack/requests/compute/tenant_tests.rb +0 -19
  131. data/tests/openstack/requests/compute/volume_tests.rb +0 -38
  132. data/tests/openstack/requests/image/image_tests.rb +0 -135
  133. data/tests/openstack/requests/metering/event_tests.rb +0 -17
  134. data/tests/openstack/requests/metering/meter_tests.rb +0 -52
  135. data/tests/openstack/requests/metering/resource_tests.rb +0 -19
  136. data/tests/openstack/requests/network/ike_policy_tests.rb +0 -65
  137. data/tests/openstack/requests/network/ipsec_policy_tests.rb +0 -65
  138. data/tests/openstack/requests/network/ipsec_site_connection_tests.rb +0 -82
  139. data/tests/openstack/requests/network/lb_health_monitor_tests.rb +0 -93
  140. data/tests/openstack/requests/network/lb_member_tests.rb +0 -60
  141. data/tests/openstack/requests/network/lb_pool_tests.rb +0 -80
  142. data/tests/openstack/requests/network/lb_vip_tests.rb +0 -71
  143. data/tests/openstack/requests/network/network_tests.rb +0 -107
  144. data/tests/openstack/requests/network/port_tests.rb +0 -66
  145. data/tests/openstack/requests/network/quota_tests.rb +0 -65
  146. data/tests/openstack/requests/network/router_tests.rb +0 -73
  147. data/tests/openstack/requests/network/security_group_rule_tests.rb +0 -58
  148. data/tests/openstack/requests/network/security_group_tests.rb +0 -43
  149. data/tests/openstack/requests/network/subnet_tests.rb +0 -66
  150. data/tests/openstack/requests/network/vpn_service_tests.rb +0 -61
  151. data/tests/openstack/requests/nfv/vnf_tests.rb +0 -70
  152. data/tests/openstack/requests/nfv/vnfd_tests.rb +0 -44
  153. data/tests/openstack/requests/orchestration/stack_tests.rb +0 -64
  154. data/tests/openstack/requests/planning/.gitkeep +0 -0
  155. data/tests/openstack/requests/planning/plan_tests.rb +0 -65
  156. data/tests/openstack/requests/planning/role_tests.rb +0 -16
  157. data/tests/openstack/requests/storage/container_tests.rb +0 -64
  158. data/tests/openstack/requests/storage/large_object_tests.rb +0 -372
  159. data/tests/openstack/requests/storage/object_tests.rb +0 -208
  160. data/tests/openstack/requests/volume/availability_zone_tests.rb +0 -13
  161. data/tests/openstack/requests/volume/quota_tests.rb +0 -50
  162. data/tests/openstack/requests/volume/volume_type_tests.rb +0 -32
@@ -16,4 +16,5 @@ group :development, :test do
16
16
  gem "minitest"
17
17
  gem "vcr"
18
18
  gem "webmock", "~> 1.24.6"
19
+ gem "json", "< 2.0"
19
20
  end
@@ -3,7 +3,6 @@ require 'fog/core'
3
3
  require 'fog/json'
4
4
 
5
5
  require 'fog/openstack/core'
6
- require 'fog/openstack/common'
7
6
  require 'fog/openstack/errors'
8
7
 
9
8
  require 'fog/openstack/compute'
@@ -62,6 +61,10 @@ module Fog
62
61
  autoload :OpenStack, File.expand_path('../fog/openstack/monitoring', __FILE__)
63
62
  end
64
63
 
64
+ module Workflow
65
+ autoload :OpenStack, File.expand_path('../openstack/workflow', __FILE__)
66
+ end
67
+
65
68
  module OpenStack
66
69
  extend Fog::Provider
67
70
 
@@ -78,6 +81,7 @@ module Fog
78
81
  service(:planning, 'Planning')
79
82
  service(:introspection, 'Introspection')
80
83
  service(:monitoring, 'Monitoring')
84
+ service(:workflow, 'Workflow')
81
85
 
82
86
  @@token_cache = {}
83
87
 
@@ -248,7 +248,12 @@ module Fog
248
248
  class Real
249
249
  include Fog::OpenStack::Core
250
250
 
251
- def initialize(options={})
251
+ # NOTE: uncommenting this should be treated as api-change!
252
+ # def self.not_found_class
253
+ # Fog::Baremetal::OpenStack::NotFound
254
+ # end
255
+
256
+ def initialize(options = {})
252
257
  initialize_identity options
253
258
 
254
259
  @openstack_service_type = options[:openstack_service_type] || ['baremetal']
@@ -257,51 +262,22 @@ module Fog
257
262
  @connection_options = options[:connection_options] || {}
258
263
 
259
264
  authenticate
265
+ set_api_path
260
266
 
267
+ @persistent = options[:persistent] || false
268
+ @connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
269
+ end
270
+
271
+ private
272
+
273
+ def set_api_path
261
274
  unless @path.match(SUPPORTED_VERSIONS)
262
275
  @path = "/" + Fog::OpenStack.get_supported_version(SUPPORTED_VERSIONS,
263
276
  @openstack_management_uri,
264
277
  @auth_token,
265
278
  @connection_options)
266
279
  end
267
-
268
- @persistent = options[:persistent] || false
269
- @connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
270
- end
271
-
272
- def request(params)
273
- begin
274
- response = @connection.request(params.merge({
275
- :headers => {
276
- 'Content-Type' => 'application/json',
277
- 'X-Auth-Token' => @auth_token
278
- }.merge!(params[:headers] || {}),
279
- :path => "#{@path}/#{params[:path]}"#,
280
- }))
281
- rescue Excon::Errors::Unauthorized => error
282
- if error.response.body != 'Bad username or password' # token expiration
283
- @openstack_must_reauthenticate = true
284
- authenticate
285
- retry
286
- else # bad credentials
287
- raise error
288
- end
289
- rescue Excon::Errors::HTTPStatusError => error
290
- raise case error
291
- when Excon::Errors::NotFound
292
- Fog::Compute::OpenStack::NotFound.slurp(error)
293
- else
294
- error
295
- end
296
- end
297
- unless response.body.empty?
298
- response.body = Fog::JSON.decode(response.body)
299
- end
300
- response
301
280
  end
302
-
303
- private
304
-
305
281
  end
306
282
  end
307
283
  end
@@ -341,6 +341,10 @@ module Fog
341
341
  class Real
342
342
  include Fog::OpenStack::Core
343
343
 
344
+ def self.not_found_class
345
+ Fog::Compute::OpenStack::NotFound
346
+ end
347
+
344
348
  def initialize(options = {})
345
349
  initialize_identity options
346
350
 
@@ -361,39 +365,6 @@ module Fog
361
365
  @persistent = options[:persistent] || false
362
366
  @connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
363
367
  end
364
-
365
- def request(params)
366
- begin
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]))
374
- rescue Excon::Errors::Unauthorized => error
375
- if error.response.body != 'Bad username or password' # token expiration
376
- @openstack_must_reauthenticate = true
377
- authenticate
378
- retry
379
- else # Bad Credentials
380
- raise error
381
- end
382
- rescue Excon::Errors::HTTPStatusError => error
383
- raise case error
384
- when Excon::Errors::NotFound
385
- Fog::Compute::OpenStack::NotFound.slurp(error)
386
- else
387
- error
388
- end
389
- end
390
-
391
- if !response.body.empty? && response.get_header('Content-Type') == 'application/json'
392
- response.body = Fog::JSON.decode(response.body)
393
- end
394
-
395
- response
396
- end
397
368
  end
398
369
  end
399
370
  end
@@ -2,6 +2,7 @@ module Fog
2
2
  module OpenStack
3
3
  module Core
4
4
  attr_accessor :auth_token
5
+ attr_reader :unscoped_token
5
6
  attr_reader :openstack_cache_ttl
6
7
  attr_reader :auth_token_expiration
7
8
  attr_reader :current_user
@@ -16,39 +17,46 @@ module Fog
16
17
  attr_reader :openstack_project_domain_id
17
18
  attr_reader :openstack_identity_prefix
18
19
 
19
- def initialize_identity options
20
+ # fallback
21
+ def self.not_found_class
22
+ Fog::Compute::OpenStack::NotFound
23
+ end
24
+
25
+ def initialize_identity(options)
20
26
  # Create @openstack_* instance variables from all :openstack_* options
21
- options.select{|x|x.to_s.start_with? 'openstack'}.each do |openstack_param, value|
27
+ options.select { |x| x.to_s.start_with? 'openstack' }.each do |openstack_param, value|
22
28
  instance_variable_set "@#{openstack_param}".to_sym, value
23
29
  end
24
30
 
25
- @auth_token ||= options[:openstack_auth_token]
31
+ @auth_token ||= options[:openstack_auth_token]
26
32
  @openstack_identity_public_endpoint = options[:openstack_identity_endpoint]
27
33
 
28
- @openstack_auth_uri = URI.parse(options[:openstack_auth_url])
29
- @openstack_must_reauthenticate = false
34
+ @openstack_auth_uri = URI.parse(options[:openstack_auth_url])
35
+ @openstack_must_reauthenticate = false
30
36
  @openstack_endpoint_type = options[:openstack_endpoint_type] || 'publicURL'
31
37
 
32
38
  @openstack_cache_ttl = options[:openstack_cache_ttl] || 0
33
39
 
34
- unless @auth_token
35
- missing_credentials = Array.new
40
+ if @auth_token
41
+ @openstack_can_reauthenticate = false
42
+ else
43
+ missing_credentials = []
36
44
 
37
45
  missing_credentials << :openstack_api_key unless @openstack_api_key
38
46
  unless @openstack_username || @openstack_userid
39
47
  missing_credentials << 'openstack_username or openstack_userid'
40
48
  end
41
49
  raise ArgumentError, "Missing required arguments: #{missing_credentials.join(', ')}" unless missing_credentials.empty?
50
+ @openstack_can_reauthenticate = true
42
51
  end
43
52
 
44
53
  @current_user = options[:current_user]
45
54
  @current_user_id = options[:current_user_id]
46
55
  @current_tenant = options[:current_tenant]
47
-
48
56
  end
49
57
 
50
58
  def credentials
51
- options = {
59
+ options = {
52
60
  :provider => 'openstack',
53
61
  :openstack_auth_url => @openstack_auth_uri.to_s,
54
62
  :openstack_auth_token => @auth_token,
@@ -56,63 +64,109 @@ module Fog
56
64
  :current_user => @current_user,
57
65
  :current_user_id => @current_user_id,
58
66
  :current_tenant => @current_tenant,
59
- :unscoped_token => @unscoped_token}
60
- openstack_options.merge options
67
+ :unscoped_token => @unscoped_token
68
+ }
69
+ openstack_options.merge options
70
+ end
71
+
72
+ def reload
73
+ @connection.reset
74
+ end
75
+
76
+ private
77
+
78
+ def request(params, parse_json = true)
79
+ retried = false
80
+ begin
81
+ response = @connection.request(params.merge(
82
+ :headers => {
83
+ 'Content-Type' => 'application/json',
84
+ 'Accept' => 'application/json',
85
+ 'X-Auth-Token' => @auth_token
86
+ }.merge!(params[:headers] || {}),
87
+ :path => "#{@path}/#{params[:path]}"
88
+ ))
89
+ rescue Excon::Errors::Unauthorized => error
90
+ # token expiration and token renewal possible
91
+ if error.response.body != 'Bad username or password' && @openstack_can_reauthenticate && !retried
92
+ @openstack_must_reauthenticate = true
93
+ authenticate
94
+ set_api_path
95
+ retried = true
96
+ retry
97
+ # bad credentials or token renewal not possible
98
+ else
99
+ raise error
100
+ end
101
+ rescue Excon::Errors::HTTPStatusError => error
102
+ raise case error
103
+ when Excon::Errors::NotFound
104
+ self.class.not_found_class.slurp(error)
105
+ else
106
+ error
107
+ end
61
108
  end
62
109
 
63
- def reload
64
- @connection.reset
110
+ if !response.body.empty? && response.get_header('Content-Type').match('application/json')
111
+ # TODO: remove parse_json in favor of :raw_body
112
+ response.body = Fog::JSON.decode(response.body) if parse_json && !params[:raw_body]
65
113
  end
66
114
 
67
- private
115
+ response
116
+ end
117
+
118
+ def set_api_path
119
+ # if the service supports multiple versions, do the selection here
120
+ end
68
121
 
69
- def openstack_options
70
- options={}
71
- # Create a hash of (:openstack_*, value) of all the @openstack_* instance variables
72
- self.instance_variables.select{|x|x.to_s.start_with? '@openstack'}.each do |openstack_param|
73
- option_name = openstack_param.to_s[1..-1]
74
- options[option_name.to_sym] = instance_variable_get openstack_param
75
- end
76
- options
122
+ def openstack_options
123
+ options = {}
124
+ # Create a hash of (:openstack_*, value) of all the @openstack_* instance variables
125
+ instance_variables.select { |x| x.to_s.start_with? '@openstack' }.each do |openstack_param|
126
+ option_name = openstack_param.to_s[1..-1]
127
+ options[option_name.to_sym] = instance_variable_get openstack_param
77
128
  end
129
+ options
130
+ end
78
131
 
79
- def authenticate
80
- if !@openstack_management_url || @openstack_must_reauthenticate
132
+ def authenticate
133
+ if !@openstack_management_url || @openstack_must_reauthenticate
81
134
 
82
- options = openstack_options
135
+ options = openstack_options
83
136
 
84
- options[:openstack_auth_token] = @openstack_must_reauthenticate ? nil : @openstack_auth_token
137
+ options[:openstack_auth_token] = @openstack_must_reauthenticate ? nil : @openstack_auth_token
85
138
 
86
- credentials = Fog::OpenStack.authenticate(options, @connection_options)
139
+ credentials = Fog::OpenStack.authenticate(options, @connection_options)
87
140
 
88
- @current_user = credentials[:user]
89
- @current_user_id = credentials[:current_user_id]
90
- @current_tenant = credentials[:tenant]
141
+ @current_user = credentials[:user]
142
+ @current_user_id = credentials[:current_user_id]
143
+ @current_tenant = credentials[:tenant]
91
144
 
92
- @openstack_must_reauthenticate = false
93
- @auth_token = credentials[:token]
94
- @openstack_management_url = credentials[:server_management_url]
95
- @unscoped_token = credentials[:unscoped_token]
96
- else
97
- @auth_token = @openstack_auth_token
98
- end
99
- @openstack_management_uri = URI.parse(@openstack_management_url)
145
+ @openstack_must_reauthenticate = false
146
+ @auth_token = credentials[:token]
147
+ @openstack_management_url = credentials[:server_management_url]
148
+ @unscoped_token = credentials[:unscoped_token]
149
+ else
150
+ @auth_token = @openstack_auth_token
151
+ end
152
+ @openstack_management_uri = URI.parse(@openstack_management_url)
100
153
 
101
- @host = @openstack_management_uri.host
102
- @path = @openstack_management_uri.path
103
- @path.sub!(/\/$/, '')
104
- @port = @openstack_management_uri.port
105
- @scheme = @openstack_management_uri.scheme
154
+ @host = @openstack_management_uri.host
155
+ @path = @openstack_management_uri.path
156
+ @path.sub!(%r{/$}, '')
157
+ @port = @openstack_management_uri.port
158
+ @scheme = @openstack_management_uri.scheme
106
159
 
107
- # Not all implementations have identity service in the catalog
108
- if @openstack_identity_public_endpoint || @openstack_management_url
109
- @identity_connection = Fog::Core::Connection.new(
160
+ # Not all implementations have identity service in the catalog
161
+ if @openstack_identity_public_endpoint || @openstack_management_url
162
+ @identity_connection = Fog::Core::Connection.new(
110
163
  @openstack_identity_public_endpoint || @openstack_management_url,
111
- false, @connection_options)
112
- end
113
-
114
- true
164
+ false, @connection_options
165
+ )
115
166
  end
167
+
168
+ true
116
169
  end
117
170
  end
118
171
  end
172
+ end
@@ -42,13 +42,14 @@ module Fog
42
42
  end
43
43
 
44
44
  class Real
45
+ include Fog::OpenStack::Core
46
+
45
47
  DEFAULT_SERVICE_TYPE_V3 = %w(identity_v3 identityv3 identity).collect(&:freeze).freeze
46
48
  DEFAULT_SERVICE_TYPE = %w(identity).collect(&:freeze).freeze
47
49
 
48
50
  def self.not_found_class
49
51
  Fog::Identity::OpenStack::NotFound
50
52
  end
51
- include Fog::OpenStack::Common
52
53
 
53
54
  def initialize(options = {})
54
55
  if options.respond_to?(:config_service?) && options.config_service?
@@ -1,5 +1,3 @@
1
-
2
- require 'fog/openstack/common'
3
1
  require 'fog/openstack/identity'
4
2
 
5
3
  module Fog
@@ -1,5 +1,3 @@
1
-
2
- require 'fog/openstack/common'
3
1
  require 'fog/openstack/identity'
4
2
 
5
3
  module Fog
@@ -1,5 +1,3 @@
1
- require 'fog/openstack/common'
2
-
3
1
  require 'fog/openstack/image'
4
2
 
5
3
  module Fog
@@ -103,7 +101,6 @@ module Fog
103
101
  def self.not_found_class
104
102
  Fog::Image::OpenStack::NotFound
105
103
  end
106
- include Fog::OpenStack::Common
107
104
 
108
105
  def initialize(options = {})
109
106
  initialize_identity options
@@ -115,16 +112,19 @@ module Fog
115
112
  @connection_options = options[:connection_options] || {}
116
113
 
117
114
  authenticate
115
+ set_api_path
116
+
117
+ @persistent = options[:persistent] || false
118
+ @connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
119
+ end
118
120
 
121
+ def set_api_path
119
122
  unless @path.match(SUPPORTED_VERSIONS)
120
123
  @path = Fog::OpenStack.get_supported_version_path(SUPPORTED_VERSIONS,
121
124
  @openstack_management_uri,
122
125
  @auth_token,
123
126
  @connection_options)
124
127
  end
125
-
126
- @persistent = options[:persistent] || false
127
- @connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
128
128
  end
129
129
  end
130
130
  end
@@ -1,5 +1,3 @@
1
- require 'fog/openstack/common'
2
-
3
1
  require 'fog/openstack/image'
4
2
 
5
3
  module Fog
@@ -107,10 +105,10 @@ module Fog
107
105
 
108
106
  class Real
109
107
  include Fog::OpenStack::Core
108
+
110
109
  def self.not_found_class
111
110
  Fog::Image::OpenStack::NotFound
112
111
  end
113
- include Fog::OpenStack::Common
114
112
 
115
113
  def initialize(options = {})
116
114
  initialize_identity options
@@ -122,16 +120,19 @@ module Fog
122
120
  @connection_options = options[:connection_options] || {}
123
121
 
124
122
  authenticate
123
+ set_api_path
125
124
 
125
+ @persistent = options[:persistent] || false
126
+ @connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
127
+ end
128
+
129
+ def set_api_path
126
130
  unless @path.match(SUPPORTED_VERSIONS)
127
131
  @path = Fog::OpenStack.get_supported_version_path(SUPPORTED_VERSIONS,
128
132
  @openstack_management_uri,
129
133
  @auth_token,
130
134
  @connection_options)
131
135
  end
132
-
133
- @persistent = options[:persistent] || false
134
- @connection = Fog::Core::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
135
136
  end
136
137
  end
137
138
  end