fog-oraclecloud 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/fog/oraclecloud/database.rb +8 -0
- data/lib/fog/oraclecloud/java.rb +23 -0
- data/lib/fog/oraclecloud/models/database/instance.rb +157 -19
- data/lib/fog/oraclecloud/models/java/database.rb +17 -0
- data/lib/fog/oraclecloud/models/java/databases.rb +17 -0
- data/lib/fog/oraclecloud/models/java/instance.rb +159 -17
- data/lib/fog/oraclecloud/models/java/server.rb +7 -7
- data/lib/fog/oraclecloud/requests/database/backup_instance.rb +6 -3
- data/lib/fog/oraclecloud/requests/database/create_instance.rb +52 -28
- data/lib/fog/oraclecloud/requests/database/list_backups.rb +4 -2
- data/lib/fog/oraclecloud/requests/database/list_recoveries.rb +2 -0
- data/lib/fog/oraclecloud/requests/database/list_servers.rb +3 -1
- data/lib/fog/oraclecloud/requests/database/recover_instance.rb +3 -0
- data/lib/fog/oraclecloud/requests/java/create_instance.rb +63 -33
- data/lib/fog/oraclecloud/requests/java/list_servers.rb +13 -1
- data/lib/fog/oraclecloud/version.rb +1 -1
- data/tests/requests/database_tests.rb +10 -2
- data/tests/requests/java_tests.rb +12 -8
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6e4b239a1b6936caca8c4f0a8f3c89ff7d697254
|
4
|
+
data.tar.gz: 6c3243744a58ce2da4b0b70e60b477faf8316a65
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3e67446447c21e58e428792e5ca5779f1474d21e9c97d6ddcb9209f3ac6aab85d5d81d96913a84a94d7e14657ea29d16c546a264ed6b42c77390a8ff66803d6
|
7
|
+
data.tar.gz: 99802541bd95b63e88779b049872c4f87c6cdd01ac4aca5625f87b9c2c1042a1e64f4c064d9144cb0f65a72b4095fc5720c0fddee2c44396fa10cce7ad289a23
|
@@ -46,6 +46,14 @@ module Fog
|
|
46
46
|
@connection = Fog::XML::Connection.new(region_url)
|
47
47
|
end
|
48
48
|
|
49
|
+
def username
|
50
|
+
@username
|
51
|
+
end
|
52
|
+
|
53
|
+
def password
|
54
|
+
@password
|
55
|
+
end
|
56
|
+
|
49
57
|
def auth_header
|
50
58
|
auth_header ||= 'Basic ' + Base64.encode64("#{@username}:#{@password}").gsub("\n",'')
|
51
59
|
end
|
data/lib/fog/oraclecloud/java.rb
CHANGED
@@ -27,6 +27,15 @@ module Fog
|
|
27
27
|
@connection = Fog::XML::Connection.new(region_url)
|
28
28
|
end
|
29
29
|
|
30
|
+
def username
|
31
|
+
@username
|
32
|
+
end
|
33
|
+
|
34
|
+
def password
|
35
|
+
@password
|
36
|
+
end
|
37
|
+
|
38
|
+
|
30
39
|
def auth_header
|
31
40
|
auth_header ||= 'Basic ' + Base64.encode64("#{@username}:#{@password}").gsub("\n",'')
|
32
41
|
end
|
@@ -63,11 +72,25 @@ module Fog
|
|
63
72
|
@username = options[:oracle_username]
|
64
73
|
@password = options[:oracle_password]
|
65
74
|
@identity_domain = options[:oracle_domain]
|
75
|
+
@region_url = options[:oracle_region] == 'emea' ? 'https://jcs.emea.oraclecloud.com' : 'https://jaas.oraclecloud.com'
|
76
|
+
end
|
77
|
+
|
78
|
+
def username
|
79
|
+
@username
|
80
|
+
end
|
81
|
+
|
82
|
+
def password
|
83
|
+
@password
|
84
|
+
end
|
85
|
+
|
86
|
+
def region_url
|
87
|
+
@region_url
|
66
88
|
end
|
67
89
|
|
68
90
|
def self.data
|
69
91
|
@data ||= {
|
70
92
|
:instances => {},
|
93
|
+
:servers => {},
|
71
94
|
:deleted_at => {},
|
72
95
|
:created_at => {}
|
73
96
|
}
|
@@ -4,30 +4,29 @@ module Fog
|
|
4
4
|
module OracleCloud
|
5
5
|
class Database
|
6
6
|
class Instance < Fog::Model
|
7
|
-
identity :service_name
|
7
|
+
identity :service_name, :aliases=>'serviceName'
|
8
8
|
|
9
9
|
attribute :version
|
10
10
|
attribute :status
|
11
|
-
attribute :description
|
12
|
-
attribute :
|
13
|
-
attribute :
|
11
|
+
attribute :description, :aliases=>'serviceDescription'
|
12
|
+
attribute :domain_name, :aliases=>'domainName'
|
13
|
+
attribute :creation_date
|
14
14
|
attribute :last_modified_time
|
15
|
-
attribute :created_by
|
15
|
+
attribute :created_by, :aliases=>'creator'
|
16
16
|
attribute :sm_plugin_version
|
17
17
|
attribute :service_uri
|
18
18
|
attribute :num_nodes
|
19
|
-
attribute :level
|
19
|
+
attribute :level, :aliases=>'serviceLevel'
|
20
20
|
attribute :edition
|
21
21
|
attribute :shape
|
22
|
-
attribute :subscriptionType
|
22
|
+
attribute :subscription_type, :aliases=>['subscriptionType', 'subscription']
|
23
23
|
attribute :creation_job_id
|
24
24
|
attribute :num_ip_reservations
|
25
25
|
attribute :backup_destination
|
26
|
-
attribute :cloud_storage_container
|
26
|
+
attribute :cloud_storage_container, :aliases=>'cloudStorageContainer'
|
27
27
|
attribute :failover_database
|
28
|
-
attribute :rac_database
|
29
28
|
attribute :sid
|
30
|
-
attribute :pdbName
|
29
|
+
attribute :pdb_name, :aliases=>'pdbName'
|
31
30
|
attribute :listenerPort
|
32
31
|
attribute :timezone
|
33
32
|
attribute :em_url
|
@@ -37,10 +36,110 @@ module Fog
|
|
37
36
|
attribute :glassfish_url
|
38
37
|
attribute :dbaasmonitor_url
|
39
38
|
attribute :compute_site_name
|
39
|
+
attribute :charset
|
40
|
+
attribute :ncharset
|
41
|
+
attribute :is_rac, :aliases=>['isRac', 'rac_database']
|
42
|
+
attribute :total_shared_storage, :aliases=>'totalSharedStorage'
|
43
|
+
attribute :service_type, :aliases=>'serviceType'
|
44
|
+
|
45
|
+
# The following are only used to create an instance and are not returned in the list or get actions
|
46
|
+
attribute :ssh_key, :aliases=>'vmPublicKeyText'
|
47
|
+
attribute :admin_password
|
48
|
+
attribute :cloud_storage_pwd, :aliases=>'cloudStoragePwd'
|
49
|
+
attribute :cloud_storage_user, :aliases=>'cloudStorageUser'
|
50
|
+
attribute :cloud_storage_container_if_missing, :aliases=>'cloudStorageContainerIfMissing'
|
51
|
+
attribute :disaster_recovery, :aliases=>'disasterRecovery'
|
52
|
+
attribute :golden_gate, :aliases=>'goldenGate'
|
53
|
+
attribute :usable_storage, :aliases=>'usableStorage'
|
54
|
+
|
55
|
+
def edition=(value)
|
56
|
+
if %w(SE EE EE_HP EE_EP).include? value then
|
57
|
+
attributes[:edition]=value
|
58
|
+
else
|
59
|
+
raise ArgumentError, "Invalid Edition. Valid values - SE, EE, EE_HP, EE_EP"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def level=(value)
|
64
|
+
if %w(PAAS BASIC).include? value then
|
65
|
+
attributes[:level]=value
|
66
|
+
else
|
67
|
+
raise ArgumentError, "Invalid level. Valid values - PAAS or BASIC"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def shape=(value)
|
72
|
+
if %w(oc3 oc4 oc5 oc6 oc1m oc2m oc3m oc4m).include? value then
|
73
|
+
attributes[:shape]=value
|
74
|
+
else
|
75
|
+
raise ArgumentError, "Invalid Shape. Valid values - oc3, oc4, oc5, oc6, oc1m, oc2m, oc3m or oc4m"
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def subscription_type=(value)
|
80
|
+
if %w(HOURLY MONTHLY).include? value then
|
81
|
+
attributes[:subscription_type]=value
|
82
|
+
else
|
83
|
+
raise ArgumentError, "Invalid subscription type. Valid values - HOURLY or MONTHLY"
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def backup_destination=(value)
|
88
|
+
if %w(BOTH OSS NONE).include? value then
|
89
|
+
attributes[:backup_destination]=value
|
90
|
+
else
|
91
|
+
raise ArgumentError, "Invalid backup destination. Valid values - BOTH, OSS or NONE"
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def disaster_recovery=(value)
|
96
|
+
if %w(yes no).include? value then
|
97
|
+
attributes[:disaster_recovery]=value
|
98
|
+
else
|
99
|
+
raise ArgumentError, "Invalid disaster recovery value"
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def failover_database=(value)
|
104
|
+
if value == true
|
105
|
+
value = 'yes'
|
106
|
+
elsif value == false || value.nil?
|
107
|
+
value = 'no'
|
108
|
+
else
|
109
|
+
raise ArgumentError, "Invalid failover database value (#{value})"
|
110
|
+
end
|
111
|
+
attributes[:failover_database] = value
|
112
|
+
end
|
113
|
+
|
114
|
+
def is_rac=(value)
|
115
|
+
if value == true
|
116
|
+
value = 'yes'
|
117
|
+
elsif value == false || value.nil?
|
118
|
+
value = 'no'
|
119
|
+
else
|
120
|
+
raise ArgumentError, "Invalid is_rac value (#{value})"
|
121
|
+
end
|
122
|
+
attributes[:is_rac]=value
|
123
|
+
end
|
124
|
+
|
125
|
+
def ncharset=(value)
|
126
|
+
if value.nil? then
|
127
|
+
attributes[:ncharset] = 'AL16UTF16'
|
128
|
+
elsif %w(AL16UTF16 UTF8).include? value then
|
129
|
+
attributes[:ncharset]=value
|
130
|
+
else
|
131
|
+
raise ArgumentError, "Invalid ncharset"
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
def usable_storage=(value)
|
136
|
+
if value.to_f >= 15 && value.to_f <= 1000 then
|
137
|
+
attributes[:usable_storage]=value
|
138
|
+
else
|
139
|
+
raise ArgumentError, "Usable storage value is invalid: #{value.to_f}"
|
140
|
+
end
|
141
|
+
end
|
40
142
|
|
41
|
-
# The following are only used to create an instance and are not returned in the list action
|
42
|
-
attribute :vmPublicKey
|
43
|
-
attribute :parameters
|
44
143
|
|
45
144
|
def clean_name
|
46
145
|
name.sub %r{\/.*\/}, ''
|
@@ -139,13 +238,52 @@ module Fog
|
|
139
238
|
private
|
140
239
|
|
141
240
|
def create
|
142
|
-
requires :service_name, :edition, :
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
241
|
+
requires :service_name, :edition, :ssh_key, :shape, :version, :admin_password, :backup_destination
|
242
|
+
|
243
|
+
if backup_destination != 'NONE' then
|
244
|
+
if cloud_storage_container.nil? then
|
245
|
+
cloud_storage_if_missing = true
|
246
|
+
stor_name = "#{service_name}_Backup"
|
247
|
+
else
|
248
|
+
stor_name = cloud_storage_container
|
249
|
+
end
|
250
|
+
stor_user = cloud_storage_user || service.username
|
251
|
+
stor_pwd = cloud_storage_pwd || service.password
|
252
|
+
end
|
253
|
+
|
254
|
+
if !disaster_recovery.nil? && (failover_database.nil? || failover_database == 'no') then raise ArgumentError, 'Can\'t set disaster recovery option without failover_database set to \'yes\'' end
|
255
|
+
if failover_database == 'yes' && golden_gate == 'yes' then raise ArgumentError, 'Can\'t set failover_database and golden_gate both to \'yes\'' end
|
256
|
+
if is_rac == 'yes' && (failover_database == 'yes' || golden_gate == 'yes') then raise ArgumentError, 'Can\'t set is_rac and failover_database or golden_gate both to \'yes\'' end
|
148
257
|
|
258
|
+
params = {
|
259
|
+
:service_name => service_name,
|
260
|
+
:edition => edition,
|
261
|
+
:ssh_key => ssh_key,
|
262
|
+
:shape => shape,
|
263
|
+
:version => version,
|
264
|
+
:level => level || 'PAAS',
|
265
|
+
:subscription_type => subscription_type || 'HOURLY',
|
266
|
+
:description => description
|
267
|
+
}
|
268
|
+
options = {
|
269
|
+
:admin_password => admin_password,
|
270
|
+
:charset => charset,
|
271
|
+
:backup_destination => backup_destination,
|
272
|
+
:cloud_storage_container => stor_name,
|
273
|
+
:cloud_storage_pwd => stor_user,
|
274
|
+
:cloud_storage_user => stor_pwd,
|
275
|
+
:cloud_storage_if_missing => cloud_storage_if_missing,
|
276
|
+
:disaster_recovery => disaster_recovery,
|
277
|
+
:failover_database => failover_database,
|
278
|
+
:golden_gate => golden_gate,
|
279
|
+
:is_rac => is_rac,
|
280
|
+
:ncharset => ncharset,
|
281
|
+
:pdb_name => pdb_name,
|
282
|
+
:sid => sid || 'ORCL',
|
283
|
+
:timezone => timezone,
|
284
|
+
:usable_storage => usable_storage || 25
|
285
|
+
}
|
286
|
+
data = service.create_instance(params, options)
|
149
287
|
end
|
150
288
|
end
|
151
289
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'fog/compute/models/server'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module OracleCloud
|
5
|
+
class Java
|
6
|
+
class Database < Fog::Model
|
7
|
+
identity :service_name
|
8
|
+
|
9
|
+
attribute :infra
|
10
|
+
attribute :connect_string
|
11
|
+
attribute :version
|
12
|
+
attribute :pdb
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module OracleCloud
|
5
|
+
class Java
|
6
|
+
class Databases < Fog::Collection
|
7
|
+
|
8
|
+
model Fog::OracleCloud::Java::Database
|
9
|
+
|
10
|
+
def all(service_name)
|
11
|
+
# data = service.list_databases(service_name).body['servers']
|
12
|
+
# load(data)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -4,13 +4,13 @@ module Fog
|
|
4
4
|
module OracleCloud
|
5
5
|
class Java
|
6
6
|
class Instance < Fog::Model
|
7
|
-
identity :service_name, :aliases=>'name'
|
7
|
+
identity :service_name, :aliases=>['name', 'serviceName']
|
8
8
|
|
9
9
|
|
10
10
|
attribute :created_by
|
11
11
|
|
12
12
|
attribute :auto_update
|
13
|
-
attribute :cluster_name
|
13
|
+
attribute :cluster_name, :aliases=>'clusterName'
|
14
14
|
attribute :compliance_status
|
15
15
|
attribute :compliance_status_desc
|
16
16
|
attribute :compute_site_name
|
@@ -19,10 +19,10 @@ module Fog
|
|
19
19
|
attribute :creation_time
|
20
20
|
attribute :db_associations
|
21
21
|
attribute :db_info
|
22
|
-
attribute :
|
22
|
+
attribute :db_service_name
|
23
23
|
attribute :deletion_job_id
|
24
24
|
attribute :description
|
25
|
-
attribute :domain_mode
|
25
|
+
attribute :domain_mode, :aliases=>'domainMode'
|
26
26
|
attribute :edition
|
27
27
|
attribute :error_status_desc
|
28
28
|
attribute :fmw_control_url
|
@@ -30,7 +30,7 @@ module Fog
|
|
30
30
|
attribute :level
|
31
31
|
attribute :lifecycle_control_job_id
|
32
32
|
attribute :num_ip_reservations
|
33
|
-
attribute :num_nodes
|
33
|
+
attribute :num_nodes, :aliases=>'managedServerCount'
|
34
34
|
attribute :options
|
35
35
|
attribute :otd_admin_url
|
36
36
|
attribute :otd_provisioned
|
@@ -44,26 +44,101 @@ module Fog
|
|
44
44
|
attribute :service_uri
|
45
45
|
attribute :shape
|
46
46
|
attribute :status
|
47
|
-
attribute :subscription_type
|
47
|
+
attribute :subscription_type, :aliases=>['subscriptionType']
|
48
48
|
attribute :uri
|
49
49
|
attribute :version
|
50
50
|
attribute :wls_admin_url
|
51
51
|
attribute :wls_deployment_channel_port
|
52
52
|
attribute :wls_version, :aliases=>'wlsVersion'
|
53
|
+
attribute :domain_name, :aliases=>'domainName'
|
54
|
+
attribute :pdb_name, :aliases=>['pdbName', 'pdb_service_name']
|
53
55
|
|
54
56
|
|
55
57
|
# The following are only used to create an instance and are not returned in the list action
|
56
58
|
attribute :cloud_storage_container, :aliases=>'cloudStorageContainer'
|
57
59
|
attribute :cloud_storage_user, :aliases=>'cloudStorageUser'
|
58
|
-
attribute :
|
59
|
-
attribute :
|
60
|
-
attribute :
|
60
|
+
attribute :cloud_storage_pwd, :aliases=>'cloudStoragePassword'
|
61
|
+
attribute :admin_username, :aliases=>'adminUserName'
|
62
|
+
attribute :admin_password, :aliases=>'adminPassword'
|
63
|
+
attribute :ssh_key, :aliases=>'vmPublicKey'
|
64
|
+
attribute :cloud_storage_container_if_missing, :aliases=>'cloudStorageContainerIfMissing'
|
65
|
+
attribute :enable_admin_console, :aliases=>'enableAdminConsole'
|
66
|
+
attribute :provision_otd, :aliases=>'provisionOTD'
|
67
|
+
attribute :sample_app_deployment_requested, :aliases=>'sampleAppDeploymentRequested'
|
68
|
+
attribute :admin_port, :aliases=>'adminPort'
|
69
|
+
attribute :app_dbs, :aliases=>'appDBs'
|
70
|
+
attribute :backup_volume_size, :aliases=>'backupVolumeSize'
|
71
|
+
attribute :content_port, :aliases=>'contentPort'
|
72
|
+
attribute :dba_name, :aliases=>'dbaName'
|
73
|
+
attribute :dba_password, :aliases=>'dbaPassword'
|
74
|
+
attribute :domain_partition_count, :aliases=>'domainPartitionCount'
|
75
|
+
attribute :domain_volume_size, :aliases=>'domainVolumeSize'
|
76
|
+
attribute :ip_reservations, :aliases=>'ipReservations'
|
77
|
+
attribute :ms_initial_heap_mb, :aliases=>'msInitialHeapMB'
|
78
|
+
attribute :ms_jvm_args, :aliases=>'msJvmArgs'
|
79
|
+
attribute :ms_max_heap_mb, :aliases=>'msMaxHeapMB'
|
80
|
+
attribute :ms_max_perm_mb, :aliases=>'msMaxPermMB'
|
81
|
+
attribute :ms_perm_mb, :aliases=>'msPermMb'
|
82
|
+
attribute :node_manager_password, :aliases=>'nodeManagerPassword'
|
83
|
+
attribute :node_manager_port, :aliases=>'nodeManagerPort'
|
84
|
+
attribute :node_manager_user_name, :aliases=>'nodeManagerUserName'
|
85
|
+
attribute :overwrite_ms_jvm_args, :aliases=>'overwriteMsJvmArgs'
|
86
|
+
attribute :secured_admin_port, :aliases=>'securedAdminPort'
|
87
|
+
attribute :secured_content_port, :aliases=>'securedContentPort'
|
61
88
|
|
62
89
|
# The following are used to delete an instance and are not returned in the list action
|
63
|
-
attribute :dba_name
|
64
|
-
attribute :dba_password
|
65
90
|
attribute :force_delete
|
66
91
|
|
92
|
+
def level=(value)
|
93
|
+
if %w(PAAS BASIC).include? value then
|
94
|
+
attributes[:level]=value
|
95
|
+
else
|
96
|
+
raise ArgumentError, "Invalid level. Valid values - PAAS or BASIC"
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def subscription_type=(value)
|
101
|
+
if %w(HOURLY MONTHLY).include? value then
|
102
|
+
attributes[:subscription_type]=value
|
103
|
+
else
|
104
|
+
raise ArgumentError, "Invalid subscription type. Valid values - HOURLY or MONTHLY"
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def domain_mode=(value)
|
109
|
+
if %w(DEVELOPMENT PRODUCTION).include? value then
|
110
|
+
attributes[:domain_mode]=value
|
111
|
+
else
|
112
|
+
raise ArgumentError, "Invalid domain mode. Valid values - DEVELOPMENT or PRODUCTION"
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
def edition=(value)
|
117
|
+
if %w(SE EE SUITE).include? value then
|
118
|
+
attributes[:edition]=value
|
119
|
+
else
|
120
|
+
raise ArgumentError, "Invalid edition. Valid values - SE, EE or SUITE"
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
def num_nodes=(value)
|
125
|
+
if [1, 2, 4, 8].include? value then
|
126
|
+
attributes[:num_nodes]=value
|
127
|
+
else
|
128
|
+
raise ArgumentError, "Invalid server count (#{value}). Valid values - 1, 2, 4 or 8"
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
def shape=(value)
|
133
|
+
if %w(oc3 oc4 oc5 oc6 oc1m oc2m oc3m oc4m).include? value then
|
134
|
+
attributes[:shape]=value
|
135
|
+
else
|
136
|
+
raise ArgumentError, "Invalid Shape. Valid values - oc3, oc4, oc5, oc6, oc1m, oc2m, oc3m or oc4m"
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
|
141
|
+
|
67
142
|
def initialize(attributes={})
|
68
143
|
level ||= 'PAAS'
|
69
144
|
subscription_type ||= 'HOURLY'
|
@@ -93,7 +168,7 @@ module Fog
|
|
93
168
|
service.servers.all(service_name)
|
94
169
|
end
|
95
170
|
|
96
|
-
|
171
|
+
def destroy
|
97
172
|
requires :service_name, :dba_name, :dba_password
|
98
173
|
service.delete_instance(service_name, dba_name, dba_password, :force_delete => force_delete).body
|
99
174
|
end
|
@@ -101,12 +176,79 @@ module Fog
|
|
101
176
|
private
|
102
177
|
|
103
178
|
def create
|
104
|
-
requires :service_name, :
|
179
|
+
requires :service_name, :dba_name, :dba_password, :db_service_name, :shape, :version, :ssh_key
|
105
180
|
|
106
|
-
data = service.create_instance(service_name, cloud_storage_container, cloud_storage_user, cloud_storage_password, dba_name, dba_password, db_servicename, shape, version, vm_public_key,
|
107
|
-
|
108
|
-
|
109
|
-
|
181
|
+
#data = service.create_instance(service_name, cloud_storage_container, cloud_storage_user, cloud_storage_password, dba_name, dba_password, db_servicename, shape, version, vm_public_key,
|
182
|
+
# :level => level,
|
183
|
+
# :subscriptionType => subscription_type,
|
184
|
+
# :description => description)
|
185
|
+
|
186
|
+
if cloud_storage_container.nil? then
|
187
|
+
cloud_storage_if_missing = true
|
188
|
+
stor_name = "#{service_name}_Backup"
|
189
|
+
else
|
190
|
+
stor_name = cloud_storage_container
|
191
|
+
end
|
192
|
+
stor_user = cloud_storage_user || service.username
|
193
|
+
stor_pwd = cloud_storage_pwd || service.password
|
194
|
+
|
195
|
+
params = {
|
196
|
+
:serviceName => service_name,
|
197
|
+
:cloudStorageContainer => stor_name,
|
198
|
+
:cloudStoragePassword => stor_user,
|
199
|
+
:cloudStorageUser => stor_pwd,
|
200
|
+
:cloudStorageContainerIfMissing => cloud_storage_if_missing,
|
201
|
+
:description => description,
|
202
|
+
:enableAdminConsole => enable_admin_console.nil? ? true : enable_admin_console,
|
203
|
+
:provisionOTD => provision_otd.nil? ? true : provision_otd,
|
204
|
+
:sampleAppDeploymentRequested => sample_app_deployment_requested.nil? ? true : sample_app_deployment_requested,
|
205
|
+
:subscriptionType => subscription_type || 'HOURLY',
|
206
|
+
:level => level || 'PAAS',
|
207
|
+
}
|
208
|
+
options = {
|
209
|
+
:adminPassword => admin_password,
|
210
|
+
:adminPort => admin_port,
|
211
|
+
:adminUserName => admin_username,
|
212
|
+
:backupVolumeSize => backup_volume_size,
|
213
|
+
:clusterName => cluster_name,
|
214
|
+
:contentPort => content_port,
|
215
|
+
:dbaName => dba_name,
|
216
|
+
:dbaPassword => dba_password,
|
217
|
+
:dbServiceName => db_service_name,
|
218
|
+
:deploymentChannelPort => wls_deployment_channel_port,
|
219
|
+
:domainMode => domain_mode,
|
220
|
+
:domainName => domain_name,
|
221
|
+
:domainPartitionCount => domain_partition_count,
|
222
|
+
:domainVolumeSize => domain_volume_size,
|
223
|
+
:edition => edition || 'EE',
|
224
|
+
:ipReservations => ip_reservations,
|
225
|
+
:managedServerCount => num_nodes || 1,
|
226
|
+
:msInitialHeapMB => ms_initial_heap_mb,
|
227
|
+
:msJvmArgs => ms_jvm_args,
|
228
|
+
:msMaxHeapMB => ms_max_heap_mb,
|
229
|
+
:msMaxPermMB => ms_max_perm_mb,
|
230
|
+
:msPermMb => ms_perm_mb,
|
231
|
+
:nodeManagerPassword => node_manager_password,
|
232
|
+
:nodeManagerPort => node_manager_port,
|
233
|
+
:nodeManagerUserName => node_manager_user_name,
|
234
|
+
:overwriteMsJvmArgs => overwrite_ms_jvm_args,
|
235
|
+
:pdbName => pdb_name,
|
236
|
+
:securedAdminPort => secured_admin_port,
|
237
|
+
:securedContentPort => secured_content_port,
|
238
|
+
:shape => shape,
|
239
|
+
:VMsPublicKey => ssh_key,
|
240
|
+
:version => version
|
241
|
+
}
|
242
|
+
|
243
|
+
if app_dbs and app_dbs.is_a? Array and app_dbs.size >= 1
|
244
|
+
options[:appDBs] = []
|
245
|
+
app_dbs.each { |db| options[:appDBs].push({
|
246
|
+
:dbaName => db.username,
|
247
|
+
:dbaPassword => db.password,
|
248
|
+
:dbServiceName => db.service_name,
|
249
|
+
}) }
|
250
|
+
end
|
251
|
+
data = service.create_instance(params, options)
|
110
252
|
|
111
253
|
end
|
112
254
|
|
@@ -6,19 +6,19 @@ module Fog
|
|
6
6
|
class Server < Fog::Model
|
7
7
|
identity :name
|
8
8
|
|
9
|
-
attribute :clusterName
|
9
|
+
attribute :cluster_name, :aliases=>'clusterName'
|
10
10
|
attribute :name
|
11
11
|
attribute :shape
|
12
|
-
attribute :nodeType
|
13
|
-
attribute :
|
12
|
+
attribute :node_type, :aliases=>'nodeType'
|
13
|
+
attribute :is_admin, :aliases=>'is_admin'
|
14
14
|
attribute :hostname
|
15
15
|
attribute :status
|
16
|
-
attribute :
|
17
|
-
attribute :storageAllocated
|
18
|
-
attribute :creationDate
|
16
|
+
attribute :reserved_ip, :aliases=>'reserved_ip'
|
17
|
+
attribute :storage_allocated, :aliases=>'storageAllocated'
|
18
|
+
attribute :creation_date, :aliases=>'creationDate'
|
19
19
|
|
20
20
|
def ip_addr
|
21
|
-
|
21
|
+
reserved_ip.blank? ? hostname : reserved_ip
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -22,9 +22,8 @@ module Fog
|
|
22
22
|
def backup_instance(service_name)
|
23
23
|
response = Excon::Response.new
|
24
24
|
|
25
|
-
if !self.data[:backups][service_name].is_a? Array
|
25
|
+
if !self.data[:backups][service_name].is_a? Array
|
26
26
|
self.data[:backups][service_name] = []
|
27
|
-
self.data[:created_at][service_name] = []
|
28
27
|
end
|
29
28
|
self.data[:backups][service_name].push({
|
30
29
|
'backupCompleteDate'=>Time.now.strftime('%d-%b-%Y %H:%M:%S UTC'),
|
@@ -32,7 +31,11 @@ module Fog
|
|
32
31
|
'status'=>'IN PROGRESS',
|
33
32
|
'database_id'=>service_name
|
34
33
|
})
|
35
|
-
self.data[:created_at][
|
34
|
+
if !self.data[:created_at][:backups]
|
35
|
+
self.data[:created_at][:backups] = {}
|
36
|
+
self.data[:created_at][:backups][service_name] = []
|
37
|
+
end
|
38
|
+
self.data[:created_at][:backups][service_name].push(Time.now)
|
36
39
|
response.status = 202
|
37
40
|
response
|
38
41
|
end
|
@@ -3,30 +3,43 @@ module Fog
|
|
3
3
|
class Database
|
4
4
|
class Real
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
'
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
'
|
19
|
-
|
6
|
+
def create_instance(config, options)
|
7
|
+
parameters = options.select{|key, value| [:admin_password, :backup_destination, :charset, :cloud_storage_container, :cloud_storage_pwd, :cloud_storage_user, :cloud_storage_if_missing, :disaster_recovery, :failover_database, :golden_gate, :is_rac, :ncharset, :pdb_name, :sid, :timezone, :usable_storage].include?(key)}
|
8
|
+
params = {
|
9
|
+
'type' => 'db'
|
10
|
+
}
|
11
|
+
parameters.each { |key, value|
|
12
|
+
if !value.nil? then
|
13
|
+
if key == :cloud_storage_container then
|
14
|
+
if !value.start_with?("/Storage-") then
|
15
|
+
value = "/Storage-#{@identity_domain}/#{value}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
new_key = key.to_s.split('_').collect(&:capitalize).join
|
19
|
+
new_key = new_key[0,1].downcase + new_key[1..-1]
|
20
|
+
params[new_key] = value
|
21
|
+
end
|
22
|
+
}
|
23
|
+
body_data = {
|
24
|
+
'serviceName' => config[:service_name],
|
25
|
+
'version' => config[:version],
|
26
|
+
'level' => config[:level],
|
27
|
+
'edition' => config[:edition],
|
28
|
+
'subscriptionType' => config[:subscription_type],
|
29
|
+
'description' => config[:description],
|
30
|
+
'shape' => config[:shape],
|
31
|
+
'vmPublicKeyText' => config[:ssh_key],
|
32
|
+
'parameters' => [params]
|
20
33
|
}
|
21
34
|
body_data = body_data.reject {|key, value| value.nil?}
|
22
|
-
|
35
|
+
|
23
36
|
request(
|
24
37
|
:method => 'POST',
|
25
38
|
:expects => 202,
|
26
39
|
:path => "/paas/service/dbcs/api/v1.1/instances/#{@identity_domain}",
|
27
40
|
:body => Fog::JSON.encode(body_data),
|
28
41
|
#:headers => {
|
29
|
-
#
|
42
|
+
# 'Content-Type'=>'application/vnd.com.oracle.oracloud.provisioning.Service+json'
|
30
43
|
#}
|
31
44
|
)
|
32
45
|
end
|
@@ -34,19 +47,30 @@ module Fog
|
|
34
47
|
end
|
35
48
|
|
36
49
|
class Mock
|
37
|
-
def create_instance(
|
38
|
-
|
50
|
+
def create_instance(config, options)
|
51
|
+
response = Excon::Response.new
|
39
52
|
|
40
53
|
data = {
|
41
|
-
'
|
42
|
-
'shape' => shape,
|
43
|
-
'edition' => edition,
|
44
|
-
'version' => version,
|
45
|
-
'status' => 'In Progress'
|
46
|
-
|
54
|
+
'serviceName' => config[:service_name],
|
55
|
+
'shape' => config[:shape],
|
56
|
+
'edition' => config[:edition],
|
57
|
+
'version' => config[:version],
|
58
|
+
'status' => 'In Progress',
|
59
|
+
'charset' => 'AL32UTF8',
|
60
|
+
'ncharset' => 'AL16UTF16',
|
61
|
+
'pdbName' => 'pdb1', # Note this is only valid for 12c instances. Too hard to fix for mocking
|
62
|
+
'timezone' => 'UTC',
|
63
|
+
'totalSharedStorage' => options[:usable_storage],
|
64
|
+
'domainName' => @identity_domain,
|
65
|
+
'creation_date'=>Time.now.strftime('%Y-%b-%dT%H:%M:%S'),
|
66
|
+
'serviceType'=>'DBaaS',
|
67
|
+
'creator'=>@username
|
68
|
+
}
|
69
|
+
.merge(config.select {|key, value| [:description, :level, :subscription_type].include?(key) })
|
70
|
+
.merge(options.select {|key, value| [:backup_destination, :failover_database, :cloud_storage_container, :is_rac, :ncharset, :pdb_name, :sid, :timezone].include?(key) })
|
47
71
|
|
48
|
-
self.data[:instances][service_name] = data
|
49
|
-
self.data[:created_at][service_name] = Time.now
|
72
|
+
self.data[:instances][config[:service_name]] = data
|
73
|
+
self.data[:created_at][config[:service_name]] = Time.now
|
50
74
|
|
51
75
|
# Also create some compute nodes
|
52
76
|
node = {
|
@@ -65,11 +89,11 @@ module Fog
|
|
65
89
|
"reservedIP"=>"129.144.23.112",
|
66
90
|
"hostname"=>"db12c-xp-rac1"
|
67
91
|
}
|
68
|
-
self.data[:servers][service_name] = [node]
|
92
|
+
self.data[:servers][config[:service_name]] = [node]
|
69
93
|
|
70
94
|
response.status = 202
|
71
95
|
response
|
72
|
-
|
96
|
+
end
|
73
97
|
end
|
74
98
|
end
|
75
99
|
end
|
@@ -16,11 +16,13 @@ module Fog
|
|
16
16
|
def list_backups(db_name)
|
17
17
|
response = Excon::Response.new
|
18
18
|
|
19
|
+
if !self.data[:backups][db_name] then self.data[:backups][db_name] = [] end
|
19
20
|
backups = self.data[:backups][db_name]
|
21
|
+
|
20
22
|
backups.each_with_index { |b, i|
|
21
23
|
if b['status'] = 'IN PROGRESS' then
|
22
|
-
if Time.now - self.data[:created_at][db_name][i] >= Fog::Mock.delay
|
23
|
-
self.data[:created_at][db_name].delete(i)
|
24
|
+
if Time.now - self.data[:created_at][:backups][db_name][i] >= Fog::Mock.delay
|
25
|
+
self.data[:created_at][:backups][db_name].delete(i)
|
24
26
|
self.data[:backups][db_name][i]['status'] = 'COMPLETED'
|
25
27
|
b = self.data[:backups][db_name][i]
|
26
28
|
end
|
@@ -16,7 +16,9 @@ module Fog
|
|
16
16
|
def list_recoveries(db_name)
|
17
17
|
response = Excon::Response.new
|
18
18
|
|
19
|
+
if !self.data[:recoveries][db_name] then self.data[:recoveries][db_name] = [] end
|
19
20
|
recoveries = self.data[:recoveries][db_name]
|
21
|
+
|
20
22
|
recoveries.each_with_index { |r, i|
|
21
23
|
if r['status'] = 'IN PROGRESS' then
|
22
24
|
if Time.now - self.data[:created_at][:recoveries][db_name][i] >= Fog::Mock.delay
|
@@ -26,6 +26,9 @@ module Fog
|
|
26
26
|
|
27
27
|
if !self.data[:recoveries][service_name].is_a? Array then
|
28
28
|
self.data[:recoveries][service_name] = []
|
29
|
+
end
|
30
|
+
|
31
|
+
if !self.data[:created_at][:recoveries]
|
29
32
|
self.data[:created_at][:recoveries] = {}
|
30
33
|
self.data[:created_at][:recoveries][service_name] = []
|
31
34
|
end
|
@@ -3,50 +3,80 @@ module Fog
|
|
3
3
|
class Java
|
4
4
|
class Real
|
5
5
|
|
6
|
-
def create_instance(
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
end
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
'provisionOTD' => options[:provisionOTD],
|
21
|
-
'sampleAppDeploymentRequests' => options[:sampleAppDeploymentRequests]
|
22
|
-
}
|
23
|
-
body_data = body_data.reject {|key, value| value.nil?}
|
6
|
+
def create_instance(config, options)
|
7
|
+
|
8
|
+
if !config[:cloudStorageContainer].start_with?("/Storage-")
|
9
|
+
config[:cloudStorageContainer] = "/Storage-#{@identity_domain}/#{config[:cloudStorageContainer]}"
|
10
|
+
end
|
11
|
+
|
12
|
+
config[:parameters] = options.select{|key, value| [:adminPassword, :adminPort, :adminUserName, :backupVolumeSize, :clusterName, :contentPort, :dbaName, :dbaPassword, :dbServiceName, :deploymentChannelPort, :domainMode, :domainName, :domainPartitionCount, :domainVolumeSize, :edition, :ipReservations, :managedServerCount, :msInitialHeapMB, :msJvmArgs, :msMaxHeapMB, :msMaxPermMB, :msPermMb, :nodeManagerPassword, :nodeManagerPort, :nodeManagerUserName, :overwriteMsJvmArgs, :pdbName, :securedAdminPort, :securedContentPort, :shape, :VMsPublicKey].include?(key)}
|
13
|
+
config[:parameters].reject! { |key,value| value.nil?}
|
14
|
+
config.reject! { |key,value| value.nil?}
|
15
|
+
# Currently only support weblogic
|
16
|
+
config[:parameters][:type] = "weblogic"
|
17
|
+
|
18
|
+
body_data = config
|
19
|
+
|
24
20
|
request(
|
25
21
|
:method => 'POST',
|
26
22
|
:expects => 202,
|
27
|
-
:path => "/paas/service/
|
23
|
+
:path => "/paas/service/dbcs/api/v1.1/instances/#{@identity_domain}",
|
28
24
|
:body => Fog::JSON.encode(body_data),
|
29
|
-
|
30
|
-
|
31
|
-
}
|
25
|
+
#:headers => {
|
26
|
+
# 'Content-Type'=>'application/vnd.com.oracle.oracloud.provisioning.Service+json'
|
27
|
+
#}
|
32
28
|
)
|
33
29
|
end
|
34
|
-
|
35
30
|
end
|
36
31
|
class Mock
|
37
|
-
def create_instance(
|
32
|
+
def create_instance(config, options)
|
38
33
|
response = Excon::Response.new
|
39
34
|
|
35
|
+
ip = '192.168.1.1'
|
40
36
|
data = {
|
41
|
-
'
|
42
|
-
'
|
43
|
-
'
|
44
|
-
'
|
45
|
-
'
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
37
|
+
'status' => 'In Progress',
|
38
|
+
'compute_site_name' => 'EM002_Z11',
|
39
|
+
'content_url' => "http://#{ip}",
|
40
|
+
'created_by' => @username,
|
41
|
+
'creation_job_id' => Random.rand(100000),
|
42
|
+
'creation_time'=> Time.now.strftime('%Y-%b-%dT%H:%M:%S'),
|
43
|
+
'db_info' => "#{options[:dbServiceName]}:1521/#{options[:pdbName] || 'PDB1'}.#{@identity_domain}.oraclecloud.internal",
|
44
|
+
'deletion_job_id' => 0,
|
45
|
+
'domainMode'=>'DEVELOPMENT',
|
46
|
+
'fmw_control_url'=> "https://#{ip}:#{options[:adminPort] || 7002}/em",
|
47
|
+
'last_modified_time'=> Time.now.strftime('%Y-%b-%dT%H:%M:%S'),
|
48
|
+
'num_ip_reservations'=> 2, # Can't rely on this number in mocking mode
|
49
|
+
'num_nodes'=>options[:managedServerCount],
|
50
|
+
'otd_provisioned'=>options[:provisionOTD] || 'no',
|
51
|
+
'psm_plugin_version'=>"16.3.5-532",
|
52
|
+
'secure_content_url' => "https://#{ip}",
|
53
|
+
'service_type'=>'jaas',
|
54
|
+
'service_uri'=>"#{@region_url}/paas/service/dbcs/api/v1.1/instances/#{@identity_domain}/#{config[:serviceName]}",
|
55
|
+
'wls_admin_url'=> "https://#{ip}:#{options[:adminPort] || 7002}/console",
|
56
|
+
'wls_deployment_channel_port' => options[:deploymentChannelPort] || 9001,
|
57
|
+
'wlsVersion'=>'12.2.1.0.160419'
|
58
|
+
}
|
59
|
+
.merge(config.select {|key, value| [:serviceName, :description, :level, :subscriptionType].include?(key) })
|
60
|
+
.merge(options.select {|key, value| [:clusterName, :dbServiceName, :edition, :shape, :version].include?(key) }).collect{|k,v| [k.to_s, v]}.to_h
|
61
|
+
|
62
|
+
if data['clusterName'].nil? then data['clusterName'] = data['serviceName'][0,8] + "_cluster" end
|
63
|
+
if data['domainName'].nil? then data['domainName'] = data['serviceName'][0,8] + "_domain" end
|
64
|
+
self.data[:instances][config[:serviceName]] = data
|
65
|
+
self.data[:created_at][config[:serviceName]] = Time.now
|
66
|
+
|
67
|
+
server = {
|
68
|
+
"clusterName": data['clusterName'] || data['serviceName'][0,8] + "_cluster",
|
69
|
+
"name": "#{data['serviceName'][0,8]}_server_1",
|
70
|
+
"shape": data['shape'],
|
71
|
+
"nodeType": "WLS",
|
72
|
+
"isAdmin": true,
|
73
|
+
"hostname": ip,
|
74
|
+
"status": "Ready",
|
75
|
+
"storageAllocated": 74752,
|
76
|
+
"creationDate": Time.now.strftime('%Y-%b-%dT%H:%M:%S')
|
77
|
+
}
|
78
|
+
self.data[:servers][data['serviceName']] = [server]
|
79
|
+
|
50
80
|
response.status = 202
|
51
81
|
response
|
52
82
|
end
|
@@ -12,7 +12,19 @@ module Fog
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
|
15
|
+
class Mock
|
16
|
+
def list_servers(db_name)
|
17
|
+
response = Excon::Response.new
|
18
|
+
|
19
|
+
servers = self.data[:servers][db_name]
|
20
|
+
|
21
|
+
response.body = {
|
22
|
+
'servers' => servers
|
23
|
+
}
|
24
|
+
|
25
|
+
response
|
26
|
+
end
|
27
|
+
end
|
16
28
|
end
|
17
29
|
end
|
18
30
|
end
|
@@ -7,10 +7,14 @@ Shindo.tests('Fog::Database[oraclecloud] | database requests', 'database') do
|
|
7
7
|
:service_name => 'TestDB',
|
8
8
|
:description => 'A new database',
|
9
9
|
:edition => 'SE',
|
10
|
-
:
|
10
|
+
:ssh_key => 'ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAkNNQ4ri2oUW46mBO/4CHMGCOALciumwGvFEMDLGNnlDbUSqU4IRrqgj+znLClfb29Oer0devdarM6DilsZVgZ2YbI5ZD5vICR/O9J0c28dArwbtFeIjcV2TCWyj5xKEXF1r+OrJMexHQa0fW1URGrU8QODpJNC/9eCVGcEXddL31xTZYpjoVOCVx66kNa6lSHEVV3T4zaCby9Oe5QI4gZe1+xyxHPNEW5wogwS3dlKSyL2CfBP0aUKOmJ5Nrl8+y0GqJQXdGjZ9FIknmwWueRW/6qPQvZocjOZ8YiPZgAP0RNy6lL+u8mnAazj/mrEdmB5QUzpDAllIr5Tn/xaddZQ==',
|
11
11
|
:shape => 'oc3',
|
12
|
-
:version => '12.1.0.2'
|
12
|
+
:version => '12.1.0.2',
|
13
|
+
:backup_destination => 'NONE',
|
14
|
+
:admin_password => 'password123',
|
15
|
+
:usable_storage => '15'
|
13
16
|
)
|
17
|
+
|
14
18
|
test "can create a database" do
|
15
19
|
db.is_a? Fog::OracleCloud::Database::Instance
|
16
20
|
end
|
@@ -72,6 +76,10 @@ Shindo.tests('Fog::Database[oraclecloud] | database requests', 'database') do
|
|
72
76
|
servers.size >= 1
|
73
77
|
servers.first.status.is_a? String
|
74
78
|
end
|
79
|
+
|
80
|
+
test "has special attributes" do
|
81
|
+
instance.failover_database == 'no'
|
82
|
+
end
|
75
83
|
end
|
76
84
|
|
77
85
|
tests("#database-backups-create", "create") do
|
@@ -2,19 +2,16 @@ require 'pp'
|
|
2
2
|
|
3
3
|
Shindo.tests('Fog::Java[oraclecloud] | java requests', 'java') do
|
4
4
|
|
5
|
-
tests("#
|
5
|
+
tests("#java-create", "create") do
|
6
6
|
instance = Fog::OracleCloud[:java].instances.create(
|
7
7
|
:service_name => 'TestWLS',
|
8
8
|
:description => 'A new weblogic instance',
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:
|
12
|
-
:dbaName => 'SYS',
|
13
|
-
:dbaPassword => 'password',
|
14
|
-
:dbServiceName => 'TestDB',
|
9
|
+
:dba_name => 'SYS',
|
10
|
+
:dba_password => 'password',
|
11
|
+
:db_service_name => 'TestDB',
|
15
12
|
:shape => 'oc3',
|
16
13
|
:version => '12.2.1',
|
17
|
-
:
|
14
|
+
:ssh_key => 'ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAkNNQ4ri2oUW46mBO/4CHMGCOALciumwGvFEMDLGNnlinstanceUSqU4IRrqgj+znLClfb29Oer0devdarM6DilsZVgZ2YbI5ZD5vICR/O9J0c28dArwbtFeIjcV2TCWyj5xKEXF1r+OrJMexHQa0fW1URGrU8QODpJNC/9eCVGcEXddL31xTZYpjoVOCVx66kNa6lSHEVV3T4zaCby9Oe5QI4gZe1+xyxHPNEW5wogwS3dlKSyL2CfBP0aUKOmJ5Nrl8+y0GqJQXdGjZ9FIknmwWueRW/6qPQvZocjOZ8YiPZgAP0RNy6lL+u8mnAazj/mrEdmB5QUzpDAllIr5Tn/xaddZQ==',
|
18
15
|
)
|
19
16
|
test "can create a java instance" do
|
20
17
|
instance.is_a? Fog::OracleCloud::Java::Instance
|
@@ -48,6 +45,13 @@ Shindo.tests('Fog::Java[oraclecloud] | java requests', 'java') do
|
|
48
45
|
test "should return an instance" do
|
49
46
|
instance.service_name.is_a? String
|
50
47
|
end
|
48
|
+
|
49
|
+
servers = instance.servers
|
50
|
+
test "should have compute nodes" do
|
51
|
+
servers.is_a? Array
|
52
|
+
servers.size >= 1
|
53
|
+
servers.first.status.is_a? String
|
54
|
+
end
|
51
55
|
end
|
52
56
|
|
53
57
|
tests("#java-delete", "create") do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fog-oraclecloud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joel Nation
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -160,6 +160,8 @@ files:
|
|
160
160
|
- lib/fog/oraclecloud/models/database/servers.rb
|
161
161
|
- lib/fog/oraclecloud/models/database/snapshot.rb
|
162
162
|
- lib/fog/oraclecloud/models/database/snapshots.rb
|
163
|
+
- lib/fog/oraclecloud/models/java/database.rb
|
164
|
+
- lib/fog/oraclecloud/models/java/databases.rb
|
163
165
|
- lib/fog/oraclecloud/models/java/instance.rb
|
164
166
|
- lib/fog/oraclecloud/models/java/instances.rb
|
165
167
|
- lib/fog/oraclecloud/models/java/server.rb
|