Allow vm to choose between spice and vnc
Signed-off-by: Ramon Medeiros <ramonn(a)linux.vnet.ibm.com>
---
API.json | 6 ++++++
docs/API.md | 1 +
i18n.py | 2 +-
model/vms.py | 10 ++++++++++
4 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/API.json b/API.json
index a3af02d..dca6840 100644
--- a/API.json
+++ b/API.json
@@ -377,6 +377,12 @@
"description": "Life time for the graphics
password.",
"type": "number",
"error": "KCHVM0032E"
+ },
+ "type": {
+ "description": "Graphics type",
+ "type": "string",
+ "enum": ["spice", "vnc"],
+ "error": "KCHVM0054E"
}
}
},
diff --git a/docs/API.md b/docs/API.md
index 7bd677f..093acb4 100644
--- a/docs/API.md
+++ b/docs/API.md
@@ -166,6 +166,7 @@ server.
* passwdValidTo *(optional)*: lifetime for the console password. When
omitted the password will be valid just
for 30 seconds.
+ * type *(optional)*: graphics type. VNC or Spice.
* cpu_info *(optional)*: CPU-specific information.
* maxvcpus *(optional)*: The maximum number of vCPUs that can be
assigned to the VM. If topology is specified, maxvcpus must be a
diff --git a/i18n.py b/i18n.py
index e8d9c05..4cc931b 100644
--- a/i18n.py
+++ b/i18n.py
@@ -106,7 +106,7 @@ messages = {
"KCHVM0051E": _("Cannot reset %(name)s. Virtual machine is already
shut off."),
"KCHVM0052E": _("Boot order must be a list. Devices accepted: hd,
cdrom, fd or network."),
"KCHVM0053E": _("Bootmenu must be boolean. Values accepted: true of
false."),
-
+ "KCHVM0054E": _("Graphic type not valid. Values accepted: vnc or
spice."),
"KCHVM0055E": _("Migrate to localhost %(host)s is not
allowed."),
"KCHVM0056E": _("To migrate a virtual machine to the remote host
%(host)s the user %(user)s must have password-less login to the remote host."),
"KCHVM0057E": _("Can not migrate virtual machine %(name)s when its in
%(state)s state."),
diff --git a/model/vms.py b/model/vms.py
index 7f607f5..0e61e0d 100644
--- a/model/vms.py
+++ b/model/vms.py
@@ -291,6 +291,12 @@ class VMModel(object):
# GRAPHICS can be updated offline or online
if 'graphics' in params:
+
+ # some parameters cannot change while vm is running
+ if DOM_STATE_MAP[dom.info()[0]] != 'shutoff':
+ if 'type' in params['graphics']:
+ raise InvalidParameter('KCHVM0074E',
+ {'params': 'graphics
type'})
dom = self._update_graphics(dom, params)
# Live updates
@@ -702,6 +708,10 @@ class VMModel(object):
valid_to = time.strftime('%Y-%m-%dT%H:%M:%S', expire_time)
graphics.attrib['passwdValidTo'] = valid_to
+ gtype = params['graphics'].get('type')
+ if gtype is not None:
+ graphics.attrib['type'] = gtype
+
conn = self.conn.get()
if not dom.isActive():
return conn.defineXML(ET.tostring(root, encoding="utf-8"))
--
2.5.5