From 4ddd984b0419ed7294a378400cf0d253ec5f24bd Mon Sep 17 00:00:00 2001 From: "yuanhong.deng" Date: Thu, 24 Nov 2016 11:52:18 +0800 Subject: [PATCH 1/5] Implements JCS backup and restoration APIs Implements and tests the followed JCS APIs 1. Create a backup 2. List backups 3. Get a backup 4. Create a restoration 5.List restorations 6. Get a restoration --- lib/fog/oraclecloud/java.rb | 14 +++- lib/fog/oraclecloud/models/java/backup.rb | 51 +++++++++++++++ lib/fog/oraclecloud/models/java/backups.rb | 24 +++++++ lib/fog/oraclecloud/models/java/instance.rb | 19 ++++++ .../oraclecloud/models/java/restoration.rb | 50 ++++++++++++++ .../oraclecloud/models/java/restorations.rb | 24 +++++++ .../requests/java/backup_instance.rb | 52 +++++++++++++++ .../oraclecloud/requests/java/get_backup.rb | 30 +++++++++ .../requests/java/get_restoration.rb | 32 +++++++++ .../oraclecloud/requests/java/list_backups.rb | 32 +++++++++ .../requests/java/list_restorations.rb | 32 +++++++++ .../requests/java/restoration_instance.rb | 54 +++++++++++++++ tests/requests/java_tests.rb | 65 +++++++++++++++++-- 13 files changed, 474 insertions(+), 5 deletions(-) create mode 100644 lib/fog/oraclecloud/models/java/backup.rb create mode 100644 lib/fog/oraclecloud/models/java/backups.rb create mode 100644 lib/fog/oraclecloud/models/java/restoration.rb create mode 100644 lib/fog/oraclecloud/models/java/restorations.rb create mode 100644 lib/fog/oraclecloud/requests/java/backup_instance.rb create mode 100644 lib/fog/oraclecloud/requests/java/get_backup.rb create mode 100644 lib/fog/oraclecloud/requests/java/get_restoration.rb create mode 100644 lib/fog/oraclecloud/requests/java/list_backups.rb create mode 100644 lib/fog/oraclecloud/requests/java/list_restorations.rb create mode 100644 lib/fog/oraclecloud/requests/java/restoration_instance.rb diff --git a/lib/fog/oraclecloud/java.rb b/lib/fog/oraclecloud/java.rb index e687448..d4f914e 100644 --- a/lib/fog/oraclecloud/java.rb +++ b/lib/fog/oraclecloud/java.rb @@ -9,6 +9,10 @@ class Java < Fog::Service collection :instances model :server collection :servers + model :backup + collection :backups + model :restoration + collection :restorations request_path 'fog/oraclecloud/requests/java' request :list_instances @@ -20,7 +24,13 @@ class Java < Fog::Service request :scale_out_a_cluster request :scale_in_a_cluster request :scale_a_node - + request :backup_instance + request :list_backups + request :get_backup + request :restoration_instance + request :list_restorations + request :get_restoration + class Real def initialize(options={}) @@ -96,6 +106,8 @@ def self.data @data ||= { :instances => {}, :servers => {}, + :backups => {}, + :restorations => {}, :maintenance_at => {}, :deleted_at => {}, :created_at => {} diff --git a/lib/fog/oraclecloud/models/java/backup.rb b/lib/fog/oraclecloud/models/java/backup.rb new file mode 100644 index 0000000..0784c1c --- /dev/null +++ b/lib/fog/oraclecloud/models/java/backup.rb @@ -0,0 +1,51 @@ +require 'fog/core/model' + +module Fog + module OracleCloud + class Java + class Backup < Fog::Model + identity :backup_id, :aliases=>'backupId' + + attribute :job_id, :aliases=>'jobId' + attribute :backup_startDate, :aliases=>'backupStartDate' + attribute :backup_complete_date, :aliases=>'backupCompleteDate' + attribute :deleted_on_date, :aliases=>'deletedOnDate' + attribute :expiration_date, :aliases=>'expirationDate' + attribute :force_scale_in_required_for_restore, :aliases=>'forceScaleInRequiredForRestore' + attribute :full + attribute :local + attribute :local_copy, :aliases=>'localCopy' + attribute :database_included, :aliases=>'databaseIncluded' + attribute :size + attribute :size_in_bytes, :aliases=>'sizeInBytes' + attribute :status + attribute :service_components, :aliases=>'serviceComponents' + attribute :job_history, :aliases=>'jobHistory' + attribute :db_tag, :aliases=>'dbTag' + attribute :service_name + + def completed? + status == "Completed" + end + + private + + # Had to override reload as we need to pass the service_name + def reload + requires :identity, :service_name + + data = begin + collection.get(service_name, identity) + rescue Excon::Errors::SocketError + nil + end + return unless data + + new_attributes = data.attributes + merge_attributes(new_attributes) + self + end + end + end + end +end diff --git a/lib/fog/oraclecloud/models/java/backups.rb b/lib/fog/oraclecloud/models/java/backups.rb new file mode 100644 index 0000000..8bb2124 --- /dev/null +++ b/lib/fog/oraclecloud/models/java/backups.rb @@ -0,0 +1,24 @@ +require 'fog/core/collection' + +module Fog + module OracleCloud + class Java + class Backups < Fog::Collection + + model Fog::OracleCloud::Java::Backup + + def all(service_name) + data = service.list_backups(service_name).body['backups'] + load(data) + end + + def get(service_name, backup_id) + data = service.get_backup(service_name, backup_id).body + data['service_name'] = service_name + new(data) + end + + end + end + end +end diff --git a/lib/fog/oraclecloud/models/java/instance.rb b/lib/fog/oraclecloud/models/java/instance.rb index ece2098..f998401 100644 --- a/lib/fog/oraclecloud/models/java/instance.rb +++ b/lib/fog/oraclecloud/models/java/instance.rb @@ -170,6 +170,25 @@ def servers service.servers.all(service_name) end + def backup + requires :service_name + service.backup_instance(service_name) + end + + def backups + service.backups.all(service_name) + end + + def restoration(backup_id, options) + requires :service_name + service.restoration_instance(service_name, backup_id, options) + end + + def restorations + requires :service_name + service.restorations.all(service_name) + end + def destroy requires :service_name, :dba_name, :dba_password service.delete_instance(service_name, dba_name, dba_password, :force_delete => force_delete).body diff --git a/lib/fog/oraclecloud/models/java/restoration.rb b/lib/fog/oraclecloud/models/java/restoration.rb new file mode 100644 index 0000000..ccebd69 --- /dev/null +++ b/lib/fog/oraclecloud/models/java/restoration.rb @@ -0,0 +1,50 @@ +require 'fog/core/model' + +module Fog + module OracleCloud + class Java + class Restoration < Fog::Model + + attribute :backup_id, :aliases=>'backupId' + attribute :backup_date, :aliases=>'backupDate' + attribute :job_id, :aliases=>'jobId' + attribute :recovery_start_date, :aliases=>'recoveryStartDate' + attribute :recovery_complete_date, :aliases=>'recoveryCompleteDate' + attribute :status + attribute :status_details, :aliases=>'statusDetails' + attribute :static_data_included, :aliases=>'staticDataIncluded' + attribute :config_data_included, :aliases=>'configDataIncluded' + attribute :otd_included, :aliases=>'otdIncluded' + attribute :database_included, :aliases=>'databaseIncluded' + attribute :notes + attribute :timestamp + attribute :service_name + + def completed? + status == "COMPLETED" + end + + private + + def reload + requires :service_name + + data = begin + if !db_tag.nil? then + collection.get(service_name, 'tag', db_tag) + else + collection.get(service_name) + end + rescue Excon::Errors::SocketError + nil + end + return unless data + + new_attributes = data.attributes + merge_attributes(new_attributes) + self + end + end + end + end +end diff --git a/lib/fog/oraclecloud/models/java/restorations.rb b/lib/fog/oraclecloud/models/java/restorations.rb new file mode 100644 index 0000000..3e9b8b1 --- /dev/null +++ b/lib/fog/oraclecloud/models/java/restorations.rb @@ -0,0 +1,24 @@ +require 'fog/core/collection' + +module Fog + module OracleCloud + class Java + class Restorations < Fog::Collection + + model Fog::OracleCloud::Java::Restoration + + def all(service_name) + data = service.list_restorations(service_name).body['restoreHistory'] + load(data) + end + + def get(service_name, job_id) + data = service.get_restoration(service_name, job_id).body + data['service_name'] = service_name + new(data) + end + + end + end + end +end diff --git a/lib/fog/oraclecloud/requests/java/backup_instance.rb b/lib/fog/oraclecloud/requests/java/backup_instance.rb new file mode 100644 index 0000000..c6e1ab2 --- /dev/null +++ b/lib/fog/oraclecloud/requests/java/backup_instance.rb @@ -0,0 +1,52 @@ +module Fog + module OracleCloud + class Java + class Real + + def backup_instance(service_name, options={}) + # Oracle Cloud requires an empty JSON object in the body + body_data = { + 'databaseIncluded' => options[:databaseIncluded], + 'expirationDate' => options[:expirationDate], + 'full' => options[:full], + 'notes' => options[:notes] + } + body_data = body_data.reject {|key, value| value.nil?} + + response = request( + :method => 'POST', + :expects => 202, + :path => "/paas/service/jcs/api/v1.1/instances/#{@identity_domain}/#{service_name}/backups", + :body => Fog::JSON.encode(body_data), + ) + + response + end + end + + class Mock + def backup_instance(service_name) + response = Excon::Response.new + + if !self.data[:backups].is_a? Array + self.data[:backups] = [] + end + + self.data[:backups].push({ + 'backupId'=>'999', + 'backupStartDate'=>Time.now.strftime('%d-%b-%Y %H:%M:%S UTC'), + 'dbTag'=>'TAG' + Time.now.strftime('%Y%m%dT%H%M%S'), + 'status'=>'Completed', + 'service_name'=>service_name + }) + + response.status = 202 + response.body ={ + 'operationName'=>'start-backup' + } + response + end + end + end + end +end diff --git a/lib/fog/oraclecloud/requests/java/get_backup.rb b/lib/fog/oraclecloud/requests/java/get_backup.rb new file mode 100644 index 0000000..6d797de --- /dev/null +++ b/lib/fog/oraclecloud/requests/java/get_backup.rb @@ -0,0 +1,30 @@ +module Fog + module OracleCloud + class Java + class Real + def get_backup(service_name, backup_id) + response = request( + :expects => 200, + :method => 'GET', + :path => "/paas/service/jcs/api/v1.1/instances/#{@identity_domain}/#{service_name}/backups/#{backup_id}" + ) + response + end + end + + class Mock + def get_backup(service_name, backup_id) + response = Excon::Response.new + + if backup = self.data[:backups].first + response.status = 200 + response.body = backup + response + else + raise Fog::OracleCloud::Java::NotFound.new("Java Server #{name} does not exist"); + end + end + end + end + end +end diff --git a/lib/fog/oraclecloud/requests/java/get_restoration.rb b/lib/fog/oraclecloud/requests/java/get_restoration.rb new file mode 100644 index 0000000..9c1c0c2 --- /dev/null +++ b/lib/fog/oraclecloud/requests/java/get_restoration.rb @@ -0,0 +1,32 @@ +module Fog + module OracleCloud + class Java + class Real + def get_restoration(service_name, job_id) + response = request( + :expects => 200, + :method => 'GET', + :path => "/paas/service/jcs/api/v1.1/instances/#{@identity_domain}/#{service_name}/restoredbackups/#{job_id}" + ) + response + end + end + + class Mock + def get_restoration(service_name, job_id) + response = Excon::Response.new + + if restoration = self.data[:restorations].first + response.status = 200 + response.body = restoration + + response + else + raise Fog::OracleCloud::Java::NotFound.new("Java Server #{name} does not exist"); + end + + end + end + end + end +end diff --git a/lib/fog/oraclecloud/requests/java/list_backups.rb b/lib/fog/oraclecloud/requests/java/list_backups.rb new file mode 100644 index 0000000..b9456e0 --- /dev/null +++ b/lib/fog/oraclecloud/requests/java/list_backups.rb @@ -0,0 +1,32 @@ +module Fog + module OracleCloud + class Java + class Real + def list_backups(service_name) + response = request( + :expects => 200, + :method => 'GET', + :path => "/paas/service/jcs/api/v1.1/instances/#{@identity_domain}/#{service_name}/backups" + ) + response + end + end + + class Mock + def list_backups(service_name) + response = Excon::Response.new + + if !self.data[:backups] then + self.data[:backups] = [] + end + + backups = self.data[:backups] + response.body = { + 'backups' => backups + } + response + end + end + end + end +end diff --git a/lib/fog/oraclecloud/requests/java/list_restorations.rb b/lib/fog/oraclecloud/requests/java/list_restorations.rb new file mode 100644 index 0000000..8c9807b --- /dev/null +++ b/lib/fog/oraclecloud/requests/java/list_restorations.rb @@ -0,0 +1,32 @@ +module Fog + module OracleCloud + class Java + class Real + def list_restorations(service_name) + response = request( + :expects => 200, + :method => 'GET', + :path => "/paas/service/jcs/api/v1.1/instances/#{@identity_domain}/#{service_name}/restoredbackups" + ) + response + end + end + + class Mock + def list_restorations(service_name) + response = Excon::Response.new + + if !self.data[:restorations] then + self.data[:restorations] = [] + end + + restorations = self.data[:restorations] + response.body = { + 'restoreHistory' => restorations + } + response + end + end + end + end +end diff --git a/lib/fog/oraclecloud/requests/java/restoration_instance.rb b/lib/fog/oraclecloud/requests/java/restoration_instance.rb new file mode 100644 index 0000000..8602f8b --- /dev/null +++ b/lib/fog/oraclecloud/requests/java/restoration_instance.rb @@ -0,0 +1,54 @@ +module Fog + module OracleCloud + class Java + class Real + + def restoration_instance(service_name, backup_id, options={}) + body_data = { + 'backupId' => backup_id, + 'forceScaleIn' => options[:forceScaleIn], + 'notes' => options[:notes], + 'pauseOTD' => options[:pauseOTD], + 'resetBinaries' => options[:resetBinaries], + 'restoreConfig' => options[:restoreConfig] + } + body_data = body_data.reject {|key, value| value.nil?} + + response = request( + :method => 'POST', + :expects => 202, + :path => "/paas/service/jcs/api/v1.1/instances/#{@identity_domain}/#{service_name}/restoredbackups", + :body => Fog::JSON.encode(body_data), + ) + + response + + end + end + + class Mock + def restoration_instance(service_name, backup_id, options={}) + response = Excon::Response.new + + if !self.data[:restorations].is_a? Array then + self.data[:restorations] = [] + end + + self.data[:restorations].push({ + 'jobId'=>'10001', + 'backupId'=>backup_id, + 'recoveryStartDate'=>Time.now.strftime('%d-%b-%Y %H:%M:%S UTC'), + 'status'=>'Completed', + 'service_name'=>service_name + }) + + response.status = 202 + response.body={ + 'operationName'=>'restore-backup' + } + response + end + end + end + end +end diff --git a/tests/requests/java_tests.rb b/tests/requests/java_tests.rb index 879c7aa..de7d0de 100644 --- a/tests/requests/java_tests.rb +++ b/tests/requests/java_tests.rb @@ -1,7 +1,7 @@ require 'pp' Shindo.tests('Fog::Java[oraclecloud] | java requests', 'java') do - + tests("#java-create", "create") do instance = Fog::OracleCloud[:java].instances.create( :service_name => 'TestWLS', @@ -28,7 +28,7 @@ instance.ready? end end - +=begin tests('#java-read') do instances = Fog::OracleCloud[:java].instances test "returns an Array" do @@ -94,7 +94,64 @@ end end - +=end + + tests('test jcs backup and restoration') do + test_service_name = 'TestWLS' + #test_service_name = 'dengJCS' + + instance = Fog::OracleCloud[:java].instances.get(test_service_name) + if !instance.ready? + puts 'wait for ready....' + Fog::OracleCloud[:java].instances.get(test_service_name).wait_for(1800) { ready? } + end + + # Create a backup + response = instance.backup() + test "should start backup" do + response.body['operationName'].eql?('start-backup') + end + Fog::OracleCloud[:java].instances.get(test_service_name).wait_for(1800) { ready? } + Fog::OracleCloud[:java].instances.get(test_service_name).ready? + + backups = instance.backups + test "returns an Array" do + backups.is_a? Array + end + test "should return records" do + backups.size >= 1 + end + + backup = backups.get(test_service_name,backups.first.backup_id) + test "should return a backup" do + backup.status.is_a? String + end + + # Create a restoration + test_backup_id = backups.first.backup_id + response = instance.restoration(test_backup_id, :forceScaleIn => true) + test "should start restoration" do + response.body['operationName'].eql?('restore-backup') + end + Fog::OracleCloud[:java].instances.get(test_service_name).wait_for(1800) { ready? } + Fog::OracleCloud[:java].instances.get(test_service_name).ready? + + restorations = instance.restorations + test "returns an Array" do + restorations.is_a? Array + end + test "should return records" do + restorations.size >= 1 + end + + restoration = restorations.get(test_service_name,restorations.first.job_id) + test "should return a restoration" do + restoration.status.is_a? String + end + + end + +=begin tests("#java-delete", "create") do instance = Fog::OracleCloud[:java].instances.get('TestWLS') instance.dba_name = 'Admin', @@ -105,6 +162,6 @@ instance.wait_for { stopped? } end end - +=end end \ No newline at end of file From be5357bbc6686af3680962adb1b78e783fa02b4c Mon Sep 17 00:00:00 2001 From: "yuanhong.deng" Date: Fri, 25 Nov 2016 10:29:37 +0800 Subject: [PATCH 2/5] Update jcs backup and restoration api 1. Update Mock for getting the backup 2. Update Mock for getting the restoration 3. Update java_tests.rb --- .../oraclecloud/requests/java/get_backup.rb | 18 ++++++++++------- .../requests/java/get_restoration.rb | 20 ++++++++++--------- tests/requests/java_tests.rb | 6 +----- 3 files changed, 23 insertions(+), 21 deletions(-) diff --git a/lib/fog/oraclecloud/requests/java/get_backup.rb b/lib/fog/oraclecloud/requests/java/get_backup.rb index 6d797de..0512b29 100644 --- a/lib/fog/oraclecloud/requests/java/get_backup.rb +++ b/lib/fog/oraclecloud/requests/java/get_backup.rb @@ -16,13 +16,17 @@ class Mock def get_backup(service_name, backup_id) response = Excon::Response.new - if backup = self.data[:backups].first - response.status = 200 - response.body = backup - response - else - raise Fog::OracleCloud::Java::NotFound.new("Java Server #{name} does not exist"); - end + backup = {} + self.data[:backups].each_with_index { |r, i| + if r['backupId'].eql?(backup_id) + backup = self.data[:backups][i] + end + } + + response.status = 200 + response.body = backup + response + end end end diff --git a/lib/fog/oraclecloud/requests/java/get_restoration.rb b/lib/fog/oraclecloud/requests/java/get_restoration.rb index 9c1c0c2..4256035 100644 --- a/lib/fog/oraclecloud/requests/java/get_restoration.rb +++ b/lib/fog/oraclecloud/requests/java/get_restoration.rb @@ -16,15 +16,17 @@ class Mock def get_restoration(service_name, job_id) response = Excon::Response.new - if restoration = self.data[:restorations].first - response.status = 200 - response.body = restoration - - response - else - raise Fog::OracleCloud::Java::NotFound.new("Java Server #{name} does not exist"); - end - + restoration = {} + self.data[:restorations].each_with_index{ |r,i| + if r['jobId'].eql?(job_id) + restoration = self.data[:restorations][i] + end + } + + response.status = 200 + response.body = restoration + response + end end end diff --git a/tests/requests/java_tests.rb b/tests/requests/java_tests.rb index de7d0de..60dc510 100644 --- a/tests/requests/java_tests.rb +++ b/tests/requests/java_tests.rb @@ -28,7 +28,7 @@ instance.ready? end end -=begin + tests('#java-read') do instances = Fog::OracleCloud[:java].instances test "returns an Array" do @@ -94,11 +94,9 @@ end end -=end tests('test jcs backup and restoration') do test_service_name = 'TestWLS' - #test_service_name = 'dengJCS' instance = Fog::OracleCloud[:java].instances.get(test_service_name) if !instance.ready? @@ -151,7 +149,6 @@ end -=begin tests("#java-delete", "create") do instance = Fog::OracleCloud[:java].instances.get('TestWLS') instance.dba_name = 'Admin', @@ -162,6 +159,5 @@ instance.wait_for { stopped? } end end -=end end \ No newline at end of file From 589595785dbe2b189a52439458d2879f22e68155 Mon Sep 17 00:00:00 2001 From: "yuanhong.deng" Date: Fri, 25 Nov 2016 11:08:02 +0800 Subject: [PATCH 3/5] Update the format Update the format for code. --- lib/fog/oraclecloud/models/java/instance.rb | 14 ++--- .../requests/java/backup_instance.rb | 6 +- .../requests/java/restoration_instance.rb | 14 ++--- tests/requests/java_tests.rb | 58 ++++++++++--------- 4 files changed, 48 insertions(+), 44 deletions(-) diff --git a/lib/fog/oraclecloud/models/java/instance.rb b/lib/fog/oraclecloud/models/java/instance.rb index f998401..4666723 100644 --- a/lib/fog/oraclecloud/models/java/instance.rb +++ b/lib/fog/oraclecloud/models/java/instance.rb @@ -169,17 +169,17 @@ def stopped? def servers service.servers.all(service_name) end - - def backup + + def backup requires :service_name service.backup_instance(service_name) end - def backups - service.backups.all(service_name) - end - - def restoration(backup_id, options) + def backups + service.backups.all(service_name) + end + + def restoration(backup_id, options) requires :service_name service.restoration_instance(service_name, backup_id, options) end diff --git a/lib/fog/oraclecloud/requests/java/backup_instance.rb b/lib/fog/oraclecloud/requests/java/backup_instance.rb index c6e1ab2..9a6783d 100644 --- a/lib/fog/oraclecloud/requests/java/backup_instance.rb +++ b/lib/fog/oraclecloud/requests/java/backup_instance.rb @@ -5,11 +5,11 @@ class Real def backup_instance(service_name, options={}) # Oracle Cloud requires an empty JSON object in the body - body_data = { - 'databaseIncluded' => options[:databaseIncluded], + body_data = { + 'databaseIncluded' => options[:databaseIncluded], 'expirationDate' => options[:expirationDate], 'full' => options[:full], - 'notes' => options[:notes] + 'notes' => options[:notes] } body_data = body_data.reject {|key, value| value.nil?} diff --git a/lib/fog/oraclecloud/requests/java/restoration_instance.rb b/lib/fog/oraclecloud/requests/java/restoration_instance.rb index 8602f8b..42f5aae 100644 --- a/lib/fog/oraclecloud/requests/java/restoration_instance.rb +++ b/lib/fog/oraclecloud/requests/java/restoration_instance.rb @@ -4,13 +4,13 @@ class Java class Real def restoration_instance(service_name, backup_id, options={}) - body_data = { + body_data = { 'backupId' => backup_id, - 'forceScaleIn' => options[:forceScaleIn], - 'notes' => options[:notes], - 'pauseOTD' => options[:pauseOTD], - 'resetBinaries' => options[:resetBinaries], - 'restoreConfig' => options[:restoreConfig] + 'forceScaleIn' => options[:forceScaleIn], + 'notes' => options[:notes], + 'pauseOTD' => options[:pauseOTD], + 'resetBinaries' => options[:resetBinaries], + 'restoreConfig' => options[:restoreConfig] } body_data = body_data.reject {|key, value| value.nil?} @@ -45,7 +45,7 @@ def restoration_instance(service_name, backup_id, options={}) response.status = 202 response.body={ 'operationName'=>'restore-backup' - } + } response end end diff --git a/tests/requests/java_tests.rb b/tests/requests/java_tests.rb index 60dc510..79f26e2 100644 --- a/tests/requests/java_tests.rb +++ b/tests/requests/java_tests.rb @@ -56,16 +56,16 @@ end end - tests('test jcs scaling ') do - scale_out_server_name = 'TestWLS_server_1' + tests('test jcs scaling ') do + scale_out_server_name = 'TestWLS_server_1' test_service_name = 'TestWLS' - test "scale out a cluster" do - instance = Fog::OracleCloud[:java].instances.get(test_service_name) - instance.scale_out_a_cluster('testcluster',false) - Fog::OracleCloud[:java].instances.get(test_service_name).wait_for(1800) { ready? } - Fog::OracleCloud[:java].instances.get(test_service_name).ready? - end + test "scale out a cluster" do + instance = Fog::OracleCloud[:java].instances.get(test_service_name) + instance.scale_out_a_cluster('testcluster',false) + Fog::OracleCloud[:java].instances.get(test_service_name).wait_for(1800) { ready? } + Fog::OracleCloud[:java].instances.get(test_service_name).ready? + end test('get server') do instance = Fog::OracleCloud[:java].instances.get(test_service_name) @@ -74,24 +74,24 @@ server.ready? end - test "scale a node" do - instance = Fog::OracleCloud[:java].instances.get(test_service_name) - instance.ready? - server = instance.servers.get(test_service_name,scale_out_server_name) - server.scale('oc4') - Fog::OracleCloud[:java].instances.get(test_service_name).wait_for(1800) { ready? } - server = instance.servers.get(test_service_name,scale_out_server_name) - server.ready? - server.shape == 'oc4' - end + test "scale a node" do + instance = Fog::OracleCloud[:java].instances.get(test_service_name) + instance.ready? + server = instance.servers.get(test_service_name,scale_out_server_name) + server.scale('oc4') + Fog::OracleCloud[:java].instances.get(test_service_name).wait_for(1800) { ready? } + server = instance.servers.get(test_service_name,scale_out_server_name) + server.ready? + server.shape == 'oc4' + end - test "scale in a cluster" do - instance = Fog::OracleCloud[:java].instances.get(test_service_name) - instance.ready? - instance.servers.get(test_service_name,scale_out_server_name).scale_in_a_cluster - Fog::OracleCloud[:java].instances.get(test_service_name).wait_for(1800) { ready? } - Fog::OracleCloud[:java].instances.get(test_service_name).ready? - end + test "scale in a cluster" do + instance = Fog::OracleCloud[:java].instances.get(test_service_name) + instance.ready? + instance.servers.get(test_service_name,scale_out_server_name).scale_in_a_cluster + Fog::OracleCloud[:java].instances.get(test_service_name).wait_for(1800) { ready? } + Fog::OracleCloud[:java].instances.get(test_service_name).ready? + end end @@ -112,6 +112,7 @@ Fog::OracleCloud[:java].instances.get(test_service_name).wait_for(1800) { ready? } Fog::OracleCloud[:java].instances.get(test_service_name).ready? + # List backups backups = instance.backups test "returns an Array" do backups.is_a? Array @@ -120,8 +121,9 @@ backups.size >= 1 end - backup = backups.get(test_service_name,backups.first.backup_id) - test "should return a backup" do + # Get a backup + backup = backups.get(test_service_name,backups.first.backup_id) + test "should return a backup" do backup.status.is_a? String end @@ -134,6 +136,7 @@ Fog::OracleCloud[:java].instances.get(test_service_name).wait_for(1800) { ready? } Fog::OracleCloud[:java].instances.get(test_service_name).ready? + # List restorations restorations = instance.restorations test "returns an Array" do restorations.is_a? Array @@ -142,6 +145,7 @@ restorations.size >= 1 end + # Get a restoration restoration = restorations.get(test_service_name,restorations.first.job_id) test "should return a restoration" do restoration.status.is_a? String From fa4a5d99c8fd2800a3f5fccde379b429fb78bc9a Mon Sep 17 00:00:00 2001 From: gcthomas Date: Fri, 25 Nov 2016 12:27:30 +0800 Subject: [PATCH 4/5] increse version --- lib/fog/oraclecloud/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fog/oraclecloud/version.rb b/lib/fog/oraclecloud/version.rb index cb4e584..21f440d 100644 --- a/lib/fog/oraclecloud/version.rb +++ b/lib/fog/oraclecloud/version.rb @@ -1,5 +1,5 @@ module Fog module OracleCloud - VERSION = "0.1.12" + VERSION = "0.1.13" end end From 3ecfd59b2b7ab375ee6778e0086ff8991d57174e Mon Sep 17 00:00:00 2001 From: gcthomas Date: Fri, 25 Nov 2016 12:34:28 +0800 Subject: [PATCH 5/5] Add new supported services for Java Cloud --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 9607a35..59fbacb 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,15 @@ The following services are supported: * get_server * list_instances * list_servers + * scale_in_a_cluster + * scale_out_a_cluster + * scale_a_node + * list_backups + * get_backup + * backup_instance + * list_restorations + * get_restoration + * restoration_instance * SOA Cloud Service * create_instance * delete_instance