Skip to content

Commit fb02c9b

Browse files
Tidy up
Signed-off-by: Anders Swanson <anders.swanson@oracle.com>
1 parent 9fa4c72 commit fb02c9b

File tree

3 files changed

+75
-7
lines changed

3 files changed

+75
-7
lines changed

spring-cloud-oci-vault/src/main/java/com/oracle/cloud/spring/vault/Vault.java

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
import java.nio.charset.StandardCharsets;
66
import java.util.Base64;
7-
import java.util.Date;
87
import java.util.List;
98

109
import com.oracle.bmc.secrets.model.Base64SecretBundleContentDetails;
@@ -22,12 +21,48 @@
2221
* Users can retrieve, create, update, list, and delete secrets within an OCI Vault.
2322
*/
2423
public interface Vault {
24+
/**
25+
* Retrieves a secret by name.
26+
* @param secretName The name of the secret.
27+
* @return The secret bundle response.
28+
*/
2529
GetSecretBundleByNameResponse getSecret(String secretName);
30+
31+
/**
32+
* Lists all secrets in the Vault.
33+
* @return A list of secret summaries.
34+
*/
2635
List<SecretSummary> listSecrets();
36+
37+
/**
38+
* Create a secret.
39+
* @param secretName The name of the secret being created.
40+
* @param body The secret body to create.
41+
* @return A create secret response.
42+
*/
2743
CreateSecretResponse createSecret(String secretName, CreateSecretDetails body);
28-
ScheduleSecretDeletionResponse scheduleSecretDeletion(String secretName, Date timeOfDeletion);
44+
45+
/**
46+
* Schedule the deletion of a secret.
47+
* @param secretName The name of the secret to schedule deletion for.
48+
* @param deleteAfterDays The number of days after which the secret will be deleted. May be between 1 and 30.
49+
* @return A delete secret respones.
50+
*/
51+
ScheduleSecretDeletionResponse scheduleSecretDeletion(String secretName, int deleteAfterDays);
52+
53+
/**
54+
* Update a secret content.
55+
* @param secretName The name of the secret to update.
56+
* @param body The secret body to update.
57+
* @return An update secret response.
58+
*/
2959
UpdateSecretResponse updateSecret(String secretName, UpdateSecretDetails body);
3060

61+
/**
62+
* Decode a secret bundle response as a String.
63+
* @param bundle The bundle to decode.
64+
* @return The secret String content.
65+
*/
3166
default String decodeBundle(GetSecretBundleByNameResponse bundle) {
3267
SecretBundleContentDetails content = bundle.getSecretBundle().getSecretBundleContent();
3368
if (content instanceof Base64SecretBundleContentDetails) {

spring-cloud-oci-vault/src/main/java/com/oracle/cloud/spring/vault/VaultImpl.java

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22
// Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/
33
package com.oracle.cloud.spring.vault;
44

5+
import java.text.SimpleDateFormat;
56
import java.util.ArrayList;
6-
import java.util.Date;
7+
import java.util.Calendar;
78
import java.util.List;
89

910
import com.oracle.bmc.secrets.Secrets;
@@ -29,6 +30,8 @@
2930
* @see Vault
3031
*/
3132
public class VaultImpl implements Vault {
33+
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
34+
3235
private final Vaults vaults;
3336
private final Secrets secrets;
3437
private final String vaultId;
@@ -45,6 +48,11 @@ public VaultImpl(Vaults vaults, Secrets secrets, String vaultId, String compartm
4548
this.compartmentId = compartmentId;
4649
}
4750

51+
/**
52+
* Retrieves a secret by name.
53+
* @param secretName The name of the secret.
54+
* @return The secret bundle response.
55+
*/
4856
@Override
4957
public GetSecretBundleByNameResponse getSecret(String secretName) {
5058
Assert.hasText(secretName, "secretName must not be empty");
@@ -55,6 +63,12 @@ public GetSecretBundleByNameResponse getSecret(String secretName) {
5563
return secrets.getSecretBundleByName(request);
5664
}
5765

66+
/**
67+
* Create a secret.
68+
* @param secretName The name of the secret being created.
69+
* @param body The secret body to create.
70+
* @return A create secret response.
71+
*/
5872
@Override
5973
public CreateSecretResponse createSecret(String secretName, CreateSecretDetails body) {
6074
Assert.hasText(secretName, "secretName must not be empty");
@@ -69,15 +83,24 @@ public CreateSecretResponse createSecret(String secretName, CreateSecretDetails
6983
return vaults.createSecret(request);
7084
}
7185

86+
/**
87+
* Schedule the deletion of a secret.
88+
* @param secretName The name of the secret to schedule deletion for.
89+
* @param deleteAfterDays The number of days after which the secret will be deleted. May be between 1 and 30.
90+
* @return A delete secret respones.
91+
*/
7292
@Override
73-
public ScheduleSecretDeletionResponse scheduleSecretDeletion(String secretName, Date timeOfDeletion) {
93+
public ScheduleSecretDeletionResponse scheduleSecretDeletion(String secretName, int deleteAfterDays) {
7494
Assert.hasText(secretName, "secretName must not be empty");
75-
Assert.notNull(timeOfDeletion, "timeOfDeletion must not be null");
95+
Assert.isTrue(deleteAfterDays >= 1 && deleteAfterDays <= 30, "deleteAfterDays must be between 1 and 30");
96+
97+
Calendar cal = Calendar.getInstance();
98+
cal.add(Calendar.DAY_OF_YEAR, deleteAfterDays);
7699
String secretId = getSecret(secretName)
77100
.getSecretBundle()
78101
.getSecretId();
79102
ScheduleSecretDeletionDetails body = ScheduleSecretDeletionDetails.builder()
80-
.timeOfDeletion(timeOfDeletion)
103+
.timeOfDeletion(cal.getTime())
81104
.build();
82105
ScheduleSecretDeletionRequest request = ScheduleSecretDeletionRequest.builder()
83106
.secretId(secretId)
@@ -86,6 +109,12 @@ public ScheduleSecretDeletionResponse scheduleSecretDeletion(String secretName,
86109
return vaults.scheduleSecretDeletion(request);
87110
}
88111

112+
/**
113+
* Update a secret content.
114+
* @param secretName The name of the secret to update.
115+
* @param body The secret body to update.
116+
* @return An update secret response.
117+
*/
89118
@Override
90119
public UpdateSecretResponse updateSecret(String secretName, UpdateSecretDetails body) {
91120
Assert.hasText(secretName, "secretName must not be empty");
@@ -100,6 +129,10 @@ public UpdateSecretResponse updateSecret(String secretName, UpdateSecretDetails
100129
return vaults.updateSecret(request);
101130
}
102131

132+
/**
133+
* Lists all secrets in the Vault.
134+
* @return A list of secret summaries.
135+
*/
103136
@Override
104137
public List<SecretSummary> listSecrets() {
105138
List<SecretSummary> summaries = new ArrayList<>();

spring-cloud-oci-vault/src/test/java/com/oracle/cloud/spring/vault/VaultImplTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ void createSecret() {
7272
@Test
7373
void scheduleSecretDeletion() {
7474
when(vaults.scheduleSecretDeletion(any())).thenReturn(ScheduleSecretDeletionResponse.builder().build());
75-
ScheduleSecretDeletionResponse response = vault.scheduleSecretDeletion(secretName, new Date());
75+
ScheduleSecretDeletionResponse response = vault.scheduleSecretDeletion(secretName, 1);
7676
assertThat(response).isNotNull();
7777
}
7878

0 commit comments

Comments
 (0)