mirror of
https://github.com/Dokploy/dokploy.git
synced 2026-07-11 08:55:22 +02:00
feat: add volume backup notification support (#2875)
This commit is contained in:
@@ -11,6 +11,7 @@ import {
|
||||
} from "@dokploy/server/utils/process/execAsync";
|
||||
import { scheduledJobs, scheduleJob } from "node-schedule";
|
||||
import { getS3Credentials, normalizeS3Path } from "../backups/utils";
|
||||
import { sendVolumeBackupNotifications } from "../notifications/volume-backup";
|
||||
import { backupVolume } from "./backup";
|
||||
|
||||
export const scheduleVolumeBackup = async (volumeBackupId: string) => {
|
||||
@@ -77,6 +78,41 @@ export const runVolumeBackup = async (volumeBackupId: string) => {
|
||||
}
|
||||
|
||||
await updateDeploymentStatus(deployment.deploymentId, "done");
|
||||
|
||||
// Send success notification
|
||||
try {
|
||||
const projectName = volumeBackup.application?.environment?.project?.name ||
|
||||
volumeBackup.compose?.environment?.project?.name ||
|
||||
volumeBackup.postgres?.environment?.project?.name ||
|
||||
volumeBackup.mysql?.environment?.project?.name ||
|
||||
volumeBackup.mariadb?.environment?.project?.name ||
|
||||
volumeBackup.mongo?.environment?.project?.name ||
|
||||
volumeBackup.redis?.environment?.project?.name ||
|
||||
"Unknown Project";
|
||||
|
||||
const organizationId = volumeBackup.application?.environment?.project?.organizationId ||
|
||||
volumeBackup.compose?.environment?.project?.organizationId ||
|
||||
volumeBackup.postgres?.environment?.project?.organizationId ||
|
||||
volumeBackup.mysql?.environment?.project?.organizationId ||
|
||||
volumeBackup.mariadb?.environment?.project?.organizationId ||
|
||||
volumeBackup.mongo?.environment?.project?.organizationId ||
|
||||
volumeBackup.redis?.environment?.project?.organizationId ||
|
||||
"";
|
||||
|
||||
// Map service type to match notification function expectations
|
||||
const mappedServiceType = volumeBackup.serviceType === "mongo" ? "mongodb" : volumeBackup.serviceType;
|
||||
|
||||
await sendVolumeBackupNotifications({
|
||||
projectName,
|
||||
applicationName: volumeBackup.name,
|
||||
volumeName: volumeBackup.volumeName,
|
||||
serviceType: mappedServiceType as "application" | "postgres" | "mysql" | "mongodb" | "mariadb" | "redis" | "compose",
|
||||
type: "success",
|
||||
organizationId,
|
||||
});
|
||||
} catch (notificationError) {
|
||||
console.error("Failed to send volume backup success notification:", notificationError);
|
||||
}
|
||||
} catch (error) {
|
||||
const { VOLUME_BACKUPS_PATH } = paths(!!serverId);
|
||||
const volumeBackupPath = path.join(
|
||||
@@ -92,6 +128,42 @@ export const runVolumeBackup = async (volumeBackupId: string) => {
|
||||
}
|
||||
await updateDeploymentStatus(deployment.deploymentId, "error");
|
||||
|
||||
// Send error notification
|
||||
try {
|
||||
const projectName = volumeBackup.application?.environment?.project?.name ||
|
||||
volumeBackup.compose?.environment?.project?.name ||
|
||||
volumeBackup.postgres?.environment?.project?.name ||
|
||||
volumeBackup.mysql?.environment?.project?.name ||
|
||||
volumeBackup.mariadb?.environment?.project?.name ||
|
||||
volumeBackup.mongo?.environment?.project?.name ||
|
||||
volumeBackup.redis?.environment?.project?.name ||
|
||||
"Unknown Project";
|
||||
|
||||
const organizationId = volumeBackup.application?.environment?.project?.organizationId ||
|
||||
volumeBackup.compose?.environment?.project?.organizationId ||
|
||||
volumeBackup.postgres?.environment?.project?.organizationId ||
|
||||
volumeBackup.mysql?.environment?.project?.organizationId ||
|
||||
volumeBackup.mariadb?.environment?.project?.organizationId ||
|
||||
volumeBackup.mongo?.environment?.project?.organizationId ||
|
||||
volumeBackup.redis?.environment?.project?.organizationId ||
|
||||
"";
|
||||
|
||||
// Map service type to match notification function expectations
|
||||
const mappedServiceType = volumeBackup.serviceType === "mongo" ? "mongodb" : volumeBackup.serviceType;
|
||||
|
||||
await sendVolumeBackupNotifications({
|
||||
projectName,
|
||||
applicationName: volumeBackup.name,
|
||||
volumeName: volumeBackup.volumeName,
|
||||
serviceType: mappedServiceType as "application" | "postgres" | "mysql" | "mongodb" | "mariadb" | "redis" | "compose",
|
||||
type: "error",
|
||||
organizationId,
|
||||
errorMessage: error instanceof Error ? error.message : String(error),
|
||||
});
|
||||
} catch (notificationError) {
|
||||
console.error("Failed to send volume backup error notification:", notificationError);
|
||||
}
|
||||
|
||||
console.error(error);
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user