@dbos-inc/dbos-cloud 0.9.17 → 0.9.25
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/applications/delete-app.ts +6 -7
- package/applications/deploy-app-code.ts +8 -7
- package/applications/get-app-info.ts +6 -6
- package/applications/get-app-logs.ts +6 -6
- package/applications/list-apps.ts +2 -2
- package/applications/register-app.ts +6 -7
- package/applications/update-app.ts +6 -7
- package/cli.ts +66 -30
- package/cloudutils.ts +19 -0
- package/dashboards.ts +29 -0
- package/dist/packages/dbos-cloud/applications/delete-app.d.ts.map +1 -1
- package/dist/packages/dbos-cloud/applications/delete-app.js +5 -6
- package/dist/packages/dbos-cloud/applications/delete-app.js.map +1 -1
- package/dist/packages/dbos-cloud/applications/deploy-app-code.d.ts.map +1 -1
- package/dist/packages/dbos-cloud/applications/deploy-app-code.js +7 -6
- package/dist/packages/dbos-cloud/applications/deploy-app-code.js.map +1 -1
- package/dist/packages/dbos-cloud/applications/get-app-info.d.ts.map +1 -1
- package/dist/packages/dbos-cloud/applications/get-app-info.js +5 -5
- package/dist/packages/dbos-cloud/applications/get-app-info.js.map +1 -1
- package/dist/packages/dbos-cloud/applications/get-app-logs.d.ts.map +1 -1
- package/dist/packages/dbos-cloud/applications/get-app-logs.js +5 -5
- package/dist/packages/dbos-cloud/applications/get-app-logs.js.map +1 -1
- package/dist/packages/dbos-cloud/applications/list-apps.js +2 -2
- package/dist/packages/dbos-cloud/applications/list-apps.js.map +1 -1
- package/dist/packages/dbos-cloud/applications/register-app.d.ts.map +1 -1
- package/dist/packages/dbos-cloud/applications/register-app.js +5 -6
- package/dist/packages/dbos-cloud/applications/register-app.js.map +1 -1
- package/dist/packages/dbos-cloud/applications/update-app.d.ts.map +1 -1
- package/dist/packages/dbos-cloud/applications/update-app.js +5 -6
- package/dist/packages/dbos-cloud/applications/update-app.js.map +1 -1
- package/dist/packages/dbos-cloud/cli.js +59 -28
- package/dist/packages/dbos-cloud/cli.js.map +1 -1
- package/dist/packages/dbos-cloud/cloudutils.d.ts +2 -0
- package/dist/packages/dbos-cloud/cloudutils.d.ts.map +1 -1
- package/dist/packages/dbos-cloud/cloudutils.js +20 -1
- package/dist/packages/dbos-cloud/cloudutils.js.map +1 -1
- package/dist/packages/dbos-cloud/dashboards.d.ts +2 -0
- package/dist/packages/dbos-cloud/dashboards.d.ts.map +1 -0
- package/dist/packages/dbos-cloud/dashboards.js +36 -0
- package/dist/packages/dbos-cloud/dashboards.js.map +1 -0
- package/dist/packages/dbos-cloud/register.d.ts.map +1 -1
- package/dist/packages/dbos-cloud/register.js +8 -2
- package/dist/packages/dbos-cloud/register.js.map +1 -1
- package/dist/packages/dbos-cloud/userdb.js +4 -4
- package/dist/packages/dbos-cloud/userdb.js.map +1 -1
- package/package.json +1 -1
- package/register.ts +7 -2
- package/userdb.ts +4 -4
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
import axios, { AxiosError } from "axios";
|
|
2
|
-
import { isCloudAPIErrorResponse, handleAPIErrors, getCloudCredentials, getLogger } from "../cloudutils";
|
|
3
|
-
import path from "node:path";
|
|
2
|
+
import { isCloudAPIErrorResponse, handleAPIErrors, getCloudCredentials, getLogger, retrieveApplicationName } from "../cloudutils";
|
|
4
3
|
|
|
5
4
|
export async function deleteApp(host: string): Promise<number> {
|
|
6
5
|
const logger = getLogger()
|
|
7
6
|
const userCredentials = getCloudCredentials();
|
|
8
7
|
const bearerToken = "Bearer " + userCredentials.token;
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
const appName = retrieveApplicationName(logger);
|
|
10
|
+
if (appName === null) {
|
|
11
|
+
return 1;
|
|
12
|
+
}
|
|
14
13
|
logger.info(`Deleting application: ${appName}`)
|
|
15
14
|
|
|
16
15
|
try {
|
|
17
|
-
await axios.delete(`https://${host}/${userCredentials.userName}/
|
|
16
|
+
await axios.delete(`https://${host}/v1alpha1/${userCredentials.userName}/applications/${appName}`, {
|
|
18
17
|
headers: {
|
|
19
18
|
"Content-Type": "application/json",
|
|
20
19
|
Authorization: bearerToken,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import axios, { AxiosError } from "axios";
|
|
2
2
|
import { execSync } from "child_process";
|
|
3
3
|
import { writeFileSync, existsSync } from 'fs';
|
|
4
|
-
import { handleAPIErrors, createDirectory, dbosConfigFilePath, getCloudCredentials, getLogger, readFileSync, runCommand, sleep, isCloudAPIErrorResponse } from "../cloudutils";
|
|
4
|
+
import { handleAPIErrors, createDirectory, dbosConfigFilePath, getCloudCredentials, getLogger, readFileSync, runCommand, sleep, isCloudAPIErrorResponse, retrieveApplicationName } from "../cloudutils";
|
|
5
5
|
import path from "path";
|
|
6
6
|
import { Application } from "./types";
|
|
7
7
|
|
|
@@ -17,9 +17,10 @@ export async function deployAppCode(host: string, docker: boolean): Promise<numb
|
|
|
17
17
|
const userCredentials = getCloudCredentials();
|
|
18
18
|
const bearerToken = "Bearer " + userCredentials.token;
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
const appName = retrieveApplicationName(logger);
|
|
21
|
+
if (appName === null) {
|
|
22
|
+
return 1;
|
|
23
|
+
}
|
|
23
24
|
logger.info(`Loaded application name from package.json: ${appName}`)
|
|
24
25
|
|
|
25
26
|
createDirectory(deployDirectoryName);
|
|
@@ -52,7 +53,7 @@ export async function deployAppCode(host: string, docker: boolean): Promise<numb
|
|
|
52
53
|
// Submit the deploy request
|
|
53
54
|
logger.info(`Submitting deploy request for ${appName}`)
|
|
54
55
|
const response = await axios.post(
|
|
55
|
-
`https://${host}/${userCredentials.userName}/
|
|
56
|
+
`https://${host}/v1alpha1/${userCredentials.userName}/applications/${appName}`,
|
|
56
57
|
{
|
|
57
58
|
application_archive: zipData,
|
|
58
59
|
},
|
|
@@ -84,7 +85,7 @@ export async function deployAppCode(host: string, docker: boolean): Promise<numb
|
|
|
84
85
|
|
|
85
86
|
// Retrieve the application status, check if it is "AVAILABLE"
|
|
86
87
|
const list = await axios.get(
|
|
87
|
-
`https://${host}/${userCredentials.userName}/
|
|
88
|
+
`https://${host}/v1alpha1/${userCredentials.userName}/applications`,
|
|
88
89
|
{
|
|
89
90
|
headers: {
|
|
90
91
|
Authorization: bearerToken,
|
|
@@ -101,7 +102,7 @@ export async function deployAppCode(host: string, docker: boolean): Promise<numb
|
|
|
101
102
|
}
|
|
102
103
|
await sleep(5000); // Leave time for route cache updates
|
|
103
104
|
logger.info(`Application ${appName} successfuly deployed`)
|
|
104
|
-
logger.info(`Access your application at https://${host}/${userCredentials.userName}
|
|
105
|
+
logger.info(`Access your application at https://${host}/apps/${userCredentials.userName}/${appName}`)
|
|
105
106
|
return 0;
|
|
106
107
|
} catch (e) {
|
|
107
108
|
const errorLabel = `Failed to deploy application ${appName}`;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import axios , { AxiosError } from "axios";
|
|
2
|
-
import { handleAPIErrors, getCloudCredentials, getLogger, isCloudAPIErrorResponse } from "../cloudutils";
|
|
3
|
-
import path from "node:path";
|
|
2
|
+
import { handleAPIErrors, getCloudCredentials, getLogger, isCloudAPIErrorResponse, retrieveApplicationName } from "../cloudutils";
|
|
4
3
|
import { Application } from "./types";
|
|
5
4
|
|
|
6
5
|
export async function getAppInfo(host: string, json: boolean): Promise<number> {
|
|
@@ -8,15 +7,16 @@ export async function getAppInfo(host: string, json: boolean): Promise<number> {
|
|
|
8
7
|
const userCredentials = getCloudCredentials();
|
|
9
8
|
const bearerToken = "Bearer " + userCredentials.token;
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
const appName = retrieveApplicationName(logger, json);
|
|
11
|
+
if (appName === null) {
|
|
12
|
+
return 1;
|
|
13
|
+
}
|
|
14
14
|
if (!json) {
|
|
15
15
|
logger.info(`Retrieving info for application: ${appName}`)
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
try {
|
|
19
|
-
const res = await axios.get(`https://${host}/${userCredentials.userName}/
|
|
19
|
+
const res = await axios.get(`https://${host}/v1alpha1/${userCredentials.userName}/applications/${appName}`, {
|
|
20
20
|
headers: {
|
|
21
21
|
"Content-Type": "application/json",
|
|
22
22
|
Authorization: bearerToken,
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import axios , { AxiosError } from "axios";
|
|
2
|
-
import { handleAPIErrors, getCloudCredentials, getLogger, isCloudAPIErrorResponse } from "../cloudutils";
|
|
3
|
-
import path from "node:path";
|
|
2
|
+
import { handleAPIErrors, getCloudCredentials, getLogger, isCloudAPIErrorResponse, retrieveApplicationName } from "../cloudutils";
|
|
4
3
|
|
|
5
4
|
export async function getAppLogs(host: string, last: number): Promise<number> {
|
|
6
5
|
if (last != undefined && (isNaN(last) || last <= 0)) {
|
|
@@ -13,13 +12,14 @@ export async function getAppLogs(host: string, last: number): Promise<number> {
|
|
|
13
12
|
const userCredentials = getCloudCredentials();
|
|
14
13
|
const bearerToken = "Bearer " + userCredentials.token;
|
|
15
14
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
const appName = retrieveApplicationName(logger);
|
|
16
|
+
if (appName === null) {
|
|
17
|
+
return 1;
|
|
18
|
+
}
|
|
19
19
|
logger.info(`Retrieving logs for application: ${appName}`)
|
|
20
20
|
|
|
21
21
|
try {
|
|
22
|
-
const res = await axios.get(`https://${host}/${userCredentials.userName}/logs/
|
|
22
|
+
const res = await axios.get(`https://${host}/v1alpha1/${userCredentials.userName}/logs/applications/${appName}?last=${last}`, {
|
|
23
23
|
headers: {
|
|
24
24
|
"Content-Type": "application/json",
|
|
25
25
|
Authorization: bearerToken,
|
|
@@ -9,7 +9,7 @@ export async function listApps(host: string, json: boolean): Promise<number> {
|
|
|
9
9
|
|
|
10
10
|
try {
|
|
11
11
|
const list = await axios.get(
|
|
12
|
-
`https://${host}/${userCredentials.userName}/
|
|
12
|
+
`https://${host}/v1alpha1/${userCredentials.userName}/applications`,
|
|
13
13
|
{
|
|
14
14
|
headers: {
|
|
15
15
|
Authorization: bearerToken,
|
|
@@ -28,7 +28,7 @@ export async function listApps(host: string, json: boolean): Promise<number> {
|
|
|
28
28
|
applications.forEach(app => {
|
|
29
29
|
console.log(`Application Name: ${app.Name}`);
|
|
30
30
|
console.log(`ID: ${app.ID}`);
|
|
31
|
-
console.log(`Postgres Instance Name: ${app.
|
|
31
|
+
console.log(`Postgres Instance Name: ${app.PostgresInstanceName}`);
|
|
32
32
|
console.log(`Application Database Name: ${app.ApplicationDatabaseName}`);
|
|
33
33
|
console.log(`Status: ${app.Status}`);
|
|
34
34
|
console.log(`Version: ${app.Version}`);
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
import axios, { AxiosError } from "axios";
|
|
2
|
-
import { handleAPIErrors, getCloudCredentials, getLogger, isCloudAPIErrorResponse } from "../cloudutils";
|
|
3
|
-
import path from "node:path";
|
|
2
|
+
import { handleAPIErrors, getCloudCredentials, getLogger, isCloudAPIErrorResponse, retrieveApplicationName } from "../cloudutils";
|
|
4
3
|
|
|
5
4
|
export async function registerApp(dbname: string, host: string): Promise<number> {
|
|
6
5
|
const logger = getLogger();
|
|
7
6
|
const userCredentials = getCloudCredentials();
|
|
8
7
|
const bearerToken = "Bearer " + userCredentials.token;
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
const appName = retrieveApplicationName(logger);
|
|
10
|
+
if (appName === null) {
|
|
11
|
+
return 1;
|
|
12
|
+
}
|
|
14
13
|
logger.info(`Registering application: ${appName}`)
|
|
15
14
|
|
|
16
15
|
try {
|
|
17
16
|
const register = await axios.put(
|
|
18
|
-
`https://${host}/${userCredentials.userName}/
|
|
17
|
+
`https://${host}/v1alpha1/${userCredentials.userName}/applications`,
|
|
19
18
|
{
|
|
20
19
|
name: appName,
|
|
21
20
|
database: dbname,
|
|
@@ -1,23 +1,22 @@
|
|
|
1
1
|
import axios, { AxiosError } from "axios";
|
|
2
|
-
import { getCloudCredentials, getLogger, handleAPIErrors, isCloudAPIErrorResponse } from "../cloudutils";
|
|
2
|
+
import { getCloudCredentials, getLogger, handleAPIErrors, isCloudAPIErrorResponse, retrieveApplicationName } from "../cloudutils";
|
|
3
3
|
import { Application } from "./types";
|
|
4
|
-
import path from "node:path";
|
|
5
4
|
|
|
6
5
|
export async function updateApp(host: string): Promise<number> {
|
|
7
6
|
const logger = getLogger();
|
|
8
7
|
const userCredentials = getCloudCredentials();
|
|
9
8
|
const bearerToken = "Bearer " + userCredentials.token;
|
|
10
9
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
const appName = retrieveApplicationName(logger);
|
|
11
|
+
if (appName === null) {
|
|
12
|
+
return 1;
|
|
13
|
+
}
|
|
15
14
|
logger.info(`Updating application: ${appName}`)
|
|
16
15
|
|
|
17
16
|
try {
|
|
18
17
|
logger.info(`Updating application ${appName}`);
|
|
19
18
|
const update = await axios.patch(
|
|
20
|
-
`https://${host}/${userCredentials.userName}/
|
|
19
|
+
`https://${host}/v1alpha1/${userCredentials.userName}/applications/${appName}`,
|
|
21
20
|
{
|
|
22
21
|
name: appName,
|
|
23
22
|
},
|
package/cli.ts
CHANGED
|
@@ -12,9 +12,11 @@ import { Command } from 'commander';
|
|
|
12
12
|
import { login } from "./login";
|
|
13
13
|
import { registerUser } from "./register";
|
|
14
14
|
import { createUserDb, getUserDb, deleteUserDb, listUserDB } from "./userdb";
|
|
15
|
-
import {
|
|
15
|
+
import { launchDashboard } from "./dashboards";
|
|
16
|
+
import { DBOSCloudHost, credentialsExist, deleteCredentials } from "./cloudutils";
|
|
16
17
|
import { getAppInfo } from "./applications/get-app-info";
|
|
17
18
|
|
|
19
|
+
|
|
18
20
|
const program = new Command();
|
|
19
21
|
|
|
20
22
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
@@ -37,25 +39,38 @@ program
|
|
|
37
39
|
|
|
38
40
|
program
|
|
39
41
|
.command('register')
|
|
40
|
-
.description('Register a user
|
|
42
|
+
.description('Register a user with DBOS cloud')
|
|
41
43
|
.requiredOption('-u, --username <string>', 'Username')
|
|
42
44
|
.action(async (options: { username: string}) => {
|
|
43
45
|
const exitCode = await registerUser(options.username, DBOSCloudHost);
|
|
44
46
|
process.exit(exitCode);
|
|
45
47
|
});
|
|
46
48
|
|
|
49
|
+
program
|
|
50
|
+
.command('logout')
|
|
51
|
+
.description('Log out of DBOS cloud')
|
|
52
|
+
.action(() => {
|
|
53
|
+
if (credentialsExist()) {
|
|
54
|
+
deleteCredentials();
|
|
55
|
+
}
|
|
56
|
+
process.exit(0);
|
|
57
|
+
});
|
|
58
|
+
|
|
47
59
|
/////////////////////////////
|
|
48
60
|
/* APPLICATIONS MANAGEMENT */
|
|
49
61
|
/////////////////////////////
|
|
50
62
|
|
|
51
63
|
const applicationCommands = program
|
|
52
|
-
.command('
|
|
64
|
+
.command('application')
|
|
65
|
+
.alias('applications')
|
|
66
|
+
.alias('app')
|
|
67
|
+
.alias('apps')
|
|
53
68
|
.description('Manage your DBOS applications')
|
|
54
69
|
|
|
55
70
|
applicationCommands
|
|
56
71
|
.command('register')
|
|
57
|
-
.description('Register
|
|
58
|
-
.requiredOption('-d, --database <string>', 'Specify
|
|
72
|
+
.description('Register this application')
|
|
73
|
+
.requiredOption('-d, --database <string>', 'Specify a Postgres database instance for this application')
|
|
59
74
|
.action(async (options: { database: string }) => {
|
|
60
75
|
const exitCode = await registerApp(options.database, DBOSCloudHost);
|
|
61
76
|
process.exit(exitCode);
|
|
@@ -63,7 +78,7 @@ applicationCommands
|
|
|
63
78
|
|
|
64
79
|
applicationCommands
|
|
65
80
|
.command('update')
|
|
66
|
-
.description('Update
|
|
81
|
+
.description('Update this application')
|
|
67
82
|
.action(async () => {
|
|
68
83
|
const exitCode = await updateApp(DBOSCloudHost);
|
|
69
84
|
process.exit(exitCode);
|
|
@@ -71,7 +86,7 @@ applicationCommands
|
|
|
71
86
|
|
|
72
87
|
applicationCommands
|
|
73
88
|
.command('deploy')
|
|
74
|
-
.description('Deploy
|
|
89
|
+
.description('Deploy this application to the cloud')
|
|
75
90
|
.option('--no-docker', 'Build the code locally without using Docker')
|
|
76
91
|
.action(async (options: { docker: boolean }) => {
|
|
77
92
|
const exitCode = await deployAppCode(DBOSCloudHost, options.docker);
|
|
@@ -80,7 +95,7 @@ applicationCommands
|
|
|
80
95
|
|
|
81
96
|
applicationCommands
|
|
82
97
|
.command('delete')
|
|
83
|
-
.description('Delete
|
|
98
|
+
.description('Delete this application')
|
|
84
99
|
.action(async () => {
|
|
85
100
|
const exitCode = await deleteApp(DBOSCloudHost);
|
|
86
101
|
process.exit(exitCode);
|
|
@@ -88,7 +103,7 @@ applicationCommands
|
|
|
88
103
|
|
|
89
104
|
applicationCommands
|
|
90
105
|
.command('list')
|
|
91
|
-
.description('List all
|
|
106
|
+
.description('List all applications')
|
|
92
107
|
.option('--json', 'Emit JSON output')
|
|
93
108
|
.action(async (options: { json: boolean }) => {
|
|
94
109
|
const exitCode = await listApps(DBOSCloudHost, options.json);
|
|
@@ -96,8 +111,8 @@ applicationCommands
|
|
|
96
111
|
});
|
|
97
112
|
|
|
98
113
|
applicationCommands
|
|
99
|
-
.command('
|
|
100
|
-
.description(
|
|
114
|
+
.command('status')
|
|
115
|
+
.description("Retrieve this application's status")
|
|
101
116
|
.option('--json', 'Emit JSON output')
|
|
102
117
|
.action(async (options: { json: boolean }) => {
|
|
103
118
|
const exitCode = await getAppInfo(DBOSCloudHost, options.json);
|
|
@@ -106,57 +121,78 @@ applicationCommands
|
|
|
106
121
|
|
|
107
122
|
applicationCommands
|
|
108
123
|
.command('logs')
|
|
109
|
-
.description(
|
|
124
|
+
.description("Print this application's logs")
|
|
110
125
|
.option('-l, --last <integer>', 'How far back to query, in seconds from current time. By default, we retrieve all data', parseInt)
|
|
111
126
|
.action(async (options: { last: number}) => {
|
|
112
127
|
const exitCode = await getAppLogs(DBOSCloudHost, options.last);
|
|
113
128
|
process.exit(exitCode);
|
|
114
129
|
});
|
|
115
130
|
|
|
116
|
-
|
|
117
|
-
/*
|
|
118
|
-
|
|
131
|
+
//////////////////////////////////
|
|
132
|
+
/* DATABASE INSTANCE MANAGEMENT */
|
|
133
|
+
//////////////////////////////////
|
|
119
134
|
|
|
120
|
-
const
|
|
121
|
-
.command('
|
|
122
|
-
.
|
|
135
|
+
const databaseCommands = program
|
|
136
|
+
.command('database')
|
|
137
|
+
.alias('databases')
|
|
138
|
+
.alias('db')
|
|
139
|
+
.description('Manage Postgres database instances')
|
|
123
140
|
|
|
124
|
-
|
|
125
|
-
.command('
|
|
126
|
-
.
|
|
141
|
+
databaseCommands
|
|
142
|
+
.command('provision')
|
|
143
|
+
.description("Provision a Postgres database instance")
|
|
144
|
+
.argument('<string>', 'database instance name')
|
|
127
145
|
.requiredOption('-a, --admin <string>', 'Specify the admin user')
|
|
128
146
|
.requiredOption('-W, --password <string>', 'Specify the admin password')
|
|
129
|
-
.
|
|
130
|
-
|
|
131
|
-
const exitCode = await createUserDb(DBOSCloudHost, dbname, options.admin, options.password, options.sync)
|
|
147
|
+
.action((async (dbname: string, options: { admin: string, password: string }) => {
|
|
148
|
+
const exitCode = await createUserDb(DBOSCloudHost, dbname, options.admin, options.password, true)
|
|
132
149
|
process.exit(exitCode);
|
|
133
150
|
}))
|
|
134
151
|
|
|
135
|
-
|
|
152
|
+
databaseCommands
|
|
136
153
|
.command('status')
|
|
137
|
-
.
|
|
154
|
+
.description("Retrieve the status of a Postgres database instance")
|
|
155
|
+
.argument('<string>', 'database instance name')
|
|
138
156
|
.option('--json', 'Emit JSON output')
|
|
139
157
|
.action((async (dbname: string, options: { json: boolean}) => {
|
|
140
158
|
const exitCode = await getUserDb(DBOSCloudHost, dbname, options.json)
|
|
141
159
|
process.exit(exitCode);
|
|
142
160
|
}))
|
|
143
161
|
|
|
144
|
-
|
|
162
|
+
databaseCommands
|
|
145
163
|
.command('list')
|
|
164
|
+
.description("List all your Postgres database instances")
|
|
146
165
|
.option('--json', 'Emit JSON output')
|
|
147
166
|
.action((async (options: { json: boolean}) => {
|
|
148
167
|
const exitCode = await listUserDB(DBOSCloudHost, options.json)
|
|
149
168
|
process.exit(exitCode);
|
|
150
169
|
}))
|
|
151
170
|
|
|
152
|
-
|
|
153
|
-
.command('
|
|
154
|
-
.
|
|
171
|
+
databaseCommands
|
|
172
|
+
.command('destroy')
|
|
173
|
+
.description("Destroy a Postgres database instance")
|
|
174
|
+
.argument('<string>', 'database instance name')
|
|
155
175
|
.action((async (dbname: string) => {
|
|
156
176
|
const exitCode = await deleteUserDb(DBOSCloudHost, dbname)
|
|
157
177
|
process.exit(exitCode);
|
|
158
178
|
}))
|
|
159
179
|
|
|
180
|
+
/////////////////////
|
|
181
|
+
/* USER DASHBOARDS */
|
|
182
|
+
/////////////////////
|
|
183
|
+
|
|
184
|
+
const dashboardCommands = program
|
|
185
|
+
.command('dashboard')
|
|
186
|
+
.description('Manage Monitoring Dashboards')
|
|
187
|
+
|
|
188
|
+
dashboardCommands
|
|
189
|
+
.command('launch')
|
|
190
|
+
.description('Deploy the Monitoring Dashboard')
|
|
191
|
+
.action(async () => {
|
|
192
|
+
const exitCode = await launchDashboard(DBOSCloudHost);
|
|
193
|
+
process.exit(exitCode);
|
|
194
|
+
});
|
|
195
|
+
|
|
160
196
|
program.parse(process.argv);
|
|
161
197
|
|
|
162
198
|
// If no arguments provided, display help by default
|
package/cloudutils.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { transports, createLogger, format, Logger } from "winston";
|
|
|
4
4
|
import fs from "fs";
|
|
5
5
|
import { AxiosError } from "axios";
|
|
6
6
|
import jwt from 'jsonwebtoken';
|
|
7
|
+
import path from "node:path";
|
|
7
8
|
|
|
8
9
|
export interface DBOSCloudCredentials {
|
|
9
10
|
token: string;
|
|
@@ -14,6 +15,20 @@ export const dbosConfigFilePath = "dbos-config.yaml";
|
|
|
14
15
|
export const DBOSCloudHost = process.env.DBOS_DOMAIN || "cloud.dbos.dev";
|
|
15
16
|
export const dbosEnvPath = ".dbos";
|
|
16
17
|
|
|
18
|
+
export function retrieveApplicationName(logger: Logger, silent: boolean = false): string | null {
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
20
|
+
const packageJson = require(path.join(process.cwd(), 'package.json')) as { name: string };
|
|
21
|
+
const appName = packageJson.name;
|
|
22
|
+
if (appName === undefined) {
|
|
23
|
+
logger.error("Error: cannot find a valid package.json file. Please run this command in an application root directory.")
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
if (!silent) {
|
|
27
|
+
logger.info(`Loaded application name from package.json: ${appName}`)
|
|
28
|
+
}
|
|
29
|
+
return appName
|
|
30
|
+
}
|
|
31
|
+
|
|
17
32
|
// FIXME: we should have a global instance of the logger created in cli.ts
|
|
18
33
|
export function getLogger(): Logger {
|
|
19
34
|
const winstonTransports: TransportStream[] = [];
|
|
@@ -77,6 +92,10 @@ export function credentialsExist(): boolean {
|
|
|
77
92
|
return fs.existsSync(`./${dbosEnvPath}/credentials`);
|
|
78
93
|
}
|
|
79
94
|
|
|
95
|
+
export function deleteCredentials() {
|
|
96
|
+
fs.unlinkSync(`./${dbosEnvPath}/credentials`);
|
|
97
|
+
}
|
|
98
|
+
|
|
80
99
|
// Run a command, streaming its output to stdout
|
|
81
100
|
export function runCommand(command: string, args: string[] = []): Promise<number> {
|
|
82
101
|
return new Promise((resolve, reject) => {
|
package/dashboards.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import axios, { AxiosError } from "axios";
|
|
2
|
+
import { getLogger, getCloudCredentials, isCloudAPIErrorResponse, handleAPIErrors } from "./cloudutils";
|
|
3
|
+
|
|
4
|
+
export async function launchDashboard(host: string): Promise<number> {
|
|
5
|
+
const logger = getLogger();
|
|
6
|
+
const userCredentials = getCloudCredentials();
|
|
7
|
+
const bearerToken = "Bearer " + userCredentials.token;
|
|
8
|
+
try{
|
|
9
|
+
const res = await axios.put(`https://${host}/v1alpha1/${userCredentials.userName}/dashboard`,
|
|
10
|
+
{},
|
|
11
|
+
{
|
|
12
|
+
headers: {
|
|
13
|
+
"Content-Type": "application/json",
|
|
14
|
+
Authorization: bearerToken,
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
logger.info(`Dashboard ready at ${res.data}`)
|
|
18
|
+
return 0
|
|
19
|
+
} catch (e) {
|
|
20
|
+
const errorLabel = `Failed to initialize dashboard`;
|
|
21
|
+
const axiosError = e as AxiosError;
|
|
22
|
+
if (isCloudAPIErrorResponse(axiosError.response?.data)) {
|
|
23
|
+
handleAPIErrors(errorLabel, axiosError);
|
|
24
|
+
} else {
|
|
25
|
+
logger.error(`${errorLabel}: ${(e as Error).message}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return 1;
|
|
29
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-app.d.ts","sourceRoot":"","sources":["../../../../applications/delete-app.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"delete-app.d.ts","sourceRoot":"","sources":["../../../../applications/delete-app.ts"],"names":[],"mappings":"AAGA,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA+B7D"}
|
|
@@ -6,18 +6,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.deleteApp = void 0;
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
8
|
const cloudutils_1 = require("../cloudutils");
|
|
9
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
10
9
|
async function deleteApp(host) {
|
|
11
10
|
const logger = (0, cloudutils_1.getLogger)();
|
|
12
11
|
const userCredentials = (0, cloudutils_1.getCloudCredentials)();
|
|
13
12
|
const bearerToken = "Bearer " + userCredentials.token;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
const appName = (0, cloudutils_1.retrieveApplicationName)(logger);
|
|
14
|
+
if (appName === null) {
|
|
15
|
+
return 1;
|
|
16
|
+
}
|
|
18
17
|
logger.info(`Deleting application: ${appName}`);
|
|
19
18
|
try {
|
|
20
|
-
await axios_1.default.delete(`https://${host}/${userCredentials.userName}/
|
|
19
|
+
await axios_1.default.delete(`https://${host}/v1alpha1/${userCredentials.userName}/applications/${appName}`, {
|
|
21
20
|
headers: {
|
|
22
21
|
"Content-Type": "application/json",
|
|
23
22
|
Authorization: bearerToken,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delete-app.js","sourceRoot":"","sources":["../../../../applications/delete-app.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0C;AAC1C,
|
|
1
|
+
{"version":3,"file":"delete-app.js","sourceRoot":"","sources":["../../../../applications/delete-app.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0C;AAC1C,8CAAkI;AAE3H,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,MAAM,MAAM,GAAG,IAAA,sBAAS,GAAE,CAAA;IAC1B,MAAM,eAAe,GAAG,IAAA,gCAAmB,GAAE,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC;IAEtD,MAAM,OAAO,GAAG,IAAA,oCAAuB,EAAC,MAAM,CAAC,CAAC;IAChD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAA;IAE/C,IAAI,CAAC;QACH,MAAM,eAAK,CAAC,MAAM,CAAC,WAAW,IAAI,aAAa,eAAe,CAAC,QAAQ,iBAAiB,OAAO,EAAE,EAAE;YACjG,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,MAAM,UAAU,GAAG,gCAAgC,OAAO,EAAE,CAAC;QAC7D,MAAM,UAAU,GAAG,CAAe,CAAC;QACnC,IAAI,IAAA,oCAAuB,EAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;YACvD,IAAA,4BAAe,EAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AA/BD,8BA+BC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-app-code.d.ts","sourceRoot":"","sources":["../../../../applications/deploy-app-code.ts"],"names":[],"mappings":"AAcA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"deploy-app-code.d.ts","sourceRoot":"","sources":["../../../../applications/deploy-app-code.ts"],"names":[],"mappings":"AAcA,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAsGlF"}
|
|
@@ -14,9 +14,10 @@ async function deployAppCode(host, docker) {
|
|
|
14
14
|
const logger = (0, cloudutils_1.getLogger)();
|
|
15
15
|
const userCredentials = (0, cloudutils_1.getCloudCredentials)();
|
|
16
16
|
const bearerToken = "Bearer " + userCredentials.token;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
const appName = (0, cloudutils_1.retrieveApplicationName)(logger);
|
|
18
|
+
if (appName === null) {
|
|
19
|
+
return 1;
|
|
20
|
+
}
|
|
20
21
|
logger.info(`Loaded application name from package.json: ${appName}`);
|
|
21
22
|
(0, cloudutils_1.createDirectory)(deployDirectoryName);
|
|
22
23
|
// Verify that package-lock.json exists
|
|
@@ -43,7 +44,7 @@ async function deployAppCode(host, docker) {
|
|
|
43
44
|
const zipData = (0, cloudutils_1.readFileSync)(`${deployDirectoryName}/${appName}.zip`, "base64");
|
|
44
45
|
// Submit the deploy request
|
|
45
46
|
logger.info(`Submitting deploy request for ${appName}`);
|
|
46
|
-
const response = await axios_1.default.post(`https://${host}/${userCredentials.userName}/
|
|
47
|
+
const response = await axios_1.default.post(`https://${host}/v1alpha1/${userCredentials.userName}/applications/${appName}`, {
|
|
47
48
|
application_archive: zipData,
|
|
48
49
|
}, {
|
|
49
50
|
headers: {
|
|
@@ -69,7 +70,7 @@ async function deployAppCode(host, docker) {
|
|
|
69
70
|
return 1;
|
|
70
71
|
}
|
|
71
72
|
// Retrieve the application status, check if it is "AVAILABLE"
|
|
72
|
-
const list = await axios_1.default.get(`https://${host}/${userCredentials.userName}/
|
|
73
|
+
const list = await axios_1.default.get(`https://${host}/v1alpha1/${userCredentials.userName}/applications`, {
|
|
73
74
|
headers: {
|
|
74
75
|
Authorization: bearerToken,
|
|
75
76
|
},
|
|
@@ -84,7 +85,7 @@ async function deployAppCode(host, docker) {
|
|
|
84
85
|
}
|
|
85
86
|
await (0, cloudutils_1.sleep)(5000); // Leave time for route cache updates
|
|
86
87
|
logger.info(`Application ${appName} successfuly deployed`);
|
|
87
|
-
logger.info(`Access your application at https://${host}/${userCredentials.userName}
|
|
88
|
+
logger.info(`Access your application at https://${host}/apps/${userCredentials.userName}/${appName}`);
|
|
88
89
|
return 0;
|
|
89
90
|
}
|
|
90
91
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy-app-code.js","sourceRoot":"","sources":["../../../../applications/deploy-app-code.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0C;AAC1C,iDAAyC;AACzC,2BAA+C;AAC/C,
|
|
1
|
+
{"version":3,"file":"deploy-app-code.js","sourceRoot":"","sources":["../../../../applications/deploy-app-code.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-app-info.d.ts","sourceRoot":"","sources":["../../../../applications/get-app-info.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-app-info.d.ts","sourceRoot":"","sources":["../../../../applications/get-app-info.ts"],"names":[],"mappings":"AAIA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA0C7E"}
|
|
@@ -6,19 +6,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.getAppInfo = void 0;
|
|
7
7
|
const axios_1 = __importDefault(require("axios"));
|
|
8
8
|
const cloudutils_1 = require("../cloudutils");
|
|
9
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
10
9
|
async function getAppInfo(host, json) {
|
|
11
10
|
const logger = (0, cloudutils_1.getLogger)();
|
|
12
11
|
const userCredentials = (0, cloudutils_1.getCloudCredentials)();
|
|
13
12
|
const bearerToken = "Bearer " + userCredentials.token;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
const appName = (0, cloudutils_1.retrieveApplicationName)(logger, json);
|
|
14
|
+
if (appName === null) {
|
|
15
|
+
return 1;
|
|
16
|
+
}
|
|
17
17
|
if (!json) {
|
|
18
18
|
logger.info(`Retrieving info for application: ${appName}`);
|
|
19
19
|
}
|
|
20
20
|
try {
|
|
21
|
-
const res = await axios_1.default.get(`https://${host}/${userCredentials.userName}/
|
|
21
|
+
const res = await axios_1.default.get(`https://${host}/v1alpha1/${userCredentials.userName}/applications/${appName}`, {
|
|
22
22
|
headers: {
|
|
23
23
|
"Content-Type": "application/json",
|
|
24
24
|
Authorization: bearerToken,
|