1 | 'use strict'
|
2 |
|
3 | let cli = require('heroku-cli-util')
|
4 | let co = require('co')
|
5 |
|
6 | function * run (context, heroku) {
|
7 | let lib = require('../../lib/outbound-rules')(heroku)
|
8 | let space = context.flags.space
|
9 | if (!space) throw new Error('Space name required.')
|
10 | let rules = yield lib.getOutboundRules(space)
|
11 | rules.rules = rules.rules || []
|
12 |
|
13 | if (rules.rules.length === 0) throw new Error('No Outbound Rules configured. Nothing to do.')
|
14 |
|
15 | let deleted = rules.rules.splice(context.args.ruleNumber - 1, 1)[0]
|
16 |
|
17 | yield cli.confirmApp(space, context.flags.confirm, `Destructive Action
|
18 | This will remove:
|
19 | Destination: ${deleted.target}, From Port: ${deleted.from_port}, To Port: ${deleted.to_port}, Protocol ${deleted.protocol}
|
20 | from the Outbound Rules on ${cli.color.cyan.bold(space)}
|
21 | `)
|
22 | rules = yield lib.putOutboundRules(space, rules)
|
23 | cli.log(`Removed Rule ${cli.color.cyan.bold(context.args.rulenumber)} from Outbound Rules on ${cli.color.cyan.bold(space)}`)
|
24 | cli.warn('It may take a few moments for the changes to take effect.')
|
25 | }
|
26 |
|
27 | module.exports = {
|
28 | topic: 'outbound-rules',
|
29 | command: 'remove',
|
30 | description: 'Remove a Rules from the list of Outbound Rules',
|
31 | help: `Example:
|
32 |
|
33 | $ heroku outbound-rules:remove --space my-space 4
|
34 | Removed 192.168.2.0/24 from trusted IP ranges on my-space
|
35 | `,
|
36 | needsApp: false,
|
37 | needsAuth: true,
|
38 | hidden: true,
|
39 | args: [
|
40 | { name: 'ruleNumber' }
|
41 | ],
|
42 | flags: [
|
43 | { name: 'space', hasValue: true, optional: false, description: 'space to remove rule from' },
|
44 | { name: 'confirm', hasValue: true, description: 'set to space name to bypass confirm prompt' }
|
45 | ],
|
46 | run: cli.command(co.wrap(run))
|
47 | }
|