Skip to content

Commit 4a7d36a

Browse files
authored
feat: add flag (and env) for specifying the monitor interval (#84)
1 parent abf98aa commit 4a7d36a

File tree

5 files changed

+34
-16
lines changed

5 files changed

+34
-16
lines changed

README.md

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -199,17 +199,18 @@ Monitor for changes to sync to vault
199199

200200
```
201201
USAGE
202-
$ vstool monitor [-h] [--broker-api-url <value>] [--broker-token <value>] [--vault-token <value>]
203-
[--vault-addr <value>] [--root <value>...]
202+
$ vstool monitor [-h] [--broker-api-url <value>] [--broker-token <value>] [--monitor-interval <value>]
203+
[--vault-token <value>] [--vault-addr <value>] [--root <value>...]
204204
205205
FLAGS
206-
-h, --help Show CLI help.
207-
--broker-api-url=<value> [default: https://broker.io.nrs.gov.bc.ca/] The broker api base url
208-
--broker-token=<value> The broker JWT
209-
--root=<value>... [default: ] The root to constrict the policy sync to. Some roots can be further
210-
constricted such as -root=apps -root=cool-app-war
211-
--vault-addr=<value> [default: http://127.0.0.1:8200] The vault address
212-
--vault-token=<value> [default: myroot] The vault token
206+
-h, --help Show CLI help.
207+
--broker-api-url=<value> [default: https://broker.io.nrs.gov.bc.ca/] The broker api base url
208+
--broker-token=<value> The broker JWT
209+
--monitor-interval=<value> [default: 60000] The duration between each monitor check in milliseconds
210+
--root=<value>... [default: ] The root to constrict the policy sync to. Some roots can be further
211+
constricted such as -root=apps -root=cool-app-war
212+
--vault-addr=<value> [default: http://127.0.0.1:8200] The vault address
213+
--vault-token=<value> [default: myroot] The vault token
213214
214215
DESCRIPTION
215216
Monitor for changes to sync to vault

src/broker/broker-monitor.controller.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { inject, injectable } from 'inversify';
22
import winston from 'winston';
3-
import { TYPES } from '../inversify.types';
43
import { exhaustMap, timer } from 'rxjs';
4+
import { TYPES } from '../inversify.types';
55
import VaultPolicyController from '../vault/vault-policy.controller';
66
import VaultGroupController from '../vault/vault-group.controller';
77
import VaultApproleController from '../vault/vault-approle.controller';
@@ -24,8 +24,16 @@ export default class BrokerMonitorController {
2424
private vaultPolicyController: VaultPolicyController,
2525
) {}
2626

27-
public async monitor(root: string[]) {
28-
const source$ = timer(0, 60000);
27+
/**
28+
* Monitor vault and sync changes
29+
* @param root The policy roots to monitor
30+
* @param monitorIntervalDuration The duration between each monitor check in milliseconds
31+
*/
32+
public async monitor(
33+
root: string[],
34+
monitorIntervalDuration: number,
35+
): Promise<void> {
36+
const source$ = timer(0, monitorIntervalDuration);
2937

3038
source$
3139
.pipe(

src/commands/monitor.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {
55
brokerApiUrl,
66
brokerToken,
77
help,
8+
monitorIntervalDuration,
89
root,
910
vaultAddr,
1011
vaultToken,
@@ -23,6 +24,7 @@ export default class Monitor extends Command {
2324
...help,
2425
...brokerApiUrl,
2526
...brokerToken,
27+
...monitorIntervalDuration,
2628
...vaultToken,
2729
...vaultAddr,
2830
...root,
@@ -42,6 +44,6 @@ export default class Monitor extends Command {
4244

4345
await vsContainer
4446
.get<BrokerMonitorController>(TYPES.BrokerMonitorController)
45-
.monitor(flags.root);
47+
.monitor(flags.root, flags['monitor-interval']);
4648
}
4749
}

src/flags.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@ export const brokerToken = {
2020
}),
2121
};
2222

23+
export const monitorIntervalDuration = {
24+
'monitor-interval': Flags.integer({
25+
description: 'The duration between each monitor check in milliseconds',
26+
default: 60 * 1000,
27+
env: 'MONITOR_INTERVAL_DURATION',
28+
}),
29+
};
30+
2331
export const secretShares = {
2432
'secret-shares': Flags.integer({
2533
description: 'The number of shares to split the master key into',
@@ -33,7 +41,6 @@ export const secretThreshold = {
3341
default: 1,
3442
}),
3543
};
36-
3744
export const vaultAddr = {
3845
'vault-addr': Flags.string({
3946
default: 'http://127.0.0.1:8200',

src/inversify.config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { Container } from 'inversify';
2+
import nv from 'node-vault';
3+
import winston from 'winston';
24
import { logger } from './logger';
35
import { TYPES } from './inversify.types';
46
import { AppService } from './services/app.service';
57
import VaultPolicyController from './vault/vault-policy.controller';
68
import { vaultFactory } from './vault/vault.factory';
7-
import nv from 'node-vault';
89
import { ConfigService } from './services/config.service';
9-
import winston from 'winston';
1010
import VaultGroupController from './vault/vault-group.controller';
1111
import EnvironmentUtil from './util/environment.util';
1212
import HclUtil from './util/hcl.util';

0 commit comments

Comments
 (0)