balena-cli
Version:
The official balena Command Line Interface
148 lines (146 loc) • 5.45 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const core_1 = require("@oclif/core");
const cf = require("../../utils/common-flags");
const helpers_1 = require("../../utils/helpers");
const lazy_1 = require("../../utils/lazy");
const messages_1 = require("../../utils/messages");
class DeviceCmd extends core_1.Command {
async run() {
var _a;
const { args: params, flags: options } = await this.parse(DeviceCmd);
const balena = (0, lazy_1.getBalenaSdk)();
const device = (await balena.models.device.get(params.uuid, options.json
? {
$expand: {
device_tag: {
$select: ['tag_key', 'value'],
},
...helpers_1.expandForAppName.$expand,
},
}
: {
$select: [
'device_name',
'id',
'overall_status',
'is_online',
'ip_address',
'mac_address',
'last_connectivity_event',
'uuid',
'supervisor_version',
'is_web_accessible',
'note',
'os_version',
'memory_usage',
'memory_total',
'public_address',
'storage_block_device',
'storage_usage',
'storage_total',
'cpu_usage',
'cpu_temp',
'cpu_id',
'is_undervolted',
],
...helpers_1.expandForAppName,
}));
if (options.view) {
const open = await Promise.resolve().then(() => require('open'));
const dashboardUrl = balena.models.device.getDashboardUrl(device.uuid);
await open(dashboardUrl, { wait: false });
return;
}
device.status = device.overall_status;
device.dashboard_url = balena.models.device.getDashboardUrl(device.uuid);
const belongsToApplication = device.belongs_to__application;
device.fleet = (belongsToApplication === null || belongsToApplication === void 0 ? void 0 : belongsToApplication[0])
? belongsToApplication[0].slug
: 'N/a';
device.device_type = device.is_of__device_type[0].slug;
const isRunningRelease = device.is_running__release;
device.commit = (isRunningRelease === null || isRunningRelease === void 0 ? void 0 : isRunningRelease[0]) ? isRunningRelease[0].commit : 'N/a';
device.last_seen = (_a = device.last_connectivity_event) !== null && _a !== void 0 ? _a : undefined;
device.memory_usage_mb = device.memory_usage;
device.memory_total_mb = device.memory_total;
device.storage_usage_mb = device.storage_usage;
device.storage_total_mb = device.storage_total;
device.cpu_temp_c = device.cpu_temp;
device.cpu_usage_percent = device.cpu_usage;
if (device.is_undervolted) {
device.undervoltage_detected = device.is_undervolted;
}
if (device.memory_usage != null &&
device.memory_total != null &&
device.memory_total !== 0) {
device.memory_usage_percent = Math.round((device.memory_usage / device.memory_total) * 100);
}
if (device.storage_usage != null &&
device.storage_total != null &&
device.storage_total !== 0) {
device.storage_usage_percent = Math.round((device.storage_usage / device.storage_total) * 100);
}
if (options.json) {
console.log(JSON.stringify(device, null, 4));
return;
}
console.log((0, lazy_1.getVisuals)().table.vertical(device, [
`$${device.device_name}$`,
'id',
'device_type',
'status',
'is_online',
'ip_address',
'public_address',
'mac_address',
'fleet',
'last_seen',
'uuid',
'commit',
'supervisor_version',
'is_web_accessible',
'note',
'os_version',
'dashboard_url',
'cpu_usage_percent',
'cpu_temp_c',
'cpu_id',
'memory_usage_mb',
'memory_total_mb',
'memory_usage_percent',
'storage_block_device',
'storage_usage_mb',
'storage_total_mb',
'storage_usage_percent',
'undervoltage_detected',
]));
}
}
DeviceCmd.description = (0, lazy_1.stripIndent) `
Show info about a single device.
Show information about a single device.
${messages_1.jsonInfo.split('\n').join('\n\t\t')}
`;
DeviceCmd.examples = [
'$ balena device 7cf02a6',
'$ balena device 7cf02a6 --view',
'$ balena device 7cf02a6 --json',
];
DeviceCmd.args = {
uuid: core_1.Args.string({
description: 'the device uuid',
required: true,
}),
};
DeviceCmd.flags = {
json: cf.json,
view: core_1.Flags.boolean({
default: false,
description: 'open device dashboard page',
}),
};
DeviceCmd.authenticated = true;
DeviceCmd.primary = true;
exports.default = DeviceCmd;
//# sourceMappingURL=index.js.map
;