Martin Polednik has uploaded a new change for review. Change subject: [WIP] vdsm: add support for virtiorng device ......................................................................
[WIP] vdsm: add support for virtiorng device Adds support for virtiorng with basic capabilities - TODO: decide which sources are supported agree upon API Change-Id: I4b9b2c355e06bae5f66bbaadffd5fda8d3ed4e9a Signed-off-by: Martin Polednik <mpole...@redhat.com> --- M vdsm/vm.py M vdsm_api/vdsmapi-schema.json 2 files changed, 106 insertions(+), 1 deletion(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/91/19091/1 diff --git a/vdsm/vm.py b/vdsm/vm.py index 69508fe..b7cdbbe 100644 --- a/vdsm/vm.py +++ b/vdsm/vm.py @@ -74,6 +74,7 @@ GENERAL_DEVICES = 'general' BALLOON_DEVICES = 'balloon' REDIR_DEVICES = 'redir' +RNG_DEVICES = 'rng' WATCHDOG_DEVICES = 'watchdog' CONSOLE_DEVICES = 'console' SMARTCARD_DEVICES = 'smartcard' @@ -1645,6 +1646,41 @@ return self.createXmlElem('redirdev', self.device, ['bus', 'address']) +class RngDevice(VmDevice): + def getXML(self): + """ + <rng model='virtio'> + <rate period="2000" bytes="1234"/> + <backend model='random'>/dev/random</backend> + <!-- OR --> + <backend model='egd' type='udp'> + <source ...' /> + </backend> + </rng> + """ + rng = self.createXmlElem('rng', None, ['model']) + if 'bytes' in self.specParams: + rng.appendChildWithArgs('rate', + period=self.specParams.get('period'), + bytes=self.specParams['bytes']) + + if self.specParams['backend_model'] == 'egd': + backend = self.createXmlElem('backend', None) + backend.setAttrs(model='egd', + type=self.specParams['backend_type']) + backend.appendChildWithArgs('source', None, + **self.specParams['path']) + backend.appendChildWithArgs('source', None, + **self.specParams['path2']) + rng.appendChild(backend) + else: + rng.appendChildWithArgs('backend', + text=self.specParams['path'], + model='random') + + return rng + + class ConsoleDevice(VmDevice): def getXML(self): """ @@ -1729,6 +1765,7 @@ SOUND_DEVICES: [], VIDEO_DEVICES: [], CONTROLLER_DEVICES: [], GENERAL_DEVICES: [], BALLOON_DEVICES: [], REDIR_DEVICES: [], + RNG_DEVICES: [], WATCHDOG_DEVICES: [], CONSOLE_DEVICES: [], SMARTCARD_DEVICES: []} @@ -1867,6 +1904,7 @@ GENERAL_DEVICES: [], BALLOON_DEVICES: [], REDIR_DEVICES: [], + RNG_DEVICES: [], WATCHDOG_DEVICES: [], CONSOLE_DEVICES: [], SMARTCARD_DEVICES: []} @@ -2865,6 +2903,7 @@ BALLOON_DEVICES: BalloonDevice, WATCHDOG_DEVICES: WatchdogDevice, REDIR_DEVICES: RedirDevice, + RNG_DEVICES: RngDevice, CONSOLE_DEVICES: ConsoleDevice, SMARTCARD_DEVICES: SmartCardDevice} diff --git a/vdsm_api/vdsmapi-schema.json b/vdsm_api/vdsmapi-schema.json index 27c12c1..161b03b 100644 --- a/vdsm_api/vdsmapi-schema.json +++ b/vdsm_api/vdsmapi-schema.json @@ -1790,11 +1790,13 @@ # # @smartcard: A smartcard device # +# @rng: A rng device +# # Since: 4.10.0 ## {'enum': 'VmDeviceType', 'data': ['disk', 'interface', 'video', 'sound', 'controller', 'balloon', - 'channel', 'console', 'smartcard']} + 'channel', 'console', 'smartcard', 'rng']} ## # @VmDiskDeviceType: @@ -2621,6 +2623,70 @@ 'specParams': 'VmSmartcardDeviceSpecParams'}} ## +# @VmRngDeviceModel: +# +# An enumeration of VM rng device models +# +# @virtio: Currently the only supported model +# +# Since: <<<TODO: FIX>>> +## +{'enum': 'VmRngDeviceModel', + 'data': ['virtio']} + +## +# @VmRngDeviceBackendModel: +# +# An enumeration of VM rng device backend models +# +# @random: Use +# +# @egd: Dont +# +# Since: <<<TODO: FIX>>> +## +{'enum': 'VmRngDeviceBackendModel', + 'data': ['random', 'egd']} + +## +# @VmRngDeviceSpecParams: +# +# An enumeration of VM rng device models +# +# @backend_model: Will be added +# +# @bytes: #optional Will be added +# +# @period: #optional Will be added +# +# @path: Will be added +# +# @path2: #required when backend_model == egd +# +# Since: <<<TODO: FIX>>> +## +{'type': 'VmRngDeviceSpecParams', + 'data': {'backend_model': 'VmRngDeviceBackendModel', + '*bytes': 'int', '*period': 'int', 'path': 'str', 'path2': 'str'}} + +## +# @VmRngDevice: +# +# Properties of a VM rng device. +# +# @deviceType: The device type (always @rng) +# +# @model: The model of rng device +# +# @specParams: Additional device parameters +# +# Since: <<<TODO: FIX>>> +## +{'type': 'VmRngDevice', + 'data': {'deviceType': 'VmDeviceType', 'model': 'VmRngDeviceModel', + 'specParams': 'VmRngDeviceSpecParams'}} + +## # @VmConsoleDevice: # # Properties of a VM console device. -- To view, visit http://gerrit.ovirt.org/19091 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4b9b2c355e06bae5f66bbaadffd5fda8d3ed4e9a Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Martin Polednik <mpole...@redhat.com> _______________________________________________ vdsm-patches mailing list vdsm-patches@lists.fedorahosted.org https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches