mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 17:34:18 +03:00
downscript: add support for booting and hotplug interface
Support downscript for booting vm, and hotunplug interface device. Signed-off-by: Chen Hanxiao <chen_han_xiao@126.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
61ba6f09b1
commit
368134e495
@ -230,10 +230,13 @@ qemuExtDevicesStop(virQEMUDriverPtr driver,
|
||||
|
||||
for (i = 0; i < def->nnets; i++) {
|
||||
virDomainNetDefPtr net = def->nets[i];
|
||||
virDomainNetType actualType = virDomainNetGetActualType(net);
|
||||
qemuSlirpPtr slirp = QEMU_DOMAIN_NETWORK_PRIVATE(net)->slirp;
|
||||
|
||||
if (slirp)
|
||||
qemuSlirpStop(slirp, vm, driver, net);
|
||||
if (actualType == VIR_DOMAIN_NET_TYPE_ETHERNET && net->downscript)
|
||||
virNetDevRunEthernetScript(net->ifname, net->downscript);
|
||||
}
|
||||
|
||||
for (i = 0; i < def->nfss; i++) {
|
||||
|
@ -4672,6 +4672,9 @@ qemuDomainRemoveNetDevice(virQEMUDriverPtr driver,
|
||||
virDomainNetReleaseActualDevice(conn, vm->def, net);
|
||||
else
|
||||
VIR_WARN("Unable to release network device '%s'", NULLSTR(net->ifname));
|
||||
} else if (net->type == VIR_DOMAIN_NET_TYPE_ETHERNET) {
|
||||
if (net->script)
|
||||
virNetDevRunEthernetScript(net->ifname, net->downscript);
|
||||
}
|
||||
virDomainNetDefFree(net);
|
||||
return 0;
|
||||
|
60
tests/qemuxml2argvdata/downscript.xml
Normal file
60
tests/qemuxml2argvdata/downscript.xml
Normal file
@ -0,0 +1,60 @@
|
||||
<domain type='qemu'>
|
||||
<name>QEMUGuest1</name>
|
||||
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||
<memory unit='KiB'>219136</memory>
|
||||
<currentMemory unit='KiB'>219136</currentMemory>
|
||||
<vcpu placement='static'>1</vcpu>
|
||||
<os>
|
||||
<type arch='x86_64' machine='pc'>hvm</type>
|
||||
<boot dev='hd'/>
|
||||
</os>
|
||||
<cpu mode='custom' match='exact' check='none'>
|
||||
<model fallback='forbid'>qemu64</model>
|
||||
</cpu>
|
||||
<clock offset='utc'/>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>destroy</on_crash>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<disk type='file' device='disk'>
|
||||
<driver name='qemu' type='raw'/>
|
||||
<source file='/var/lib/libvirt/images/img1'/>
|
||||
<target dev='vda' bus='virtio'/>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
|
||||
</disk>
|
||||
<controller type='usb' index='0' model='piix3-uhci'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
|
||||
</controller>
|
||||
<controller type='ide' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
|
||||
</controller>
|
||||
<controller type='pci' index='0' model='pci-root'/>
|
||||
<controller type='virtio-serial' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
|
||||
</controller>
|
||||
<filesystem type='mount' accessmode='passthrough'>
|
||||
<source dir='/export/fs1'/>
|
||||
<target dir='fs1'/>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
|
||||
</filesystem>
|
||||
<filesystem type='mount' accessmode='mapped'>
|
||||
<driver type='path'/>
|
||||
<source dir='/export/fs2'/>
|
||||
<target dir='fs2'/>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
|
||||
</filesystem>
|
||||
<interface type='ethernet'>
|
||||
<mac address='52:54:00:f6:66:88'/>
|
||||
<script path='/home/ifup.sh'/>
|
||||
<downscript path='/home/ifdown.sh'/>
|
||||
<model type='virtio'/>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
|
||||
</interface>
|
||||
<input type='mouse' bus='ps2'/>
|
||||
<input type='keyboard' bus='ps2'/>
|
||||
<memballoon model='virtio'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x0c' function='0x0'/>
|
||||
</memballoon>
|
||||
</devices>
|
||||
</domain>
|
60
tests/qemuxml2xmloutdata/downscript.xml
Normal file
60
tests/qemuxml2xmloutdata/downscript.xml
Normal file
@ -0,0 +1,60 @@
|
||||
<domain type='qemu'>
|
||||
<name>QEMUGuest1</name>
|
||||
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
|
||||
<memory unit='KiB'>219136</memory>
|
||||
<currentMemory unit='KiB'>219136</currentMemory>
|
||||
<vcpu placement='static'>1</vcpu>
|
||||
<os>
|
||||
<type arch='x86_64' machine='pc'>hvm</type>
|
||||
<boot dev='hd'/>
|
||||
</os>
|
||||
<cpu mode='custom' match='exact' check='none'>
|
||||
<model fallback='forbid'>qemu64</model>
|
||||
</cpu>
|
||||
<clock offset='utc'/>
|
||||
<on_poweroff>destroy</on_poweroff>
|
||||
<on_reboot>restart</on_reboot>
|
||||
<on_crash>destroy</on_crash>
|
||||
<devices>
|
||||
<emulator>/usr/bin/qemu-system-x86_64</emulator>
|
||||
<disk type='file' device='disk'>
|
||||
<driver name='qemu' type='raw'/>
|
||||
<source file='/var/lib/libvirt/images/img1'/>
|
||||
<target dev='vda' bus='virtio'/>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
|
||||
</disk>
|
||||
<controller type='usb' index='0' model='piix3-uhci'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
|
||||
</controller>
|
||||
<controller type='ide' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
|
||||
</controller>
|
||||
<controller type='pci' index='0' model='pci-root'/>
|
||||
<controller type='virtio-serial' index='0'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
|
||||
</controller>
|
||||
<filesystem type='mount' accessmode='passthrough'>
|
||||
<source dir='/export/fs1'/>
|
||||
<target dir='fs1'/>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
|
||||
</filesystem>
|
||||
<filesystem type='mount' accessmode='mapped'>
|
||||
<driver type='path'/>
|
||||
<source dir='/export/fs2'/>
|
||||
<target dir='fs2'/>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
|
||||
</filesystem>
|
||||
<interface type='ethernet'>
|
||||
<mac address='52:54:00:f6:66:88'/>
|
||||
<script path='/home/ifup.sh'/>
|
||||
<downscript path='/home/ifdown.sh'/>
|
||||
<model type='virtio'/>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/>
|
||||
</interface>
|
||||
<input type='mouse' bus='ps2'/>
|
||||
<input type='keyboard' bus='ps2'/>
|
||||
<memballoon model='virtio'>
|
||||
<address type='pci' domain='0x0000' bus='0x00' slot='0x0c' function='0x0'/>
|
||||
</memballoon>
|
||||
</devices>
|
||||
</domain>
|
@ -1478,6 +1478,7 @@ mymain(void)
|
||||
DO_TEST_CAPS_ARCH_LATEST("x86_64-default-cpu-tcg-q35-4.2", "x86_64");
|
||||
|
||||
DO_TEST_CAPS_LATEST("virtio-9p-multidevs");
|
||||
DO_TEST("downscript", NONE);
|
||||
|
||||
if (getenv("LIBVIRT_SKIP_CLEANUP") == NULL)
|
||||
virFileDeleteTree(fakerootdir);
|
||||
|
Loading…
Reference in New Issue
Block a user