Files

@xen-orchestra/vmdk

Package Version License PackagePhobia Node compatibility

parse and produce vmdk files

Install

Installation of the npm package:

npm install --save @xen-orchestra/vmdk

Usage

Generate a stream optimized VMDK from any Disk of @xen-orchestra/disk-transform:

import { toVmdkStream } from '@xen-orchestra/vmdk'

const stream = await toVmdkStream(disk, { diskName: 'my-disk.vmdk' })

By default the grain directory and the grain tables are written after the data, like any stream optimized disk: nothing is padded, and the size of the output is only known once it has been fully generated, so stream.length is left undefined.

With the withLength layout, the same grains are followed by a single block of padding, sized so that the file reaches a length computed before anything is generated: stream.length is then the exact size of the output, which an HTTP upload or a tar entry needs in advance — vSphere's HttpNfcLease refuses a chunked body, for instance. It weights the uncompressed size of the allocated grains, plus 0.78%, whatever the content compresses to:

const stream = await toVmdkStream(disk, { layout: 'withLength' })
console.log(stream.length) // exact size of the file

The format itself, and the reading side to come, are described in docs/vmdk.md.

Contributions

Contributions are very welcomed, either on the documentation or on the code.

You may:

  • report any issue you've encountered;
  • fork and create a pull request.

License

ISC © Vates SAS