@dbos-inc/dbos-cloud 0.8.41-preview
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli.ts +177 -0
- package/dist/packages/dbos-cloud/applications/delete-app.d.ts +2 -0
- package/dist/packages/dbos-cloud/applications/delete-app.d.ts.map +1 -0
- package/dist/packages/dbos-cloud/applications/delete-app.js +42 -0
- package/dist/packages/dbos-cloud/applications/delete-app.js.map +1 -0
- package/dist/packages/dbos-cloud/applications/deploy-app-code.d.ts +2 -0
- package/dist/packages/dbos-cloud/applications/deploy-app-code.d.ts.map +1 -0
- package/dist/packages/dbos-cloud/applications/deploy-app-code.js +145 -0
- package/dist/packages/dbos-cloud/applications/deploy-app-code.js.map +1 -0
- package/dist/packages/dbos-cloud/applications/get-app-logs.d.ts +2 -0
- package/dist/packages/dbos-cloud/applications/get-app-logs.d.ts.map +1 -0
- package/dist/packages/dbos-cloud/applications/get-app-logs.js +42 -0
- package/dist/packages/dbos-cloud/applications/get-app-logs.js.map +1 -0
- package/dist/packages/dbos-cloud/applications/index.d.ts +7 -0
- package/dist/packages/dbos-cloud/applications/index.d.ts.map +1 -0
- package/dist/packages/dbos-cloud/applications/index.js +16 -0
- package/dist/packages/dbos-cloud/applications/index.js.map +1 -0
- package/dist/packages/dbos-cloud/applications/list-apps.d.ts +2 -0
- package/dist/packages/dbos-cloud/applications/list-apps.d.ts.map +1 -0
- package/dist/packages/dbos-cloud/applications/list-apps.js +45 -0
- package/dist/packages/dbos-cloud/applications/list-apps.js.map +1 -0
- package/dist/packages/dbos-cloud/applications/register-app.d.ts +2 -0
- package/dist/packages/dbos-cloud/applications/register-app.d.ts.map +1 -0
- package/dist/packages/dbos-cloud/applications/register-app.js +48 -0
- package/dist/packages/dbos-cloud/applications/register-app.js.map +1 -0
- package/dist/packages/dbos-cloud/applications/types.d.ts +9 -0
- package/dist/packages/dbos-cloud/applications/types.d.ts.map +1 -0
- package/dist/packages/dbos-cloud/applications/types.js +3 -0
- package/dist/packages/dbos-cloud/applications/types.js.map +1 -0
- package/dist/packages/dbos-cloud/applications/update-app.d.ts +2 -0
- package/dist/packages/dbos-cloud/applications/update-app.d.ts.map +1 -0
- package/dist/packages/dbos-cloud/applications/update-app.js +49 -0
- package/dist/packages/dbos-cloud/applications/update-app.js.map +1 -0
- package/dist/packages/dbos-cloud/cli.d.ts +3 -0
- package/dist/packages/dbos-cloud/cli.d.ts.map +1 -0
- package/dist/packages/dbos-cloud/cli.js +149 -0
- package/dist/packages/dbos-cloud/cli.js.map +1 -0
- package/dist/packages/dbos-cloud/cloudutils.d.ts +5 -0
- package/dist/packages/dbos-cloud/cloudutils.d.ts.map +1 -0
- package/dist/packages/dbos-cloud/cloudutils.js +47 -0
- package/dist/packages/dbos-cloud/cloudutils.js.map +1 -0
- package/dist/packages/dbos-cloud/login.d.ts +9 -0
- package/dist/packages/dbos-cloud/login.d.ts.map +1 -0
- package/dist/packages/dbos-cloud/login.js +102 -0
- package/dist/packages/dbos-cloud/login.js.map +1 -0
- package/dist/packages/dbos-cloud/register.d.ts +2 -0
- package/dist/packages/dbos-cloud/register.d.ts.map +1 -0
- package/dist/packages/dbos-cloud/register.js +40 -0
- package/dist/packages/dbos-cloud/register.js.map +1 -0
- package/dist/packages/dbos-cloud/userdb.d.ts +13 -0
- package/dist/packages/dbos-cloud/userdb.d.ts.map +1 -0
- package/dist/packages/dbos-cloud/userdb.js +266 -0
- package/dist/packages/dbos-cloud/userdb.js.map +1 -0
- package/dist/schemas/system_db_schema.d.ts +34 -0
- package/dist/schemas/system_db_schema.d.ts.map +1 -0
- package/dist/schemas/system_db_schema.js +77 -0
- package/dist/schemas/system_db_schema.js.map +1 -0
- package/dist/schemas/user_db_schema.d.ts +11 -0
- package/dist/schemas/user_db_schema.d.ts.map +1 -0
- package/dist/schemas/user_db_schema.js +16 -0
- package/dist/schemas/user_db_schema.js.map +1 -0
- package/dist/src/communicator.d.ts +25 -0
- package/dist/src/communicator.d.ts.map +1 -0
- package/dist/src/communicator.js +26 -0
- package/dist/src/communicator.js.map +1 -0
- package/dist/src/context.d.ts +64 -0
- package/dist/src/context.d.ts.map +1 -0
- package/dist/src/context.js +96 -0
- package/dist/src/context.js.map +1 -0
- package/dist/src/data_validation.d.ts +3 -0
- package/dist/src/data_validation.d.ts.map +1 -0
- package/dist/src/data_validation.js +168 -0
- package/dist/src/data_validation.js.map +1 -0
- package/dist/src/dbos-executor.d.ts +102 -0
- package/dist/src/dbos-executor.d.ts.map +1 -0
- package/dist/src/dbos-executor.js +631 -0
- package/dist/src/dbos-executor.js.map +1 -0
- package/dist/src/dbos-runtime/applicationVersion.d.ts +3 -0
- package/dist/src/dbos-runtime/applicationVersion.d.ts.map +1 -0
- package/dist/src/dbos-runtime/applicationVersion.js +13 -0
- package/dist/src/dbos-runtime/applicationVersion.js.map +1 -0
- package/dist/src/dbos-runtime/cli.d.ts +8 -0
- package/dist/src/dbos-runtime/cli.d.ts.map +1 -0
- package/dist/src/dbos-runtime/cli.js +47 -0
- package/dist/src/dbos-runtime/cli.js.map +1 -0
- package/dist/src/dbos-runtime/config.d.ts +29 -0
- package/dist/src/dbos-runtime/config.d.ts.map +1 -0
- package/dist/src/dbos-runtime/config.js +111 -0
- package/dist/src/dbos-runtime/config.js.map +1 -0
- package/dist/src/dbos-runtime/debug.d.ts +4 -0
- package/dist/src/dbos-runtime/debug.d.ts.map +1 -0
- package/dist/src/dbos-runtime/debug.js +21 -0
- package/dist/src/dbos-runtime/debug.js.map +1 -0
- package/dist/src/dbos-runtime/init.d.ts +7 -0
- package/dist/src/dbos-runtime/init.d.ts.map +1 -0
- package/dist/src/dbos-runtime/init.js +51 -0
- package/dist/src/dbos-runtime/init.js.map +1 -0
- package/dist/src/dbos-runtime/runtime.d.ts +28 -0
- package/dist/src/dbos-runtime/runtime.d.ts.map +1 -0
- package/dist/src/dbos-runtime/runtime.js +95 -0
- package/dist/src/dbos-runtime/runtime.js.map +1 -0
- package/dist/src/debugger/debug_workflow.d.ts +38 -0
- package/dist/src/debugger/debug_workflow.d.ts.map +1 -0
- package/dist/src/debugger/debug_workflow.js +211 -0
- package/dist/src/debugger/debug_workflow.js.map +1 -0
- package/dist/src/decorators.d.ts +118 -0
- package/dist/src/decorators.d.ts.map +1 -0
- package/dist/src/decorators.js +467 -0
- package/dist/src/decorators.js.map +1 -0
- package/dist/src/error.d.ts +47 -0
- package/dist/src/error.d.ts.map +1 -0
- package/dist/src/error.js +171 -0
- package/dist/src/error.js.map +1 -0
- package/dist/src/httpServer/handler.d.ts +54 -0
- package/dist/src/httpServer/handler.d.ts.map +1 -0
- package/dist/src/httpServer/handler.js +175 -0
- package/dist/src/httpServer/handler.js.map +1 -0
- package/dist/src/httpServer/handlerTypes.d.ts +11 -0
- package/dist/src/httpServer/handlerTypes.d.ts.map +1 -0
- package/dist/src/httpServer/handlerTypes.js +19 -0
- package/dist/src/httpServer/handlerTypes.js.map +1 -0
- package/dist/src/httpServer/middleware.d.ts +56 -0
- package/dist/src/httpServer/middleware.d.ts.map +1 -0
- package/dist/src/httpServer/middleware.js +57 -0
- package/dist/src/httpServer/middleware.js.map +1 -0
- package/dist/src/httpServer/server.d.ts +45 -0
- package/dist/src/httpServer/server.d.ts.map +1 -0
- package/dist/src/httpServer/server.js +253 -0
- package/dist/src/httpServer/server.js.map +1 -0
- package/dist/src/system_database.d.ts +89 -0
- package/dist/src/system_database.d.ts.map +1 -0
- package/dist/src/system_database.js +447 -0
- package/dist/src/system_database.js.map +1 -0
- package/dist/src/telemetry/collector.d.ts +16 -0
- package/dist/src/telemetry/collector.d.ts.map +1 -0
- package/dist/src/telemetry/collector.js +65 -0
- package/dist/src/telemetry/collector.js.map +1 -0
- package/dist/src/telemetry/exporters.d.ts +15 -0
- package/dist/src/telemetry/exporters.d.ts.map +1 -0
- package/dist/src/telemetry/exporters.js +59 -0
- package/dist/src/telemetry/exporters.js.map +1 -0
- package/dist/src/telemetry/index.d.ts +11 -0
- package/dist/src/telemetry/index.d.ts.map +1 -0
- package/dist/src/telemetry/index.js +19 -0
- package/dist/src/telemetry/index.js.map +1 -0
- package/dist/src/telemetry/logs.d.ts +47 -0
- package/dist/src/telemetry/logs.d.ts.map +1 -0
- package/dist/src/telemetry/logs.js +195 -0
- package/dist/src/telemetry/logs.js.map +1 -0
- package/dist/src/telemetry/traces.d.ts +14 -0
- package/dist/src/telemetry/traces.d.ts.map +1 -0
- package/dist/src/telemetry/traces.js +52 -0
- package/dist/src/telemetry/traces.js.map +1 -0
- package/dist/src/transaction.d.ts +29 -0
- package/dist/src/transaction.d.ts.map +1 -0
- package/dist/src/transaction.js +27 -0
- package/dist/src/transaction.js.map +1 -0
- package/dist/src/user_database.d.ts +132 -0
- package/dist/src/user_database.d.ts.map +1 -0
- package/dist/src/user_database.js +332 -0
- package/dist/src/user_database.js.map +1 -0
- package/dist/src/utils.d.ts +6 -0
- package/dist/src/utils.d.ts.map +1 -0
- package/dist/src/utils.js +35 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/src/workflow.d.ts +195 -0
- package/dist/src/workflow.d.ts.map +1 -0
- package/dist/src/workflow.js +498 -0
- package/dist/src/workflow.js.map +1 -0
- package/package.json +50 -0
package/cli.ts
ADDED
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
registerApp,
|
|
5
|
+
updateApp,
|
|
6
|
+
listApps,
|
|
7
|
+
deleteApp,
|
|
8
|
+
deployAppCode,
|
|
9
|
+
getAppLogs,
|
|
10
|
+
} from "./applications";
|
|
11
|
+
import { Command } from 'commander';
|
|
12
|
+
import { login } from "./login";
|
|
13
|
+
import { registerUser } from "./register";
|
|
14
|
+
import { createUserDb, getUserDb, deleteUserDb, migrate, rollbackMigration } from "./userdb";
|
|
15
|
+
import { credentialsExist } from "./cloudutils";
|
|
16
|
+
|
|
17
|
+
const program = new Command();
|
|
18
|
+
|
|
19
|
+
const DEFAULT_HOST = process.env.DBOS_DOMAIN; // TODO: Once we have a "production" cluster, hardcode its domain name here
|
|
20
|
+
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
22
|
+
const packageJson = require('../../../package.json') as { version: string };
|
|
23
|
+
program.
|
|
24
|
+
version(packageJson.version);
|
|
25
|
+
|
|
26
|
+
/////////////////////
|
|
27
|
+
/* AUTHENTICATION */
|
|
28
|
+
/////////////////////
|
|
29
|
+
|
|
30
|
+
program
|
|
31
|
+
.command('login')
|
|
32
|
+
.description('Log in to DBOS cloud')
|
|
33
|
+
.requiredOption('-u, --username <string>', 'Username')
|
|
34
|
+
.action(async (options: { username: string }) => {
|
|
35
|
+
const exitCode = await login(options.username);
|
|
36
|
+
process.exit(exitCode);
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
program
|
|
40
|
+
.command('register')
|
|
41
|
+
.description('Register a user and log in to DBOS cloud')
|
|
42
|
+
.requiredOption('-u, --username <string>', 'Username')
|
|
43
|
+
.option('-h, --host <string>', 'Specify the host', DEFAULT_HOST)
|
|
44
|
+
.action(async (options: { username: string, host: string}) => {
|
|
45
|
+
if (!credentialsExist()) {
|
|
46
|
+
const exitCode = await login(options.username);
|
|
47
|
+
if (exitCode !== 0) {
|
|
48
|
+
process.exit(exitCode);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const exitCode = await registerUser(options.username, options.host);
|
|
52
|
+
process.exit(exitCode);
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
/////////////////////////////
|
|
56
|
+
/* APPLICATIONS MANAGEMENT */
|
|
57
|
+
/////////////////////////////
|
|
58
|
+
|
|
59
|
+
const applicationCommands = program
|
|
60
|
+
.command('applications')
|
|
61
|
+
.description('Manage your DBOS applications')
|
|
62
|
+
.option('-h, --host <string>', 'Specify the host', DEFAULT_HOST)
|
|
63
|
+
|
|
64
|
+
applicationCommands
|
|
65
|
+
.command('register')
|
|
66
|
+
.description('Register a new application')
|
|
67
|
+
.requiredOption('-d, --database <string>', 'Specify the app database name')
|
|
68
|
+
.option('-m, --machines <string>', 'Number of VMs to deploy', '1')
|
|
69
|
+
.action(async (options: { database: string, machines: string }) => {
|
|
70
|
+
const { host }: { host: string } = applicationCommands.opts()
|
|
71
|
+
const exitCode = await registerApp(options.database, host, parseInt(options.machines));
|
|
72
|
+
process.exit(exitCode);
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
applicationCommands
|
|
76
|
+
.command('update')
|
|
77
|
+
.description('Update an application')
|
|
78
|
+
.requiredOption('-m, --machines <string>', 'Number of VMs to deploy')
|
|
79
|
+
.action(async (options: { machines: string }) => {
|
|
80
|
+
const { host }: { host: string } = applicationCommands.opts()
|
|
81
|
+
const exitCode = await updateApp(host, parseInt(options.machines));
|
|
82
|
+
process.exit(exitCode);
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
applicationCommands
|
|
86
|
+
.command('deploy')
|
|
87
|
+
.description('Deploy an application code to the cloud')
|
|
88
|
+
.option('--no-docker', 'Build the code locally without using Docker')
|
|
89
|
+
.action(async (options: { docker: boolean }) => {
|
|
90
|
+
const { host }: { host: string } = applicationCommands.opts()
|
|
91
|
+
const exitCode = await deployAppCode(host, options.docker);
|
|
92
|
+
process.exit(exitCode);
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
applicationCommands
|
|
96
|
+
.command('delete')
|
|
97
|
+
.description('Delete a previously deployed application')
|
|
98
|
+
.action(async () => {
|
|
99
|
+
const { host }: { host: string } = applicationCommands.opts()
|
|
100
|
+
const exitCode = await deleteApp(host);
|
|
101
|
+
process.exit(exitCode);
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
applicationCommands
|
|
105
|
+
.command('list')
|
|
106
|
+
.description('List all deployed applications')
|
|
107
|
+
.action(async () => {
|
|
108
|
+
const { host }: { host: string } = applicationCommands.opts()
|
|
109
|
+
const exitCode = await listApps(host);
|
|
110
|
+
process.exit(exitCode);
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
applicationCommands
|
|
114
|
+
.command('logs')
|
|
115
|
+
.description('Print the microVM logs of a deployed application')
|
|
116
|
+
.action(async () => {
|
|
117
|
+
const { host }: { host: string } = applicationCommands.opts()
|
|
118
|
+
const exitCode = await getAppLogs(host);
|
|
119
|
+
process.exit(exitCode);
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
//////////////////////////////
|
|
123
|
+
/* USER DATABASE MANAGEMENT */
|
|
124
|
+
//////////////////////////////
|
|
125
|
+
|
|
126
|
+
const userdbCommands = program
|
|
127
|
+
.command('userdb')
|
|
128
|
+
.description('Manage your databases')
|
|
129
|
+
.option('-h, --host <string>', 'Specify the host', DEFAULT_HOST)
|
|
130
|
+
|
|
131
|
+
userdbCommands
|
|
132
|
+
.command('create')
|
|
133
|
+
.argument('<string>', 'database name')
|
|
134
|
+
.requiredOption('-a, --admin <string>', 'Specify the admin user')
|
|
135
|
+
.requiredOption('-W, --password <string>', 'Specify the admin password')
|
|
136
|
+
.option('-s, --sync', 'make synchronous call', true)
|
|
137
|
+
.action((async (dbname: string, options: { admin: string, password: string, sync: boolean }) => {
|
|
138
|
+
const { host }: { host: string } = userdbCommands.opts()
|
|
139
|
+
await createUserDb(host, dbname, options.admin, options.password, options.sync)
|
|
140
|
+
}))
|
|
141
|
+
|
|
142
|
+
userdbCommands
|
|
143
|
+
.command('status')
|
|
144
|
+
.argument('<string>', 'database name')
|
|
145
|
+
.action((async (dbname: string) => {
|
|
146
|
+
const { host }: { host: string } = userdbCommands.opts()
|
|
147
|
+
await getUserDb(host, dbname)
|
|
148
|
+
}))
|
|
149
|
+
|
|
150
|
+
userdbCommands
|
|
151
|
+
.command('delete')
|
|
152
|
+
.argument('<string>', 'database name')
|
|
153
|
+
.action((async (dbname: string) => {
|
|
154
|
+
const { host }: { host: string } = userdbCommands.opts()
|
|
155
|
+
await deleteUserDb(host, dbname)
|
|
156
|
+
}))
|
|
157
|
+
|
|
158
|
+
userdbCommands
|
|
159
|
+
.command('migrate')
|
|
160
|
+
.action((async () => {
|
|
161
|
+
const exitCode = await migrate();
|
|
162
|
+
process.exit(exitCode);
|
|
163
|
+
}))
|
|
164
|
+
|
|
165
|
+
userdbCommands
|
|
166
|
+
.command('rollbackmigration')
|
|
167
|
+
.action((() => {
|
|
168
|
+
const exitCode = rollbackMigration();
|
|
169
|
+
process.exit(exitCode);
|
|
170
|
+
}))
|
|
171
|
+
|
|
172
|
+
program.parse(process.argv);
|
|
173
|
+
|
|
174
|
+
// If no arguments provided, display help by default
|
|
175
|
+
if (!process.argv.slice(2).length) {
|
|
176
|
+
program.outputHelp();
|
|
177
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-app.d.ts","sourceRoot":"","sources":["../../../../applications/delete-app.ts"],"names":[],"mappings":"AAKA,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA8B7D"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.deleteApp = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const logs_1 = require("../../../src/telemetry/logs");
|
|
9
|
+
const cloudutils_1 = require("../cloudutils");
|
|
10
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
11
|
+
async function deleteApp(host) {
|
|
12
|
+
const logger = new logs_1.GlobalLogger();
|
|
13
|
+
const userCredentials = (0, cloudutils_1.getCloudCredentials)();
|
|
14
|
+
const bearerToken = "Bearer " + userCredentials.token;
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
16
|
+
const packageJson = require(node_path_1.default.join(process.cwd(), 'package.json'));
|
|
17
|
+
const appName = packageJson.name;
|
|
18
|
+
logger.info(`Loaded application name from package.json: ${appName}`);
|
|
19
|
+
logger.info(`Deleting application: ${appName}`);
|
|
20
|
+
try {
|
|
21
|
+
await axios_1.default.delete(`https://${host}/${userCredentials.userName}/application/${appName}`, {
|
|
22
|
+
headers: {
|
|
23
|
+
"Content-Type": "application/json",
|
|
24
|
+
Authorization: bearerToken,
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
logger.info(`Successfully deleted application: ${appName}`);
|
|
28
|
+
return 0;
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
if (axios_1.default.isAxiosError(e) && e.response) {
|
|
32
|
+
logger.error(`Failed to delete application ${appName}: ${e.response?.data}`);
|
|
33
|
+
return 1;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
logger.error(`Failed to delete application ${appName}: ${e.message}`);
|
|
37
|
+
return 1;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.deleteApp = deleteApp;
|
|
42
|
+
//# sourceMappingURL=delete-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete-app.js","sourceRoot":"","sources":["../../../../applications/delete-app.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,sDAA2D;AAC3D,8CAAoD;AACpD,0DAA6B;AAEtB,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,MAAM,MAAM,GAAG,IAAI,mBAAY,EAAE,CAAC;IAClC,MAAM,eAAe,GAAG,IAAA,gCAAmB,GAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;IAEtD,8DAA8D;IAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAqB,CAAC;IAC1F,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,8CAA8C,OAAO,EAAE,CAAC,CAAA;IACpE,MAAM,CAAC,IAAI,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAA;IAE/C,IAAI,CAAC;QACH,MAAM,eAAK,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,eAAe,CAAC,QAAQ,gBAAgB,OAAO,EAAE,EAAE;YACvF,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,WAAW;aAC3B;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,eAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,gCAAgC,OAAO,KAAK,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7E,OAAO,CAAC,CAAC;QACX,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,gCAAgC,OAAO,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACjF,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;AACH,CAAC;AA9BD,8BA8BC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-app-code.d.ts","sourceRoot":"","sources":["../../../../applications/deploy-app-code.ts"],"names":[],"mappings":"AAgBA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA2FlF"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.deployAppCode = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const child_process_1 = require("child_process");
|
|
9
|
+
const fs_1 = require("fs");
|
|
10
|
+
const logs_1 = require("../../../src/telemetry/logs");
|
|
11
|
+
const cloudutils_1 = require("../cloudutils");
|
|
12
|
+
const utils_1 = require("../../../src/utils");
|
|
13
|
+
const path_1 = __importDefault(require("path"));
|
|
14
|
+
const deployDirectoryName = "dbos_deploy";
|
|
15
|
+
async function deployAppCode(host, docker) {
|
|
16
|
+
const logger = new logs_1.GlobalLogger();
|
|
17
|
+
const userCredentials = (0, cloudutils_1.getCloudCredentials)();
|
|
18
|
+
const bearerToken = "Bearer " + userCredentials.token;
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
20
|
+
const packageJson = require(path_1.default.join(process.cwd(), 'package.json'));
|
|
21
|
+
const appName = packageJson.name;
|
|
22
|
+
logger.info(`Loaded application name from package.json: ${appName}`);
|
|
23
|
+
(0, utils_1.createDirectory)(deployDirectoryName);
|
|
24
|
+
// Verify that package-lock.json exists
|
|
25
|
+
if (!(0, fs_1.existsSync)(path_1.default.join(process.cwd(), 'package-lock.json'))) {
|
|
26
|
+
logger.error("package-lock.json not found. Please run 'npm install' before deploying.");
|
|
27
|
+
return 1;
|
|
28
|
+
}
|
|
29
|
+
if (docker) {
|
|
30
|
+
// Build the application inside a Docker container using the same base image as our cloud setup
|
|
31
|
+
logger.info(`Building ${appName} using Docker`);
|
|
32
|
+
const dockerSuccess = await buildAppInDocker(appName);
|
|
33
|
+
if (!dockerSuccess) {
|
|
34
|
+
return 1;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
// Zip the current directory and deploy from there. Requires app to have already been built. Only for testing.
|
|
39
|
+
(0, child_process_1.execSync)(`zip -ry ${deployDirectoryName}/${appName}.zip ./* -x ${deployDirectoryName}/* > /dev/null`);
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const zipData = (0, utils_1.readFileSync)(`${deployDirectoryName}/${appName}.zip`, "base64");
|
|
43
|
+
// Submit the deploy request
|
|
44
|
+
logger.info(`Submitting deploy request for ${appName}`);
|
|
45
|
+
const response = await axios_1.default.post(`https://${host}/${userCredentials.userName}/application/${appName}`, {
|
|
46
|
+
application_archive: zipData,
|
|
47
|
+
}, {
|
|
48
|
+
headers: {
|
|
49
|
+
"Content-Type": "application/json",
|
|
50
|
+
Authorization: bearerToken,
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
const deployOutput = response.data;
|
|
54
|
+
logger.info(`Submitted deploy request for ${appName}. Assigned version: ${deployOutput.ApplicationVersion}`);
|
|
55
|
+
// Wait for the application to become available
|
|
56
|
+
let count = 0;
|
|
57
|
+
let applicationAvailable = false;
|
|
58
|
+
while (!applicationAvailable) {
|
|
59
|
+
count += 1;
|
|
60
|
+
if (count % 5 === 0) {
|
|
61
|
+
logger.info(`Waiting for ${appName} with version ${deployOutput.ApplicationVersion} to be available`);
|
|
62
|
+
if (count > 20) {
|
|
63
|
+
logger.info(`If ${appName} takes too long to become available, check its logs at...`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Retrieve the application status, check if it is "AVAILABLE"
|
|
67
|
+
const list = await axios_1.default.get(`https://${host}/${userCredentials.userName}/application`, {
|
|
68
|
+
headers: {
|
|
69
|
+
Authorization: bearerToken,
|
|
70
|
+
},
|
|
71
|
+
});
|
|
72
|
+
const applications = list.data;
|
|
73
|
+
for (const application of applications) {
|
|
74
|
+
if (application.Name === appName && application.Status === "AVAILABLE") {
|
|
75
|
+
applicationAvailable = true;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
await (0, utils_1.sleep)(1000);
|
|
79
|
+
}
|
|
80
|
+
logger.info(`Application ${appName} successfuly deployed`);
|
|
81
|
+
logger.info(`Access your application at https://${host}/${userCredentials.userName}/application/${appName}`);
|
|
82
|
+
return 0;
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
if (axios_1.default.isAxiosError(e) && e.response) {
|
|
86
|
+
logger.error(`Failed to deploy application ${appName}: ${e.response?.data}`);
|
|
87
|
+
return 1;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
logger.error(`Failed to deploy application ${appName}: ${e.message}`);
|
|
91
|
+
return 1;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.deployAppCode = deployAppCode;
|
|
96
|
+
async function buildAppInDocker(appName) {
|
|
97
|
+
const logger = new logs_1.GlobalLogger();
|
|
98
|
+
// Verify Docker is running
|
|
99
|
+
try {
|
|
100
|
+
(0, child_process_1.execSync)(`docker > /dev/null 2>&1`);
|
|
101
|
+
}
|
|
102
|
+
catch (e) {
|
|
103
|
+
logger.error("Docker not available. To deploy, please start the Docker daemon and make the `docker` command runnable without sudo.");
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
const dockerFileName = `${deployDirectoryName}/Dockerfile.dbos`;
|
|
107
|
+
const containerName = `dbos-builder-${appName}`;
|
|
108
|
+
// Dockerfile content
|
|
109
|
+
const dockerFileContent = `
|
|
110
|
+
FROM node:lts-bookworm-slim
|
|
111
|
+
RUN apt update
|
|
112
|
+
RUN apt install -y zip
|
|
113
|
+
WORKDIR /app
|
|
114
|
+
COPY . .
|
|
115
|
+
RUN npm clean-install
|
|
116
|
+
RUN npm run build
|
|
117
|
+
RUN npm prune --omit=dev
|
|
118
|
+
RUN zip -ry ${appName}.zip ./* -x "${appName}.zip" -x "${deployDirectoryName}/*" > /dev/null
|
|
119
|
+
`;
|
|
120
|
+
const dockerIgnoreContent = `
|
|
121
|
+
node_modules/
|
|
122
|
+
${deployDirectoryName}/
|
|
123
|
+
dist/
|
|
124
|
+
`;
|
|
125
|
+
try {
|
|
126
|
+
// Write the Dockerfile and .dockerignore
|
|
127
|
+
(0, fs_1.writeFileSync)(dockerFileName, dockerFileContent);
|
|
128
|
+
(0, fs_1.writeFileSync)(`${deployDirectoryName}/Dockerfile.dbos.dockerignore`, dockerIgnoreContent);
|
|
129
|
+
// Build the Docker image. As build takes a long time, use runCommand to stream its output to stdout.
|
|
130
|
+
await (0, cloudutils_1.runCommand)('docker', ['build', '-t', appName, '-f', dockerFileName, '.']);
|
|
131
|
+
// Run the container
|
|
132
|
+
(0, child_process_1.execSync)(`docker run -d --name ${containerName} ${appName}`);
|
|
133
|
+
// Copy the archive from the container to the local deploy directory
|
|
134
|
+
(0, child_process_1.execSync)(`docker cp ${containerName}:/app/${appName}.zip ${deployDirectoryName}/${appName}.zip`);
|
|
135
|
+
// Stop and remove the container
|
|
136
|
+
(0, child_process_1.execSync)(`docker stop ${containerName}`);
|
|
137
|
+
(0, child_process_1.execSync)(`docker rm ${containerName}`);
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
catch (e) {
|
|
141
|
+
logger.error(`Failed to build application ${appName}: ${e.message}`);
|
|
142
|
+
return false;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=deploy-app-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-app-code.js","sourceRoot":"","sources":["../../../../applications/deploy-app-code.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-app-logs.d.ts","sourceRoot":"","sources":["../../../../applications/get-app-logs.ts"],"names":[],"mappings":"AAKA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA8B9D"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getAppLogs = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const logs_1 = require("../../../src/telemetry/logs");
|
|
9
|
+
const cloudutils_1 = require("../cloudutils");
|
|
10
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
11
|
+
async function getAppLogs(host) {
|
|
12
|
+
const logger = new logs_1.GlobalLogger();
|
|
13
|
+
const userCredentials = (0, cloudutils_1.getCloudCredentials)();
|
|
14
|
+
const bearerToken = "Bearer " + userCredentials.token;
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
16
|
+
const packageJson = require(node_path_1.default.join(process.cwd(), 'package.json'));
|
|
17
|
+
const appName = packageJson.name;
|
|
18
|
+
logger.info(`Retrieving logs for application: ${appName}`);
|
|
19
|
+
try {
|
|
20
|
+
const res = await axios_1.default.get(`https://${host}/${userCredentials.userName}/logs/application/${appName}`, {
|
|
21
|
+
headers: {
|
|
22
|
+
"Content-Type": "application/json",
|
|
23
|
+
Authorization: bearerToken,
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
logger.info(`Successfully retrieved logs of application: ${appName}`);
|
|
27
|
+
logger.info(res.data);
|
|
28
|
+
return 0;
|
|
29
|
+
}
|
|
30
|
+
catch (e) {
|
|
31
|
+
if (axios_1.default.isAxiosError(e) && e.response) {
|
|
32
|
+
logger.error(`Failed to retrieve logs of application ${appName}: ${e.response?.data}`);
|
|
33
|
+
return 1;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
logger.error(`Failed to retrieve logs of application ${appName}: ${e.message}`);
|
|
37
|
+
return 1;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.getAppLogs = getAppLogs;
|
|
42
|
+
//# sourceMappingURL=get-app-logs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-app-logs.js","sourceRoot":"","sources":["../../../../applications/get-app-logs.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,sDAA2D;AAC3D,8CAAoD;AACpD,0DAA6B;AAEtB,KAAK,UAAU,UAAU,CAAC,IAAY;IAC3C,MAAM,MAAM,GAAG,IAAI,mBAAY,EAAE,CAAC;IAClC,MAAM,eAAe,GAAG,IAAA,gCAAmB,GAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;IAEtD,8DAA8D;IAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAqB,CAAC;IAC1F,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAA;IAE1D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,eAAe,CAAC,QAAQ,qBAAqB,OAAO,EAAE,EAAE;YACrG,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,WAAW;aAC3B;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,+CAA+C,OAAO,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACrB,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,eAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,0CAA0C,OAAO,KAAK,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACvF,OAAO,CAAC,CAAC;QACX,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,0CAA0C,OAAO,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3F,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;AACH,CAAC;AA9BD,gCA8BC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { registerApp } from './register-app';
|
|
2
|
+
export { listApps } from './list-apps';
|
|
3
|
+
export { deleteApp } from './delete-app';
|
|
4
|
+
export { deployAppCode } from './deploy-app-code';
|
|
5
|
+
export { getAppLogs } from './get-app-logs';
|
|
6
|
+
export { updateApp } from './update-app';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../applications/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateApp = exports.getAppLogs = exports.deployAppCode = exports.deleteApp = exports.listApps = exports.registerApp = void 0;
|
|
4
|
+
var register_app_1 = require("./register-app");
|
|
5
|
+
Object.defineProperty(exports, "registerApp", { enumerable: true, get: function () { return register_app_1.registerApp; } });
|
|
6
|
+
var list_apps_1 = require("./list-apps");
|
|
7
|
+
Object.defineProperty(exports, "listApps", { enumerable: true, get: function () { return list_apps_1.listApps; } });
|
|
8
|
+
var delete_app_1 = require("./delete-app");
|
|
9
|
+
Object.defineProperty(exports, "deleteApp", { enumerable: true, get: function () { return delete_app_1.deleteApp; } });
|
|
10
|
+
var deploy_app_code_1 = require("./deploy-app-code");
|
|
11
|
+
Object.defineProperty(exports, "deployAppCode", { enumerable: true, get: function () { return deploy_app_code_1.deployAppCode; } });
|
|
12
|
+
var get_app_logs_1 = require("./get-app-logs");
|
|
13
|
+
Object.defineProperty(exports, "getAppLogs", { enumerable: true, get: function () { return get_app_logs_1.getAppLogs; } });
|
|
14
|
+
var update_app_1 = require("./update-app");
|
|
15
|
+
Object.defineProperty(exports, "updateApp", { enumerable: true, get: function () { return update_app_1.updateApp; } });
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../applications/index.ts"],"names":[],"mappings":";;;AAAA,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA;AACjB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA;AAClB,qDAAkD;AAAzC,gHAAA,aAAa,OAAA;AACtB,+CAA4C;AAAnC,0GAAA,UAAU,OAAA;AACnB,2CAAyC;AAAhC,uGAAA,SAAS,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-apps.d.ts","sourceRoot":"","sources":["../../../../applications/list-apps.ts"],"names":[],"mappings":"AAKA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmC5D"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.listApps = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const logs_1 = require("../../../src/telemetry/logs");
|
|
9
|
+
const cloudutils_1 = require("../cloudutils");
|
|
10
|
+
async function listApps(host) {
|
|
11
|
+
const logger = new logs_1.GlobalLogger();
|
|
12
|
+
const userCredentials = (0, cloudutils_1.getCloudCredentials)();
|
|
13
|
+
const bearerToken = "Bearer " + userCredentials.token;
|
|
14
|
+
try {
|
|
15
|
+
const list = await axios_1.default.get(`https://${host}/${userCredentials.userName}/application`, {
|
|
16
|
+
headers: {
|
|
17
|
+
Authorization: bearerToken,
|
|
18
|
+
},
|
|
19
|
+
});
|
|
20
|
+
const data = list.data;
|
|
21
|
+
if (data.length === 0) {
|
|
22
|
+
logger.info("No applications found");
|
|
23
|
+
return 1;
|
|
24
|
+
}
|
|
25
|
+
const formattedData = [];
|
|
26
|
+
for (const application of data) {
|
|
27
|
+
formattedData.push({ "Name": application.Name, "ID": application.ID, "Version": application.Version, "DatabaseName": application.DatabaseName, "MaxVMs": application.MaxVMs, "Status": application.Status });
|
|
28
|
+
}
|
|
29
|
+
logger.info(`Listing applications for ${userCredentials.userName}`);
|
|
30
|
+
console.log(JSON.stringify(formattedData));
|
|
31
|
+
return 0;
|
|
32
|
+
}
|
|
33
|
+
catch (e) {
|
|
34
|
+
if (axios_1.default.isAxiosError(e) && e.response) {
|
|
35
|
+
logger.error(`Failed to list applications: ${e.response?.data}`);
|
|
36
|
+
return 1;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
logger.error(`Failed to list applications: ${e.message}`);
|
|
40
|
+
return 1;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.listApps = listApps;
|
|
45
|
+
//# sourceMappingURL=list-apps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-apps.js","sourceRoot":"","sources":["../../../../applications/list-apps.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,sDAA2D;AAC3D,8CAAoD;AAG7C,KAAK,UAAU,QAAQ,CAAC,IAAY;IACzC,MAAM,MAAM,GAAG,IAAI,mBAAY,EAAE,CAAC;IAClC,MAAM,eAAe,GAAG,IAAA,gCAAmB,GAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;IAEtD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,eAAK,CAAC,GAAG,CAC1B,WAAW,IAAI,IAAI,eAAe,CAAC,QAAQ,cAAc,EACzD;YACE,OAAO,EAAE;gBACP,aAAa,EAAE,WAAW;aAC3B;SACF,CACF,CAAC;QACF,MAAM,IAAI,GAAkB,IAAI,CAAC,IAAqB,CAAC;QACvD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,aAAa,GAAkB,EAAE,CAAA;QACvC,KAAK,MAAM,WAAW,IAAI,IAAI,EAAE,CAAC;YAC/B,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,CAAC,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/M,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,4BAA4B,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAA;QACnE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,eAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACjE,OAAO,CAAC,CAAC;QACX,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,gCAAiC,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACrE,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;AACH,CAAC;AAnCD,4BAmCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-app.d.ts","sourceRoot":"","sources":["../../../../applications/register-app.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuCjG"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.registerApp = void 0;
|
|
7
|
+
const axios_1 = __importDefault(require("axios"));
|
|
8
|
+
const logs_1 = require("../../../src/telemetry/logs");
|
|
9
|
+
const cloudutils_1 = require("../cloudutils");
|
|
10
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
11
|
+
async function registerApp(dbname, host, machines) {
|
|
12
|
+
const logger = new logs_1.GlobalLogger();
|
|
13
|
+
const userCredentials = (0, cloudutils_1.getCloudCredentials)();
|
|
14
|
+
const bearerToken = "Bearer " + userCredentials.token;
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
16
|
+
const packageJson = require(node_path_1.default.join(process.cwd(), 'package.json'));
|
|
17
|
+
const appName = packageJson.name;
|
|
18
|
+
logger.info(`Loaded application name from package.json: ${appName}`);
|
|
19
|
+
logger.info(`Registering application: ${appName}`);
|
|
20
|
+
try {
|
|
21
|
+
const register = await axios_1.default.put(`https://${host}/${userCredentials.userName}/application`, {
|
|
22
|
+
name: appName,
|
|
23
|
+
database: dbname,
|
|
24
|
+
max_vms: machines,
|
|
25
|
+
}, {
|
|
26
|
+
headers: {
|
|
27
|
+
"Content-Type": "application/json",
|
|
28
|
+
Authorization: bearerToken,
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
const uuid = register.data;
|
|
32
|
+
logger.info(`Successfully registered: ${appName}`);
|
|
33
|
+
logger.info(`${appName} ID: ${uuid}`);
|
|
34
|
+
return 0;
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
if (axios_1.default.isAxiosError(e) && e.response) {
|
|
38
|
+
logger.error(`Failed to register application ${appName}: ${e.response?.data}`);
|
|
39
|
+
return 1;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
logger.error(`Failed to register application ${appName}: ${e.message}`);
|
|
43
|
+
return 1;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.registerApp = registerApp;
|
|
48
|
+
//# sourceMappingURL=register-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-app.js","sourceRoot":"","sources":["../../../../applications/register-app.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,sDAA2D;AAC3D,8CAAoD;AACpD,0DAA6B;AAEtB,KAAK,UAAU,WAAW,CAAC,MAAc,EAAE,IAAY,EAAE,QAAgB;IAC9E,MAAM,MAAM,GAAG,IAAI,mBAAY,EAAE,CAAC;IAClC,MAAM,eAAe,GAAG,IAAA,gCAAmB,GAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;IAEtD,8DAA8D;IAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAqB,CAAC;IAC1F,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,8CAA8C,OAAO,EAAE,CAAC,CAAA;IACpE,MAAM,CAAC,IAAI,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAA;IAElD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAC9B,WAAW,IAAI,IAAI,eAAe,CAAC,QAAQ,cAAc,EACzD;YACE,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,QAAQ;SAClB,EACD;YACE,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,WAAW;aAC3B;SACF,CACF,CAAC;QACF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAc,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,QAAQ,IAAI,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,CAAC;IACX,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,eAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,kCAAkC,OAAO,KAAK,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/E,OAAO,CAAC,CAAC;QACX,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,kCAAkC,OAAO,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;YACnF,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;AACH,CAAC;AAvCD,kCAuCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../applications/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../applications/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-app.d.ts","sourceRoot":"","sources":["../../../../applications/update-app.ts"],"names":[],"mappings":"AAMA,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwC/E"}
|