diff --git a/eshtek/admin.types.ts b/eshtek/admin.types.ts index ddecdbe..99ec02a 100644 --- a/eshtek/admin.types.ts +++ b/eshtek/admin.types.ts @@ -2,6 +2,16 @@ * Admin API Types and Interfaces */ +/** + * Admin access groups for role-based permissions + */ +export enum AdminGroup { + APPS = 'APPS', + BUSINESS = 'BUSINESS', + ENGINEERING = 'ENGINEERING', + FULL = 'FULL', +} + /** * Response from the catalog status endpoint */ diff --git a/eshtek/errors.ts b/eshtek/errors.ts index afebb43..d6bdaa1 100644 --- a/eshtek/errors.ts +++ b/eshtek/errors.ts @@ -43,6 +43,7 @@ export enum GlobalErrorCode { UPDATE_APP_ANALYSIS_FAILED = 'UPDATE_APP_ANALYSIS_FAILED', UPDATE_APP_FAILED = 'UPDATE_APP_FAILED', UPDATE_APP_NO_CURRENT_CONFIG = 'UPDATE_APP_NO_CURRENT_CONFIG', + UPGRADE_APP_INVALID_STATE = 'UPGRADE_APP_INVALID_STATE', DOMAIN_NOT_FOUND = 'DOMAIN_NOT_FOUND', ACME_ACCOUNT_EMAIL_REQUIRED = 'ACME_ACCOUNT_EMAIL_REQUIRED', ACME_CHALLENGE_FAILED = 'ACME_CHALLENGE_FAILED', diff --git a/eshtek/tasks.ts b/eshtek/tasks.ts index 3c8d042..d110c30 100644 --- a/eshtek/tasks.ts +++ b/eshtek/tasks.ts @@ -48,6 +48,8 @@ export enum HexTaskType { APP_UNINSTALL = 'APP_UNINSTALL', APP_UPGRADE = 'APP_UPGRADE', APP_UPDATE = 'APP_UPDATE', + APP_START = 'APP_START', + APP_STOP = 'APP_STOP', PREFERENCE_LOCATION_PATH_MIGRATION = 'PREFERENCE_LOCATION_PATH_MIGRATION', POOLS_DELETE_ALL = 'POOLS_DELETE_ALL', DRIVE_REPLACE = 'DRIVE_REPLACE', @@ -160,6 +162,8 @@ export type HexTaskDataMap = { [HexTaskType.APP_UNINSTALL]: HexTaskMeta; [HexTaskType.APP_UPGRADE]: HexTaskMeta; [HexTaskType.APP_UPDATE]: HexTaskMeta; + [HexTaskType.APP_START]: HexTaskMeta; + [HexTaskType.APP_STOP]: HexTaskMeta; [HexTaskType.PREFERENCE_LOCATION_PATH_MIGRATION]: HexTaskMeta; [HexTaskType.DRIVE_REPLACE]: HexTaskMeta; [HexTaskType.DOCKER_UPDATE]: HexTaskMeta; @@ -191,6 +195,8 @@ export const HexTaskSettings: { [HexTaskType.APP_UNINSTALL]: { canHaveMultiple: true, predictedSecondsToComplete: 500 }, [HexTaskType.APP_UPGRADE]: { canHaveMultiple: true, predictedSecondsToComplete: 500 }, [HexTaskType.APP_UPDATE]: { canHaveMultiple: true, predictedSecondsToComplete: 500 }, + [HexTaskType.APP_START]: { canHaveMultiple: true, predictedSecondsToComplete: 120 }, + [HexTaskType.APP_STOP]: { canHaveMultiple: true, predictedSecondsToComplete: 120 }, [HexTaskType.PREFERENCE_LOCATION_PATH_MIGRATION]: { canHaveMultiple: false, predictedSecondsToComplete: 1200 }, [HexTaskType.DRIVE_REPLACE]: { canHaveMultiple: true, predictedSecondsToComplete: 120 }, [HexTaskType.DOCKER_UPDATE]: { canHaveMultiple: false, predictedSecondsToComplete: 120 }, diff --git a/truenas/webui/enums/app-state.enum.ts b/truenas/webui/enums/app-state.enum.ts index bcfe294..616a764 100644 --- a/truenas/webui/enums/app-state.enum.ts +++ b/truenas/webui/enums/app-state.enum.ts @@ -1,19 +1,26 @@ const T = (str: string) => str; + export enum AppState { Running = 'RUNNING', Deploying = 'DEPLOYING', Stopped = 'STOPPED', + Stopping = 'STOPPING', + Crashed = 'CRASHED', } export const appStateIcons = new Map([ [AppState.Running, 'mdi-check-circle'], [AppState.Deploying, 'mdi-progress-wrench'], [AppState.Stopped, 'mdi-stop-circle'], + [AppState.Stopping, 'mdi-check-circle'], + [AppState.Crashed, 'mdi-alert-circle'], ]); export const appStateLabels = new Map([ [AppState.Running, T('Running')], [AppState.Deploying, T('Deploying')], [AppState.Stopped, T('Stopped')], -]); + [AppState.Stopping, T('Stopping')], + [AppState.Crashed, T('Crashed')], +]); \ No newline at end of file diff --git a/truenas/webui/enums/app-status.ts b/truenas/webui/enums/app-status.ts deleted file mode 100644 index 1e893ab..0000000 --- a/truenas/webui/enums/app-status.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { AppState } from './app-state.enum'; - -export enum AppStatus { - Started = 'STARTED', - Starting = 'STARTING', - Deploying = 'DEPLOYING', - Stopped = 'STOPPED', - Stopping = 'STOPPING', -} \ No newline at end of file