From fd6153a55495cb2dbde4a5cd52f47941a254f98e Mon Sep 17 00:00:00 2001 From: Lorenzo De Marchis Date: Tue, 18 Nov 2025 16:51:43 +0100 Subject: [PATCH 1/4] Added start and stop method to ADB controller --- .../oracle/cloud/spring/adb/AutonomousDb.java | 17 ++++++++ .../cloud/spring/adb/AutonomousDbImpl.java | 20 +++++++++ .../AdbController.java | 41 ++++++++++++++++++- .../src/main/resources/application.properties | 4 +- .../src/main/resources/application.properties | 5 +-- 5 files changed, 81 insertions(+), 6 deletions(-) diff --git a/spring-cloud-oci/spring-cloud-oci-adb/src/main/java/com/oracle/cloud/spring/adb/AutonomousDb.java b/spring-cloud-oci/spring-cloud-oci-adb/src/main/java/com/oracle/cloud/spring/adb/AutonomousDb.java index 1bb89796..0d5366a2 100644 --- a/spring-cloud-oci/spring-cloud-oci-adb/src/main/java/com/oracle/cloud/spring/adb/AutonomousDb.java +++ b/spring-cloud-oci/spring-cloud-oci-adb/src/main/java/com/oracle/cloud/spring/adb/AutonomousDb.java @@ -6,6 +6,8 @@ import com.oracle.bmc.database.DatabaseClient; import com.oracle.bmc.database.responses.CreateAutonomousDatabaseResponse; import com.oracle.bmc.database.responses.GenerateAutonomousDatabaseWalletResponse; +import com.oracle.bmc.database.responses.StartAutonomousDatabaseResponse; +import com.oracle.bmc.database.responses.StopAutonomousDatabaseResponse; import com.oracle.bmc.database.responses.DeleteAutonomousDatabaseResponse; /** @@ -60,4 +62,19 @@ CreateAutonomousDatabaseResponse createAutonomousDatabase( */ DeleteAutonomousDatabaseResponse deleteAutonomousDatabase(String databaseId); + /** + * Start an Autonomous Database. + * + * @param databaseId OCID of the Autonomous Database to be started + * @return StartAutonomousDatabaseResponse + */ + StartAutonomousDatabaseResponse startAutonomousDatabase(String databaseId); + + /** + * Stop an Autonomous Database. + * + * @param databaseId OCID of the Autonomous Database to be stopped + * @return StopAutonomousDatabaseResponse + */ + StopAutonomousDatabaseResponse stopAutonomousDatabase(String databaseId); } \ No newline at end of file diff --git a/spring-cloud-oci/spring-cloud-oci-adb/src/main/java/com/oracle/cloud/spring/adb/AutonomousDbImpl.java b/spring-cloud-oci/spring-cloud-oci-adb/src/main/java/com/oracle/cloud/spring/adb/AutonomousDbImpl.java index f08ec267..dfbdafb0 100644 --- a/spring-cloud-oci/spring-cloud-oci-adb/src/main/java/com/oracle/cloud/spring/adb/AutonomousDbImpl.java +++ b/spring-cloud-oci/spring-cloud-oci-adb/src/main/java/com/oracle/cloud/spring/adb/AutonomousDbImpl.java @@ -12,10 +12,14 @@ import com.oracle.bmc.database.responses.GetAutonomousDatabaseResponse; import com.oracle.bmc.database.responses.GenerateAutonomousDatabaseWalletResponse; import com.oracle.bmc.database.responses.DeleteAutonomousDatabaseResponse; +import com.oracle.bmc.database.responses.StartAutonomousDatabaseResponse; +import com.oracle.bmc.database.responses.StopAutonomousDatabaseResponse; import com.oracle.bmc.database.requests.GetAutonomousDatabaseRequest; import com.oracle.bmc.database.requests.GenerateAutonomousDatabaseWalletRequest; import com.oracle.bmc.database.requests.CreateAutonomousDatabaseRequest; import com.oracle.bmc.database.requests.DeleteAutonomousDatabaseRequest; +import com.oracle.bmc.database.requests.StartAutonomousDatabaseRequest; +import com.oracle.bmc.database.requests.StopAutonomousDatabaseRequest; /** * Implementation for the OCI Autonomous Database module. @@ -137,5 +141,21 @@ public DeleteAutonomousDatabaseResponse deleteAutonomousDatabase(String database return response; } + @Override + public StartAutonomousDatabaseResponse startAutonomousDatabase(String databaseId) { + return getDatabaseClient().startAutonomousDatabase( + StartAutonomousDatabaseRequest.builder() + .autonomousDatabaseId(databaseId) + .build() + ); + } + @Override + public StopAutonomousDatabaseResponse stopAutonomousDatabase(String databaseId) { + return getDatabaseClient().stopAutonomousDatabase( + StopAutonomousDatabaseRequest.builder() + .autonomousDatabaseId(databaseId) + .build() + ); + } } \ No newline at end of file diff --git a/spring-cloud-oci/spring-cloud-oci-samples/spring-cloud-oci-adb-sample/src/main/java/com/oracle/cloud/spring/sample/adb/springcloudociadbsample/AdbController.java b/spring-cloud-oci/spring-cloud-oci-samples/spring-cloud-oci-adb-sample/src/main/java/com/oracle/cloud/spring/sample/adb/springcloudociadbsample/AdbController.java index 829ae876..817bd9a2 100644 --- a/spring-cloud-oci/spring-cloud-oci-samples/spring-cloud-oci-adb-sample/src/main/java/com/oracle/cloud/spring/sample/adb/springcloudociadbsample/AdbController.java +++ b/spring-cloud-oci/spring-cloud-oci-samples/spring-cloud-oci-adb-sample/src/main/java/com/oracle/cloud/spring/sample/adb/springcloudociadbsample/AdbController.java @@ -6,10 +6,15 @@ import com.oracle.bmc.database.responses.CreateAutonomousDatabaseResponse; import com.oracle.bmc.database.responses.DeleteAutonomousDatabaseResponse; import com.oracle.bmc.database.responses.GenerateAutonomousDatabaseWalletResponse; +import com.oracle.bmc.database.responses.StartAutonomousDatabaseResponse; +import com.oracle.bmc.database.responses.StopAutonomousDatabaseResponse; import com.oracle.cloud.spring.adb.AutonomousDb; import com.oracle.cloud.spring.adb.AutonomousDbDetails; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; + +import java.util.Map; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.InputStreamResource; import org.springframework.http.HttpHeaders; @@ -40,7 +45,15 @@ ResponseEntity createAutonomousDatabase( ) { CreateAutonomousDatabaseResponse response = autonomousDatabase.createAutonomousDatabase( databaseName, compartmentId, adminPassword, displayName, dataStorageSizeInGBs, computeCount); - return ResponseEntity.accepted().body("opcRequestId : " + response.getOpcRequestId()); + var adb = response.getAutonomousDatabase(); + var result = Map.of( + "opcRequestId", response.getOpcRequestId(), + "autonomousDatabaseOcid", adb.getId(), + "displayName", adb.getDisplayName(), + "lifecycleState", adb.getLifecycleState().getValue() + ); + + return ResponseEntity.accepted().body(result); } @GetMapping @@ -67,4 +80,30 @@ ResponseEntity deleteAutonomousDatabase(@Parameter(required = true, example = return ResponseEntity.ok().body("opcRequestId for deleting the database : " +response.getOpcRequestId()); } + @PostMapping("/start") + ResponseEntity startAutonomousDatabase(@Parameter(required = true, example = "databaseId") @RequestParam String databaseId) { + StartAutonomousDatabaseResponse response = autonomousDatabase.startAutonomousDatabase(databaseId); + var adb = response.getAutonomousDatabase(); + var result = Map.of( + "opcRequestId", response.getOpcRequestId(), + "autonomousDatabaseOcid", adb.getId(), + "displayName", adb.getDisplayName(), + "lifecycleState", adb.getLifecycleState().getValue() + ); + return ResponseEntity.accepted().body(result); + } + + @PostMapping("/stop") + ResponseEntity stopAutonomousDatabase(@Parameter(required = true, example = "databaseId") @RequestParam String databaseId) { + StopAutonomousDatabaseResponse response = autonomousDatabase.stopAutonomousDatabase(databaseId); + var adb = response.getAutonomousDatabase(); + var result = Map.of( + "opcRequestId", response.getOpcRequestId(), + "autonomousDatabaseOcid", adb.getId(), + "displayName", adb.getDisplayName(), + "lifecycleState", adb.getLifecycleState().getValue() + ); + return ResponseEntity.accepted().body(result); + } + } diff --git a/spring-cloud-oci/spring-cloud-oci-samples/spring-cloud-oci-adb-sample/src/main/resources/application.properties b/spring-cloud-oci/spring-cloud-oci-samples/spring-cloud-oci-adb-sample/src/main/resources/application.properties index bd308f84..aebf49d0 100644 --- a/spring-cloud-oci/spring-cloud-oci-samples/spring-cloud-oci-adb-sample/src/main/resources/application.properties +++ b/spring-cloud-oci/spring-cloud-oci-samples/spring-cloud-oci-adb-sample/src/main/resources/application.properties @@ -1,5 +1,5 @@ # Copyright (c) 2024, Oracle and/or its affiliates. # Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/ -spring.cloud.oci.region.static = us-phoenix-1 -spring.cloud.oci.config.type = file \ No newline at end of file +spring.cloud.oci.config.type = file +spring.cloud.oci.config.profile = DEFAULT \ No newline at end of file diff --git a/spring-cloud-oci/spring-cloud-oci-samples/spring-cloud-oci-gen-ai-sample/src/main/resources/application.properties b/spring-cloud-oci/spring-cloud-oci-samples/spring-cloud-oci-gen-ai-sample/src/main/resources/application.properties index d41a33a7..a6b892ce 100644 --- a/spring-cloud-oci/spring-cloud-oci-samples/spring-cloud-oci-gen-ai-sample/src/main/resources/application.properties +++ b/spring-cloud-oci/spring-cloud-oci-samples/spring-cloud-oci-gen-ai-sample/src/main/resources/application.properties @@ -10,6 +10,5 @@ spring.cloud.oci.genai.embedding.enabled=true spring.cloud.oci.genai.embedding.compartment=${OCI_COMPARTMENT_ID} spring.cloud.oci.genai.chat.compartment=${OCI_COMPARTMENT_ID} -spring.cloud.oci.genai.chat.onDemandModelId=${OCI_CHAT_MODEL_ID} -spring.cloud.oci.genai.embedding.onDemandModelId=${OCI_EMBEDDING_MODEL_ID} - +spring.cloud.oci.genai.chat.onDemandModelId=cohere.command-r-plus-08-2024 +spring.cloud.oci.genai.embedding.onDemandModelId=cohere.embed-v4.0 \ No newline at end of file From be093693cf75502e6b2cb55ac4a54311d7e7ee96 Mon Sep 17 00:00:00 2001 From: Lorenzo De Marchis Date: Wed, 19 Nov 2025 14:35:04 +0100 Subject: [PATCH 2/4] update adb docs --- spring-cloud-oci/docs/src/main/asciidoc/adb.adoc | 10 +++++++--- .../com/oracle/cloud/spring/adb/AutonomousDbImpl.java | 2 -- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/spring-cloud-oci/docs/src/main/asciidoc/adb.adoc b/spring-cloud-oci/docs/src/main/asciidoc/adb.adoc index efa759a1..c88db70b 100644 --- a/spring-cloud-oci/docs/src/main/asciidoc/adb.adoc +++ b/spring-cloud-oci/docs/src/main/asciidoc/adb.adoc @@ -31,7 +31,7 @@ dependencies { The starter automatically configures and registers an `AutonomousDb` bean in the Spring application context. The `AutonomousDb` bean (https://oracle.github.io/spring-cloud-oci/{project-version}/javadocs/com/oracle/cloud/spring/adb/package-summary.html[Javadoc]) can be used to create an Autonomous Database, get details of an Autonomous Database, -delete an Autonomous Database and generate a wallet for an Autonomous Database. +start and stop the Autonomous Database, generate a wallet for an Autonomous Database and, ultimately, deleta an Autonomous Databse. [source,java] ---- @@ -54,8 +54,12 @@ public void getAutonomousDatabaseWallet() { // read the InputStream to get the wallet } -public void deleteAutonomousDatabase() { - DeleteAutonomousDatabaseResponse response = autonomousDatabase.deleteAutonomousDatabase(databaseId); +public void startAutonomousDatabase() { + StartAutonomousDatabaseResponse response = autonomousDatabase.startAutonomousDatabase(databaseId); +} + +public void stopAutonomousDatabase() { + StopAutonomousDatabaseResponse response = autonomousDatabase.stopAutonomousDatabase(databaseId); } ---- diff --git a/spring-cloud-oci/spring-cloud-oci-adb/src/main/java/com/oracle/cloud/spring/adb/AutonomousDbImpl.java b/spring-cloud-oci/spring-cloud-oci-adb/src/main/java/com/oracle/cloud/spring/adb/AutonomousDbImpl.java index dfbdafb0..aef69a48 100644 --- a/spring-cloud-oci/spring-cloud-oci-adb/src/main/java/com/oracle/cloud/spring/adb/AutonomousDbImpl.java +++ b/spring-cloud-oci/spring-cloud-oci-adb/src/main/java/com/oracle/cloud/spring/adb/AutonomousDbImpl.java @@ -141,7 +141,6 @@ public DeleteAutonomousDatabaseResponse deleteAutonomousDatabase(String database return response; } - @Override public StartAutonomousDatabaseResponse startAutonomousDatabase(String databaseId) { return getDatabaseClient().startAutonomousDatabase( StartAutonomousDatabaseRequest.builder() @@ -150,7 +149,6 @@ public StartAutonomousDatabaseResponse startAutonomousDatabase(String databaseId ); } - @Override public StopAutonomousDatabaseResponse stopAutonomousDatabase(String databaseId) { return getDatabaseClient().stopAutonomousDatabase( StopAutonomousDatabaseRequest.builder() From 456c1b389eb948e506b23f1e446a656752951e31 Mon Sep 17 00:00:00 2001 From: Lorenzo De Marchis Date: Wed, 19 Nov 2025 16:40:09 +0100 Subject: [PATCH 3/4] Restored application.properties file --- .../src/main/resources/application.properties | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spring-cloud-oci/spring-cloud-oci-samples/spring-cloud-oci-gen-ai-sample/src/main/resources/application.properties b/spring-cloud-oci/spring-cloud-oci-samples/spring-cloud-oci-gen-ai-sample/src/main/resources/application.properties index a6b892ce..d41a33a7 100644 --- a/spring-cloud-oci/spring-cloud-oci-samples/spring-cloud-oci-gen-ai-sample/src/main/resources/application.properties +++ b/spring-cloud-oci/spring-cloud-oci-samples/spring-cloud-oci-gen-ai-sample/src/main/resources/application.properties @@ -10,5 +10,6 @@ spring.cloud.oci.genai.embedding.enabled=true spring.cloud.oci.genai.embedding.compartment=${OCI_COMPARTMENT_ID} spring.cloud.oci.genai.chat.compartment=${OCI_COMPARTMENT_ID} -spring.cloud.oci.genai.chat.onDemandModelId=cohere.command-r-plus-08-2024 -spring.cloud.oci.genai.embedding.onDemandModelId=cohere.embed-v4.0 \ No newline at end of file +spring.cloud.oci.genai.chat.onDemandModelId=${OCI_CHAT_MODEL_ID} +spring.cloud.oci.genai.embedding.onDemandModelId=${OCI_EMBEDDING_MODEL_ID} + From 50d32eedf79070d2abb90e8f0b2e3cc708dd7b92 Mon Sep 17 00:00:00 2001 From: Lorenzo De Marchis Date: Thu, 20 Nov 2025 16:20:14 +0100 Subject: [PATCH 4/4] Added Start and Stop test functions --- .../oracle/cloud/spring/adb/AutonomousDbImplTests.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/spring-cloud-oci/spring-cloud-oci-adb/src/test/java/com/oracle/cloud/spring/adb/AutonomousDbImplTests.java b/spring-cloud-oci/spring-cloud-oci-adb/src/test/java/com/oracle/cloud/spring/adb/AutonomousDbImplTests.java index 7c157fb5..c8b7c887 100644 --- a/spring-cloud-oci/spring-cloud-oci-adb/src/test/java/com/oracle/cloud/spring/adb/AutonomousDbImplTests.java +++ b/spring-cloud-oci/spring-cloud-oci-adb/src/test/java/com/oracle/cloud/spring/adb/AutonomousDbImplTests.java @@ -6,6 +6,8 @@ import com.oracle.bmc.database.DatabaseClient; import com.oracle.bmc.database.responses.CreateAutonomousDatabaseResponse; import com.oracle.bmc.database.responses.GetAutonomousDatabaseResponse; +import com.oracle.bmc.database.responses.StartAutonomousDatabaseResponse; +import com.oracle.bmc.database.responses.StopAutonomousDatabaseResponse; import com.oracle.bmc.database.responses.GenerateAutonomousDatabaseWalletResponse; import com.oracle.bmc.database.responses.DeleteAutonomousDatabaseResponse; import org.junit.jupiter.api.Test; @@ -46,6 +48,12 @@ void testDatbaseImpl() { DeleteAutonomousDatabaseResponse dadr = autonomousDatabase.deleteAutonomousDatabase("ocid"); assertNotNull(dadr); + StartAutonomousDatabaseResponse startadr = autonomousDatabase.startAutonomousDatabase("ocid"); + assertNotNull(startadr); + + StopAutonomousDatabaseResponse stopadr = autonomousDatabase.stopAutonomousDatabase("ocid"); + assertNotNull(stopadr); + } } \ No newline at end of file