virDomainGraphicsDefFormat function was way too long so split it into
separate functions for each graphics type.
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
---
src/conf/domain_conf.c | 131 ++++++++++++++++++++++-------------------
1 file changed, 71 insertions(+), 60 deletions(-)
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 8de39e7767..e1589527f2 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -26385,6 +26385,76 @@ virDomainGraphicsDefFormatAudio(virBuffer *buf,
virXMLFormatElement(buf, "audio", &attrBuf, NULL);
}
+static int
+virDomainGraphicsDefFormatVNC(virBuffer *attrBuf,
+ virDomainGraphicsDef *def,
+ unsigned int flags)
+{
+ virDomainGraphicsListenDef *glisten = virDomainGraphicsGetListen(def, 0);
+
+ if (!glisten) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("missing listen element for graphics"));
+ return -1;
+ }
+
+ switch (glisten->type) {
+ case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_SOCKET:
+ /* To not break migration we shouldn't print the 'socket' attribute
+ * if it's auto-generated or if it's based on config option from
+ * qemu.conf. If the socket is provided by user we need to print it
+ * into migratable XML. */
+ if (glisten->socket &&
+ !((glisten->autoGenerated || glisten->fromConfig) &&
+ (flags & VIR_DOMAIN_DEF_FORMAT_MIGRATABLE))) {
+ virBufferEscapeString(attrBuf, " socket='%s'", glisten->socket);
+ }
+ break;
+
+ case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS:
+ case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK:
+ if (def->data.vnc.port &&
+ (!def->data.vnc.autoport || !(flags & VIR_DOMAIN_DEF_FORMAT_INACTIVE)))
+ virBufferAsprintf(attrBuf, " port='%d'", def->data.vnc.port);
+ else if (def->data.vnc.autoport)
+ virBufferAddLit(attrBuf, " port='-1'");
+
+ virBufferAsprintf(attrBuf, " autoport='%s'",
+ def->data.vnc.autoport ? "yes" : "no");
+
+ if (def->data.vnc.websocketGenerated &&
+ (flags & VIR_DOMAIN_DEF_FORMAT_INACTIVE))
+ virBufferAddLit(attrBuf, " websocket='-1'");
+ else if (def->data.vnc.websocket)
+ virBufferAsprintf(attrBuf, " websocket='%d'", def->data.vnc.websocket);
+
+ if (flags & VIR_DOMAIN_DEF_FORMAT_STATUS)
+ virBufferAsprintf(attrBuf, " websocketGenerated='%s'",
+ def->data.vnc.websocketGenerated ? "yes" : "no");
+
+ virDomainGraphicsListenDefFormatAddr(attrBuf, glisten, flags);
+ break;
+ case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE:
+ case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST:
+ break;
+ }
+
+ virBufferEscapeString(attrBuf, " keymap='%s'", def->data.vnc.keymap);
+
+ if (def->data.vnc.sharePolicy)
+ virBufferAsprintf(attrBuf, " sharePolicy='%s'",
+ virDomainGraphicsVNCSharePolicyTypeToString(
+ def->data.vnc.sharePolicy));
+
+ if (def->data.vnc.powerControl)
+ virBufferAsprintf(attrBuf, " powerControl='%s'",
+ virTristateBoolTypeToString(def->data.vnc.powerControl));
+
+ virDomainGraphicsAuthDefFormatAttr(attrBuf, &def->data.vnc.auth, flags);
+
+ return 0;
+}
+
static int
virDomainGraphicsDefFormat(virBuffer *buf,
virDomainGraphicsDef *def,
@@ -26406,67 +26476,8 @@ virDomainGraphicsDefFormat(virBuffer *buf,
switch (def->type) {
case VIR_DOMAIN_GRAPHICS_TYPE_VNC:
- if (!glisten) {
- virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
- _("missing listen element for graphics"));
+ if (virDomainGraphicsDefFormatVNC(&attrBuf, def, flags) < 0)
return -1;
- }
-
- switch (glisten->type) {
- case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_SOCKET:
- /* To not break migration we shouldn't print the 'socket' attribute
- * if it's auto-generated or if it's based on config option from
- * qemu.conf. If the socket is provided by user we need to print it
- * into migratable XML. */
- if (glisten->socket &&
- !((glisten->autoGenerated || glisten->fromConfig) &&
- (flags & VIR_DOMAIN_DEF_FORMAT_MIGRATABLE))) {
- virBufferEscapeString(&attrBuf, " socket='%s'", glisten->socket);
- }
- break;
-
- case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_ADDRESS:
- case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NETWORK:
- if (def->data.vnc.port &&
- (!def->data.vnc.autoport || !(flags & VIR_DOMAIN_DEF_FORMAT_INACTIVE)))
- virBufferAsprintf(&attrBuf, " port='%d'",
- def->data.vnc.port);
- else if (def->data.vnc.autoport)
- virBufferAddLit(&attrBuf, " port='-1'");
-
- virBufferAsprintf(&attrBuf, " autoport='%s'",
- def->data.vnc.autoport ? "yes" : "no");
-
- if (def->data.vnc.websocketGenerated &&
- (flags & VIR_DOMAIN_DEF_FORMAT_INACTIVE))
- virBufferAddLit(&attrBuf, " websocket='-1'");
- else if (def->data.vnc.websocket)
- virBufferAsprintf(&attrBuf, " websocket='%d'", def->data.vnc.websocket);
-
- if (flags & VIR_DOMAIN_DEF_FORMAT_STATUS)
- virBufferAsprintf(&attrBuf, " websocketGenerated='%s'",
- def->data.vnc.websocketGenerated ? "yes" : "no");
-
- virDomainGraphicsListenDefFormatAddr(&attrBuf, glisten, flags);
- break;
- case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_NONE:
- case VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST:
- break;
- }
-
- virBufferEscapeString(&attrBuf, " keymap='%s'",
- def->data.vnc.keymap);
-
- if (def->data.vnc.sharePolicy)
- virBufferAsprintf(&attrBuf, " sharePolicy='%s'",
- virDomainGraphicsVNCSharePolicyTypeToString(
- def->data.vnc.sharePolicy));
-
- if (def->data.vnc.powerControl)
- virBufferAsprintf(&attrBuf, " powerControl='%s'",
- virTristateBoolTypeToString(def->data.vnc.powerControl));
-
- virDomainGraphicsAuthDefFormatAttr(&attrBuf, &def->data.vnc.auth, flags);
break;
case VIR_DOMAIN_GRAPHICS_TYPE_SDL:
--
2.48.1