fog-oraclecloud 0.1.12 → 0.1.13

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 (142) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +12 -10
  3. data/Gemfile +4 -4
  4. data/LICENSE +20 -20
  5. data/README.md +153 -153
  6. data/Rakefile +2 -2
  7. data/bin/console +14 -14
  8. data/bin/setup +8 -8
  9. data/fog-oracle.gemspec +32 -31
  10. data/lib/fog/oraclecloud.rb +29 -29
  11. data/lib/fog/oraclecloud/compute.rb +184 -184
  12. data/lib/fog/oraclecloud/database.rb +129 -129
  13. data/lib/fog/oraclecloud/java.rb +123 -115
  14. data/lib/fog/oraclecloud/models/compute/image.rb +43 -43
  15. data/lib/fog/oraclecloud/models/compute/image_list.rb +39 -39
  16. data/lib/fog/oraclecloud/models/compute/image_lists.rb +22 -22
  17. data/lib/fog/oraclecloud/models/compute/images.rb +22 -22
  18. data/lib/fog/oraclecloud/models/compute/instance.rb +74 -69
  19. data/lib/fog/oraclecloud/models/compute/instances.rb +22 -22
  20. data/lib/fog/oraclecloud/models/compute/object_plan.rb +16 -16
  21. data/lib/fog/oraclecloud/models/compute/object_plans.rb +12 -12
  22. data/lib/fog/oraclecloud/models/compute/orchestration.rb +89 -89
  23. data/lib/fog/oraclecloud/models/compute/orchestrations.rb +20 -20
  24. data/lib/fog/oraclecloud/models/compute/security_application.rb +42 -42
  25. data/lib/fog/oraclecloud/models/compute/security_applications.rb +22 -22
  26. data/lib/fog/oraclecloud/models/compute/security_list.rb +26 -26
  27. data/lib/fog/oraclecloud/models/compute/security_lists.rb +22 -22
  28. data/lib/fog/oraclecloud/models/compute/security_rule.rb +41 -41
  29. data/lib/fog/oraclecloud/models/compute/security_rules.rb +22 -22
  30. data/lib/fog/oraclecloud/models/compute/ssh_key.rb +37 -37
  31. data/lib/fog/oraclecloud/models/compute/ssh_keys.rb +22 -22
  32. data/lib/fog/oraclecloud/models/compute/volume.rb +47 -47
  33. data/lib/fog/oraclecloud/models/compute/volumes.rb +20 -20
  34. data/lib/fog/oraclecloud/models/database/backup.rb +37 -37
  35. data/lib/fog/oraclecloud/models/database/backups.rb +30 -30
  36. data/lib/fog/oraclecloud/models/database/instance.rb +331 -331
  37. data/lib/fog/oraclecloud/models/database/instances.rb +25 -25
  38. data/lib/fog/oraclecloud/models/database/patch.rb +34 -34
  39. data/lib/fog/oraclecloud/models/database/patches.rb +18 -18
  40. data/lib/fog/oraclecloud/models/database/recoveries.rb +26 -26
  41. data/lib/fog/oraclecloud/models/database/recovery.rb +43 -43
  42. data/lib/fog/oraclecloud/models/database/server.rb +28 -28
  43. data/lib/fog/oraclecloud/models/database/servers.rb +18 -18
  44. data/lib/fog/oraclecloud/models/database/snapshot.rb +60 -60
  45. data/lib/fog/oraclecloud/models/database/snapshots.rb +22 -22
  46. data/lib/fog/oraclecloud/models/java/database.rb +17 -17
  47. data/lib/fog/oraclecloud/models/java/databases.rb +17 -17
  48. data/lib/fog/oraclecloud/models/java/instance.rb +269 -265
  49. data/lib/fog/oraclecloud/models/java/instances.rb +23 -23
  50. data/lib/fog/oraclecloud/models/java/server.rb +62 -62
  51. data/lib/fog/oraclecloud/models/java/servers.rb +25 -25
  52. data/lib/fog/oraclecloud/models/soa/instance.rb +163 -163
  53. data/lib/fog/oraclecloud/models/soa/instances.rb +54 -54
  54. data/lib/fog/oraclecloud/models/storage/container.rb +33 -33
  55. data/lib/fog/oraclecloud/models/storage/containers.rb +24 -24
  56. data/lib/fog/oraclecloud/models/storage/object.rb +27 -27
  57. data/lib/fog/oraclecloud/models/storage/objects.rb +27 -27
  58. data/lib/fog/oraclecloud/requests/compute/create_image.rb +30 -30
  59. data/lib/fog/oraclecloud/requests/compute/create_image_list.rb +27 -27
  60. data/lib/fog/oraclecloud/requests/compute/create_instance.rb +53 -53
  61. data/lib/fog/oraclecloud/requests/compute/create_orchestration.rb +82 -82
  62. data/lib/fog/oraclecloud/requests/compute/create_security_application.rb +28 -28
  63. data/lib/fog/oraclecloud/requests/compute/create_security_rule.rb +29 -29
  64. data/lib/fog/oraclecloud/requests/compute/create_ssh_key.rb +46 -46
  65. data/lib/fog/oraclecloud/requests/compute/create_volume.rb +28 -28
  66. data/lib/fog/oraclecloud/requests/compute/delete_image.rb +19 -19
  67. data/lib/fog/oraclecloud/requests/compute/delete_image_list.rb +19 -19
  68. data/lib/fog/oraclecloud/requests/compute/delete_instance.rb +33 -33
  69. data/lib/fog/oraclecloud/requests/compute/delete_orchestration.rb +36 -36
  70. data/lib/fog/oraclecloud/requests/compute/delete_security_application.rb +20 -20
  71. data/lib/fog/oraclecloud/requests/compute/delete_security_rule.rb +20 -20
  72. data/lib/fog/oraclecloud/requests/compute/delete_ssh_key.rb +32 -32
  73. data/lib/fog/oraclecloud/requests/compute/get_image.rb +21 -21
  74. data/lib/fog/oraclecloud/requests/compute/get_image_list.rb +21 -21
  75. data/lib/fog/oraclecloud/requests/compute/get_instance.rb +45 -45
  76. data/lib/fog/oraclecloud/requests/compute/get_orchestration.rb +39 -39
  77. data/lib/fog/oraclecloud/requests/compute/get_security_application.rb +20 -20
  78. data/lib/fog/oraclecloud/requests/compute/get_security_rule.rb +20 -20
  79. data/lib/fog/oraclecloud/requests/compute/get_ssh_key.rb +39 -39
  80. data/lib/fog/oraclecloud/requests/compute/list_image_lists.rb +29 -29
  81. data/lib/fog/oraclecloud/requests/compute/list_images.rb +16 -16
  82. data/lib/fog/oraclecloud/requests/compute/list_instances.rb +28 -28
  83. data/lib/fog/oraclecloud/requests/compute/list_orchestrations.rb +28 -28
  84. data/lib/fog/oraclecloud/requests/compute/list_security_applications.rb +21 -21
  85. data/lib/fog/oraclecloud/requests/compute/list_security_lists.rb +16 -16
  86. data/lib/fog/oraclecloud/requests/compute/list_security_rules.rb +21 -21
  87. data/lib/fog/oraclecloud/requests/compute/list_ssh_keys.rb +29 -29
  88. data/lib/fog/oraclecloud/requests/compute/list_volumes.rb +16 -16
  89. data/lib/fog/oraclecloud/requests/compute/start_orchestration.rb +39 -39
  90. data/lib/fog/oraclecloud/requests/compute/stop_orchestration.rb +39 -39
  91. data/lib/fog/oraclecloud/requests/compute/update_image.rb +27 -27
  92. data/lib/fog/oraclecloud/requests/compute/update_image_list.rb +27 -27
  93. data/lib/fog/oraclecloud/requests/compute/update_orchestration.rb +80 -80
  94. data/lib/fog/oraclecloud/requests/compute/update_ssh_key.rb +49 -49
  95. data/lib/fog/oraclecloud/requests/database/backup_instance.rb +45 -45
  96. data/lib/fog/oraclecloud/requests/database/create_instance.rb +101 -101
  97. data/lib/fog/oraclecloud/requests/database/create_snapshot.rb +50 -50
  98. data/lib/fog/oraclecloud/requests/database/delete_instance.rb +26 -26
  99. data/lib/fog/oraclecloud/requests/database/delete_snapshot.rb +26 -26
  100. data/lib/fog/oraclecloud/requests/database/get_instance.rb +62 -62
  101. data/lib/fog/oraclecloud/requests/database/get_instance_from_job.rb +31 -31
  102. data/lib/fog/oraclecloud/requests/database/get_snapshot.rb +43 -43
  103. data/lib/fog/oraclecloud/requests/database/list_backups.rb +39 -39
  104. data/lib/fog/oraclecloud/requests/database/list_instances.rb +29 -29
  105. data/lib/fog/oraclecloud/requests/database/list_patches.rb +51 -51
  106. data/lib/fog/oraclecloud/requests/database/list_recoveries.rb +40 -40
  107. data/lib/fog/oraclecloud/requests/database/list_servers.rb +27 -27
  108. data/lib/fog/oraclecloud/requests/database/list_snapshots.rb +27 -27
  109. data/lib/fog/oraclecloud/requests/database/recover_instance.rb +83 -83
  110. data/lib/fog/oraclecloud/requests/database/scale_instance.rb +40 -40
  111. data/lib/fog/oraclecloud/requests/java/create_instance.rb +156 -87
  112. data/lib/fog/oraclecloud/requests/java/delete_instance.rb +37 -37
  113. data/lib/fog/oraclecloud/requests/java/get_instance.rb +43 -43
  114. data/lib/fog/oraclecloud/requests/java/get_server.rb +42 -42
  115. data/lib/fog/oraclecloud/requests/java/list_instances.rb +29 -29
  116. data/lib/fog/oraclecloud/requests/java/list_servers.rb +30 -30
  117. data/lib/fog/oraclecloud/requests/java/scale_a_node.rb +45 -45
  118. data/lib/fog/oraclecloud/requests/java/scale_in_a_cluster.rb +35 -35
  119. data/lib/fog/oraclecloud/requests/java/scale_out_a_cluster.rb +38 -38
  120. data/lib/fog/oraclecloud/requests/soa/create_instance.rb +71 -71
  121. data/lib/fog/oraclecloud/requests/soa/delete_instance.rb +35 -35
  122. data/lib/fog/oraclecloud/requests/soa/get_instance.rb +42 -42
  123. data/lib/fog/oraclecloud/requests/soa/get_job_status.rb +22 -22
  124. data/lib/fog/oraclecloud/requests/soa/list_instances.rb +29 -29
  125. data/lib/fog/oraclecloud/requests/storage/create_container.rb +41 -41
  126. data/lib/fog/oraclecloud/requests/storage/delete_container.rb +15 -15
  127. data/lib/fog/oraclecloud/requests/storage/get_container.rb +63 -63
  128. data/lib/fog/oraclecloud/requests/storage/list_containers.rb +27 -27
  129. data/lib/fog/oraclecloud/soa.rb +106 -106
  130. data/lib/fog/oraclecloud/storage.rb +98 -98
  131. data/lib/fog/oraclecloud/version.rb +5 -5
  132. data/tests/helper.rb +5 -3
  133. data/tests/helpers/mock_helper.rb +14 -14
  134. data/tests/requests/compute_tests.rb +9 -9
  135. data/tests/requests/database_tests.rb +241 -241
  136. data/tests/requests/instance_tests.rb +68 -61
  137. data/tests/requests/java_tests.rb +149 -109
  138. data/tests/requests/orchestrations_tests.rb +90 -90
  139. data/tests/requests/soa_tests.rb +151 -151
  140. data/tests/requests/ssh_keys_tests.rb +53 -53
  141. data/tests/requests/storage_tests.rb +54 -54
  142. metadata +17 -3
