mirror of
https://github.com/virt-manager/virt-manager.git
synced 2025-02-09 23:15:46 -06:00
Add CLI support and CLI test cases
Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
This commit is contained in:
parent
c829b55581
commit
93718868c7
@ -1175,6 +1175,34 @@ Do not use memballoon device:
|
||||
|
||||
--memballoon none
|
||||
|
||||
=item --tpm=TYPE[,OPTS]
|
||||
|
||||
Configure a virtual TPM device.
|
||||
|
||||
Type must be B<passthrough>. Additional options are:
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<model>
|
||||
|
||||
The device model to present to the guest operating system. Model
|
||||
must be B<tpm-tis>.
|
||||
|
||||
=back
|
||||
|
||||
An example invocation:
|
||||
|
||||
=over 4
|
||||
|
||||
=item B<--tpm passthrough,model=tpm-tis>
|
||||
|
||||
Make the host's TPM accessible to a single guest.
|
||||
|
||||
=back
|
||||
|
||||
See C<http://libvirt.org/formatdomain.html#elementsTpm> for complete
|
||||
details.
|
||||
|
||||
=back
|
||||
|
||||
=head2 Miscellaneous Options
|
||||
|
@ -76,6 +76,11 @@
|
||||
</channel>
|
||||
<smartcard mode='passthrough' type='spicevmc'>
|
||||
</smartcard>
|
||||
<tpm model='tpm-tis'>
|
||||
<backend type='passthrough'>
|
||||
<device path='/dev/tpm0'/>
|
||||
</backend>
|
||||
</tpm>
|
||||
</devices>
|
||||
<seclabel type='static' model='testSecurity' relabel='yes'>
|
||||
<label>system_u:object_r:svirt_image_t:s0:c100,c200</label>
|
||||
@ -158,6 +163,11 @@
|
||||
</channel>
|
||||
<smartcard mode='passthrough' type='spicevmc'>
|
||||
</smartcard>
|
||||
<tpm model='tpm-tis'>
|
||||
<backend type='passthrough'>
|
||||
<device path='/dev/tpm0'/>
|
||||
</backend>
|
||||
</tpm>
|
||||
</devices>
|
||||
<seclabel type='static' model='testSecurity' relabel='yes'>
|
||||
<label>system_u:object_r:svirt_image_t:s0:c100,c200</label>
|
||||
|
@ -429,6 +429,15 @@ vinst.add_invalid("smartcard", "--smartcard passthrough,type=foo") # Invalid ty
|
||||
vinst.add_invalid("smartcard", "--smartcard host,foobar=baz") # --smartcard bogus
|
||||
|
||||
|
||||
vinst.add_category("tpm", "--noautoconsole --nodisks --pxe")
|
||||
vinst.add_valid("tpm", "--tpm passthrough") # --tpm passthrough
|
||||
vinst.add_valid("tpm", "--tpm passthrough,model=tpm-tis") # --tpm backend type with model
|
||||
vinst.add_valid("tpm", "--tpm passthrough,model=tpm-tis,path=/dev/tpm0") # --tpm backend type with model and device path
|
||||
vinst.add_invalid("tpm", "--tpm") # Missing argument
|
||||
vinst.add_invalid("tpm", "--tpm foo") # Invalid argument
|
||||
vinst.add_invalid("tpm", "--tpm passthrough,model=foo") # Invalid model
|
||||
|
||||
|
||||
vinst.add_category("xen", "--connect %(XENURI)s --noautoconsole")
|
||||
vinst.add_compare("xen", "--disk %(EXISTIMG1)s --import", "xen-default") # Xen default
|
||||
vinst.add_compare("xen", "--disk %(EXISTIMG1)s --location %(TREEDIR)s --paravirt", "xen-pv") # Xen PV
|
||||
@ -461,7 +470,7 @@ vinst.add_category("misc", "--nographics --noautoconsole")
|
||||
vinst.add_compare("misc", "", "noargs-fail") # No arguments
|
||||
vinst.add_compare("misc", "--hvm --nodisks --pxe --print-step all", "simple-pxe") # Diskless PXE install
|
||||
vinst.add_compare("misc", "--hvm --cdrom %(EXISTIMG2)s --file %(EXISTIMG1)s --os-variant win2k3 --wait 0 --vcpus cores=4", "w2k3-cdrom") # HVM windows install with disk
|
||||
vinst.add_compare("misc", """--hvm --pxe --controller usb,model=ich9-ehci1,address=0:0:4.7,index=0 --controller usb,model=ich9-uhci1,address=0:0:4.0,index=0,master=0 --controller usb,model=ich9-uhci2,address=0:0:4.1,index=0,master=2 --controller usb,model=ich9-uhci3,address=0:0:4.2,index=0,master=4 --disk %(MANAGEDEXISTUPPER)s,cache=writeback,io=threads,perms=sh,serial=WD-WMAP9A966149 --disk %(NEWIMG1)s,sparse=false,size=.001,perms=ro,error_policy=enospace --disk device=cdrom,bus=sata --serial tcp,host=:2222,mode=bind,protocol=telnet --filesystem /source,/target,mode=squash --network user,mac=12:34:56:78:11:22 --network bridge=foobar,model=virtio --channel spicevmc --smartcard passthrough,type=spicevmc --security type=static,label='system_u:object_r:svirt_image_t:s0:c100,c200',relabel=yes --numatune \\"1-3,5\\",mode=preferred --boot loader=/foo/bar """, "many-devices") # Lot's of devices
|
||||
vinst.add_compare("misc", """--hvm --pxe --controller usb,model=ich9-ehci1,address=0:0:4.7,index=0 --controller usb,model=ich9-uhci1,address=0:0:4.0,index=0,master=0 --controller usb,model=ich9-uhci2,address=0:0:4.1,index=0,master=2 --controller usb,model=ich9-uhci3,address=0:0:4.2,index=0,master=4 --disk %(MANAGEDEXISTUPPER)s,cache=writeback,io=threads,perms=sh,serial=WD-WMAP9A966149 --disk %(NEWIMG1)s,sparse=false,size=.001,perms=ro,error_policy=enospace --disk device=cdrom,bus=sata --serial tcp,host=:2222,mode=bind,protocol=telnet --filesystem /source,/target,mode=squash --network user,mac=12:34:56:78:11:22 --network bridge=foobar,model=virtio --channel spicevmc --smartcard passthrough,type=spicevmc --tpm passthrough,model=tpm-tis,path=/dev/tpm0 --security type=static,label='system_u:object_r:svirt_image_t:s0:c100,c200',relabel=yes --numatune \\"1-3,5\\",mode=preferred --boot loader=/foo/bar """, "many-devices") # Lot's of devices
|
||||
vinst.add_compare("misc", "--connect %(DEFAULTURI)s --hvm --nodisks --pxe --cpuset auto --vcpus 2", "cpuset-auto") # --cpuset=auto actually works
|
||||
vinst.add_valid("misc", "--hvm --disk path=virt-install,device=cdrom") # Specifying cdrom media via --disk
|
||||
vinst.add_valid("misc", "--hvm --import --disk path=virt-install") # FV Import install
|
||||
|
@ -546,6 +546,7 @@ def build_guest_instance(conn, options):
|
||||
guest, cli.parse_console)
|
||||
cli.get_hostdevs(options.hostdevs, guest)
|
||||
cli.get_smartcard(guest, options.smartcard)
|
||||
cli.get_tpm(guest, options.tpm)
|
||||
|
||||
|
||||
# Install options
|
||||
|
@ -1042,6 +1042,17 @@ def get_smartcard(guest, sc_opts):
|
||||
guest.add_device(dev)
|
||||
|
||||
|
||||
def get_tpm(guest, tpm_opts):
|
||||
for tpm in listify(tpm_opts):
|
||||
try:
|
||||
dev = parse_tpm(guest, tpm)
|
||||
except Exception, e:
|
||||
fail(_("Error in TPM device parameters: %s") % str(e))
|
||||
|
||||
if dev:
|
||||
guest.add_device(dev)
|
||||
|
||||
|
||||
def get_controller(guest, sc_opts):
|
||||
for sc in listify(sc_opts):
|
||||
try:
|
||||
@ -1178,6 +1189,9 @@ def add_device_options(devg):
|
||||
devg.add_option("", "--memballoon", dest="memballoon", action="append",
|
||||
help=_("Configure a guest memballoon device. Ex:\n"
|
||||
"--memballoon model=virtio"))
|
||||
devg.add_option("", "--tpm", dest="tpm", action="append",
|
||||
help=_("Configure a guest TPM device. Ex:\n"
|
||||
"--tpm type=passthrough"))
|
||||
|
||||
|
||||
def add_gfx_option(devg):
|
||||
@ -1901,6 +1915,34 @@ def parse_redirdev(guest, optstring, dev=None):
|
||||
|
||||
return dev
|
||||
|
||||
#######################
|
||||
# --tpm parsing #
|
||||
#######################
|
||||
|
||||
|
||||
def parse_tpm(guest, optstring, dev=None):
|
||||
if optstring is None:
|
||||
return None
|
||||
|
||||
# Peel the type off the front
|
||||
opts = parse_optstr(optstring, remove_first="type")
|
||||
if opts.get("type") == "none":
|
||||
return None
|
||||
|
||||
if not dev:
|
||||
dev = virtinst.VirtualTPMDevice(guest.conn, opts.get("type"))
|
||||
|
||||
set_param = _build_set_param(dev, opts)
|
||||
|
||||
set_param("model", "model")
|
||||
set_param("type", "type")
|
||||
set_param("path", "path")
|
||||
|
||||
if opts:
|
||||
raise ValueError(_("Unknown options %s") % opts.keys())
|
||||
|
||||
return dev
|
||||
|
||||
######################
|
||||
# --watchdog parsing #
|
||||
######################
|
||||
|
Loading…
Reference in New Issue
Block a user