QEMU has the ability to mark machine types as deprecated. This should be
exposed to management applications in the capabilities.
Signed-off-by: Daniel P. Berrangé
---
docs/schemas/capability.rng | 8
src/conf/capabilities.c | 2 ++
src/conf/capabilities.h | 1 +
src/qemu/qemu_capabilities.c| 17 ++---
src/qemu/qemu_capspriv.h| 3 ++-
src/qemu/qemu_monitor.h | 1 +
src/qemu/qemu_monitor_json.c| 4
.../qemucapabilitiesdata/caps_4.1.0.x86_64.xml | 16
tests/qemucapabilitiesdata/caps_4.2.0.ppc64.xml | 4 ++--
.../qemucapabilitiesdata/caps_4.2.0.x86_64.xml | 16
.../qemucapabilitiesdata/caps_5.0.0.x86_64.xml | 16
.../qemucapabilitiesdata/caps_5.1.0.x86_64.xml | 16
.../qemucapabilitiesdata/caps_5.2.0.x86_64.xml | 16
tests/testutilsqemu.c | 8 +---
14 files changed, 79 insertions(+), 49 deletions(-)
diff --git a/docs/schemas/capability.rng b/docs/schemas/capability.rng
index 91a046eb48..c4cafc47ee 100644
--- a/docs/schemas/capability.rng
+++ b/docs/schemas/capability.rng
@@ -407,6 +407,14 @@
+
+
+
+yes
+no
+
+
+
diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c
index 425f34113a..1ea059ea6f 100644
--- a/src/conf/capabilities.c
+++ b/src/conf/capabilities.c
@@ -1244,6 +1244,8 @@ virCapabilitiesFormatGuestXML(virCapsGuestPtr *guests,
virBufferAsprintf(buf, " canonical='%s'", machine->canonical);
if (machine->maxCpus > 0)
virBufferAsprintf(buf, " maxCpus='%d'", machine->maxCpus);
+if (machine->deprecated)
+virBufferAddLit(buf, " deprecated='yes'");
virBufferAsprintf(buf, ">%s\n", machine->name);
}
diff --git a/src/conf/capabilities.h b/src/conf/capabilities.h
index e2581fac8b..5fd59efc05 100644
--- a/src/conf/capabilities.h
+++ b/src/conf/capabilities.h
@@ -56,6 +56,7 @@ struct _virCapsGuestMachine {
char *name;
char *canonical;
unsigned int maxCpus;
+bool deprecated;
};
struct _virCapsGuestDomainInfo {
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 61467eb6c2..e3d1de0779 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -624,6 +624,7 @@ struct _virQEMUCapsMachineType {
char *defaultCPU;
bool numaMemSupported;
char *defaultRAMid;
+bool deprecated;
};
typedef struct _virQEMUCapsHostCPUData virQEMUCapsHostCPUData;
@@ -943,6 +944,7 @@ virQEMUCapsGetMachineTypesCaps(virQEMUCapsPtr qemuCaps,
mach->name = g_strdup(accel->machineTypes[i].name);
}
mach->maxCpus = accel->machineTypes[i].maxCpus;
+mach->deprecated = accel->machineTypes[i].deprecated;
}
/* Make sure all canonical machine types also have their own entry so that
@@ -976,6 +978,7 @@ virQEMUCapsGetMachineTypesCaps(virQEMUCapsPtr qemuCaps,
}
mach->name = g_strdup(machine->canonical);
mach->maxCpus = machine->maxCpus;
+mach->deprecated = machine->deprecated;
i++;
}
i++;
@@ -1874,6 +1877,7 @@ virQEMUCapsAccelCopyMachineTypes(virQEMUCapsAccelPtr dst,
dst->machineTypes[i].qemuDefault = src->machineTypes[i].qemuDefault;
dst->machineTypes[i].numaMemSupported =
src->machineTypes[i].numaMemSupported;
dst->machineTypes[i].defaultRAMid =
g_strdup(src->machineTypes[i].defaultRAMid);
+dst->machineTypes[i].deprecated = src->machineTypes[i].deprecated;
}
}
@@ -2708,7 +2712,8 @@ virQEMUCapsAddMachine(virQEMUCapsPtr qemuCaps,
bool hotplugCpus,
bool isDefault,
bool numaMemSupported,
- const char *defaultRAMid)
+ const char *defaultRAMid,
+ bool deprecated)
{
virQEMUCapsAccelPtr accel = virQEMUCapsGetAccel(qemuCaps, virtType);
virQEMUCapsMachineTypePtr mach;
@@ -2731,6 +2736,7 @@ virQEMUCapsAddMachine(virQEMUCapsPtr qemuCaps,
mach->numaMemSupported = numaMemSupported;
mach->defaultRAMid = g_strdup(defaultRAMid);
+mach->deprecated = deprecated;
}
/**
@@ -2778,7 +2784,8 @@ virQEMUCapsProbeQMPMachineTypes(virQEMUCapsPtr qemuCaps,
machines[i]->hotplugCpus,
machines[i]->isDefault,
machines[i]->numaMemSupported,
- machines[i]->defaultRAMid);
+ machines[i]->defaultRAMid,
+ machines[i]->deprecated);
if (preferredMachine &&