fog-openstack 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
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