heroku
Version:
CLI to interact with Heroku
84 lines (83 loc) • 3.53 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const command_1 = require("@heroku-cli/command");
const core_1 = require("@oclif/core");
const heroku_cli_util_1 = require("@heroku/heroku-cli-util");
const tsheredoc_1 = require("tsheredoc");
const format_1 = require("../../../lib/spaces/format");
class Info extends command_1.Command {
async run() {
const { flags, args } = await this.parse(Info);
const { space, json } = flags;
const { name } = args;
const { body: vpnConnection } = await this.heroku.get(`/spaces/${space}/vpn-connections/${name}`);
const connectionName = vpnConnection.name || name;
this.render(connectionName, vpnConnection, json);
}
displayVPNInfo(name, vpnConnection) {
heroku_cli_util_1.hux.styledHeader(`${name} VPN Info`);
heroku_cli_util_1.hux.styledObject({
Name: name,
ID: vpnConnection.id,
'Public IP': vpnConnection.public_ip,
'Routable CIDRs': (0, format_1.displayCIDR)(vpnConnection.routable_cidrs),
Status: `${(0, format_1.displayVPNStatus)(vpnConnection.status)}`,
'Status Message': vpnConnection.status_message,
}, ['Name', 'ID', 'Public IP', 'Routable CIDRs', 'State', 'Status', 'Status Message']);
const vpnConnectionTunnels = vpnConnection.tunnels || [];
vpnConnectionTunnels.forEach((val, i) => {
val.tunnel_id = 'Tunnel ' + (i + 1);
});
heroku_cli_util_1.hux.styledHeader(`${name} VPN Tunnel Info`);
heroku_cli_util_1.hux.table(vpnConnectionTunnels, {
tunnel_id: { header: 'VPN Tunnel' },
ip: { header: 'IP Address' },
status: {
header: 'Status',
get: row => (0, format_1.displayVPNStatus)(row.status),
},
last_status_change: { header: 'Status Last Changed' },
status_message: { header: 'Details' },
});
}
render(name, vpnConnection, json) {
if (json) {
heroku_cli_util_1.hux.styledJSON(vpnConnection);
}
else {
this.displayVPNInfo(name, vpnConnection);
}
}
}
exports.default = Info;
Info.topic = 'spaces';
Info.description = 'display the information for VPN';
Info.example = (0, tsheredoc_1.default)(`
$ heroku spaces:vpn:info vpn-connection-name --space my-space
=== vpn-connection-name VPN Tunnel Info
Name: vpn-connection-name
ID: 123456789012
Public IP: 35.161.69.30
Routable CIDRs: 172.16.0.0/16
Status: failed
Status Message: supplied CIDR block already in use
=== my-space Tunnel Info
VPN Tunnel IP Address Status Last Changed Details
────────── ───────────── ────── ──────────────────── ─────────────
Tunnel 1 52.44.146.197 UP 2016-10-25T22:09:05Z status message
Tunnel 2 52.44.146.197 UP 2016-10-25T22:09:05Z status message
`);
Info.flags = {
space: command_1.flags.string({
char: 's',
description: 'space the vpn connection belongs to',
required: true,
}),
json: command_1.flags.boolean({ description: 'output in json format' }),
};
Info.args = {
name: core_1.Args.string({
description: 'name or id of the VPN connection to get info from',
required: true,
}),
};
;