@osaas/cli 0.14.2 → 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.
@@ -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;AAMpC,MAAM,CAAC,OAAO,UAAU,QAAQ,YA2D/B"}
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;
@@ -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;AAEvC,SAAwB,QAAQ;IAC9B,MAAM,KAAK,GAAG,IAAI,mBAAO,CAAC,OAAO,CAAC,CAAC;IACnC,KAAK;SACF,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;SACvC,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC;SACtC,MAAM,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;QAC7B,IAAI;YACF,MAAM,GAAG,GAAG,IAAA,mBAAW,EAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SAClB;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,GAAG,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;SACrC;IACH,CAAC,CAAC,CAAC;IACL,KAAK;SACF,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,6CAA6C,CAAC;SAC1D,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;SACvC,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;SACzC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QACtD,IAAI;YACF,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;YAC7C,MAAM,WAAW,GAAG,UAAU,EAAE,GAAG,IAAI,MAAM,CAAC;YAC9C,IAAA,iBAAG,GAAE,CAAC,IAAI,CACR,+BAA+B,QAAQ,gBAAgB,SAAS,OAAO,WAAW,EAAE,CACrF,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,IAAA,iCAAsB,EAC5C,QAAQ,EACR,SAAS,EACT,WAAW,CACZ,CAAC;YACF,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;SACxD;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,GAAG,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;SACrC;IACH,CAAC,CAAC,CAAC;IACL,KAAK;SACF,OAAO,CAAC,iBAAiB,CAAC;SAC1B,WAAW,CAAC,oBAAoB,CAAC;SACjC,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;SACvC,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;SACzC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;SACvC,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAC5D,IAAI;YACF,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;YAC7C,MAAM,WAAW,GAAG,UAAU,EAAE,GAAG,IAAI,MAAM,CAAC;YAC9C,IAAA,iBAAG,GAAE,CAAC,IAAI,CACR,qBAAqB,IAAI,eAAe,QAAQ,gBAAgB,SAAS,OAAO,WAAW,EAAE,CAC9F,CAAC;YACF,MAAM,IAAA,cAAO,EACX,0DAA0D,CAC3D,CAAC;YACF,MAAM,IAAA,kCAAuB,EAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;SACvE;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,GAAG,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;SACrC;IACH,CAAC,CAAC,CAAC;IACL,OAAO,KAAK,CAAC;AACf,CAAC;AA3DD,2BA2DC"}
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.14.2",
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.0",
26
- "@osaas/client-core": "^0.10.0",
27
- "@osaas/client-db": "^0.2.1",
28
- "@osaas/client-intercom": "^0.1.2",
29
- "@osaas/client-transcode": "^0.10.1",
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": "b9ef7d73f5f34334174ad434654e4d900b731506"
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
+ }