
On 07.04.2015 22:35, Dmitry Guryanov wrote:
Handle input devices in virDomainDefParseXML properly in case of parallels containers and VMs.
Parallels containers support only VIR_DOMAIN_INPUT_BUS_PARALLELS. And if VNC is enabled we should add implicit mouse and keyboard.
For VMs we should add implicit PS/2 mouse and keyboard.
BTW, is it worth to refactor code and move all this code to drivers, to *DomainDefPostParse functions?
Signed-off-by: Dmitry Guryanov <dguryanov@parallels.com> --- src/conf/domain_conf.c | 40 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 37 insertions(+), 3 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index fbf8052..b8a6b84 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -9458,7 +9458,7 @@ virDomainInputDefParseXML(const virDomainDef *dom, bus); goto error; } - } else { + } else if (STREQ(dom->os.type, "xen")) { if (def->bus != VIR_DOMAIN_INPUT_BUS_XEN) { virReportError(VIR_ERR_INTERNAL_ERROR, _("unsupported input bus %s"), @@ -9472,6 +9472,29 @@ virDomainInputDefParseXML(const virDomainDef *dom, type); goto error; } + } else { + if (dom->virtType == VIR_DOMAIN_VIRT_PARALLELS) { + if (def->bus != VIR_DOMAIN_INPUT_BUS_PARALLELS) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("parallels containers don't support " + "input bus %s"), + bus); + goto error; + } + + if (def->type != VIR_DOMAIN_INPUT_TYPE_MOUSE && + def->type != VIR_DOMAIN_INPUT_TYPE_KBD) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("parallels bus does not support " + "%s input device"), + type); + goto error; + } + } else { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Input devices are not supported by this " + "virtualization driver."));
Missing 'goto error;' Michal