mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
qemu: command: Use JSON for parameters of -compat
'-compat' as a modern implementation based on QAPI already takes JSON as the argument. Convert our code to use it directly. QEMU declares the ised QAPI types as: { 'enum': 'CompatPolicyInput', 'data': [ 'accept', 'reject', 'crash' ] } { 'enum': 'CompatPolicyOutput', 'data': [ 'accept', 'hide' ] } { 'struct': 'CompatPolicy', 'data': { '*deprecated-input': 'CompatPolicyInput', '*deprecated-output': 'CompatPolicyOutput' } } Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
12f48c53f5
commit
14af0a3290
@ -10535,11 +10535,14 @@ qemuBuildCompatDeprecatedCommandLine(virCommand *cmd,
|
|||||||
virDomainDef *def,
|
virDomainDef *def,
|
||||||
virQEMUCaps *qemuCaps)
|
virQEMUCaps *qemuCaps)
|
||||||
{
|
{
|
||||||
g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
|
g_autoptr(virJSONValue) props = NULL;
|
||||||
|
g_autofree char *propsstr = NULL;
|
||||||
qemuDomainXmlNsDef *nsdata = def->namespaceData;
|
qemuDomainXmlNsDef *nsdata = def->namespaceData;
|
||||||
qemuCommnadDeprecationBehavior behavior = QEMU_COMMAND_DEPRECATION_BEHAVIOR_NONE;
|
qemuCommnadDeprecationBehavior behavior = QEMU_COMMAND_DEPRECATION_BEHAVIOR_NONE;
|
||||||
const char *behaviorStr = cfg->deprecationBehavior;
|
const char *behaviorStr = cfg->deprecationBehavior;
|
||||||
int tmp;
|
int tmp;
|
||||||
|
const char *deprecatedOutput = NULL;
|
||||||
|
const char *deprecatedInput = NULL;
|
||||||
|
|
||||||
if (nsdata && nsdata->deprecationBehavior)
|
if (nsdata && nsdata->deprecationBehavior)
|
||||||
behaviorStr = nsdata->deprecationBehavior;
|
behaviorStr = nsdata->deprecationBehavior;
|
||||||
@ -10562,30 +10565,35 @@ qemuBuildCompatDeprecatedCommandLine(virCommand *cmd,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* all active options hide output fields from qemu */
|
|
||||||
virBufferAddLit(&buf, "deprecated-output=hide,");
|
|
||||||
|
|
||||||
switch (behavior) {
|
switch (behavior) {
|
||||||
case QEMU_COMMAND_DEPRECATION_BEHAVIOR_OMIT:
|
case QEMU_COMMAND_DEPRECATION_BEHAVIOR_OMIT:
|
||||||
case QEMU_COMMAND_DEPRECATION_BEHAVIOR_NONE:
|
case QEMU_COMMAND_DEPRECATION_BEHAVIOR_NONE:
|
||||||
case QEMU_COMMAND_DEPRECATION_BEHAVIOR_LAST:
|
case QEMU_COMMAND_DEPRECATION_BEHAVIOR_LAST:
|
||||||
default:
|
default:
|
||||||
/* output field hiding is default for all cases */
|
deprecatedOutput = "hide";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case QEMU_COMMAND_DEPRECATION_BEHAVIOR_REJECT:
|
case QEMU_COMMAND_DEPRECATION_BEHAVIOR_REJECT:
|
||||||
virBufferAddLit(&buf, "deprecated-input=reject,");
|
deprecatedOutput = "hide";
|
||||||
|
deprecatedInput = "reject";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case QEMU_COMMAND_DEPRECATION_BEHAVIOR_CRASH:
|
case QEMU_COMMAND_DEPRECATION_BEHAVIOR_CRASH:
|
||||||
virBufferAddLit(&buf, "deprecated-input=crash,");
|
deprecatedOutput = "hide";
|
||||||
|
deprecatedInput = "crash";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
virBufferTrim(&buf, ",");
|
if (virJSONValueObjectAdd(&props,
|
||||||
|
"S:deprecated-output", deprecatedOutput,
|
||||||
|
"S:deprecated-input", deprecatedInput,
|
||||||
|
NULL) < 0)
|
||||||
|
return;
|
||||||
|
|
||||||
virCommandAddArg(cmd, "-compat");
|
if (!(propsstr = virJSONValueToString(props, false)))
|
||||||
virCommandAddArgBuffer(cmd, &buf);
|
return;
|
||||||
|
|
||||||
|
virCommandAddArgList(cmd, "-compat", propsstr, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ NS=ns \
|
|||||||
BAR='' \
|
BAR='' \
|
||||||
/usr/bin/qemu-system-i386 \
|
/usr/bin/qemu-system-i386 \
|
||||||
-name guest=QEMUGuest1,debug-threads=on \
|
-name guest=QEMUGuest1,debug-threads=on \
|
||||||
-compat deprecated-output=hide,deprecated-input=crash \
|
-compat '{"deprecated-output":"hide","deprecated-input":"crash"}' \
|
||||||
-S \
|
-S \
|
||||||
-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-QEMUGuest1/master-key.aes"}' \
|
-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-QEMUGuest1/master-key.aes"}' \
|
||||||
-machine pc,accel=tcg,usb=off,dump-guest-core=off,memory-backend=pc.ram \
|
-machine pc,accel=tcg,usb=off,dump-guest-core=off,memory-backend=pc.ram \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user