UNPKG

firmament-docker

Version:

Typescript classes for performing Docker operations

121 lines 5.19 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; Object.defineProperty(exports, "__esModule", { value: true }); const inversify_1 = require("inversify"); const firmament_yargs_1 = require("firmament-yargs"); const encodeUrl = require("encodeurl"); const path = require("path"); let VmwareMakeImpl = class VmwareMakeImpl extends firmament_yargs_1.ForceErrorImpl { constructor(commandUtil, safeJson, processCommandJson, positive, spawn) { super(); this.commandUtil = commandUtil; this.safeJson = safeJson; this.processCommandJson = processCommandJson; this.positive = positive; this.spawn = spawn; } export(argv) { const me = this; const ovfToolCmd = [ 'ovftool', '--compress=9', '--diskMode=thin', '--targetType=OVA' ]; me.commandUtil.processExit(); me.spawn.spawnShellCommandAsync(ovfToolCmd, {}, (err, result) => { me.commandUtil.log(result.toString()); }, (err) => { if (err) { return me.handleOvfToolExecutionFailure(err, () => { me.commandUtil.processExit(); }); } }); } uninstallOvfTool(argv) { const me = this; const uninstallOvfToolJson = path.resolve(__dirname, '../../firmament-bash/uninstall-ovftool.json'); me.processCommandJson.processAbsoluteUrl(uninstallOvfToolJson, (err) => { me.commandUtil.processExitWithError(err, `'ovftool' uninstalled.`); }); } import(argv) { const me = this; const { name, powerOn, datastore, ovaUrl, esxiHost, esxiUser, esxiPassword } = argv; const ovfToolCmd = [ 'ovftool', '--acceptAllEulas', '--diskMode=thin', '--noSSLVerify', '--vmFolder=/', ]; if (name && name != 'OVA filename') { ovfToolCmd.push(`--name=${name}`); } if (powerOn) { ovfToolCmd.push('--powerOn'); } const ds = datastore ? datastore : 'datastore1'; ovfToolCmd.push(`--datastore=${ds}`); ovfToolCmd.push(ovaUrl); const encodedUser = encodeUrl(esxiUser); const encodedPassword = encodeUrl(esxiPassword); const esxiUrl = `vi://${encodedUser}:${encodedPassword}@${esxiHost}/`; ovfToolCmd.push(esxiUrl); me.spawn.spawnShellCommandAsync(ovfToolCmd, {}, (err, result) => { me.commandUtil.log(result.toString()); }, (err) => { if (err) { return me.handleOvfToolExecutionFailure(err, (err) => { me.commandUtil.processExitWithError(err); }); } me.commandUtil.processExit(); }); } handleOvfToolExecutionFailure(err, cb) { const me = this; me.safeJson.safeParse(err.message, (err, obj) => { try { if (obj.code.code === 'ENOENT') { if (me.positive.areYouSure(`Looks like 'ovftool' is not installed. Want me to try to install it?`, 'Operation canceled.', true, firmament_yargs_1.FailureRetVal.TRUE)) { const installOvfToolJson = path.resolve(__dirname, '../../firmament-bash/install-ovftool.json'); return me.processCommandJson.processAbsoluteUrl(installOvfToolJson, (err) => { if (!err) { me.commandUtil.log(`'ovftool' installed. Try operation again.`); } cb(err); }); } } cb(err); } catch (err) { cb(err); } }); } }; VmwareMakeImpl = __decorate([ inversify_1.injectable(), __param(0, inversify_1.inject('CommandUtil')), __param(1, inversify_1.inject('SafeJson')), __param(2, inversify_1.inject('ProcessCommandJson')), __param(3, inversify_1.inject('Positive')), __param(4, inversify_1.inject('Spawn')), __metadata("design:paramtypes", [Object, Object, Object, Object, Object]) ], VmwareMakeImpl); exports.VmwareMakeImpl = VmwareMakeImpl; //# sourceMappingURL=vmware-make-impl.js.map