Libvirt domain XML currently allows only local filepaths
that can be used to specify a NVRAM disk. It should be
possible to support NVRAM disks on network storage as
it would give flexibility to start the VM on any host
without having to worry about where to get the latest
nvram image.
This series extends the NVRAM element to support hosting over
network-backed disks.
It achieves this by embedding virStorageSource pointer for
nvram into _virDomainLoaderDef.
It introduces a 'type' attribute for NVRAM element to
specify 'file' vs 'network' backed NVRAM.
XML with new annotation:
<nvram type='network'>
<source protocol='iscsi'
name='iqn.2013-07.com.example:iscsi-nopool/0'>
<host name='example.com' port='6000'/>
<auth username='myname'>
<secret type='iscsi' usage='mycluster_myname'/>
</auth>
</host>
</source>
</nvram>
or
<nvram type='network'>
<source protocol='nbd' name='bar'>
<host name='example.org' port='6000'/>
</source>
</nvram>
or
<nvram type='file'>
<source file='/var/lib/libvirt/nvram/guest_VARS.fd'/>
</nvram>
Changes v1->v2:
- Split the patch into smaller patches
- Added unit test
- Updated the doc
- Addressed Peter's comment on v1
(
https://listman.redhat.com/archives/libvir-list/2022-March/229684.html)
Changes v2->v3:
- Added authentication with 'iscsi' protocol unit test
- Updated the validation logic
- Addressed Peter's other comments on v2
patch(https://listman.redhat.com/archives/libvir-list/2022-April/229971.h...
Rohit Kumar (5):
Make NVRAM a virStorageSource type.
Add support to parse/format/validate virStorageSource type NVRAM
Update schema, docs, and validation logic to support network backed
NVRAM
Add unit tests for network backed NVRAM
Add unit test to support new 'file' type NVRAM
NEWS.rst | 5 +
docs/formatdomain.rst | 34 +++++-
src/conf/domain_conf.c | 115 +++++++++++++++---
src/conf/domain_conf.h | 3 +-
src/conf/schemas/domaincommon.rng | 21 +++-
src/qemu/qemu_cgroup.c | 3 +-
src/qemu/qemu_command.c | 2 +-
src/qemu/qemu_domain.c | 23 +++-
src/qemu/qemu_driver.c | 5 +-
src/qemu/qemu_firmware.c | 23 +++-
src/qemu/qemu_namespace.c | 5 +-
src/qemu/qemu_process.c | 5 +-
src/qemu/qemu_validate.c | 71 +++++++++++
src/security/security_dac.c | 6 +-
src/security/security_selinux.c | 6 +-
src/security/virt-aa-helper.c | 5 +-
src/vbox/vbox_common.c | 3 +-
.../bios-nvram-file.x86_64-latest.args | 37 ++++++
tests/qemuxml2argvdata/bios-nvram-file.xml | 23 ++++
.../bios-nvram-network-iscsi.x86_64-4.1.0.err | 1 +
...ios-nvram-network-iscsi.x86_64-latest.args | 38 ++++++
.../bios-nvram-network-iscsi.xml | 31 +++++
.../bios-nvram-network-nbd.x86_64-latest.args | 37 ++++++
.../bios-nvram-network-nbd.xml | 28 +++++
tests/qemuxml2argvtest.c | 4 +
.../bios-nvram-file.x86_64-latest.xml | 39 ++++++
...bios-nvram-network-iscsi.x86_64-latest.xml | 44 +++++++
.../bios-nvram-network-nbd.x86_64-latest.xml | 41 +++++++
tests/qemuxml2xmltest.c | 3 +
29 files changed, 618 insertions(+), 43 deletions(-)
create mode 100644 tests/qemuxml2argvdata/bios-nvram-file.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/bios-nvram-file.xml
create mode 100644 tests/qemuxml2argvdata/bios-nvram-network-iscsi.x86_64-4.1.0.err
create mode 100644 tests/qemuxml2argvdata/bios-nvram-network-iscsi.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/bios-nvram-network-iscsi.xml
create mode 100644 tests/qemuxml2argvdata/bios-nvram-network-nbd.x86_64-latest.args
create mode 100644 tests/qemuxml2argvdata/bios-nvram-network-nbd.xml
create mode 100644 tests/qemuxml2xmloutdata/bios-nvram-file.x86_64-latest.xml
create mode 100644 tests/qemuxml2xmloutdata/bios-nvram-network-iscsi.x86_64-latest.xml
create mode 100644 tests/qemuxml2xmloutdata/bios-nvram-network-nbd.x86_64-latest.xml
--
2.25.1