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
@@ -6,6 +6,7 @@ import {
TDeleteOCIVaultVariable, TDeleteOCIVaultVariable,
TOCIVaultListVariables, TOCIVaultListVariables,
TOCIVaultSyncWithCredentials, TOCIVaultSyncWithCredentials,
TUnmarkOCIVaultVariableFromDeletion,
TUpdateOCIVaultVariable TUpdateOCIVaultVariable
} from "@app/services/secret-sync/oci-vault/oci-vault-sync-types"; } from "@app/services/secret-sync/oci-vault/oci-vault-sync-types";
import { SecretSyncError } from "@app/services/secret-sync/secret-sync-errors"; 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 = { export const OCIVaultSyncFns = {
syncSecrets: async (secretSync: TOCIVaultSyncWithCredentials, secretMap: TSecretMap) => { syncSecrets: async (secretSync: TOCIVaultSyncWithCredentials, secretMap: TSecretMap) => {
const { const {
@@ -132,6 +141,28 @@ export const OCIVaultSyncFns = {
secretKey: key 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
});
}
} }
} }
@@ -42,3 +42,7 @@ export type TUpdateOCIVaultVariable = TOCIVaultListVariables & {
export type TDeleteOCIVaultVariable = TOCIVaultListVariables & { export type TDeleteOCIVaultVariable = TOCIVaultListVariables & {
secretId: string; secretId: string;
}; };
export type TUnmarkOCIVaultVariableFromDeletion = TOCIVaultListVariables & {
secretId: string;
};