cancel deletion + update on creation for scheduled for deletion secrets

This commit is contained in:
x032205
2025-05-09 02:34:50 -04:00
parent 9d682ca874
commit cd71db416d
2 changed files with 35 additions and 0 deletions

View File

@@ -6,6 +6,7 @@ import {
TDeleteOCIVaultVariable,
TOCIVaultListVariables,
TOCIVaultSyncWithCredentials,
TUnmarkOCIVaultVariableFromDeletion,
TUpdateOCIVaultVariable
} from "@app/services/secret-sync/oci-vault/oci-vault-sync-types";
import { SecretSyncError } from "@app/services/secret-sync/secret-sync-errors";
@@ -102,6 +103,14 @@ const deleteOCIVaultVariable = async ({ provider, secretId }: TDeleteOCIVaultVar
});
};
const unmarkOCIVaultVariableFromDeletion = async ({ provider, secretId }: TUnmarkOCIVaultVariableFromDeletion) => {
const vaultsClient = new vault.VaultsClient({ authenticationDetailsProvider: provider });
return vaultsClient.cancelSecretDeletion({
secretId
});
};
export const OCIVaultSyncFns = {
syncSecrets: async (secretSync: TOCIVaultSyncWithCredentials, secretMap: TSecretMap) => {
const {
@@ -132,6 +141,28 @@ export const OCIVaultSyncFns = {
secretKey: key
});
}
} else {
// If a secret exists but is pending deletion, cancel the deletion and update the secret
const secretPendingDeletion = Object.values(variables).find(
(s) => s.secretName === key && s.lifecycleState === vault.models.SecretSummary.LifecycleState.PendingDeletion
);
if (secretPendingDeletion) {
await unmarkOCIVaultVariableFromDeletion({
provider,
compartmentId: compartmentOcid,
vaultId: vaultOcid,
secretId: secretPendingDeletion.id
});
await updateOCIVaultVariable({
provider,
compartmentId: compartmentOcid,
vaultId: vaultOcid,
secretId: secretPendingDeletion.id,
value
});
}
}
}

View File

@@ -42,3 +42,7 @@ export type TUpdateOCIVaultVariable = TOCIVaultListVariables & {
export type TDeleteOCIVaultVariable = TOCIVaultListVariables & {
secretId: string;
};
export type TUnmarkOCIVaultVariableFromDeletion = TOCIVaultListVariables & {
secretId: string;
};