Skip to content

Commit 9542c8e

Browse files
authored
Added start and stop method to ADB controller (#235)
Added start and stop method to ADB controller
1 parent c5e75f7 commit 9542c8e

File tree

5 files changed

+84
-6
lines changed

5 files changed

+84
-6
lines changed

spring-cloud-oci/docs/src/main/asciidoc/adb.adoc

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ dependencies {
3131

3232
The starter automatically configures and registers an `AutonomousDb` bean in the Spring application context.
3333
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,
34-
delete an Autonomous Database and generate a wallet for an Autonomous Database.
34+
start and stop the Autonomous Database, generate a wallet for an Autonomous Database and, ultimately, deleta an Autonomous Databse.
3535

3636
[source,java]
3737
----
@@ -54,8 +54,12 @@ public void getAutonomousDatabaseWallet() {
5454
// read the InputStream to get the wallet
5555
}
5656
57-
public void deleteAutonomousDatabase() {
58-
DeleteAutonomousDatabaseResponse response = autonomousDatabase.deleteAutonomousDatabase(databaseId);
57+
public void startAutonomousDatabase() {
58+
StartAutonomousDatabaseResponse response = autonomousDatabase.startAutonomousDatabase(databaseId);
59+
}
60+
61+
public void stopAutonomousDatabase() {
62+
StopAutonomousDatabaseResponse response = autonomousDatabase.stopAutonomousDatabase(databaseId);
5963
}
6064
----
6165

spring-cloud-oci/spring-cloud-oci-adb/src/main/java/com/oracle/cloud/spring/adb/AutonomousDb.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import com.oracle.bmc.database.DatabaseClient;
77
import com.oracle.bmc.database.responses.CreateAutonomousDatabaseResponse;
88
import com.oracle.bmc.database.responses.GenerateAutonomousDatabaseWalletResponse;
9+
import com.oracle.bmc.database.responses.StartAutonomousDatabaseResponse;
10+
import com.oracle.bmc.database.responses.StopAutonomousDatabaseResponse;
911
import com.oracle.bmc.database.responses.DeleteAutonomousDatabaseResponse;
1012

1113
/**
@@ -60,4 +62,19 @@ CreateAutonomousDatabaseResponse createAutonomousDatabase(
6062
*/
6163
DeleteAutonomousDatabaseResponse deleteAutonomousDatabase(String databaseId);
6264

65+
/**
66+
* Start an Autonomous Database.
67+
*
68+
* @param databaseId OCID of the Autonomous Database to be started
69+
* @return StartAutonomousDatabaseResponse
70+
*/
71+
StartAutonomousDatabaseResponse startAutonomousDatabase(String databaseId);
72+
73+
/**
74+
* Stop an Autonomous Database.
75+
*
76+
* @param databaseId OCID of the Autonomous Database to be stopped
77+
* @return StopAutonomousDatabaseResponse
78+
*/
79+
StopAutonomousDatabaseResponse stopAutonomousDatabase(String databaseId);
6380
}

spring-cloud-oci/spring-cloud-oci-adb/src/main/java/com/oracle/cloud/spring/adb/AutonomousDbImpl.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,14 @@
1212
import com.oracle.bmc.database.responses.GetAutonomousDatabaseResponse;
1313
import com.oracle.bmc.database.responses.GenerateAutonomousDatabaseWalletResponse;
1414
import com.oracle.bmc.database.responses.DeleteAutonomousDatabaseResponse;
15+
import com.oracle.bmc.database.responses.StartAutonomousDatabaseResponse;
16+
import com.oracle.bmc.database.responses.StopAutonomousDatabaseResponse;
1517
import com.oracle.bmc.database.requests.GetAutonomousDatabaseRequest;
1618
import com.oracle.bmc.database.requests.GenerateAutonomousDatabaseWalletRequest;
1719
import com.oracle.bmc.database.requests.CreateAutonomousDatabaseRequest;
1820
import com.oracle.bmc.database.requests.DeleteAutonomousDatabaseRequest;
21+
import com.oracle.bmc.database.requests.StartAutonomousDatabaseRequest;
22+
import com.oracle.bmc.database.requests.StopAutonomousDatabaseRequest;
1923

2024
/**
2125
* Implementation for the OCI Autonomous Database module.
@@ -137,5 +141,19 @@ public DeleteAutonomousDatabaseResponse deleteAutonomousDatabase(String database
137141

138142
return response;
139143
}
144+
public StartAutonomousDatabaseResponse startAutonomousDatabase(String databaseId) {
145+
return getDatabaseClient().startAutonomousDatabase(
146+
StartAutonomousDatabaseRequest.builder()
147+
.autonomousDatabaseId(databaseId)
148+
.build()
149+
);
150+
}
140151

152+
public StopAutonomousDatabaseResponse stopAutonomousDatabase(String databaseId) {
153+
return getDatabaseClient().stopAutonomousDatabase(
154+
StopAutonomousDatabaseRequest.builder()
155+
.autonomousDatabaseId(databaseId)
156+
.build()
157+
);
158+
}
141159
}

spring-cloud-oci/spring-cloud-oci-samples/spring-cloud-oci-adb-sample/src/main/java/com/oracle/cloud/spring/sample/adb/springcloudociadbsample/AdbController.java

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,15 @@
66
import com.oracle.bmc.database.responses.CreateAutonomousDatabaseResponse;
77
import com.oracle.bmc.database.responses.DeleteAutonomousDatabaseResponse;
88
import com.oracle.bmc.database.responses.GenerateAutonomousDatabaseWalletResponse;
9+
import com.oracle.bmc.database.responses.StartAutonomousDatabaseResponse;
10+
import com.oracle.bmc.database.responses.StopAutonomousDatabaseResponse;
911
import com.oracle.cloud.spring.adb.AutonomousDb;
1012
import com.oracle.cloud.spring.adb.AutonomousDbDetails;
1113
import io.swagger.v3.oas.annotations.Parameter;
1214
import io.swagger.v3.oas.annotations.tags.Tag;
15+
16+
import java.util.Map;
17+
1318
import org.springframework.beans.factory.annotation.Autowired;
1419
import org.springframework.core.io.InputStreamResource;
1520
import org.springframework.http.HttpHeaders;
@@ -40,7 +45,15 @@ ResponseEntity<?> createAutonomousDatabase(
4045
) {
4146
CreateAutonomousDatabaseResponse response = autonomousDatabase.createAutonomousDatabase(
4247
databaseName, compartmentId, adminPassword, displayName, dataStorageSizeInGBs, computeCount);
43-
return ResponseEntity.accepted().body("opcRequestId : " + response.getOpcRequestId());
48+
var adb = response.getAutonomousDatabase();
49+
var result = Map.of(
50+
"opcRequestId", response.getOpcRequestId(),
51+
"autonomousDatabaseOcid", adb.getId(),
52+
"displayName", adb.getDisplayName(),
53+
"lifecycleState", adb.getLifecycleState().getValue()
54+
);
55+
56+
return ResponseEntity.accepted().body(result);
4457
}
4558

4659
@GetMapping
@@ -67,4 +80,30 @@ ResponseEntity<?> deleteAutonomousDatabase(@Parameter(required = true, example =
6780
return ResponseEntity.ok().body("opcRequestId for deleting the database : " +response.getOpcRequestId());
6881
}
6982

83+
@PostMapping("/start")
84+
ResponseEntity<?> startAutonomousDatabase(@Parameter(required = true, example = "databaseId") @RequestParam String databaseId) {
85+
StartAutonomousDatabaseResponse response = autonomousDatabase.startAutonomousDatabase(databaseId);
86+
var adb = response.getAutonomousDatabase();
87+
var result = Map.of(
88+
"opcRequestId", response.getOpcRequestId(),
89+
"autonomousDatabaseOcid", adb.getId(),
90+
"displayName", adb.getDisplayName(),
91+
"lifecycleState", adb.getLifecycleState().getValue()
92+
);
93+
return ResponseEntity.accepted().body(result);
94+
}
95+
96+
@PostMapping("/stop")
97+
ResponseEntity<?> stopAutonomousDatabase(@Parameter(required = true, example = "databaseId") @RequestParam String databaseId) {
98+
StopAutonomousDatabaseResponse response = autonomousDatabase.stopAutonomousDatabase(databaseId);
99+
var adb = response.getAutonomousDatabase();
100+
var result = Map.of(
101+
"opcRequestId", response.getOpcRequestId(),
102+
"autonomousDatabaseOcid", adb.getId(),
103+
"displayName", adb.getDisplayName(),
104+
"lifecycleState", adb.getLifecycleState().getValue()
105+
);
106+
return ResponseEntity.accepted().body(result);
107+
}
108+
70109
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Copyright (c) 2024, Oracle and/or its affiliates.
22
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
33

4-
spring.cloud.oci.region.static = us-phoenix-1
5-
spring.cloud.oci.config.type = file
4+
spring.cloud.oci.config.type = file
5+
spring.cloud.oci.config.profile = DEFAULT

0 commit comments

Comments
 (0)