@dishantlangayan/sc-plugin-queue 0.1.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/README.md ADDED
@@ -0,0 +1,417 @@
1
+ @dishantlangayan/sc-plugin-queue
2
+ =================
3
+
4
+ Commands to interact with queues on a Solace Cloud broker
5
+
6
+
7
+ [![oclif](https://img.shields.io/badge/cli-oclif-brightgreen.svg)](https://oclif.io)
8
+ [![Version](https://img.shields.io/npm/v/@dishantlangayan/sc-plugin-queue.svg)](https://npmjs.org/package/@dishantlangayan/sc-plugin-queue)
9
+ [![Downloads/week](https://img.shields.io/npm/dw/@dishantlangayan/sc-plugin-queue.svg)](https://npmjs.org/package/@dishantlangayan/sc-plugin-queue)
10
+
11
+
12
+ <!-- toc -->
13
+ * [Usage](#usage)
14
+ * [Commands](#commands)
15
+ <!-- tocstop -->
16
+ # Usage
17
+ <!-- usage -->
18
+ ```sh-session
19
+ $ npm install -g @dishantlangayan/sc-plugin-queue
20
+ $ sc COMMAND
21
+ running command...
22
+ $ sc (--version)
23
+ @dishantlangayan/sc-plugin-queue/0.1.0 darwin-arm64 node-v24.1.0
24
+ $ sc --help [COMMAND]
25
+ USAGE
26
+ $ sc COMMAND
27
+ ...
28
+ ```
29
+ <!-- usagestop -->
30
+ # Commands
31
+ <!-- commands -->
32
+ * [`sc broker queue create [FILE]`](#sc-broker-queue-create-file)
33
+ * [`sc broker queue list`](#sc-broker-queue-list)
34
+ * [`sc help [COMMAND]`](#sc-help-command)
35
+ * [`sc plugins`](#sc-plugins)
36
+ * [`sc plugins add PLUGIN`](#sc-plugins-add-plugin)
37
+ * [`sc plugins:inspect PLUGIN...`](#sc-pluginsinspect-plugin)
38
+ * [`sc plugins install PLUGIN`](#sc-plugins-install-plugin)
39
+ * [`sc plugins link PATH`](#sc-plugins-link-path)
40
+ * [`sc plugins remove [PLUGIN]`](#sc-plugins-remove-plugin)
41
+ * [`sc plugins reset`](#sc-plugins-reset)
42
+ * [`sc plugins uninstall [PLUGIN]`](#sc-plugins-uninstall-plugin)
43
+ * [`sc plugins unlink [PLUGIN]`](#sc-plugins-unlink-plugin)
44
+ * [`sc plugins update`](#sc-plugins-update)
45
+
46
+ ## `sc broker queue create [FILE]`
47
+
48
+ describe the command here
49
+
50
+ ```
51
+ USAGE
52
+ $ sc broker queue create [FILE] [-f] [-n <value>]
53
+
54
+ ARGUMENTS
55
+ [FILE] file to read
56
+
57
+ FLAGS
58
+ -f, --force
59
+ -n, --name=<value> name to print
60
+
61
+ DESCRIPTION
62
+ describe the command here
63
+
64
+ EXAMPLES
65
+ $ sc broker queue create
66
+ ```
67
+
68
+ _See code: [src/commands/broker/queue/create.ts](https://github.com/dishantlangayan/sc-plugin-queue/blob/v0.1.0/src/commands/broker/queue/create.ts)_
69
+
70
+ ## `sc broker queue list`
71
+
72
+ Get a list of Queue objects from the Solace Cloud Broker.
73
+
74
+ ```
75
+ USAGE
76
+ $ sc broker queue list [--json] [--log-level debug|warn|error|info|trace] [-b <value>] [-n <value>] [-c <value>] [-q
77
+ <value>]
78
+
79
+ FLAGS
80
+ -b, --broker-id=<value> Id of the event broker service.
81
+ -c, --count=<value> [default: 10] Limit the number of queues returned
82
+ -n, --broker-name=<value> Name of the event broker service.
83
+ -q, --queue-name=<value> Name of the queue(s) to filter.
84
+
85
+ GLOBAL FLAGS
86
+ --json Format output as json.
87
+ --log-level=<option> [default: info] Specify level for logging.
88
+ <options: debug|warn|error|info|trace>
89
+
90
+ DESCRIPTION
91
+ Get a list of Queue objects from the Solace Cloud Broker.
92
+
93
+ Token Permissions: [ mission_control:access or services:get or services:get:self or services:view or
94
+ services:view:self ]
95
+
96
+ EXAMPLES
97
+ $ sc broker queue list --broker-id=MyBrokerId
98
+
99
+ $ sc broker queue list --broker-name=MyBrokerName
100
+
101
+ $ sc broker queue list --broker-name=MyBrokerName --count=10
102
+
103
+ $ sc broker queue list --broker-name=MyBrokerName --queue-name=test*"
104
+ ```
105
+
106
+ _See code: [src/commands/broker/queue/list.ts](https://github.com/dishantlangayan/sc-plugin-queue/blob/v0.1.0/src/commands/broker/queue/list.ts)_
107
+
108
+ ## `sc help [COMMAND]`
109
+
110
+ Display help for sc.
111
+
112
+ ```
113
+ USAGE
114
+ $ sc help [COMMAND...] [-n]
115
+
116
+ ARGUMENTS
117
+ [COMMAND...] Command to show help for.
118
+
119
+ FLAGS
120
+ -n, --nested-commands Include all nested commands in the output.
121
+
122
+ DESCRIPTION
123
+ Display help for sc.
124
+ ```
125
+
126
+ _See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v6.2.37/src/commands/help.ts)_
127
+
128
+ ## `sc plugins`
129
+
130
+ List installed plugins.
131
+
132
+ ```
133
+ USAGE
134
+ $ sc plugins [--json] [--core]
135
+
136
+ FLAGS
137
+ --core Show core plugins.
138
+
139
+ GLOBAL FLAGS
140
+ --json Format output as json.
141
+
142
+ DESCRIPTION
143
+ List installed plugins.
144
+
145
+ EXAMPLES
146
+ $ sc plugins
147
+ ```
148
+
149
+ _See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/index.ts)_
150
+
151
+ ## `sc plugins add PLUGIN`
152
+
153
+ Installs a plugin into sc.
154
+
155
+ ```
156
+ USAGE
157
+ $ sc plugins add PLUGIN... [--json] [-f] [-h] [-s | -v]
158
+
159
+ ARGUMENTS
160
+ PLUGIN... Plugin to install.
161
+
162
+ FLAGS
163
+ -f, --force Force npm to fetch remote resources even if a local copy exists on disk.
164
+ -h, --help Show CLI help.
165
+ -s, --silent Silences npm output.
166
+ -v, --verbose Show verbose npm output.
167
+
168
+ GLOBAL FLAGS
169
+ --json Format output as json.
170
+
171
+ DESCRIPTION
172
+ Installs a plugin into sc.
173
+
174
+ Uses npm to install plugins.
175
+
176
+ Installation of a user-installed plugin will override a core plugin.
177
+
178
+ Use the SC_NPM_LOG_LEVEL environment variable to set the npm loglevel.
179
+ Use the SC_NPM_REGISTRY environment variable to set the npm registry.
180
+
181
+ ALIASES
182
+ $ sc plugins add
183
+
184
+ EXAMPLES
185
+ Install a plugin from npm registry.
186
+
187
+ $ sc plugins add myplugin
188
+
189
+ Install a plugin from a github url.
190
+
191
+ $ sc plugins add https://github.com/someuser/someplugin
192
+
193
+ Install a plugin from a github slug.
194
+
195
+ $ sc plugins add someuser/someplugin
196
+ ```
197
+
198
+ ## `sc plugins:inspect PLUGIN...`
199
+
200
+ Displays installation properties of a plugin.
201
+
202
+ ```
203
+ USAGE
204
+ $ sc plugins inspect PLUGIN...
205
+
206
+ ARGUMENTS
207
+ PLUGIN... [default: .] Plugin to inspect.
208
+
209
+ FLAGS
210
+ -h, --help Show CLI help.
211
+ -v, --verbose
212
+
213
+ GLOBAL FLAGS
214
+ --json Format output as json.
215
+
216
+ DESCRIPTION
217
+ Displays installation properties of a plugin.
218
+
219
+ EXAMPLES
220
+ $ sc plugins inspect myplugin
221
+ ```
222
+
223
+ _See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/inspect.ts)_
224
+
225
+ ## `sc plugins install PLUGIN`
226
+
227
+ Installs a plugin into sc.
228
+
229
+ ```
230
+ USAGE
231
+ $ sc plugins install PLUGIN... [--json] [-f] [-h] [-s | -v]
232
+
233
+ ARGUMENTS
234
+ PLUGIN... Plugin to install.
235
+
236
+ FLAGS
237
+ -f, --force Force npm to fetch remote resources even if a local copy exists on disk.
238
+ -h, --help Show CLI help.
239
+ -s, --silent Silences npm output.
240
+ -v, --verbose Show verbose npm output.
241
+
242
+ GLOBAL FLAGS
243
+ --json Format output as json.
244
+
245
+ DESCRIPTION
246
+ Installs a plugin into sc.
247
+
248
+ Uses npm to install plugins.
249
+
250
+ Installation of a user-installed plugin will override a core plugin.
251
+
252
+ Use the SC_NPM_LOG_LEVEL environment variable to set the npm loglevel.
253
+ Use the SC_NPM_REGISTRY environment variable to set the npm registry.
254
+
255
+ ALIASES
256
+ $ sc plugins add
257
+
258
+ EXAMPLES
259
+ Install a plugin from npm registry.
260
+
261
+ $ sc plugins install myplugin
262
+
263
+ Install a plugin from a github url.
264
+
265
+ $ sc plugins install https://github.com/someuser/someplugin
266
+
267
+ Install a plugin from a github slug.
268
+
269
+ $ sc plugins install someuser/someplugin
270
+ ```
271
+
272
+ _See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/install.ts)_
273
+
274
+ ## `sc plugins link PATH`
275
+
276
+ Links a plugin into the CLI for development.
277
+
278
+ ```
279
+ USAGE
280
+ $ sc plugins link PATH [-h] [--install] [-v]
281
+
282
+ ARGUMENTS
283
+ PATH [default: .] path to plugin
284
+
285
+ FLAGS
286
+ -h, --help Show CLI help.
287
+ -v, --verbose
288
+ --[no-]install Install dependencies after linking the plugin.
289
+
290
+ DESCRIPTION
291
+ Links a plugin into the CLI for development.
292
+
293
+ Installation of a linked plugin will override a user-installed or core plugin.
294
+
295
+ e.g. If you have a user-installed or core plugin that has a 'hello' command, installing a linked plugin with a 'hello'
296
+ command will override the user-installed or core plugin implementation. This is useful for development work.
297
+
298
+
299
+ EXAMPLES
300
+ $ sc plugins link myplugin
301
+ ```
302
+
303
+ _See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/link.ts)_
304
+
305
+ ## `sc plugins remove [PLUGIN]`
306
+
307
+ Removes a plugin from the CLI.
308
+
309
+ ```
310
+ USAGE
311
+ $ sc plugins remove [PLUGIN...] [-h] [-v]
312
+
313
+ ARGUMENTS
314
+ [PLUGIN...] plugin to uninstall
315
+
316
+ FLAGS
317
+ -h, --help Show CLI help.
318
+ -v, --verbose
319
+
320
+ DESCRIPTION
321
+ Removes a plugin from the CLI.
322
+
323
+ ALIASES
324
+ $ sc plugins unlink
325
+ $ sc plugins remove
326
+
327
+ EXAMPLES
328
+ $ sc plugins remove myplugin
329
+ ```
330
+
331
+ ## `sc plugins reset`
332
+
333
+ Remove all user-installed and linked plugins.
334
+
335
+ ```
336
+ USAGE
337
+ $ sc plugins reset [--hard] [--reinstall]
338
+
339
+ FLAGS
340
+ --hard Delete node_modules and package manager related files in addition to uninstalling plugins.
341
+ --reinstall Reinstall all plugins after uninstalling.
342
+ ```
343
+
344
+ _See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/reset.ts)_
345
+
346
+ ## `sc plugins uninstall [PLUGIN]`
347
+
348
+ Removes a plugin from the CLI.
349
+
350
+ ```
351
+ USAGE
352
+ $ sc plugins uninstall [PLUGIN...] [-h] [-v]
353
+
354
+ ARGUMENTS
355
+ [PLUGIN...] plugin to uninstall
356
+
357
+ FLAGS
358
+ -h, --help Show CLI help.
359
+ -v, --verbose
360
+
361
+ DESCRIPTION
362
+ Removes a plugin from the CLI.
363
+
364
+ ALIASES
365
+ $ sc plugins unlink
366
+ $ sc plugins remove
367
+
368
+ EXAMPLES
369
+ $ sc plugins uninstall myplugin
370
+ ```
371
+
372
+ _See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/uninstall.ts)_
373
+
374
+ ## `sc plugins unlink [PLUGIN]`
375
+
376
+ Removes a plugin from the CLI.
377
+
378
+ ```
379
+ USAGE
380
+ $ sc plugins unlink [PLUGIN...] [-h] [-v]
381
+
382
+ ARGUMENTS
383
+ [PLUGIN...] plugin to uninstall
384
+
385
+ FLAGS
386
+ -h, --help Show CLI help.
387
+ -v, --verbose
388
+
389
+ DESCRIPTION
390
+ Removes a plugin from the CLI.
391
+
392
+ ALIASES
393
+ $ sc plugins unlink
394
+ $ sc plugins remove
395
+
396
+ EXAMPLES
397
+ $ sc plugins unlink myplugin
398
+ ```
399
+
400
+ ## `sc plugins update`
401
+
402
+ Update installed plugins.
403
+
404
+ ```
405
+ USAGE
406
+ $ sc plugins update [-h] [-v]
407
+
408
+ FLAGS
409
+ -h, --help Show CLI help.
410
+ -v, --verbose
411
+
412
+ DESCRIPTION
413
+ Update installed plugins.
414
+ ```
415
+
416
+ _See code: [@oclif/plugin-plugins](https://github.com/oclif/plugin-plugins/blob/v5.4.56/src/commands/plugins/update.ts)_
417
+ <!-- commandsstop -->
package/bin/dev.cmd ADDED
@@ -0,0 +1,3 @@
1
+ @echo off
2
+
3
+ node --loader ts-node/esm --no-warnings=ExperimentalWarning "%~dp0\dev" %*
package/bin/dev.js ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env -S node --loader ts-node/esm --disable-warning=ExperimentalWarning
2
+
3
+ import {execute} from '@oclif/core'
4
+
5
+ await execute({development: true, dir: import.meta.url})
package/bin/run.cmd ADDED
@@ -0,0 +1,3 @@
1
+ @echo off
2
+
3
+ node "%~dp0\run" %*
package/bin/run.js ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env node
2
+
3
+ import {execute} from '@oclif/core'
4
+
5
+ await execute({dir: import.meta.url})
@@ -0,0 +1,13 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class BrokerQueueCreate extends Command {
3
+ static args: {
4
+ file: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
5
+ };
6
+ static description: string;
7
+ static examples: string[];
8
+ static flags: {
9
+ force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
+ };
12
+ run(): Promise<void>;
13
+ }
@@ -0,0 +1,24 @@
1
+ import { Args, Command, Flags } from '@oclif/core';
2
+ export default class BrokerQueueCreate extends Command {
3
+ static args = {
4
+ file: Args.string({ description: 'file to read' }),
5
+ };
6
+ static description = 'describe the command here';
7
+ static examples = [
8
+ '<%= config.bin %> <%= command.id %>',
9
+ ];
10
+ static flags = {
11
+ // flag with no value (-f, --force)
12
+ force: Flags.boolean({ char: 'f' }),
13
+ // flag with a value (-n, --name=VALUE)
14
+ name: Flags.string({ char: 'n', description: 'name to print' }),
15
+ };
16
+ async run() {
17
+ const { args, flags } = await this.parse(BrokerQueueCreate);
18
+ const name = flags.name ?? 'world';
19
+ this.log(`hello ${name} from /Users/dishantlangayan/git/sc-plugins/sc-plugin-queue/src/commands/broker/queue/create.ts`);
20
+ if (args.file && flags.force) {
21
+ this.log(`you input --force and --file: ${args.file}`);
22
+ }
23
+ }
24
+ }
@@ -0,0 +1,14 @@
1
+ import { ScCommand } from '@dishantlangayan/sc-cli-core';
2
+ import { MsgVpnQueuesResponse } from '../../../types/msgvpn-queue.js';
3
+ export default class BrokerQueueList extends ScCommand<typeof BrokerQueueList> {
4
+ static args: {};
5
+ static description: string;
6
+ static examples: string[];
7
+ static flags: {
8
+ 'broker-id': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
+ 'broker-name': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
+ count: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
11
+ 'queue-name': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ };
13
+ run(): Promise<MsgVpnQueuesResponse>;
14
+ }
@@ -0,0 +1,99 @@
1
+ import { renderTable, ScCommand, ScConnection } from '@dishantlangayan/sc-cli-core';
2
+ import { Flags } from '@oclif/core';
3
+ export default class BrokerQueueList extends ScCommand {
4
+ static args = {};
5
+ static description = `Get a list of Queue objects from the Solace Cloud Broker.
6
+
7
+ Token Permissions: [ mission_control:access or services:get or services:get:self or services:view or services:view:self ]`;
8
+ static examples = [
9
+ '<%= config.bin %> <%= command.id %> --broker-id=MyBrokerId',
10
+ '<%= config.bin %> <%= command.id %> --broker-name=MyBrokerName',
11
+ '<%= config.bin %> <%= command.id %> --broker-name=MyBrokerName --count=10',
12
+ '<%= config.bin %> <%= command.id %> --broker-name=MyBrokerName --queue-name=test*"',
13
+ ];
14
+ static flags = {
15
+ 'broker-id': Flags.string({
16
+ char: 'b',
17
+ description: 'Id of the event broker service.',
18
+ exactlyOne: ['broker-id', 'broker-name'],
19
+ }),
20
+ 'broker-name': Flags.string({
21
+ char: 'n',
22
+ description: 'Name of the event broker service.',
23
+ exactlyOne: ['broker-id', 'broker-name'],
24
+ }),
25
+ count: Flags.integer({
26
+ char: 'c',
27
+ default: 10,
28
+ description: 'Limit the number of queues returned',
29
+ min: 1,
30
+ }),
31
+ 'queue-name': Flags.string({
32
+ char: 'q',
33
+ description: 'Name of the queue(s) to filter.',
34
+ }),
35
+ };
36
+ async run() {
37
+ const { flags } = await this.parse(BrokerQueueList);
38
+ // Create ScConnection instance
39
+ const conn = new ScConnection();
40
+ const brokerName = flags['broker-name'] ?? '';
41
+ let brokerId = flags['broker-id'] ?? '';
42
+ // API url
43
+ let apiUrl = `/missionControl/eventBrokerServices`;
44
+ // If broker name was provided then retrieve the broker Id first
45
+ if (brokerName) {
46
+ const searchByNameApiUrl = `${apiUrl}?customAttributes=name=="${brokerName}"`;
47
+ const brokerResp = await conn.get(searchByNameApiUrl);
48
+ if (brokerResp.data.length === 0) {
49
+ this.error(`No broker found with the name ${brokerName}`);
50
+ }
51
+ // Set the Broker Id
52
+ brokerId = brokerResp.data[0].id;
53
+ }
54
+ // Retrieve the broker details to get the SEMP port, msgVpn and other fields
55
+ apiUrl += `/${brokerId}?expand=broker&expand=serviceConnectionEndpoints`;
56
+ const brokerResp = await conn.get(apiUrl);
57
+ const { msgVpnName } = brokerResp.data;
58
+ const sempHostName = brokerResp.data.defaultManagementHostname;
59
+ const sempPort = brokerResp.data.serviceConnectionEndpoints[0].ports.find((p) => p.protocol === 'serviceManagementTlsListenPort')?.port;
60
+ const sempUsername = brokerResp.data.broker.msgVpns[0].managementAdminLoginCredential.username;
61
+ const sempPassword = brokerResp.data.broker.msgVpns[0].managementAdminLoginCredential.password;
62
+ const encodedAuthToken = Buffer.from(`${sempUsername}:${sempPassword}`, 'utf8').toString('base64');
63
+ // Use the information and make the SEMP API call to retrieve the queues
64
+ // Create a SEMP connection
65
+ const sempConn = new ScConnection(`https://${sempHostName}:${sempPort}`, encodedAuthToken, undefined, true);
66
+ // Build API endpoint with query parameters
67
+ const endpoint = `/monitor/msgVpns/${msgVpnName}/queues`;
68
+ const params = { count: flags.count };
69
+ if (flags['queue-name'])
70
+ params.where = `queueName==${flags['queue-name']}`;
71
+ // Make API call
72
+ const sempResp = await sempConn.get(endpoint, { params });
73
+ // Format data as table
74
+ const tableData = [
75
+ ['Queue Name', 'Access Type', 'Owner', 'Permission', 'Ingress', 'Egress', 'Quota (MB)'],
76
+ ...sempResp.data.map((queue) => [
77
+ queue.queueName || '',
78
+ queue.accessType || '',
79
+ queue.owner || '',
80
+ queue.permission || '',
81
+ queue.ingressEnabled ? 'Enabled' : 'Disabled',
82
+ queue.egressEnabled ? 'Enabled' : 'Disabled',
83
+ (queue.maxMsgSpoolUsage ?? 0).toString(),
84
+ ]),
85
+ ];
86
+ // Render table
87
+ const output = renderTable(tableData, {
88
+ 0: { width: 25 }, // Queue Name
89
+ 1: { width: 15 }, // Access Type
90
+ 2: { width: 20 }, // Owner
91
+ 3: { width: 15 }, // Permission
92
+ 4: { width: 10 }, // Ingress
93
+ 5: { width: 10 }, // Egress
94
+ 6: { width: 12 }, // Quota (MB)
95
+ });
96
+ this.log(output);
97
+ return sempResp;
98
+ }
99
+ }
@@ -0,0 +1 @@
1
+ export { run } from '@oclif/core';
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ export { run } from '@oclif/core';
@@ -0,0 +1,109 @@
1
+ export interface BrokerGetResponse {
2
+ data: BrokerData;
3
+ meta: Record<string, unknown>;
4
+ }
5
+ export interface BrokerNameGetResponse {
6
+ data: BrokerData[];
7
+ meta: Record<string, unknown>;
8
+ }
9
+ export interface BrokerData {
10
+ adminState: string;
11
+ broker: Broker;
12
+ createdTime: string;
13
+ creationState: string;
14
+ datacenterId: string;
15
+ defaultManagementHostname: string;
16
+ endOfFullSupport: string;
17
+ environmentId: string;
18
+ eventBrokerServiceVersion: string;
19
+ id: string;
20
+ infrastructureId: string;
21
+ locked: boolean;
22
+ msgVpnName: string;
23
+ name: string;
24
+ ownedBy: string;
25
+ selfServeUpgradesEnabled: boolean;
26
+ serviceClassId: string;
27
+ serviceConnectionEndpoints: ServiceConnectionEndpoint[];
28
+ type: string;
29
+ }
30
+ export interface ServiceConnectionEndpoint {
31
+ accessType: string;
32
+ creationState: string;
33
+ description: string;
34
+ hostNames: string[];
35
+ id: string;
36
+ k8sServiceId: string;
37
+ k8sServiceType: string;
38
+ name: string;
39
+ ports: Port[];
40
+ type: string;
41
+ }
42
+ export interface Port {
43
+ port: number;
44
+ protocol: string;
45
+ }
46
+ export interface Broker {
47
+ cluster: Cluster;
48
+ configSyncSslEnabled: boolean;
49
+ diskSize: number;
50
+ managementReadOnlyLoginCredential: Credential;
51
+ maxSpoolUsage: number;
52
+ monitoringAgentEnabled: boolean;
53
+ monitoringMode: string;
54
+ msgVpns: MsgVpn[];
55
+ redundancyGroupSslEnabled: boolean;
56
+ solaceDatadogAgentImage: string;
57
+ tlsStandardDomainCertificateAuthoritiesEnabled: boolean;
58
+ version: string;
59
+ versionFamily: string;
60
+ }
61
+ export interface Cluster {
62
+ name: string;
63
+ password: string;
64
+ primaryRouterName: string;
65
+ remoteAddress: string;
66
+ supportedAuthenticationMode: string[];
67
+ }
68
+ export interface Credential {
69
+ password: string;
70
+ token?: string;
71
+ username: string;
72
+ }
73
+ export interface MsgVpn {
74
+ authenticationBasicEnabled: boolean;
75
+ authenticationBasicType: string;
76
+ authenticationClientCertAllowApiProvidedUsernameEnabled: boolean;
77
+ authenticationClientCertEnabled: boolean;
78
+ authenticationClientCertUsernameSource: string;
79
+ authenticationClientCertValidateDateEnabled: boolean;
80
+ authenticationOauthEnabled: boolean;
81
+ clientProfiles: ClientProfile[];
82
+ enabled: boolean;
83
+ eventLargeMsgThreshold: number;
84
+ managementAdminLoginCredential: Credential;
85
+ maxConnectionCount: number;
86
+ maxEgressFlowCount: number;
87
+ maxEndpointCount: number;
88
+ maxIngressFlowCount: number;
89
+ maxMsgSpoolUsage: number;
90
+ maxSubscriptionCount: number;
91
+ maxTransactedSessionCount: number;
92
+ maxTransactionCount: number;
93
+ missionControlManagerLoginCredential: Credential;
94
+ msgVpnName: string;
95
+ sempOverMessageBus: SempOverMessageBus;
96
+ serviceLoginCredential: Credential;
97
+ subDomainName: string;
98
+ truststoreUri: string;
99
+ }
100
+ export interface ClientProfile {
101
+ name: string;
102
+ }
103
+ export interface SempOverMessageBus {
104
+ sempAccessToAdminCmdsEnabled: boolean;
105
+ sempAccessToCacheCmdsEnabled: boolean;
106
+ sempAccessToClientAdminCmdsEnabled: boolean;
107
+ sempAccessToShowCmdsEnabled: boolean;
108
+ sempOverMsgBusEnabled: boolean;
109
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,141 @@
1
+ export interface MsgVpnQueuesResponse {
2
+ collections?: MsgVpnQueueCollection[];
3
+ data: MsgVpnQueue[];
4
+ links?: MsgVpnQueueLink[];
5
+ meta: SempMeta;
6
+ }
7
+ export interface MsgVpnQueue {
8
+ accessType?: 'exclusive' | 'non-exclusive';
9
+ alreadyBoundBindFailureCount?: number;
10
+ averageBindRequestRate?: number;
11
+ averageRxByteRate?: number;
12
+ averageRxMsgRate?: number;
13
+ averageTxByteRate?: number;
14
+ averageTxMsgRate?: number;
15
+ bindRequestCount?: number;
16
+ bindRequestRate?: number;
17
+ bindSuccessCount?: number;
18
+ bindTimeForwardingMode?: 'cut-through' | 'store-and-forward';
19
+ clientProfileDeniedDiscardedMsgCount?: number;
20
+ consumerAckPropagationEnabled?: boolean;
21
+ createdByManagement?: boolean;
22
+ deadMsgQueue?: string;
23
+ deletedMsgCount?: number;
24
+ deliveryCountEnabled?: boolean;
25
+ deliveryDelay?: number;
26
+ destinationGroupErrorDiscardedMsgCount?: number;
27
+ disabledBindFailureCount?: number;
28
+ disabledDiscardedMsgCount?: number;
29
+ durable?: boolean;
30
+ egressEnabled?: boolean;
31
+ eventBindCountThreshold?: {
32
+ clearPercent?: number;
33
+ setPercent?: number;
34
+ };
35
+ eventMsgSpoolUsageThreshold?: {
36
+ clearPercent?: number;
37
+ setPercent?: number;
38
+ };
39
+ eventRejectLowPriorityMsgLimitThreshold?: {
40
+ clearPercent?: number;
41
+ setPercent?: number;
42
+ };
43
+ highestAckedMsgId?: number;
44
+ ingressEnabled?: boolean;
45
+ inProgressAckMsgCount?: number;
46
+ invalidSelectorBindFailureCount?: number;
47
+ lastReplayFailureReason?: string;
48
+ lastSpooledMsgId?: number;
49
+ lowestAckedMsgId?: number;
50
+ lowPriorityMsgCongestionDiscardedMsgCount?: number;
51
+ lowPriorityMsgCongestionState?: string;
52
+ maxBindCount?: number;
53
+ maxBindCountExceededBindFailureCount?: number;
54
+ maxDeliveredUnackedMsgsPerFlow?: number;
55
+ maxMsgSize?: number;
56
+ maxMsgSizeExceededDiscardedMsgCount?: number;
57
+ maxMsgSpoolUsage?: number;
58
+ maxMsgSpoolUsageExceededDiscardedMsgCount?: number;
59
+ maxRedeliveryCount?: number;
60
+ maxRedeliveryExceededDiscardedMsgCount?: number;
61
+ maxRedeliveryExceededToDmqFailedMsgCount?: number;
62
+ maxRedeliveryExceededToDmqMsgCount?: number;
63
+ maxTtl?: number;
64
+ maxTtlExceededDiscardedMsgCount?: number;
65
+ maxTtlExpiredDiscardedMsgCount?: number;
66
+ maxTtlExpiredToDmqFailedMsgCount?: number;
67
+ maxTtlExpiredToDmqMsgCount?: number;
68
+ msgSpoolPeakUsage?: number;
69
+ msgSpoolUsage?: number;
70
+ msgVpnName: string;
71
+ networkTopic?: string;
72
+ noLocalDeliveryDiscardedMsgCount?: number;
73
+ otherBindFailureCount?: number;
74
+ owner?: string;
75
+ partitionCount?: number;
76
+ partitionOperationalCount?: number;
77
+ partitionRebalanceDelay?: number;
78
+ partitionRebalanceMaxHandoffTime?: number;
79
+ partitionRebalanceStatus?: string;
80
+ partitionScaleStatus?: string;
81
+ permission?: 'consume' | 'delete' | 'modify-topic' | 'no-access' | 'read-only';
82
+ queueName: string;
83
+ redeliveredMsgCount?: number;
84
+ redeliveryDelayEnabled?: boolean;
85
+ redeliveryDelayInitialInterval?: number;
86
+ redeliveryDelayMaxInterval?: number;
87
+ redeliveryDelayMultiplier?: number;
88
+ redeliveryEnabled?: boolean;
89
+ rejectLowPriorityMsgEnabled?: boolean;
90
+ rejectLowPriorityMsgLimit?: number;
91
+ rejectMsgToSenderOnDiscardBehavior?: 'always' | 'never' | 'when-queue-enabled';
92
+ replayedAckedMsgCount?: number;
93
+ replayedTxMsgCount?: number;
94
+ replayFailureCount?: number;
95
+ replayStartCount?: number;
96
+ replaySuccessCount?: number;
97
+ replicationActiveAckPropTxMsgCount?: number;
98
+ replicationStandbyAckedByAckPropMsgCount?: number;
99
+ replicationStandbyAckPropRxMsgCount?: number;
100
+ replicationStandbyRxMsgCount?: number;
101
+ respectMsgPriorityEnabled?: boolean;
102
+ respectTtlEnabled?: boolean;
103
+ rxByteRate?: number;
104
+ rxMsgRate?: number;
105
+ spooledByteCount?: number;
106
+ spooledMsgCount?: number;
107
+ transportRetransmitMsgCount?: number;
108
+ txByteRate?: number;
109
+ txMsgRate?: number;
110
+ txSelector?: boolean;
111
+ txUnackedMsgCount?: number;
112
+ virtualRouter?: 'auto' | 'backup' | 'primary';
113
+ xaTransactionNotSupportedDiscardedMsgCount?: number;
114
+ }
115
+ export interface MsgVpnQueueCollection {
116
+ msgs?: {
117
+ count?: number;
118
+ };
119
+ priorities?: Record<string, unknown>;
120
+ subscriptions?: Record<string, unknown>;
121
+ txFlows?: Record<string, unknown>;
122
+ }
123
+ export interface MsgVpnQueueLink {
124
+ msgsUri?: string;
125
+ prioritiesUri?: string;
126
+ subscriptionsUri?: string;
127
+ txFlowsUri?: string;
128
+ uri?: string;
129
+ }
130
+ export interface SempMeta {
131
+ count?: number;
132
+ paging?: {
133
+ cursorQuery?: string;
134
+ nextPageUri?: string;
135
+ };
136
+ request?: {
137
+ method?: string;
138
+ uri?: string;
139
+ };
140
+ responseCode?: number;
141
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,135 @@
1
+ {
2
+ "commands": {
3
+ "broker:queue:create": {
4
+ "aliases": [],
5
+ "args": {
6
+ "file": {
7
+ "description": "file to read",
8
+ "name": "file"
9
+ }
10
+ },
11
+ "description": "describe the command here",
12
+ "examples": [
13
+ "<%= config.bin %> <%= command.id %>"
14
+ ],
15
+ "flags": {
16
+ "force": {
17
+ "char": "f",
18
+ "name": "force",
19
+ "allowNo": false,
20
+ "type": "boolean"
21
+ },
22
+ "name": {
23
+ "char": "n",
24
+ "description": "name to print",
25
+ "name": "name",
26
+ "hasDynamicHelp": false,
27
+ "multiple": false,
28
+ "type": "option"
29
+ }
30
+ },
31
+ "hasDynamicHelp": false,
32
+ "hiddenAliases": [],
33
+ "id": "broker:queue:create",
34
+ "pluginAlias": "@dishantlangayan/sc-plugin-queue",
35
+ "pluginName": "@dishantlangayan/sc-plugin-queue",
36
+ "pluginType": "core",
37
+ "strict": true,
38
+ "enableJsonFlag": false,
39
+ "isESM": true,
40
+ "relativePath": [
41
+ "dist",
42
+ "commands",
43
+ "broker",
44
+ "queue",
45
+ "create.js"
46
+ ]
47
+ },
48
+ "broker:queue:list": {
49
+ "aliases": [],
50
+ "args": {},
51
+ "description": "Get a list of Queue objects from the Solace Cloud Broker.\n\nToken Permissions: [ mission_control:access or services:get or services:get:self or services:view or services:view:self ]",
52
+ "examples": [
53
+ "<%= config.bin %> <%= command.id %> --broker-id=MyBrokerId",
54
+ "<%= config.bin %> <%= command.id %> --broker-name=MyBrokerName",
55
+ "<%= config.bin %> <%= command.id %> --broker-name=MyBrokerName --count=10",
56
+ "<%= config.bin %> <%= command.id %> --broker-name=MyBrokerName --queue-name=test*\""
57
+ ],
58
+ "flags": {
59
+ "json": {
60
+ "description": "Format output as json.",
61
+ "helpGroup": "GLOBAL",
62
+ "name": "json",
63
+ "allowNo": false,
64
+ "type": "boolean"
65
+ },
66
+ "log-level": {
67
+ "helpGroup": "GLOBAL",
68
+ "name": "log-level",
69
+ "summary": "Specify level for logging.",
70
+ "default": "info",
71
+ "hasDynamicHelp": false,
72
+ "multiple": false,
73
+ "options": [
74
+ "debug",
75
+ "warn",
76
+ "error",
77
+ "info",
78
+ "trace"
79
+ ],
80
+ "type": "option"
81
+ },
82
+ "broker-id": {
83
+ "char": "b",
84
+ "description": "Id of the event broker service.",
85
+ "name": "broker-id",
86
+ "hasDynamicHelp": false,
87
+ "multiple": false,
88
+ "type": "option"
89
+ },
90
+ "broker-name": {
91
+ "char": "n",
92
+ "description": "Name of the event broker service.",
93
+ "name": "broker-name",
94
+ "hasDynamicHelp": false,
95
+ "multiple": false,
96
+ "type": "option"
97
+ },
98
+ "count": {
99
+ "char": "c",
100
+ "description": "Limit the number of queues returned",
101
+ "name": "count",
102
+ "default": 10,
103
+ "hasDynamicHelp": false,
104
+ "multiple": false,
105
+ "type": "option"
106
+ },
107
+ "queue-name": {
108
+ "char": "q",
109
+ "description": "Name of the queue(s) to filter.",
110
+ "name": "queue-name",
111
+ "hasDynamicHelp": false,
112
+ "multiple": false,
113
+ "type": "option"
114
+ }
115
+ },
116
+ "hasDynamicHelp": false,
117
+ "hiddenAliases": [],
118
+ "id": "broker:queue:list",
119
+ "pluginAlias": "@dishantlangayan/sc-plugin-queue",
120
+ "pluginName": "@dishantlangayan/sc-plugin-queue",
121
+ "pluginType": "core",
122
+ "strict": true,
123
+ "enableJsonFlag": true,
124
+ "isESM": true,
125
+ "relativePath": [
126
+ "dist",
127
+ "commands",
128
+ "broker",
129
+ "queue",
130
+ "list.js"
131
+ ]
132
+ }
133
+ },
134
+ "version": "0.1.0"
135
+ }
package/package.json ADDED
@@ -0,0 +1,76 @@
1
+ {
2
+ "name": "@dishantlangayan/sc-plugin-queue",
3
+ "description": "Commands to interact with queues on a Solace Cloud broker",
4
+ "version": "0.1.0",
5
+ "author": "Dishant Langayan",
6
+ "bin": {
7
+ "sc": "./bin/run.js"
8
+ },
9
+ "bugs": "https://github.com/dishantlangayan/sc-plugin-queue/issues",
10
+ "dependencies": {
11
+ "@dishantlangayan/sc-cli-core": "^0.1.2",
12
+ "@oclif/core": "^4",
13
+ "@oclif/plugin-help": "^6",
14
+ "@oclif/plugin-plugins": "^5"
15
+ },
16
+ "devDependencies": {
17
+ "@eslint/compat": "^1",
18
+ "@oclif/prettier-config": "^0.2.1",
19
+ "@oclif/test": "^4",
20
+ "@types/chai": "^4",
21
+ "@types/mocha": "^10",
22
+ "@types/node": "^18",
23
+ "@types/sinon": "^21.0.0",
24
+ "chai": "^4",
25
+ "eslint": "^9",
26
+ "eslint-config-oclif": "^6",
27
+ "eslint-config-prettier": "^10",
28
+ "mocha": "^10",
29
+ "oclif": "^4",
30
+ "shx": "^0.3.3",
31
+ "sinon": "^21.0.1",
32
+ "ts-node": "^10",
33
+ "typescript": "^5"
34
+ },
35
+ "engines": {
36
+ "node": ">=18.0.0"
37
+ },
38
+ "files": [
39
+ "./bin",
40
+ "./dist",
41
+ "./oclif.manifest.json"
42
+ ],
43
+ "homepage": "https://github.com/dishantlangayan/sc-plugin-queue",
44
+ "keywords": [
45
+ "oclif"
46
+ ],
47
+ "license": "Apache-2.0",
48
+ "main": "dist/index.js",
49
+ "type": "module",
50
+ "oclif": {
51
+ "bin": "sc",
52
+ "dirname": "sc",
53
+ "commands": "./dist/commands",
54
+ "plugins": [
55
+ "@oclif/plugin-help",
56
+ "@oclif/plugin-plugins"
57
+ ],
58
+ "topicSeparator": " ",
59
+ "topics": {
60
+ "hello": {
61
+ "description": "Say hello to the world and others"
62
+ }
63
+ }
64
+ },
65
+ "repository": "dishantlangayan/sc-plugin-queue",
66
+ "scripts": {
67
+ "build": "shx rm -rf dist && tsc -b",
68
+ "lint": "eslint",
69
+ "postpack": "shx rm -f oclif.manifest.json",
70
+ "posttest": "npm run lint",
71
+ "prepack": "oclif manifest && oclif readme",
72
+ "test": "mocha --forbid-only \"test/**/*.test.ts\"",
73
+ "version": "oclif readme && git add README.md"
74
+ },
75
+ "types": "dist/index.d.ts"
76
+ }