@osaas/cli 0.14.3 → 0.15.0
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/dist/admin/cmd.d.ts.map +1 -1
- package/dist/admin/cmd.js +37 -0
- package/dist/admin/cmd.js.map +1 -1
- package/dist/admin/subscription.d.ts +3 -0
- package/dist/admin/subscription.d.ts.map +1 -0
- package/dist/admin/subscription.js +24 -0
- package/dist/admin/subscription.js.map +1 -0
- package/package.json +7 -7
- package/src/admin/cmd.ts +50 -0
- package/src/admin/subscription.ts +41 -0
package/dist/admin/cmd.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd.d.ts","sourceRoot":"","sources":["../../src/admin/cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cmd.d.ts","sourceRoot":"","sources":["../../src/admin/cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,MAAM,CAAC,OAAO,UAAU,QAAQ,YAyG/B"}
|
package/dist/admin/cmd.js
CHANGED
|
@@ -5,6 +5,7 @@ const token_1 = require("./token");
|
|
|
5
5
|
const client_core_1 = require("@osaas/client-core");
|
|
6
6
|
const instance_1 = require("./instance");
|
|
7
7
|
const util_1 = require("../user/util");
|
|
8
|
+
const subscription_1 = require("./subscription");
|
|
8
9
|
function cmdAdmin() {
|
|
9
10
|
const admin = new commander_1.Command('admin');
|
|
10
11
|
admin
|
|
@@ -56,6 +57,42 @@ function cmdAdmin() {
|
|
|
56
57
|
console.log(err.message);
|
|
57
58
|
}
|
|
58
59
|
});
|
|
60
|
+
admin
|
|
61
|
+
.command('list-subscriptions')
|
|
62
|
+
.description('List all subscriptions for a tenant')
|
|
63
|
+
.argument('<tenantId>', 'The tenant ID')
|
|
64
|
+
.action(async (tenantId, options, command) => {
|
|
65
|
+
try {
|
|
66
|
+
const globalOpts = command.optsWithGlobals();
|
|
67
|
+
const environment = globalOpts?.env || 'prod';
|
|
68
|
+
(0, client_core_1.Log)().info(`Listing subscriptions for tenant ${tenantId} in ${environment}`);
|
|
69
|
+
const subscriptions = await (0, subscription_1.listSubscriptionsForTenant)(tenantId, environment);
|
|
70
|
+
subscriptions.forEach((subscription) => console.log(subscription));
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
console.log(err.message);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
admin
|
|
77
|
+
.command('remove-subscription')
|
|
78
|
+
.description('Remove a subscription for a tenant')
|
|
79
|
+
.argument('<tenantId>', 'The Tenant Id')
|
|
80
|
+
.argument('<serviceId>', 'The Service Id')
|
|
81
|
+
.action(async (tenantId, serviceId, options, command) => {
|
|
82
|
+
try {
|
|
83
|
+
const globalOpts = command.optsWithGlobals();
|
|
84
|
+
const environment = globalOpts?.env || 'prod';
|
|
85
|
+
(0, client_core_1.Log)().info(`Removing ${serviceId} subscription for tenant ${tenantId} in ${environment}`);
|
|
86
|
+
const subscriptions = await (0, subscription_1.listSubscriptionsForTenant)(tenantId, environment);
|
|
87
|
+
if (subscriptions.includes(serviceId)) {
|
|
88
|
+
await (0, util_1.confirm)(`Are you sure you want to remove the subscription for service ${serviceId}? (yes/no) `);
|
|
89
|
+
await (0, subscription_1.removeSubscriptionForTenant)(tenantId, serviceId, environment);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
console.log(err.message);
|
|
94
|
+
}
|
|
95
|
+
});
|
|
59
96
|
return admin;
|
|
60
97
|
}
|
|
61
98
|
exports.default = cmdAdmin;
|
package/dist/admin/cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cmd.js","sourceRoot":"","sources":["../../src/admin/cmd.ts"],"names":[],"mappings":";;AAAA,yCAAoC;AACpC,mCAAsC;AACtC,oDAAyC;AACzC,yCAA6E;AAC7E,uCAAuC;
|
|
1
|
+
{"version":3,"file":"cmd.js","sourceRoot":"","sources":["../../src/admin/cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare function listSubscriptionsForTenant(tenantId: string, environment: string): Promise<string[]>;
|
|
2
|
+
export declare function removeSubscriptionForTenant(tenantId: string, serviceId: string, environment: string): Promise<void>;
|
|
3
|
+
//# sourceMappingURL=subscription.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../src/admin/subscription.ts"],"names":[],"mappings":"AAQA,wBAAsB,0BAA0B,CAC9C,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CAOnB;AAED,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAgBf"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.removeSubscriptionForTenant = exports.listSubscriptionsForTenant = void 0;
|
|
4
|
+
const client_core_1 = require("@osaas/client-core");
|
|
5
|
+
const token_1 = require("./token");
|
|
6
|
+
const instance_1 = require("./instance");
|
|
7
|
+
async function listSubscriptionsForTenant(tenantId, environment) {
|
|
8
|
+
const pat = (0, token_1.generatePat)(tenantId, 'osc-admin');
|
|
9
|
+
const ctx = new client_core_1.Context({ personalAccessToken: pat, environment });
|
|
10
|
+
const subscriptions = await (0, client_core_1.listSubscriptions)(ctx);
|
|
11
|
+
return subscriptions.map((subscription) => subscription.serviceId);
|
|
12
|
+
}
|
|
13
|
+
exports.listSubscriptionsForTenant = listSubscriptionsForTenant;
|
|
14
|
+
async function removeSubscriptionForTenant(tenantId, serviceId, environment) {
|
|
15
|
+
const pat = (0, token_1.generatePat)(tenantId, 'osc-admin');
|
|
16
|
+
const ctx = new client_core_1.Context({ personalAccessToken: pat, environment });
|
|
17
|
+
const instances = await (0, instance_1.listInstancesForTenant)(tenantId, serviceId, environment);
|
|
18
|
+
if (instances.length > 0) {
|
|
19
|
+
throw new Error(`Cannot remove subscription for service ${serviceId} as there are instances associated with it`);
|
|
20
|
+
}
|
|
21
|
+
await (0, client_core_1.removeSubscription)(ctx, serviceId);
|
|
22
|
+
}
|
|
23
|
+
exports.removeSubscriptionForTenant = removeSubscriptionForTenant;
|
|
24
|
+
//# sourceMappingURL=subscription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../src/admin/subscription.ts"],"names":[],"mappings":";;;AAAA,oDAI4B;AAC5B,mCAAsC;AACtC,yCAAoD;AAE7C,KAAK,UAAU,0BAA0B,CAC9C,QAAgB,EAChB,WAAmB;IAEnB,MAAM,GAAG,GAAG,IAAA,mBAAW,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAE/C,MAAM,GAAG,GAAG,IAAI,qBAAO,CAAC,EAAE,mBAAmB,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;IAEnE,MAAM,aAAa,GAAG,MAAM,IAAA,+BAAiB,EAAC,GAAG,CAAC,CAAC;IACnD,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACrE,CAAC;AAVD,gEAUC;AAEM,KAAK,UAAU,2BAA2B,CAC/C,QAAgB,EAChB,SAAiB,EACjB,WAAmB;IAEnB,MAAM,GAAG,GAAG,IAAA,mBAAW,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAE/C,MAAM,GAAG,GAAG,IAAI,qBAAO,CAAC,EAAE,mBAAmB,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;IACnE,MAAM,SAAS,GAAG,MAAM,IAAA,iCAAsB,EAC5C,QAAQ,EACR,SAAS,EACT,WAAW,CACZ,CAAC;IACF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;QACxB,MAAM,IAAI,KAAK,CACb,0CAA0C,SAAS,4CAA4C,CAChG,CAAC;KACH;IAED,MAAM,IAAA,gCAAkB,EAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAC3C,CAAC;AApBD,kEAoBC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@osaas/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "Open Source Cloud CLI",
|
|
5
5
|
"author": "Eyevinn Technology <work@eyevinn.se>",
|
|
6
6
|
"homepage": "https://www.osaas.io",
|
|
@@ -22,11 +22,11 @@
|
|
|
22
22
|
"dev": "ts-node src/cli.ts"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@osaas/client-ai": "^0.2.
|
|
26
|
-
"@osaas/client-core": "^0.
|
|
27
|
-
"@osaas/client-db": "^0.2.
|
|
28
|
-
"@osaas/client-intercom": "^0.1.
|
|
29
|
-
"@osaas/client-transcode": "^0.11.
|
|
25
|
+
"@osaas/client-ai": "^0.2.1",
|
|
26
|
+
"@osaas/client-core": "^0.11.0",
|
|
27
|
+
"@osaas/client-db": "^0.2.2",
|
|
28
|
+
"@osaas/client-intercom": "^0.1.3",
|
|
29
|
+
"@osaas/client-transcode": "^0.11.1",
|
|
30
30
|
"@types/promptly": "^3.0.5",
|
|
31
31
|
"chalk": "4.1.2",
|
|
32
32
|
"commander": "^12.1.0",
|
|
@@ -37,5 +37,5 @@
|
|
|
37
37
|
"publishConfig": {
|
|
38
38
|
"access": "public"
|
|
39
39
|
},
|
|
40
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "35a3d4ba3f3abf63046f0c97bdc5b346924138c2"
|
|
41
41
|
}
|
package/src/admin/cmd.ts
CHANGED
|
@@ -3,6 +3,10 @@ import { generatePat } from './token';
|
|
|
3
3
|
import { Log } from '@osaas/client-core';
|
|
4
4
|
import { listInstancesForTenant, removeInstanceForTenant } from './instance';
|
|
5
5
|
import { confirm } from '../user/util';
|
|
6
|
+
import {
|
|
7
|
+
listSubscriptionsForTenant,
|
|
8
|
+
removeSubscriptionForTenant
|
|
9
|
+
} from './subscription';
|
|
6
10
|
|
|
7
11
|
export default function cmdAdmin() {
|
|
8
12
|
const admin = new Command('admin');
|
|
@@ -62,5 +66,51 @@ export default function cmdAdmin() {
|
|
|
62
66
|
console.log((err as Error).message);
|
|
63
67
|
}
|
|
64
68
|
});
|
|
69
|
+
admin
|
|
70
|
+
.command('list-subscriptions')
|
|
71
|
+
.description('List all subscriptions for a tenant')
|
|
72
|
+
.argument('<tenantId>', 'The tenant ID')
|
|
73
|
+
.action(async (tenantId, options, command) => {
|
|
74
|
+
try {
|
|
75
|
+
const globalOpts = command.optsWithGlobals();
|
|
76
|
+
const environment = globalOpts?.env || 'prod';
|
|
77
|
+
Log().info(
|
|
78
|
+
`Listing subscriptions for tenant ${tenantId} in ${environment}`
|
|
79
|
+
);
|
|
80
|
+
const subscriptions = await listSubscriptionsForTenant(
|
|
81
|
+
tenantId,
|
|
82
|
+
environment
|
|
83
|
+
);
|
|
84
|
+
subscriptions.forEach((subscription) => console.log(subscription));
|
|
85
|
+
} catch (err) {
|
|
86
|
+
console.log((err as Error).message);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
admin
|
|
90
|
+
.command('remove-subscription')
|
|
91
|
+
.description('Remove a subscription for a tenant')
|
|
92
|
+
.argument('<tenantId>', 'The Tenant Id')
|
|
93
|
+
.argument('<serviceId>', 'The Service Id')
|
|
94
|
+
.action(async (tenantId, serviceId, options, command) => {
|
|
95
|
+
try {
|
|
96
|
+
const globalOpts = command.optsWithGlobals();
|
|
97
|
+
const environment = globalOpts?.env || 'prod';
|
|
98
|
+
Log().info(
|
|
99
|
+
`Removing ${serviceId} subscription for tenant ${tenantId} in ${environment}`
|
|
100
|
+
);
|
|
101
|
+
const subscriptions = await listSubscriptionsForTenant(
|
|
102
|
+
tenantId,
|
|
103
|
+
environment
|
|
104
|
+
);
|
|
105
|
+
if (subscriptions.includes(serviceId)) {
|
|
106
|
+
await confirm(
|
|
107
|
+
`Are you sure you want to remove the subscription for service ${serviceId}? (yes/no) `
|
|
108
|
+
);
|
|
109
|
+
await removeSubscriptionForTenant(tenantId, serviceId, environment);
|
|
110
|
+
}
|
|
111
|
+
} catch (err) {
|
|
112
|
+
console.log((err as Error).message);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
65
115
|
return admin;
|
|
66
116
|
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Context,
|
|
3
|
+
listSubscriptions,
|
|
4
|
+
removeSubscription
|
|
5
|
+
} from '@osaas/client-core';
|
|
6
|
+
import { generatePat } from './token';
|
|
7
|
+
import { listInstancesForTenant } from './instance';
|
|
8
|
+
|
|
9
|
+
export async function listSubscriptionsForTenant(
|
|
10
|
+
tenantId: string,
|
|
11
|
+
environment: string
|
|
12
|
+
): Promise<string[]> {
|
|
13
|
+
const pat = generatePat(tenantId, 'osc-admin');
|
|
14
|
+
|
|
15
|
+
const ctx = new Context({ personalAccessToken: pat, environment });
|
|
16
|
+
|
|
17
|
+
const subscriptions = await listSubscriptions(ctx);
|
|
18
|
+
return subscriptions.map((subscription) => subscription.serviceId);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export async function removeSubscriptionForTenant(
|
|
22
|
+
tenantId: string,
|
|
23
|
+
serviceId: string,
|
|
24
|
+
environment: string
|
|
25
|
+
): Promise<void> {
|
|
26
|
+
const pat = generatePat(tenantId, 'osc-admin');
|
|
27
|
+
|
|
28
|
+
const ctx = new Context({ personalAccessToken: pat, environment });
|
|
29
|
+
const instances = await listInstancesForTenant(
|
|
30
|
+
tenantId,
|
|
31
|
+
serviceId,
|
|
32
|
+
environment
|
|
33
|
+
);
|
|
34
|
+
if (instances.length > 0) {
|
|
35
|
+
throw new Error(
|
|
36
|
+
`Cannot remove subscription for service ${serviceId} as there are instances associated with it`
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
await removeSubscription(ctx, serviceId);
|
|
41
|
+
}
|