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/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..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 @@ -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,19 @@ public DeleteAutonomousDatabaseResponse deleteAutonomousDatabase(String database return response; } + public StartAutonomousDatabaseResponse startAutonomousDatabase(String databaseId) { + return getDatabaseClient().startAutonomousDatabase( + StartAutonomousDatabaseRequest.builder() + .autonomousDatabaseId(databaseId) + .build() + ); + } + 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