Skip to content

Commit ccca696

Browse files
authored
Merge pull request #79 from eshtek/feature/app-scripts-v3
Implements App Scripts V3 and Updates Analysis
2 parents 754246c + 0762c46 commit ccca696

9 files changed

Lines changed: 139 additions & 217 deletions

File tree

‎eshtek/apps-schema.ts‎

Lines changed: 0 additions & 201 deletions
This file was deleted.

‎eshtek/apps.ts‎

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,9 @@ export interface AppInfo extends AppBasics {
8989
status: AppState;
9090
url_webui: string;
9191
upgradeAvailable: boolean;
92+
updatedScriptAvailable: boolean;
9293
latestVersion: string;
94+
recommended: boolean;
9395
}
9496
export interface AppInfoDetailed extends AppInfo {
9597
data: number[][];
@@ -165,7 +167,22 @@ interface AppsInstallScriptV2 {
165167
app_values: Record<string, ChartFormValue>;
166168
}
167169

168-
export type AppsInstallScript = AppsInstallScriptV1 | AppsInstallScriptV2;
170+
interface AppsInstallScriptV3 extends Omit<AppsInstallScriptV2, 'version' | 'requirements'> {
171+
version: 3;
172+
script: {
173+
version: string;
174+
updateCompatibility?: string;
175+
changeLog?: string;
176+
};
177+
requirements: AppRequirements; // Required in V3
178+
}
179+
180+
export type AppsInstallScript = AppsInstallScriptV1 | AppsInstallScriptV2 | AppsInstallScriptV3;
181+
182+
export interface AppConfiguration {
183+
installScript?: AppsInstallScript | null;
184+
questionResponses?: Record<string, string | number | boolean>;
185+
}
169186

170187
export interface InstallScriptCuration {
171188
name: string;

‎eshtek/errors.ts‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,22 @@ export enum GlobalErrorCode {
2929
PROCESS_INSTALL_SCRIPT_INVALID_MEMORY_VALUE = 'PROCESS_INSTALL_SCRIPT_INVALID_MEMORY_VALUE',
3030
PROCESS_INSTALL_SCRIPT_MISSING_QUESTION_RESPONSE = 'PROCESS_INSTALL_SCRIPT_MISSING_QUESTION_RESPONSE',
3131
PROCESS_INSTALL_SCRIPT_INVALID_QUESTION_RESPONSE_TYPE = 'PROCESS_INSTALL_SCRIPT_INVALID_QUESTION_RESPONSE_TYPE',
32+
PROCESS_INSTALL_SCRIPT_MISSING_SCRIPT_METADATA = 'PROCESS_INSTALL_SCRIPT_MISSING_SCRIPT_METADATA',
33+
PROCESS_INSTALL_SCRIPT_MISSING_REQUIREMENTS = 'PROCESS_INSTALL_SCRIPT_MISSING_REQUIREMENTS',
34+
PROCESS_INSTALL_SCRIPT_INVALID_SCRIPT_VERSION = 'PROCESS_INSTALL_SCRIPT_INVALID_SCRIPT_VERSION',
35+
PROCESS_INSTALL_SCRIPT_INVALID_IF_CONDITION = 'PROCESS_INSTALL_SCRIPT_INVALID_IF_CONDITION',
3236
RUN_INSTALL_SCRIPT_UNSUPPORTED_VERSION = 'RUN_INSTALL_SCRIPT_UNSUPPORTED_VERSION',
3337
DDP_CLIENT_DISCONNECTED = 'DDP_CLIENT_DISCONNECTED',
3438
TASK_FAILED_STALE = "TASK_FAILED_STALE",
39+
UPDATE_APP_NOT_FOUND = 'UPDATE_APP_NOT_FOUND',
40+
UPDATE_APP_NOT_IN_CATALOG = 'UPDATE_APP_NOT_IN_CATALOG',
41+
UPDATE_APP_INVALID_SCRIPT = 'UPDATE_APP_INVALID_SCRIPT',
42+
UPDATE_APP_INVALID_CATALOG_SCRIPT = 'UPDATE_APP_INVALID_CATALOG_SCRIPT',
43+
UPDATE_APP_ANALYSIS_FAILED = 'UPDATE_APP_ANALYSIS_FAILED',
44+
UPDATE_APP_FAILED = 'UPDATE_APP_FAILED',
45+
UPDATE_APP_NO_CURRENT_CONFIG = 'UPDATE_APP_NO_CURRENT_CONFIG',
3546
DOMAIN_NOT_FOUND = 'DOMAIN_NOT_FOUND',
3647
ACME_ACCOUNT_EMAIL_REQUIRED = 'ACME_ACCOUNT_EMAIL_REQUIRED',
3748
ACME_CHALLENGE_FAILED = 'ACME_CHALLENGE_FAILED',
3849
ACME_CERTIFICATE_GENERATION_FAILED = 'ACME_CERTIFICATE_GENERATION_FAILED',
39-
4050
}

‎eshtek/routes.ts‎

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { GlobalErrorCode } from './errors';
2+
import type { AppConfiguration } from './apps';
23
import type { LocationPreferenceId } from './preferences';
34
import type { ServerPool, ServerPoolNew, ServerUser, ServerUserType } from './server';
45
import type { VMBasics, VMSettings } from './vms';
@@ -115,11 +116,62 @@ export interface RequestDockerUpdatePool {
115116
poolName: string;
116117
}
117118

118-
export interface RequestAppInstall {
119+
export interface RequestAppInstall extends AppConfiguration {
119120
id: string;
120121
train?: 'community' | 'stable';
121-
installScript?: string;
122-
questionResponses?: Record<string, string | number | boolean>;
122+
}
123+
124+
export interface RequestAppUpdate extends AppConfiguration {}
125+
export interface RequestAppUpdateAnalysis extends AppConfiguration {}
126+
127+
128+
export enum ResourceChangeType {
129+
STORAGE = 'storage',
130+
NETWORK = 'network',
131+
ENVIRONMENT = 'environment',
132+
RESOURCE = 'resource',
133+
PERMISSION = 'permission',
134+
CONFIG = 'config'
135+
}
136+
137+
export enum ResourceChangeAction {
138+
CREATE = 'create',
139+
UPDATE = 'update',
140+
DELETE = 'delete',
141+
NO_OP = 'no-op',
142+
PRESERVE = 'preserve'
143+
}
144+
145+
export interface ResponseResourceChanges {
146+
resourceChanges: Array<{
147+
address: string;
148+
type: ResourceChangeType;
149+
change: {
150+
actions: Array<ResourceChangeAction>;
151+
before: any;
152+
after: any;
153+
};
154+
}>;
155+
planSummary: {
156+
totalChanges: number;
157+
changesByAction: {
158+
create: number;
159+
update: number;
160+
delete: number;
161+
noOp: number;
162+
preserve: number;
163+
};
164+
};
165+
validation: {
166+
updateCompatible: boolean;
167+
compatibilityConstraint?: string;
168+
warnings: string[];
169+
};
170+
versionInfo: {
171+
current?: string;
172+
target?: string;
173+
changelog?: string;
174+
};
123175
}
124176

125177
export interface RequestAppDelete {

‎eshtek/server-schema.ts‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ import {
2727
} from "./server";
2828

2929
import { vMSHealthSchema } from "./vms-schema";
30+
const appsHealthSchema = z.any();
31+
3032

3133
export const serverUserTypeSchema = z.nativeEnum(ServerUserType);
3234

@@ -135,6 +137,12 @@ export const serverSystemDataSystemDeviceDataSchema = z.object({
135137
networking: z.array(serverSystemDataSystemDeviceSchema).optional(),
136138
});
137139

140+
export const serverSystemDataApplicationsSchema =
141+
serverStatusBasicsSchema.extend({
142+
type: z.literal(ServerStatusType.APPLICATIONS),
143+
health: appsHealthSchema,
144+
});
145+
138146
export const serverSystemDataVirtualizationSchema =
139147
serverStatusBasicsSchema.extend({
140148
type: z.literal(ServerStatusType.VIRTUALIZATION),
@@ -220,8 +228,6 @@ const fileTypeSchema = z.any();
220228

221229
const topologyItemStatusSchema = z.any();
222230

223-
const appsHealthSchema = z.any();
224-
225231
const networkInterfaceTypeSchema = z.any();
226232

227233
export const serverPoolBasicsSchema = z.object({
@@ -316,12 +322,6 @@ export const serverSystemDataStorageSchema = serverStatusBasicsSchema.extend({
316322
}),
317323
});
318324

319-
export const serverSystemDataApplicationsSchema =
320-
serverStatusBasicsSchema.extend({
321-
type: z.literal(ServerStatusType.APPLICATIONS),
322-
health: appsHealthSchema,
323-
});
324-
325325
export const serverSystemDataSchema = z.union([
326326
serverSystemDataSystemSchema,
327327
serverSystemDataStorageSchema,

0 commit comments

Comments
 (0)