[virt-tools-list] [PATCH v3 1/4] virtinst: Add vsock device type
Slavomir Kaslev
kaslevs at vmware.com
Tue Dec 18 15:18:11 UTC 2018
On 12/18/18 3:59 PM, Marc Hartmayer wrote:
> On Fri, Dec 14, 2018 at 03:34 PM +0100, Slavomir Kaslev <kaslevs at vmware.com> wrote:
>> VSOCK sockets allow communication between virtual machines and the host they are
>> running on.
>>
>> This patch adds vsock device support along with clitest for the new properties.
>>
>> Signed-off-by: Slavomir Kaslev <kaslevs at vmware.com>
>> ---
> […snip…]
>
>>
>> def add_guest_xml_options(geng):
>> @@ -2577,6 +2581,23 @@ ParserPanic.add_arg(None, "model", cb=ParserPanic.set_model_cb,
>> ParserPanic.add_arg("iobase", "iobase")
>>
>>
>> +###################
>> +# --vsock parsing #
>> +###################
>> +
> I know this blank line is everywhere in this module… but why? It
> violates against pep8…
>
> Wouldn’t it make more sense to have an docstring for the class instead?
It makes perfect sense to me.
Since I'm not very familiar with the coding style this project uses, I
was trying to follow the style of the surrounding code (e.g.
https://github.com/virt-manager/virt-manager/blob/b91393e6c35b0e2903dbb50bb57a64464a7a3802/virtinst/devices/panic.py#L48
or
https://github.com/virt-manager/virt-manager/blob/b91393e6c35b0e2903dbb50bb57a64464a7a3802/virtinst/cli.py#L1298
) but I don't have any strong feelings either way.
Though, if a decision is made to switch to docstrings instead, it would
better be done in bulk (semi-automated?) over the whole project in a
separate patch set rather than start from here.
--Slavi
>
>> +class ParserVsock(VirtCLIParser):
>> + cli_arg_name = "vsock"
>> + propname = "devices.vsock"
>> + remove_first = "model"
>> + stub_none = False
>> +
>> +_register_virt_parser(ParserVsock)
>> +_add_device_address_args(ParserVsock)
>> +ParserVsock.add_arg("model", "model")
>> +ParserVsock.add_arg("auto_cid", "auto_cid")
>> +ParserVsock.add_arg("cid", "cid")
>> +
>> +
>> ######################################################
>> # --serial, --parallel, --channel, --console parsing #
>> ######################################################
>> diff --git a/virtinst/devices/__init__.py b/virtinst/devices/__init__.py
>> index 6da0766d..6120f5d0 100644
>> --- a/virtinst/devices/__init__.py
>> +++ b/virtinst/devices/__init__.py
>> @@ -22,6 +22,7 @@ from .redirdev import DeviceRedirdev
>> from .rng import DeviceRng
>> from .tpm import DeviceTpm
>> from .video import DeviceVideo
>> +from .vsock import DeviceVsock
>> from .watchdog import DeviceWatchdog
>>
>>
>> diff --git a/virtinst/devices/vsock.py b/virtinst/devices/vsock.py
>> new file mode 100644
>> index 00000000..27b0cc3d
>> --- /dev/null
>> +++ b/virtinst/devices/vsock.py
>> @@ -0,0 +1,42 @@
>> +# Copyright (C) 2018 VMware, Inc.
>> +#
>> +# Copyright 2018
>> +# Slavomir Kaslev <kaslevs at vmware.com>
>> +#
>> +# This work is licensed under the GNU GPLv2 or later.
>> +# See the COPYING file in the top-level directory.
>> +
>> +from .device import Device
>> +from ..xmlbuilder import XMLProperty
>> +
>> +
>> +class DeviceVsock(Device):
>> + XML_NAME = "vsock"
>> +
>> + model = XMLProperty("./@model")
>> + auto_cid = XMLProperty("./cid/@auto", is_yesno=True)
>> + cid = XMLProperty("./cid/@address", is_int=True)
>> +
>> + MIN_GUEST_CID = 3
>> +
>> +
>> + ##############
>> + # Validation #
>> + ##############
>> +
>> + def validate(self):
> The same goes here :)
>
>> + if not self.auto_cid and (self.cid is None or
>> + self.cid < self.MIN_GUEST_CID):
>> + raise ValueError(_("guest CID {0} must be >= 3").format(self.cid))
>> +
>> +
>> + ##################
>> + # Default config #
>> + ##################
>> +
>> + def set_defaults(self, guest):
> And here.
>
>> + if not self.model:
>> + self.model = "virtio"
>> +
>> + if self.auto_cid is None and self.cid is None:
>> + self.auto_cid = True
>> diff --git a/virtinst/guest.py b/virtinst/guest.py
>> index eeb40cb6..9acff3b9 100644
>> --- a/virtinst/guest.py
>> +++ b/virtinst/guest.py
>> @@ -29,7 +29,7 @@ class _DomainDevices(XMLBuilder):
>> 'smartcard', 'serial', 'parallel', 'console', 'channel',
>> 'input', 'tpm', 'graphics', 'sound', 'video', 'hostdev',
>> 'redirdev', 'watchdog', 'memballoon', 'rng', 'panic',
>> - 'memory']
>> + 'memory', 'vsock']
>>
>>
>> disk = XMLChildProperty(DeviceDisk)
>> @@ -53,6 +53,7 @@ class _DomainDevices(XMLBuilder):
>> rng = XMLChildProperty(DeviceRng)
>> panic = XMLChildProperty(DevicePanic)
>> memory = XMLChildProperty(DeviceMemory)
>> + vsock = XMLChildProperty(DeviceVsock)
>>
>> def get_all(self):
>> retlist = []
>> --
>> 2.19.1
>>
>> _______________________________________________
>> virt-tools-list mailing list
>> virt-tools-list at redhat.com
>> https://www.redhat.com/mailman/listinfo/virt-tools-list
> Kind regards / Beste Grüße
> Marc Hartmayer
>
> IBM Deutschland Research & Development GmbH
> Vorsitzende des Aufsichtsrats: Matthias Hartmann
> Geschäftsführung: Dirk Wittkopp
> Sitz der Gesellschaft: Böblingen
> Registergericht: Amtsgericht Stuttgart, HRB 243294
>
>
> _______________________________________________
> virt-tools-list mailing list
> virt-tools-list at redhat.com
> https://www.redhat.com/mailman/listinfo/virt-tools-list
More information about the virt-tools-list
mailing list