data/fog-oracle.gemspec CHANGED
@@ -1,31 +1,32 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'fog/oraclecloud/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "fog-oraclecloud"
8
- spec.version = Fog::OracleCloud::VERSION
9
- spec.authors = ["Joel Nation"]
10
- spec.email = ["joel.nation@oracle.com"]
11
-
12
- spec.summary = %q{Module for the 'fog' gem to support Oracle Cloud Services.}
13
- spec.description = %q{This library can be used as a module for `fog` or as standalone provider to use the Oracle Cloud Service in applications.}
14
- spec.homepage = "http://github.com/Joelith/fog-oraclecloud"
15
- spec.license = "MIT"
16
-
17
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
- spec.bindir = "exe"
19
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
- spec.require_paths = ["lib"]
21
-
22
- spec.add_development_dependency "bundler", "~> 1.12"
23
- spec.add_development_dependency "rake", "~> 10.0"
24
- spec.add_development_dependency "shindo", "~> 0.3"
25
-
26
- spec.add_dependency 'fog-core', '~> 1.38'
27
- spec.add_dependency 'fog-json', '~>1.0'
28
- spec.add_dependency 'fog-xml', '~>0.1'
29
- spec.add_dependency 'ipaddress', '~>0.8'
30
- spec.add_dependency 'mime-types'
31
- end
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'fog/oraclecloud/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "fog-oraclecloud"
8
+ spec.version = Fog::OracleCloud::VERSION
9
+ spec.authors = ["Joel Nation"]
10
+ spec.email = ["joel.nation@oracle.com"]
11
+
12
+ spec.summary = %q{Module for the 'fog' gem to support Oracle Cloud Services.}
13
+ spec.description = %q{This library can be used as a module for `fog` or as standalone provider to use the Oracle Cloud Service in applications.}
14
+ spec.homepage = "http://github.com/Joelith/fog-oraclecloud"
15
+ spec.license = "MIT"
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
+ spec.bindir = "exe"
19
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.require_paths = ["lib"]
21
+
22
+ spec.add_development_dependency "bundler", "~> 1.12"
23
+ spec.add_development_dependency "rake", "~> 10.0"
24
+ spec.add_development_dependency "shindo", "~> 0.3"
25
+ spec.add_development_dependency "byebug"
26
+
27
+ spec.add_dependency 'fog-core', '~> 1.38'
28
+ spec.add_dependency 'fog-json', '~>1.0'
29
+ spec.add_dependency 'fog-xml', '~>0.1'
30
+ spec.add_dependency 'ipaddress', '~>0.8'
31
+ spec.add_dependency 'mime-types'
32
+ end
@@ -1,29 +1,29 @@
1
- require 'fog/core'
2
- require 'fog/json'
3
- require 'fog/xml'
4
-
5
- require File.expand_path('../oraclecloud/version', __FILE__)
6
-
7
- module Fog
8
- module Compute
9
- autoload :OracleCloud, File.expand_path('../oraclecloud/compute', __FILE__)
10
- end
11
-
12
- module Storage
13
- autoload :OracleCloud, File.expand_path('../oraclecloud/storage', __FILE__)
14
- end
15
-
16
- module OracleCloud
17
- extend Fog::Provider
18
-
19
- autoload :Java, File.expand_path('../oraclecloud/java', __FILE__)
20
- autoload :Database, File.expand_path('../oraclecloud/database', __FILE__)
21
- autoload :SOA, File.expand_path('../oraclecloud/soa', __FILE__)
22
-
23
- service(:compute, 'Compute')
24
- service(:storage, 'Storage')
25
- service(:java, 'Java')
26
- service(:database, 'Database')
27
- service(:soa, 'SOA')
28
- end
29
- end
1
+ require 'fog/core'
2
+ require 'fog/json'
3
+ require 'fog/xml'
4
+
5
+ require File.expand_path('../oraclecloud/version', __FILE__)
6
+
7
+ module Fog
8
+ module Compute
9
+ autoload :OracleCloud, File.expand_path('../oraclecloud/compute', __FILE__)
10
+ end
11
+
12
+ module Storage
13
+ autoload :OracleCloud, File.expand_path('../oraclecloud/storage', __FILE__)
14
+ end
15
+
16
+ module OracleCloud
17
+ extend Fog::Provider
18
+
19
+ autoload :Java, File.expand_path('../oraclecloud/java', __FILE__)
20
+ autoload :Database, File.expand_path('../oraclecloud/database', __FILE__)
21
+ autoload :SOA, File.expand_path('../oraclecloud/soa', __FILE__)
22
+
23
+ service(:compute, 'Compute')
24
+ service(:storage, 'Storage')
25
+ service(:java, 'Java')
26
+ service(:database, 'Database')
27
+ service(:soa, 'SOA')
28
+ end
29
+ end
@@ -1,185 +1,185 @@
1
- module Fog
2
- module Compute
3
- class OracleCloud < Fog::Service
4
- requires :oracle_username, :oracle_password, :oracle_domain, :oracle_compute_api
5
-
6
- model_path 'fog/oraclecloud/models/compute'
7
- model :security_application
8
- collection :security_applications
9
-
10
- model :security_rule
11
- collection :security_rules
12
-
13
- model :security_list
14
- collection :security_lists
15
-
16
- model :image
17
- collection :images
18
-
19
- model :image_list
20
- collection :image_lists
21
-
22
- model :instance
23
- collection :instances
24
-
25
- model :ssh_key
26
- collection :ssh_keys
27
-
28
- model :object_plan
29
- collection :object_plans
30
- model :orchestration
31
- collection :orchestrations
32
-
33
- model :volume
34
- collection :volumes
35
-
36
- request_path 'fog/oraclecloud/requests/compute'
37
- request :list_security_applications
38
- request :create_security_application
39
- request :delete_security_application
40
- request :get_security_application
41
-
42
- request :list_security_rules
43
- request :create_security_rule
44
- request :delete_security_rule
45
- request :get_security_rule
46
-
47
- request :list_security_lists
48
-
49
- request :get_image
50
- request :create_image
51
- request :delete_image
52
- request :list_images
53
-
54
- request :list_image_lists
55
- request :get_image_list
56
- request :create_image_list
57
- request :update_image_list
58
- request :delete_image_list
59
-
60
- request :list_instances
61
- request :get_instance
62
- request :create_instance
63
- request :delete_instance
64
-
65
- request :list_ssh_keys
66
- request :get_ssh_key
67
- request :create_ssh_key
68
- request :delete_ssh_key
69
- request :update_ssh_key
70
-
71
- request :get_orchestration
72
- request :list_orchestrations
73
- request :create_orchestration
74
- request :update_orchestration
75
- request :delete_orchestration
76
- request :start_orchestration
77
- request :stop_orchestration
78
-
79
- request :list_volumes
80
- request :create_volume
81
-
82
- class Real
83
-
84
- def initialize(options={})
85
- @username = options[:oracle_username]
86
- @password = options[:oracle_password]
87
- @identity_domain = options[:oracle_domain]
88
- @api_endpoint = options[:oracle_compute_api]
89
-
90
- @connection = Fog::XML::Connection.new(@api_endpoint)
91
-
92
- # Get authentication token
93
- authenticate
94
- end
95
-
96
- def authenticate()
97
- begin
98
- response = @connection.request({
99
- :expects => 204,
100
- :method => 'POST',
101
- :path => "/authenticate/",
102
- :headers => {
103
- 'Content-Type' => 'application/oracle-compute-v3+json'
104
- },
105
- :body => Fog::JSON.encode({
106
- 'user' => "/Compute-#{@identity_domain}/#{@username}",
107
- 'password'=> @password
108
- })
109
- })
110
- rescue Excon::Errors::HTTPStatusError => error
111
- error
112
- end
113
- if response.nil? || !response.headers['Set-Cookie'] then
114
- raise Error.new('Could not authenticate to Compute Cloud Service. Check your athentication details in your config')
115
- end
116
- @auth_cookie = response.headers['Set-Cookie']
117
- end
118
-
119
- def request(params, parse_json = true, &block)
120
- begin
121
- response = @connection.request(params.merge!({
122
- :headers => {
123
- 'Cookie' => @auth_cookie
124
- }.merge!(params[:headers] || {})
125
- }), &block)
126
- rescue Excon::Errors::HTTPStatusError => error
127
- raise case error
128
- when Excon::Errors::NotFound
129
- Fog::Compute::OracleCloud::NotFound.slurp(error)
130
- when Excon::Errors::Conflict
131
- data = Fog::JSON.decode(error.response.body)
132
- raise Error.new(data['message'])
133
- else
134
- error
135
- end
136
- end
137
- if !response.body.empty? && parse_json
138
- response.body = Fog::JSON.decode(response.body)
139
- end
140
- response
141
- end
142
- end
143
-
144
- class Mock
145
- def initialize(options={})
146
- @username = options[:oracle_username]
147
- @password = options[:oracle_password]
148
- @identity_domain = options[:oracle_domain]
149
- @api_endpoint = options[:oracle_compute_api]
150
-
151
- end
152
-
153
- def self.data
154
- @data ||= {
155
- :instances => {},
156
- :sshkeys => {},
157
- :orchestrations => {},
158
- :image_lists => {
159
- "/oracle/public/Oracle_Linux_7" => {
160
- "name" => "/oracle/public/Oracle_Linux_7",
161
- "default" => 1,
162
- "description" => "Oracle Linux 7",
163
- "entries" =>[{
164
- "attributes" => {},
165
- "version" => 1,
166
- "machineimages" => ["/oracle/public/OracleLinux7"],
167
- "uri" => "https://@api_endpoint:443/imagelist/oracle/public/OracleLinux7"
168
- }]
169
- }
170
- },
171
- :deleted_at => {}
172
- }
173
- end
174
-
175
- def self.reset
176
- @data = nil
177
- end
178
-
179
- def data
180
- self.class.data
181
- end
182
- end
183
- end
184
- end
1
+ module Fog
2
+ module Compute
3
+ class OracleCloud < Fog::Service
4
+ requires :oracle_username, :oracle_password, :oracle_domain, :oracle_compute_api
5
+
6
+ model_path 'fog/oraclecloud/models/compute'
7
+ model :security_application
8
+ collection :security_applications
9
+
10
+ model :security_rule
11
+ collection :security_rules
12
+
13
+ model :security_list
14
+ collection :security_lists
15
+
16
+ model :image
17
+ collection :images
18
+
19
+ model :image_list
20
+ collection :image_lists
21
+
22
+ model :instance
23
+ collection :instances
24
+
25
+ model :ssh_key
26
+ collection :ssh_keys
27
+
28
+ model :object_plan
29
+ collection :object_plans
30
+ model :orchestration
31
+ collection :orchestrations
32
+
33
+ model :volume
34
+ collection :volumes
35
+
36
+ request_path 'fog/oraclecloud/requests/compute'
37
+ request :list_security_applications
38
+ request :create_security_application
39
+ request :delete_security_application
40
+ request :get_security_application
41
+
42
+ request :list_security_rules
43
+ request :create_security_rule
44
+ request :delete_security_rule
45
+ request :get_security_rule
46
+
47
+ request :list_security_lists
48
+
49
+ request :get_image
50
+ request :create_image
51
+ request :delete_image
52
+ request :list_images
53
+
54
+ request :list_image_lists
55
+ request :get_image_list
56
+ request :create_image_list
57
+ request :update_image_list
58
+ request :delete_image_list
59
+
60
+ request :list_instances
61
+ request :get_instance
62
+ request :create_instance
63
+ request :delete_instance
64
+
65
+ request :list_ssh_keys
66
+ request :get_ssh_key
67
+ request :create_ssh_key
68
+ request :delete_ssh_key
69
+ request :update_ssh_key
70
+
71
+ request :get_orchestration
72
+ request :list_orchestrations
73
+ request :create_orchestration
74
+ request :update_orchestration
75
+ request :delete_orchestration
76
+ request :start_orchestration
77
+ request :stop_orchestration
78
+
79
+ request :list_volumes
80
+ request :create_volume
81
+
82
+ class Real
83
+
84
+ def initialize(options={})
85
+ @username = options[:oracle_username]
86
+ @password = options[:oracle_password]
87
+ @identity_domain = options[:oracle_domain]
88
+ @api_endpoint = options[:oracle_compute_api]
89
+
90
+ @connection = Fog::XML::Connection.new(@api_endpoint)
91
+
92
+ # Get authentication token
93
+ authenticate
94
+ end
95
+
96
+ def authenticate()
97
+ begin
98
+ response = @connection.request({
99
+ :expects => 204,
100
+ :method => 'POST',
101
+ :path => "/authenticate/",
102
+ :headers => {
103
+ 'Content-Type' => 'application/oracle-compute-v3+json'
104
+ },
105
+ :body => Fog::JSON.encode({
106
+ 'user' => "/Compute-#{@identity_domain}/#{@username}",
107
+ 'password'=> @password
108
+ })
109
+ })
110
+ rescue Excon::Errors::HTTPStatusError => error
111
+ error
112
+ end
113
+ if response.nil? || !response.headers['Set-Cookie'] then
114
+ raise Error.new('Could not authenticate to Compute Cloud Service. Check your athentication details in your config')
115
+ end
116
+ @auth_cookie = response.headers['Set-Cookie']
117
+ end
118
+
119
+ def request(params, parse_json = true, &block)
120
+ begin
121
+ response = @connection.request(params.merge!({
122
+ :headers => {
123
+ 'Cookie' => @auth_cookie
124
+ }.merge!(params[:headers] || {})
125
+ }), &block)
126
+ rescue Excon::Errors::HTTPStatusError => error
127
+ raise case error
128
+ when Excon::Errors::NotFound
129
+ Fog::Compute::OracleCloud::NotFound.slurp(error)
130
+ when Excon::Errors::Conflict
131
+ data = Fog::JSON.decode(error.response.body)
132
+ raise Error.new(data['message'])
133
+ else
134
+ error
135
+ end
136
+ end
137
+ if !response.body.empty? && parse_json
138
+ response.body = Fog::JSON.decode(response.body)
139
+ end
140
+ response
141
+ end
142
+ end
143
+
144
+ class Mock
145
+ def initialize(options={})
146
+ @username = options[:oracle_username]
147
+ @password = options[:oracle_password]
148
+ @identity_domain = options[:oracle_domain]
149
+ @api_endpoint = options[:oracle_compute_api]
150
+
151
+ end
152
+
153
+ def self.data
154
+ @data ||= {
155
+ :instances => {},
156
+ :sshkeys => {},
157
+ :orchestrations => {},
158
+ :image_lists => {
159
+ "/oracle/public/Oracle_Linux_7" => {
160
+ "name" => "/oracle/public/Oracle_Linux_7",
161
+ "default" => 1,
162
+ "description" => "Oracle Linux 7",
163
+ "entries" =>[{
164
+ "attributes" => {},
165
+ "version" => 1,
166
+ "machineimages" => ["/oracle/public/OracleLinux7"],
167
+ "uri" => "https://@api_endpoint:443/imagelist/oracle/public/OracleLinux7"
168
+ }]
169
+ }
170
+ },
171
+ :deleted_at => {}
172
+ }
173
+ end
174
+
175
+ def self.reset
176
+ @data = nil
177
+ end
178
+
179
+ def data
180
+ self.class.data
181
+ end
182
+ end
183
+ end
184
+ end
185
185
  end