xo-vmdk-to-vhd
Version:
JS lib reading and writing .vmdk and .ova files
102 lines (101 loc) • 3.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "ParsableFile", {
enumerable: true,
get: function () {
return _ovaRead.ParsableFile;
}
});
exports.computeVmdkLength = computeVmdkLength;
Object.defineProperty(exports, "parseOVAFile", {
enumerable: true,
get: function () {
return _ovaRead.parseOVAFile;
}
});
Object.defineProperty(exports, "readCapacityAndGrainTable", {
enumerable: true,
get: function () {
return _vmdkReadTable.readCapacityAndGrainTable;
}
});
Object.defineProperty(exports, "readVmdkGrainTable", {
enumerable: true,
get: function () {
return _vmdkReadTable.default;
}
});
exports.vhdToVMDK = vhdToVMDK;
exports.vhdToVMDKIterator = vhdToVMDKIterator;
exports.vmdkToVhd = vmdkToVhd;
Object.defineProperty(exports, "writeOvaOn", {
enumerable: true,
get: function () {
return _ovaGenerate.writeOvaOn;
}
});
var _asyncIteratorToStream = _interopRequireDefault(require("async-iterator-to-stream"));
var _createReadableSparseStream = _interopRequireDefault(require("vhd-lib/createReadableSparseStream.js"));
var _ovaRead = require("./ova-read");
var _vmdkRead = _interopRequireDefault(require("./vmdk-read"));
var _vmdkGenerate = require("./vmdk-generate");
var _ovaGenerate = require("./ova-generate");
var _parseVhdToBlocks = require("./parseVhdToBlocks");
var _vmdkReadTable = _interopRequireWildcard(require("./vmdk-read-table"));
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
async function vmdkToVhd(vmdkReadStream, grainLogicalAddressList, grainFileOffsetList, gzipped = false, length) {
const parser = new _vmdkRead.default(vmdkReadStream, grainLogicalAddressList, grainFileOffsetList, gzipped, length);
const header = await parser.readHeader();
const vhdStream = await (0, _createReadableSparseStream.default)(header.capacitySectors * 512, header.grainSizeSectors * 512, grainLogicalAddressList, parser.blockIterator());
vhdStream._rawLength = parser.descriptor.extents[0].size;
return vhdStream;
}
async function computeVmdkLength(diskName, vhdReadStream) {
let length = 0;
const {
iterator
} = await vhdToVMDKIterator(diskName, vhdReadStream);
for await (const b of iterator) {
length += b.length;
}
return length;
}
async function vhdToVMDK(diskName, vhdReadStreamGetter, withLength = false) {
const {
iterator,
size
} = await vhdToVMDKIterator(diskName, await vhdReadStreamGetter());
let length;
const stream = await (0, _asyncIteratorToStream.default)(iterator);
if (withLength) {
if (size === undefined) {
length = await computeVmdkLength(diskName, await vhdReadStreamGetter());
} else {
length = size;
}
stream.length = length;
}
return stream;
}
async function vhdToVMDKIterator(diskName, vhdReadStream) {
const {
blockSize,
blockCount,
blocks,
diskSize,
geometry
} = await (0, _parseVhdToBlocks.parseVhdToBlocks)(vhdReadStream);
const dataSize = blockSize * blockCount;
const {
iterator,
metadataSize
} = await (0, _vmdkGenerate.generateVmdkData)(diskName, diskSize, blockSize, blocks, geometry, dataSize);
return {
iterator,
size: dataSize + metadataSize
};
}
//# sourceMappingURL=index.js.map