feat: Implement Cloudly Task Manager with predefined tasks and execution tracking

- Added CloudlyTaskManager class for managing tasks, including registration, execution, scheduling, and cancellation.
- Created predefined tasks: DNS Sync, Certificate Renewal, Cleanup, Health Check, Resource Report, Database Maintenance, Security Scan, and Docker Cleanup.
- Introduced ITaskExecution interface for tracking task execution details and outcomes.
- Developed API request interfaces for task management operations (getTasks, getTaskExecutions, triggerTask, cancelTask).
- Implemented CloudlyViewTasks web component for displaying tasks and their execution history, including filtering and detailed views.
This commit is contained in:
2025-09-10 16:37:03 +00:00
parent fd1da01a3f
commit 5b37bb5b11
18 changed files with 1770 additions and 47 deletions

View File

@@ -24,7 +24,7 @@ export class ExternalRegistryManager {
this.cloudlyRef.authManager.validIdentityGuard,
]);
const registry = await ExternalRegistry.getRegistryById(dataArg.id);
const registry = await this.CExternalRegistry.getRegistryById(dataArg.id);
if (!registry) {
throw new Error(`Registry with id ${dataArg.id} not found`);
}
@@ -41,7 +41,7 @@ export class ExternalRegistryManager {
this.cloudlyRef.authManager.validIdentityGuard,
]);
const registries = await ExternalRegistry.getRegistries();
const registries = await this.CExternalRegistry.getRegistries();
return {
registries: await Promise.all(
registries.map((registry) => registry.createSavableObject())
@@ -57,7 +57,7 @@ export class ExternalRegistryManager {
this.cloudlyRef.authManager.validIdentityGuard,
]);
const registry = await ExternalRegistry.createExternalRegistry(dataArg.registryData);
const registry = await this.CExternalRegistry.createExternalRegistry(dataArg.registryData);
return {
registry: await registry.createSavableObject(),
};
@@ -71,7 +71,7 @@ export class ExternalRegistryManager {
this.cloudlyRef.authManager.validIdentityGuard,
]);
const registry = await ExternalRegistry.updateExternalRegistry(
const registry = await this.CExternalRegistry.updateExternalRegistry(
dataArg.registryId,
dataArg.registryData
);
@@ -88,7 +88,7 @@ export class ExternalRegistryManager {
this.cloudlyRef.authManager.validIdentityGuard,
]);
const success = await ExternalRegistry.deleteExternalRegistry(dataArg.registryId);
const success = await this.CExternalRegistry.deleteExternalRegistry(dataArg.registryId);
return {
ok: success,
};
@@ -102,7 +102,7 @@ export class ExternalRegistryManager {
this.cloudlyRef.authManager.validIdentityGuard,
]);
const registry = await ExternalRegistry.getRegistryById(dataArg.registryId);
const registry = await this.CExternalRegistry.getRegistryById(dataArg.registryId);
if (!registry) {
return {
success: false,