feat(xo-server/vdi.exportContent): expose NBD settings
This commit is contained in:
parent
213eb6a56a
commit
77b14a316f
@ -28,6 +28,7 @@
|
||||
|
||||
<!--packages-start-->
|
||||
|
||||
- xo-server minor
|
||||
- xo-web minor
|
||||
|
||||
<!--packages-end-->
|
||||
|
@ -87,11 +87,11 @@ create.resolve = {
|
||||
const VHD = 'vhd'
|
||||
const VMDK = 'vmdk'
|
||||
|
||||
async function handleExportContent(req, res, { filename, format, vdi }) {
|
||||
async function handleExportContent(req, res, { filename, format, nbdConcurrency, preferNbd, vdi }) {
|
||||
const stream =
|
||||
format === VMDK
|
||||
? await vdi.$xapi.exportVdiAsVmdk(vdi.$id, filename)
|
||||
: await vdi.$exportContent({ format: VDI_FORMAT_VHD })
|
||||
? await vdi.$xapi.exportVdiAsVmdk(vdi.$id, filename, { nbdConcurrency, preferNbd })
|
||||
: await vdi.$exportContent({ format: VDI_FORMAT_VHD, nbdConcurrency, preferNbd })
|
||||
req.on('close', () => stream.destroy())
|
||||
|
||||
// stream can be an HTTP response, in this case, extract interesting data
|
||||
@ -113,7 +113,7 @@ async function handleExportContent(req, res, { filename, format, vdi }) {
|
||||
})
|
||||
}
|
||||
|
||||
export async function exportContent({ vdi, format = VHD }) {
|
||||
export async function exportContent({ vdi, format = VHD, nbdConcurrency, preferNbd }) {
|
||||
const filename = (vdi.name_label || 'unknown') + '.' + (format === VHD ? 'vhd' : 'vmdk')
|
||||
return {
|
||||
$getFrom: await this.registerHttpRequest(
|
||||
@ -122,6 +122,8 @@ export async function exportContent({ vdi, format = VHD }) {
|
||||
vdi: this.getXapiObject(vdi),
|
||||
filename,
|
||||
format,
|
||||
nbdConcurrency,
|
||||
preferNbd,
|
||||
},
|
||||
{
|
||||
suffix: `/${encodeURIComponent(filename)}`,
|
||||
@ -134,6 +136,8 @@ exportContent.description = 'export the content of a VDI'
|
||||
exportContent.params = {
|
||||
id: { type: 'string' },
|
||||
format: { enum: [VMDK, VHD], optional: true },
|
||||
preferNbd: { type: 'boolean', optional: true },
|
||||
nbdConcurrency: { type: 'number', optional: true },
|
||||
}
|
||||
exportContent.resolve = {
|
||||
vdi: ['id', ['VDI', 'VDI-snapshot'], 'view'],
|
||||
|
@ -1104,9 +1104,9 @@ export default class Xapi extends XapiBase {
|
||||
return snap
|
||||
}
|
||||
|
||||
async exportVdiAsVmdk(vdi, filename, { cancelToken = CancelToken.none, base } = {}) {
|
||||
async exportVdiAsVmdk(vdi, filename, { cancelToken = CancelToken.none, base, nbdConcurrency, preferNbd } = {}) {
|
||||
vdi = this.getObject(vdi)
|
||||
const params = { cancelToken, format: VDI_FORMAT_VHD }
|
||||
const params = { cancelToken, format: VDI_FORMAT_VHD, nbdConcurrency, preferNbd }
|
||||
if (base !== undefined) {
|
||||
params.base = base
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user