[4/4] Add string labels to all VIR_ENUM_IMPL calls

Message ID 50f14d7f1e5dd6e9125d5ef9499dfba87e1f53f7.1554737741.git.crobinso@redhat.com
State New
Headers show
Series
  • Add 'label' arg to VIR_ENUM_IMPL
Related show

Commit Message

Cole Robinson April 8, 2019, 3:48 p.m.
Add string labels to all VIR_ENUM_IMPL calls, which will be used
to eventually raise errors from virEnum*String functions.

I roughly tried to follow these rules:

1) If it's an internal only enum, try to uniquely describe it
2) If it's for user XML values, make the label match the XML value
   names, defaulting to '$elementname $attrname'. For example,
   virDomainVirtType gets 'domain type' because it maps to the
   <domain type=X> attribute.
3) If #2 is too ambiguous like for similar XML but for different
   devices, insert the device name too.

Not everything fits cleanly though

Note: this patch will be combined with the previous patch when pushing

Signed-off-by: Cole Robinson <crobinso@redhat.com>

---
 src/access/viraccessperm.c        |  20 +--
 src/conf/capabilities.c           |   2 +-
 src/conf/cpu_conf.c               |  14 +-
 src/conf/device_conf.c            |   2 +-
 src/conf/domain_capabilities.c    |   2 +-
 src/conf/domain_conf.c            | 240 +++++++++++++++---------------
 src/conf/interface_conf.c         |   2 +-
 src/conf/netdev_vlan_conf.c       |   2 +-
 src/conf/network_conf.c           |  10 +-
 src/conf/node_device_conf.c       |   8 +-
 src/conf/numa_conf.c              |   6 +-
 src/conf/nwfilter_conf.c          |  14 +-
 src/conf/snapshot_conf.c          |   4 +-
 src/conf/storage_adapter_conf.c   |   2 +-
 src/conf/storage_conf.c           |  18 +--
 src/libxl/libxl_domain.c          |   2 +-
 src/locking/lock_daemon.c         |   2 +-
 src/logging/log_daemon.c          |   2 +-
 src/lxc/lxc_domain.c              |   6 +-
 src/lxc/lxc_native.c              |   2 +-
 src/network/leaseshelper.c        |   2 +-
 src/qemu/qemu_agent.c             |   4 +-
 src/qemu/qemu_capabilities.c      |   2 +-
 src/qemu/qemu_command.c           |  18 +--
 src/qemu/qemu_domain.c            |   8 +-
 src/qemu/qemu_driver.c            |   4 +-
 src/qemu/qemu_firmware.c          |   6 +-
 src/qemu/qemu_migration.c         |   2 +-
 src/qemu/qemu_migration_cookie.c  |   2 +-
 src/qemu/qemu_migration_params.c  |   6 +-
 src/qemu/qemu_monitor.c           |   8 +-
 src/qemu/qemu_monitor_json.c      |   8 +-
 src/remote/remote_daemon.c        |   2 +-
 src/util/vircgroup.c              |   2 +-
 src/util/vircgroupbackend.c       |   2 +-
 src/util/vircgroupv1.c            |   2 +-
 src/util/vircgroupv2.c            |   2 +-
 src/util/virconf.c                |   2 +-
 src/util/virenum.c                |   4 +-
 src/util/virerror.c               |   2 +-
 src/util/virfirewall.c            |   2 +-
 src/util/virfirewalld.c           |   4 +-
 src/util/virgic.c                 |   2 +-
 src/util/virhook.c                |  14 +-
 src/util/virkeycode.c             |   2 +-
 src/util/virlog.c                 |   2 +-
 src/util/virmdev.c                |   2 +-
 src/util/virnetdev.c              |   6 +-
 src/util/virnetdevmacvlan.c       |   2 +-
 src/util/virnetdevvportprofile.c  |   4 +-
 src/util/virpci.c                 |   6 +-
 src/util/virperf.c                |   2 +-
 src/util/virprocess.c             |   2 +-
 src/util/virresctrl.c             |   8 +-
 src/util/virsecret.c              |   2 +-
 src/util/virstorageencryption.c   |   4 +-
 src/util/virstoragefile.c         |  14 +-
 src/util/virsysinfo.c             |   2 +-
 src/util/virtypedparam.c          |   2 +-
 src/vmware/vmware_conf.c          |   2 +-
 src/vmx/vmx.c                     |   2 +-
 tools/virsh-domain-monitor.c      |  24 +--
 tools/virsh-domain.c              |  54 +++----
 tools/virsh-host.c                |   2 +-
 tools/virsh-network.c             |   8 +-
 tools/virsh-nodedev.c             |   2 +-
 tools/virsh-pool.c                |   4 +-
 tools/virsh-secret.c              |   2 +-
 tools/virsh-volume.c              |   4 +-
 tools/virt-admin.c                |   2 +-
 tools/virt-host-validate-common.c |   2 +-
 71 files changed, 319 insertions(+), 319 deletions(-)

-- 
2.21.0

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Comments

Daniel P. Berrangé April 11, 2019, 10:58 a.m. | #1
On Mon, Apr 08, 2019 at 11:48:19AM -0400, Cole Robinson wrote:
> Add string labels to all VIR_ENUM_IMPL calls, which will be used

> to eventually raise errors from virEnum*String functions.

> 

> I roughly tried to follow these rules:

> 

> 1) If it's an internal only enum, try to uniquely describe it

> 2) If it's for user XML values, make the label match the XML value

>    names, defaulting to '$elementname $attrname'. For example,

>    virDomainVirtType gets 'domain type' because it maps to the

>    <domain type=X> attribute.

> 3) If #2 is too ambiguous like for similar XML but for different

>    devices, insert the device name too.

> 

> Not everything fits cleanly though

> 

> Note: this patch will be combined with the previous patch when pushing

> 

> Signed-off-by: Cole Robinson <crobinso@redhat.com>



> diff --git a/src/access/viraccessperm.c b/src/access/viraccessperm.c

> index 67f751ef9c..1772eea287 100644

> --- a/src/access/viraccessperm.c

> +++ b/src/access/viraccessperm.c

> @@ -23,7 +23,7 @@

>  #include "viraccessperm.h"

>  

>  

> -VIR_ENUM_IMPL(virAccessPermConnect,

> +VIR_ENUM_IMPL(virAccessPermConnect, "access connect",


So it has saved translater time by not translating any of the
strings here.


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Cole Robinson April 11, 2019, 4:45 p.m. | #2
On 4/11/19 6:58 AM, Daniel P. Berrangé wrote:
> On Mon, Apr 08, 2019 at 11:48:19AM -0400, Cole Robinson wrote:
>> Add string labels to all VIR_ENUM_IMPL calls, which will be used
>> to eventually raise errors from virEnum*String functions.
>>
>> I roughly tried to follow these rules:
>>
>> 1) If it's an internal only enum, try to uniquely describe it
>> 2) If it's for user XML values, make the label match the XML value
>>    names, defaulting to '$elementname $attrname'. For example,
>>    virDomainVirtType gets 'domain type' because it maps to the
>>    <domain type=X> attribute.
>> 3) If #2 is too ambiguous like for similar XML but for different
>>    devices, insert the device name too.
>>
>> Not everything fits cleanly though
>>
>> Note: this patch will be combined with the previous patch when pushing
>>
>> Signed-off-by: Cole Robinson <crobinso@redhat.com>
> 
> 
>> diff --git a/src/access/viraccessperm.c b/src/access/viraccessperm.c
>> index 67f751ef9c..1772eea287 100644
>> --- a/src/access/viraccessperm.c
>> +++ b/src/access/viraccessperm.c
>> @@ -23,7 +23,7 @@
>>  #include "viraccessperm.h"
>>  
>>  
>> -VIR_ENUM_IMPL(virAccessPermConnect,
>> +VIR_ENUM_IMPL(virAccessPermConnect, "access connect",
> 
> So it has saved translater time by not translating any of the
> strings here.

The vast majority of these strings should not be translated IMO because
they are referencing specific XML names which are always in english.
virDomainVirtTypeToString will raise

  invalid argument: Unknown 'domain type' value 'zzzz'

'domain type' here is referring to <domain type=X> XML, so IMO it's
correct not to translate.

I don't think this access/ case should be translated either. 'access' is
the specific prefix we use for access control config (access_* in
libvirtd), and 'connect' is specifically referencing access control for
virConnectPtr objects and that's the string we use in at least the
polkit namespace (ex: org.libvirt.api.connect.getattr).

- Cole

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Patch

diff --git a/src/access/viraccessperm.c b/src/access/viraccessperm.c
index 67f751ef9c..1772eea287 100644
--- a/src/access/viraccessperm.c
+++ b/src/access/viraccessperm.c
@@ -23,7 +23,7 @@ 
 #include "viraccessperm.h"
 
 
-VIR_ENUM_IMPL(virAccessPermConnect,
+VIR_ENUM_IMPL(virAccessPermConnect, "access connect",
               VIR_ACCESS_PERM_CONNECT_LAST,
               "getattr", "read", "write",
               "search_domains", "search_networks",
@@ -34,7 +34,7 @@  VIR_ENUM_IMPL(virAccessPermConnect,
               "interface_transaction",
 );
 
-VIR_ENUM_IMPL(virAccessPermDomain,
+VIR_ENUM_IMPL(virAccessPermDomain, "access domain",
               VIR_ACCESS_PERM_DOMAIN_LAST,
               "getattr", "read", "write", "read_secure",
               "start", "stop", "reset",
@@ -47,44 +47,44 @@  VIR_ENUM_IMPL(virAccessPermDomain,
               "open_namespace", "set_time", "set_password",
 );
 
-VIR_ENUM_IMPL(virAccessPermInterface,
+VIR_ENUM_IMPL(virAccessPermInterface, "access interface",
               VIR_ACCESS_PERM_INTERFACE_LAST,
               "getattr", "read", "write", "save",
               "delete", "start", "stop",
 );
 
-VIR_ENUM_IMPL(virAccessPermNetwork,
+VIR_ENUM_IMPL(virAccessPermNetwork, "access network",
               VIR_ACCESS_PERM_NETWORK_LAST,
               "getattr", "read", "write",
               "save", "delete", "start", "stop",
 );
 
-VIR_ENUM_IMPL(virAccessPermNodeDevice,
+VIR_ENUM_IMPL(virAccessPermNodeDevice, "access nodedev",
               VIR_ACCESS_PERM_NODE_DEVICE_LAST,
               "getattr", "read", "write",
               "start", "stop",
               "detach",
 );
 
-VIR_ENUM_IMPL(virAccessPermNWFilter,
+VIR_ENUM_IMPL(virAccessPermNWFilter, "access nwfilter",
               VIR_ACCESS_PERM_NWFILTER_LAST,
               "getattr", "read", "write",
               "save", "delete",
 );
 
-VIR_ENUM_IMPL(virAccessPermNWFilterBinding,
+VIR_ENUM_IMPL(virAccessPermNWFilterBinding, "access nwfilterbinding",
               VIR_ACCESS_PERM_NWFILTER_BINDING_LAST,
               "getattr", "read",
               "create", "delete",
 );
 
-VIR_ENUM_IMPL(virAccessPermSecret,
+VIR_ENUM_IMPL(virAccessPermSecret, "access secret",
               VIR_ACCESS_PERM_SECRET_LAST,
               "getattr", "read", "write",
               "read_secure", "save", "delete",
 );
 
-VIR_ENUM_IMPL(virAccessPermStoragePool,
+VIR_ENUM_IMPL(virAccessPermStoragePool, "access pool",
               VIR_ACCESS_PERM_STORAGE_POOL_LAST,
               "getattr", "read", "write",
               "save", "delete", "start", "stop",
@@ -92,7 +92,7 @@  VIR_ENUM_IMPL(virAccessPermStoragePool,
               "format",
 );
 
-VIR_ENUM_IMPL(virAccessPermStorageVol,
+VIR_ENUM_IMPL(virAccessPermStorageVol, "access volume",
               VIR_ACCESS_PERM_STORAGE_VOL_LAST,
               "getattr", "read", "create", "delete",
               "format", "resize", "data_read",
diff --git a/src/conf/capabilities.c b/src/conf/capabilities.c
index 1231b9727c..f55e04e241 100644
--- a/src/conf/capabilities.c
+++ b/src/conf/capabilities.c
@@ -50,7 +50,7 @@ 
 VIR_LOG_INIT("conf.capabilities");
 
 VIR_ENUM_DECL(virCapsHostPMTarget);
-VIR_ENUM_IMPL(virCapsHostPMTarget,
+VIR_ENUM_IMPL(virCapsHostPMTarget, "power_management target",
               VIR_NODE_SUSPEND_TARGET_LAST,
               "suspend_mem", "suspend_disk", "suspend_hybrid",
 );
diff --git a/src/conf/cpu_conf.c b/src/conf/cpu_conf.c
index 33c8b99e49..4b343d6e25 100644
--- a/src/conf/cpu_conf.c
+++ b/src/conf/cpu_conf.c
@@ -32,26 +32,26 @@ 
 
 VIR_LOG_INIT("conf.cpu_conf");
 
-VIR_ENUM_IMPL(virCPU,
+VIR_ENUM_IMPL(virCPU, "cpu type",
               VIR_CPU_TYPE_LAST,
               "host", "guest", "auto",
 );
 
-VIR_ENUM_IMPL(virCPUMode,
+VIR_ENUM_IMPL(virCPUMode, "cpu mode",
               VIR_CPU_MODE_LAST,
               "custom",
               "host-model",
               "host-passthrough",
 );
 
-VIR_ENUM_IMPL(virCPUMatch,
+VIR_ENUM_IMPL(virCPUMatch, "cpu match",
               VIR_CPU_MATCH_LAST,
               "minimum",
               "exact",
               "strict",
 );
 
-VIR_ENUM_IMPL(virCPUCheck,
+VIR_ENUM_IMPL(virCPUCheck, "cpu check",
               VIR_CPU_CHECK_LAST,
               "default",
               "none",
@@ -59,13 +59,13 @@  VIR_ENUM_IMPL(virCPUCheck,
               "full",
 );
 
-VIR_ENUM_IMPL(virCPUFallback,
+VIR_ENUM_IMPL(virCPUFallback, "model fallback",
               VIR_CPU_FALLBACK_LAST,
               "allow",
               "forbid",
 );
 
-VIR_ENUM_IMPL(virCPUFeaturePolicy,
+VIR_ENUM_IMPL(virCPUFeaturePolicy, "feature policy",
               VIR_CPU_FEATURE_LAST,
               "force",
               "require",
@@ -74,7 +74,7 @@  VIR_ENUM_IMPL(virCPUFeaturePolicy,
               "forbid",
 );
 
-VIR_ENUM_IMPL(virCPUCacheMode,
+VIR_ENUM_IMPL(virCPUCacheMode, "cache mode",
               VIR_CPU_CACHE_MODE_LAST,
               "emulate",
               "passthrough",
diff --git a/src/conf/device_conf.c b/src/conf/device_conf.c
index 2f82bdc2a7..db46238e43 100644
--- a/src/conf/device_conf.c
+++ b/src/conf/device_conf.c
@@ -31,7 +31,7 @@ 
 
 #define VIR_FROM_THIS VIR_FROM_DEVICE
 
-VIR_ENUM_IMPL(virDomainDeviceAddress,
+VIR_ENUM_IMPL(virDomainDeviceAddress, "address type",
               VIR_DOMAIN_DEVICE_ADDRESS_TYPE_LAST,
               "none",
               "pci",
diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c
index a85e3b27f8..f9d6a3991b 100644
--- a/src/conf/domain_capabilities.c
+++ b/src/conf/domain_capabilities.c
@@ -27,7 +27,7 @@ 
 
 #define VIR_FROM_THIS VIR_FROM_CAPABILITIES
 
-VIR_ENUM_IMPL(virDomainCapsCPUUsable,
+VIR_ENUM_IMPL(virDomainCapsCPUUsable, "model usable",
               VIR_DOMCAPS_CPU_USABLE_LAST,
               "unknown", "yes", "no",
 );
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index b969a9f6e5..2d0eb98c24 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -89,7 +89,7 @@  struct _virDomainXMLOption {
      VIR_DOMAIN_DEF_FORMAT_INACTIVE | \
      VIR_DOMAIN_DEF_FORMAT_MIGRATABLE)
 
-VIR_ENUM_IMPL(virDomainTaint,
+VIR_ENUM_IMPL(virDomainTaint, "domain taint",
               VIR_DOMAIN_TAINT_LAST,
               "custom-argv",
               "custom-monitor",
@@ -104,7 +104,7 @@  VIR_ENUM_IMPL(virDomainTaint,
               "custom-ga-command",
 );
 
-VIR_ENUM_IMPL(virDomainVirt,
+VIR_ENUM_IMPL(virDomainVirt, "domain type",
               VIR_DOMAIN_VIRT_LAST,
               "none",
               "qemu",
@@ -124,7 +124,7 @@  VIR_ENUM_IMPL(virDomainVirt,
               "vz",
 );
 
-VIR_ENUM_IMPL(virDomainOS,
+VIR_ENUM_IMPL(virDomainOS, "os type",
               VIR_DOMAIN_OSTYPE_LAST,
               "hvm",
               "xen",
@@ -134,7 +134,7 @@  VIR_ENUM_IMPL(virDomainOS,
               "xenpvh",
 );
 
-VIR_ENUM_IMPL(virDomainBoot,
+VIR_ENUM_IMPL(virDomainBoot, "boot dev",
               VIR_DOMAIN_BOOT_LAST,
               "fd",
               "cdrom",
@@ -142,7 +142,7 @@  VIR_ENUM_IMPL(virDomainBoot,
               "network",
 );
 
-VIR_ENUM_IMPL(virDomainFeature,
+VIR_ENUM_IMPL(virDomainFeature, "features",
               VIR_DOMAIN_FEATURE_LAST,
               "acpi",
               "apic",
@@ -166,14 +166,14 @@  VIR_ENUM_IMPL(virDomainFeature,
               "msrs",
 );
 
-VIR_ENUM_IMPL(virDomainCapabilitiesPolicy,
+VIR_ENUM_IMPL(virDomainCapabilitiesPolicy, "capabilities policy",
               VIR_DOMAIN_CAPABILITIES_POLICY_LAST,
               "default",
               "allow",
               "deny",
 );
 
-VIR_ENUM_IMPL(virDomainHyperv,
+VIR_ENUM_IMPL(virDomainHyperv, "features hyperv",
               VIR_DOMAIN_HYPERV_LAST,
               "relaxed",
               "vapic",
@@ -191,18 +191,18 @@  VIR_ENUM_IMPL(virDomainHyperv,
               "evmcs",
 );
 
-VIR_ENUM_IMPL(virDomainKVM,
+VIR_ENUM_IMPL(virDomainKVM, "features kvm",
               VIR_DOMAIN_KVM_LAST,
               "hidden",
 );
 
-VIR_ENUM_IMPL(virDomainMsrsUnknown,
+VIR_ENUM_IMPL(virDomainMsrsUnknown, "msrs unknown",
               VIR_DOMAIN_MSRS_UNKNOWN_LAST,
               "ignore",
               "fault",
 );
 
-VIR_ENUM_IMPL(virDomainCapsFeature,
+VIR_ENUM_IMPL(virDomainCapsFeature, "capabilities",
               VIR_DOMAIN_CAPS_FEATURE_LAST,
               "audit_control",
               "audit_write",
@@ -243,14 +243,14 @@  VIR_ENUM_IMPL(virDomainCapsFeature,
               "wake_alarm",
 );
 
-VIR_ENUM_IMPL(virDomainLifecycle,
+VIR_ENUM_IMPL(virDomainLifecycle, "lifecycle type",
               VIR_DOMAIN_LIFECYCLE_LAST,
               "poweroff",
               "reboot",
               "crash",
 );
 
-VIR_ENUM_IMPL(virDomainLifecycleAction,
+VIR_ENUM_IMPL(virDomainLifecycleAction, "lifecycle action",
               VIR_DOMAIN_LIFECYCLE_ACTION_LAST,
               "destroy",
               "restart",
@@ -260,7 +260,7 @@  VIR_ENUM_IMPL(virDomainLifecycleAction,
               "coredump-restart",
 );
 
-VIR_ENUM_IMPL(virDomainLockFailure,
+VIR_ENUM_IMPL(virDomainLockFailure, "lockfailure action",
               VIR_DOMAIN_LOCK_FAILURE_LAST,
               "default",
               "poweroff",
@@ -269,7 +269,7 @@  VIR_ENUM_IMPL(virDomainLockFailure,
               "ignore",
 );
 
-VIR_ENUM_IMPL(virDomainDevice,
+VIR_ENUM_IMPL(virDomainDevice, "device",
               VIR_DOMAIN_DEVICE_LAST,
               "none",
               "disk",
@@ -298,7 +298,7 @@  VIR_ENUM_IMPL(virDomainDevice,
               "vsock",
 );
 
-VIR_ENUM_IMPL(virDomainDiskDevice,
+VIR_ENUM_IMPL(virDomainDiskDevice, "disk device",
               VIR_DOMAIN_DISK_DEVICE_LAST,
               "disk",
               "cdrom",
@@ -306,7 +306,7 @@  VIR_ENUM_IMPL(virDomainDiskDevice,
               "lun",
 );
 
-VIR_ENUM_IMPL(virDomainDiskGeometryTrans,
+VIR_ENUM_IMPL(virDomainDiskGeometryTrans, "geometry trans",
               VIR_DOMAIN_DISK_TRANS_LAST,
               "default",
               "none",
@@ -314,7 +314,7 @@  VIR_ENUM_IMPL(virDomainDiskGeometryTrans,
               "lba",
 );
 
-VIR_ENUM_IMPL(virDomainDiskBus,
+VIR_ENUM_IMPL(virDomainDiskBus, "disk target bus",
               VIR_DOMAIN_DISK_BUS_LAST,
               "ide",
               "fdc",
@@ -327,7 +327,7 @@  VIR_ENUM_IMPL(virDomainDiskBus,
               "sd",
 );
 
-VIR_ENUM_IMPL(virDomainDiskCache,
+VIR_ENUM_IMPL(virDomainDiskCache, "disk driver cache",
               VIR_DOMAIN_DISK_CACHE_LAST,
               "default",
               "none",
@@ -337,7 +337,7 @@  VIR_ENUM_IMPL(virDomainDiskCache,
               "unsafe",
 );
 
-VIR_ENUM_IMPL(virDomainDiskErrorPolicy,
+VIR_ENUM_IMPL(virDomainDiskErrorPolicy, "disk driver error_policy",
               VIR_DOMAIN_DISK_ERROR_POLICY_LAST,
               "default",
               "stop",
@@ -346,21 +346,21 @@  VIR_ENUM_IMPL(virDomainDiskErrorPolicy,
               "enospace",
 );
 
-VIR_ENUM_IMPL(virDomainDiskIo,
+VIR_ENUM_IMPL(virDomainDiskIo, "disk driver io",
               VIR_DOMAIN_DISK_IO_LAST,
               "default",
               "native",
               "threads",
 );
 
-VIR_ENUM_IMPL(virDomainDeviceSGIO,
+VIR_ENUM_IMPL(virDomainDeviceSGIO, "sgio",
               VIR_DOMAIN_DEVICE_SGIO_LAST,
               "default",
               "filtered",
               "unfiltered",
 );
 
-VIR_ENUM_IMPL(virDomainController,
+VIR_ENUM_IMPL(virDomainController, "controller type",
               VIR_DOMAIN_CONTROLLER_TYPE_LAST,
               "ide",
               "fdc",
@@ -373,7 +373,7 @@  VIR_ENUM_IMPL(virDomainController,
               "xenbus",
 );
 
-VIR_ENUM_IMPL(virDomainControllerModelPCI,
+VIR_ENUM_IMPL(virDomainControllerModelPCI, "controller pci model",
               VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST,
               "pci-root",
               "pcie-root",
@@ -387,7 +387,7 @@  VIR_ENUM_IMPL(virDomainControllerModelPCI,
               "pcie-expander-bus",
 );
 
-VIR_ENUM_IMPL(virDomainControllerPCIModelName,
+VIR_ENUM_IMPL(virDomainControllerPCIModelName, "model name",
               VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_LAST,
               "none",
               "pci-bridge",
@@ -402,7 +402,7 @@  VIR_ENUM_IMPL(virDomainControllerPCIModelName,
               "pcie-pci-bridge",
 );
 
-VIR_ENUM_IMPL(virDomainControllerModelSCSI,
+VIR_ENUM_IMPL(virDomainControllerModelSCSI, "controller scsi model",
               VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST,
               "auto",
               "buslogic",
@@ -416,7 +416,7 @@  VIR_ENUM_IMPL(virDomainControllerModelSCSI,
               "virtio-non-transitional",
 );
 
-VIR_ENUM_IMPL(virDomainControllerModelUSB,
+VIR_ENUM_IMPL(virDomainControllerModelUSB, "controller usb model",
               VIR_DOMAIN_CONTROLLER_MODEL_USB_LAST,
               "piix3-uhci",
               "piix4-uhci",
@@ -434,21 +434,21 @@  VIR_ENUM_IMPL(virDomainControllerModelUSB,
               "none",
 );
 
-VIR_ENUM_IMPL(virDomainControllerModelIDE,
+VIR_ENUM_IMPL(virDomainControllerModelIDE, "controller ide model",
               VIR_DOMAIN_CONTROLLER_MODEL_IDE_LAST,
               "piix3",
               "piix4",
               "ich6",
 );
 
-VIR_ENUM_IMPL(virDomainControllerModelVirtioSerial,
+VIR_ENUM_IMPL(virDomainControllerModelVirtioSerial, "controller virtio-serial model",
               VIR_DOMAIN_CONTROLLER_MODEL_VIRTIO_SERIAL_LAST,
               "virtio",
               "virtio-transitional",
               "virtio-non-transitional",
 );
 
-VIR_ENUM_IMPL(virDomainFS,
+VIR_ENUM_IMPL(virDomainFS, "filesystem type",
               VIR_DOMAIN_FS_TYPE_LAST,
               "mount",
               "block",
@@ -459,7 +459,7 @@  VIR_ENUM_IMPL(virDomainFS,
               "volume",
 );
 
-VIR_ENUM_IMPL(virDomainFSDriver,
+VIR_ENUM_IMPL(virDomainFSDriver, "filesystem driver type",
               VIR_DOMAIN_FS_DRIVER_TYPE_LAST,
               "default",
               "path",
@@ -469,20 +469,20 @@  VIR_ENUM_IMPL(virDomainFSDriver,
               "ploop",
 );
 
-VIR_ENUM_IMPL(virDomainFSAccessMode,
+VIR_ENUM_IMPL(virDomainFSAccessMode, "filesystem accessmode",
               VIR_DOMAIN_FS_ACCESSMODE_LAST,
               "passthrough",
               "mapped",
               "squash",
 );
 
-VIR_ENUM_IMPL(virDomainFSWrpolicy,
+VIR_ENUM_IMPL(virDomainFSWrpolicy, "filesystem driver wrpolicy",
               VIR_DOMAIN_FS_WRPOLICY_LAST,
               "default",
               "immediate",
 );
 
-VIR_ENUM_IMPL(virDomainFSModel,
+VIR_ENUM_IMPL(virDomainFSModel, "filesystem model",
               VIR_DOMAIN_FS_MODEL_LAST,
               "default",
               "virtio",
@@ -490,7 +490,7 @@  VIR_ENUM_IMPL(virDomainFSModel,
               "virtio-non-transitional",
 );
 
-VIR_ENUM_IMPL(virDomainNet,
+VIR_ENUM_IMPL(virDomainNet, "interface type",
               VIR_DOMAIN_NET_TYPE_LAST,
               "user",
               "ethernet",
@@ -506,35 +506,35 @@  VIR_ENUM_IMPL(virDomainNet,
               "udp",
 );
 
-VIR_ENUM_IMPL(virDomainNetBackend,
+VIR_ENUM_IMPL(virDomainNetBackend, "interface driver name",
               VIR_DOMAIN_NET_BACKEND_TYPE_LAST,
               "default",
               "qemu",
               "vhost",
 );
 
-VIR_ENUM_IMPL(virDomainNetVirtioTxMode,
+VIR_ENUM_IMPL(virDomainNetVirtioTxMode, "interface driver txmode",
               VIR_DOMAIN_NET_VIRTIO_TX_MODE_LAST,
               "default",
               "iothread",
               "timer",
 );
 
-VIR_ENUM_IMPL(virDomainNetInterfaceLinkState,
+VIR_ENUM_IMPL(virDomainNetInterfaceLinkState, "link state",
               VIR_DOMAIN_NET_INTERFACE_LINK_STATE_LAST,
               "default",
               "up",
               "down",
 );
 
-VIR_ENUM_IMPL(virDomainChrDeviceState,
+VIR_ENUM_IMPL(virDomainChrDeviceState, "target state",
               VIR_DOMAIN_CHR_DEVICE_STATE_LAST,
               "default",
               "connected",
               "disconnected",
 );
 
-VIR_ENUM_IMPL(virDomainChrSerialTarget,
+VIR_ENUM_IMPL(virDomainChrSerialTarget, "serial target type",
               VIR_DOMAIN_CHR_SERIAL_TARGET_TYPE_LAST,
               "none",
               "isa-serial",
@@ -545,7 +545,7 @@  VIR_ENUM_IMPL(virDomainChrSerialTarget,
               "sclp-serial",
 );
 
-VIR_ENUM_IMPL(virDomainChrChannelTarget,
+VIR_ENUM_IMPL(virDomainChrChannelTarget, "channel target type",
               VIR_DOMAIN_CHR_CHANNEL_TARGET_TYPE_LAST,
               "none",
               "guestfwd",
@@ -553,7 +553,7 @@  VIR_ENUM_IMPL(virDomainChrChannelTarget,
               "xen",
 );
 
-VIR_ENUM_IMPL(virDomainChrConsoleTarget,
+VIR_ENUM_IMPL(virDomainChrConsoleTarget, "console target type",
               VIR_DOMAIN_CHR_CONSOLE_TARGET_TYPE_LAST,
               "none",
               "serial",
@@ -566,7 +566,7 @@  VIR_ENUM_IMPL(virDomainChrConsoleTarget,
               "sclplm",
 );
 
-VIR_ENUM_IMPL(virDomainChrSerialTargetModel,
+VIR_ENUM_IMPL(virDomainChrSerialTargetModel, "serial model name",
               VIR_DOMAIN_CHR_SERIAL_TARGET_MODEL_LAST,
               "none",
               "isa-serial",
@@ -579,7 +579,7 @@  VIR_ENUM_IMPL(virDomainChrSerialTargetModel,
               "16550a",
 );
 
-VIR_ENUM_IMPL(virDomainChrDevice,
+VIR_ENUM_IMPL(virDomainChrDevice, "character device",
               VIR_DOMAIN_CHR_DEVICE_TYPE_LAST,
               "parallel",
               "serial",
@@ -587,7 +587,7 @@  VIR_ENUM_IMPL(virDomainChrDevice,
               "channel",
 );
 
-VIR_ENUM_IMPL(virDomainChr,
+VIR_ENUM_IMPL(virDomainChr, "character device type",
               VIR_DOMAIN_CHR_TYPE_LAST,
               "null",
               "vc",
@@ -604,7 +604,7 @@  VIR_ENUM_IMPL(virDomainChr,
               "nmdm",
 );
 
-VIR_ENUM_IMPL(virDomainChrTcpProtocol,
+VIR_ENUM_IMPL(virDomainChrTcpProtocol, "tcp protocol type",
               VIR_DOMAIN_CHR_TCP_PROTOCOL_LAST,
               "raw",
               "telnet",
@@ -612,28 +612,28 @@  VIR_ENUM_IMPL(virDomainChrTcpProtocol,
               "tls",
 );
 
-VIR_ENUM_IMPL(virDomainChrSpicevmc,
+VIR_ENUM_IMPL(virDomainChrSpicevmc, "spicevmc type",
               VIR_DOMAIN_CHR_SPICEVMC_LAST,
               "vdagent",
               "smartcard",
               "usbredir",
 );
 
-VIR_ENUM_IMPL(virDomainSmartcard,
+VIR_ENUM_IMPL(virDomainSmartcard, "smartcard mode",
               VIR_DOMAIN_SMARTCARD_TYPE_LAST,
               "host",
               "host-certificates",
               "passthrough",
 );
 
-VIR_ENUM_IMPL(virDomainSoundCodec,
+VIR_ENUM_IMPL(virDomainSoundCodec, "codec type",
               VIR_DOMAIN_SOUND_CODEC_TYPE_LAST,
               "duplex",
               "micro",
               "output",
 );
 
-VIR_ENUM_IMPL(virDomainSoundModel,
+VIR_ENUM_IMPL(virDomainSoundModel, "sound model",
               VIR_DOMAIN_SOUND_MODEL_LAST,
               "sb16",
               "es1370",
@@ -644,13 +644,13 @@  VIR_ENUM_IMPL(virDomainSoundModel,
               "usb",
 );
 
-VIR_ENUM_IMPL(virDomainKeyWrapCipherName,
+VIR_ENUM_IMPL(virDomainKeyWrapCipherName, "cipher name",
               VIR_DOMAIN_KEY_WRAP_CIPHER_NAME_LAST,
               "aes",
               "dea",
 );
 
-VIR_ENUM_IMPL(virDomainMemballoonModel,
+VIR_ENUM_IMPL(virDomainMemballoonModel, "memballoon model",
               VIR_DOMAIN_MEMBALLOON_MODEL_LAST,
               "virtio",
               "xen",
@@ -659,7 +659,7 @@  VIR_ENUM_IMPL(virDomainMemballoonModel,
               "virtio-non-transitional",
 );
 
-VIR_ENUM_IMPL(virDomainSmbiosMode,
+VIR_ENUM_IMPL(virDomainSmbiosMode, "smbios mode",
               VIR_DOMAIN_SMBIOS_LAST,
               "none",
               "emulate",
@@ -667,14 +667,14 @@  VIR_ENUM_IMPL(virDomainSmbiosMode,
               "sysinfo",
 );
 
-VIR_ENUM_IMPL(virDomainWatchdogModel,
+VIR_ENUM_IMPL(virDomainWatchdogModel, "watchdog model",
               VIR_DOMAIN_WATCHDOG_MODEL_LAST,
               "i6300esb",
               "ib700",
               "diag288",
 );
 
-VIR_ENUM_IMPL(virDomainWatchdogAction,
+VIR_ENUM_IMPL(virDomainWatchdogAction, "watchdog action",
               VIR_DOMAIN_WATCHDOG_ACTION_LAST,
               "reset",
               "shutdown",
@@ -685,7 +685,7 @@  VIR_ENUM_IMPL(virDomainWatchdogAction,
               "inject-nmi",
 );
 
-VIR_ENUM_IMPL(virDomainPanicModel,
+VIR_ENUM_IMPL(virDomainPanicModel, "panic model",
               VIR_DOMAIN_PANIC_MODEL_LAST,
               "default",
               "isa",
@@ -694,7 +694,7 @@  VIR_ENUM_IMPL(virDomainPanicModel,
               "s390",
 );
 
-VIR_ENUM_IMPL(virDomainVideo,
+VIR_ENUM_IMPL(virDomainVideo, "video model",
               VIR_DOMAIN_VIDEO_TYPE_LAST,
               "default",
               "vga",
@@ -709,14 +709,14 @@  VIR_ENUM_IMPL(virDomainVideo,
               "none",
 );
 
-VIR_ENUM_IMPL(virDomainVideoVGAConf,
+VIR_ENUM_IMPL(virDomainVideoVGAConf, "video driver vgaconf",
               VIR_DOMAIN_VIDEO_VGACONF_LAST,
               "io",
               "on",
               "off",
 );
 
-VIR_ENUM_IMPL(virDomainInput,
+VIR_ENUM_IMPL(virDomainInput, "input type",
               VIR_DOMAIN_INPUT_TYPE_LAST,
               "mouse",
               "tablet",
@@ -724,7 +724,7 @@  VIR_ENUM_IMPL(virDomainInput,
               "passthrough",
 );
 
-VIR_ENUM_IMPL(virDomainInputBus,
+VIR_ENUM_IMPL(virDomainInputBus, "input bus",
               VIR_DOMAIN_INPUT_BUS_LAST,
               "ps2",
               "usb",
@@ -733,7 +733,7 @@  VIR_ENUM_IMPL(virDomainInputBus,
               "virtio",
 );
 
-VIR_ENUM_IMPL(virDomainInputModel,
+VIR_ENUM_IMPL(virDomainInputModel, "input model",
               VIR_DOMAIN_INPUT_MODEL_LAST,
               "default",
               "virtio",
@@ -741,7 +741,7 @@  VIR_ENUM_IMPL(virDomainInputModel,
               "virtio-non-transitional",
 );
 
-VIR_ENUM_IMPL(virDomainGraphics,
+VIR_ENUM_IMPL(virDomainGraphics, "graphics type",
               VIR_DOMAIN_GRAPHICS_TYPE_LAST,
               "sdl",
               "vnc",
@@ -751,7 +751,7 @@  VIR_ENUM_IMPL(virDomainGraphics,
               "egl-headless",
 );
 
-VIR_ENUM_IMPL(virDomainGraphicsListen,
+VIR_ENUM_IMPL(virDomainGraphicsListen, "graphics listen type",
               VIR_DOMAIN_GRAPHICS_LISTEN_TYPE_LAST,
               "none",
               "address",
@@ -759,7 +759,7 @@  VIR_ENUM_IMPL(virDomainGraphicsListen,
               "socket",
 );
 
-VIR_ENUM_IMPL(virDomainGraphicsAuthConnected,
+VIR_ENUM_IMPL(virDomainGraphicsAuthConnected, "graphics connected",
               VIR_DOMAIN_GRAPHICS_AUTH_CONNECTED_LAST,
               "default",
               "fail",
@@ -767,7 +767,7 @@  VIR_ENUM_IMPL(virDomainGraphicsAuthConnected,
               "keep",
 );
 
-VIR_ENUM_IMPL(virDomainGraphicsVNCSharePolicy,
+VIR_ENUM_IMPL(virDomainGraphicsVNCSharePolicy, "graphics sharePolicy",
               VIR_DOMAIN_GRAPHICS_VNC_SHARE_LAST,
               "default",
               "allow-exclusive",
@@ -775,7 +775,7 @@  VIR_ENUM_IMPL(virDomainGraphicsVNCSharePolicy,
               "ignore",
 );
 
-VIR_ENUM_IMPL(virDomainGraphicsSpiceChannelName,
+VIR_ENUM_IMPL(virDomainGraphicsSpiceChannelName, "channel name",
               VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_LAST,
               "main",
               "display",
@@ -787,14 +787,14 @@  VIR_ENUM_IMPL(virDomainGraphicsSpiceChannelName,
               "usbredir",
 );
 
-VIR_ENUM_IMPL(virDomainGraphicsSpiceChannelMode,
+VIR_ENUM_IMPL(virDomainGraphicsSpiceChannelMode, "channel mode",
               VIR_DOMAIN_GRAPHICS_SPICE_CHANNEL_MODE_LAST,
               "any",
               "secure",
               "insecure",
 );
 
-VIR_ENUM_IMPL(virDomainGraphicsSpiceImageCompression,
+VIR_ENUM_IMPL(virDomainGraphicsSpiceImageCompression, "image compression",
               VIR_DOMAIN_GRAPHICS_SPICE_IMAGE_COMPRESSION_LAST,
               "default",
               "auto_glz",
@@ -805,7 +805,7 @@  VIR_ENUM_IMPL(virDomainGraphicsSpiceImageCompression,
               "off",
 );
 
-VIR_ENUM_IMPL(virDomainGraphicsSpiceJpegCompression,
+VIR_ENUM_IMPL(virDomainGraphicsSpiceJpegCompression, "jpeg compression",
               VIR_DOMAIN_GRAPHICS_SPICE_JPEG_COMPRESSION_LAST,
               "default",
               "auto",
@@ -813,7 +813,7 @@  VIR_ENUM_IMPL(virDomainGraphicsSpiceJpegCompression,
               "always",
 );
 
-VIR_ENUM_IMPL(virDomainGraphicsSpiceZlibCompression,
+VIR_ENUM_IMPL(virDomainGraphicsSpiceZlibCompression, "zlib compression",
               VIR_DOMAIN_GRAPHICS_SPICE_ZLIB_COMPRESSION_LAST,
               "default",
               "auto",
@@ -821,14 +821,14 @@  VIR_ENUM_IMPL(virDomainGraphicsSpiceZlibCompression,
               "always",
 );
 
-VIR_ENUM_IMPL(virDomainGraphicsSpiceMouseMode,
+VIR_ENUM_IMPL(virDomainGraphicsSpiceMouseMode, "mouse mode",
               VIR_DOMAIN_GRAPHICS_SPICE_MOUSE_MODE_LAST,
               "default",
               "server",
               "client",
 );
 
-VIR_ENUM_IMPL(virDomainGraphicsSpiceStreamingMode,
+VIR_ENUM_IMPL(virDomainGraphicsSpiceStreamingMode, "streaming mode",
               VIR_DOMAIN_GRAPHICS_SPICE_STREAMING_MODE_LAST,
               "default",
               "filter",
@@ -836,13 +836,13 @@  VIR_ENUM_IMPL(virDomainGraphicsSpiceStreamingMode,
               "off",
 );
 
-VIR_ENUM_IMPL(virDomainHostdevMode,
+VIR_ENUM_IMPL(virDomainHostdevMode, "hostdev mode",
               VIR_DOMAIN_HOSTDEV_MODE_LAST,
               "subsystem",
               "capabilities",
 );
 
-VIR_ENUM_IMPL(virDomainHostdevSubsys,
+VIR_ENUM_IMPL(virDomainHostdevSubsys, "hostdev subsystem type",
               VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST,
               "usb",
               "pci",
@@ -851,7 +851,7 @@  VIR_ENUM_IMPL(virDomainHostdevSubsys,
               "mdev",
 );
 
-VIR_ENUM_IMPL(virDomainHostdevSubsysPCIBackend,
+VIR_ENUM_IMPL(virDomainHostdevSubsysPCIBackend, "hostdev pci driver name",
               VIR_DOMAIN_HOSTDEV_PCI_BACKEND_TYPE_LAST,
               "default",
               "kvm",
@@ -859,19 +859,19 @@  VIR_ENUM_IMPL(virDomainHostdevSubsysPCIBackend,
               "xen",
 );
 
-VIR_ENUM_IMPL(virDomainHostdevSubsysSCSIProtocol,
+VIR_ENUM_IMPL(virDomainHostdevSubsysSCSIProtocol, "hostdev scsi protocol",
               VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_LAST,
               "adapter",
               "iscsi",
 );
 
-VIR_ENUM_IMPL(virDomainHostdevSubsysSCSIHostProtocol,
+VIR_ENUM_IMPL(virDomainHostdevSubsysSCSIHostProtocol, "hostdev scsi_host protocol",
               VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_HOST_PROTOCOL_TYPE_LAST,
               "none",
               "vhost",
 );
 
-VIR_ENUM_IMPL(virDomainHostdevSubsysSCSIVHostModel,
+VIR_ENUM_IMPL(virDomainHostdevSubsysSCSIVHostModel, "hostdev vhost model",
               VIR_DOMAIN_HOSTDEV_SUBSYS_SCSI_VHOST_MODEL_TYPE_LAST,
               "default",
               "virtio",
@@ -879,24 +879,24 @@  VIR_ENUM_IMPL(virDomainHostdevSubsysSCSIVHostModel,
               "virtio-non-transitional",
 );
 
-VIR_ENUM_IMPL(virDomainHostdevCaps,
+VIR_ENUM_IMPL(virDomainHostdevCaps, "hostdev capabilities type",
               VIR_DOMAIN_HOSTDEV_CAPS_TYPE_LAST,
               "storage",
               "misc",
               "net",
 );
 
-VIR_ENUM_IMPL(virDomainHub,
+VIR_ENUM_IMPL(virDomainHub, "hub type",
               VIR_DOMAIN_HUB_TYPE_LAST,
               "usb",
 );
 
-VIR_ENUM_IMPL(virDomainRedirdevBus,
+VIR_ENUM_IMPL(virDomainRedirdevBus, "redirdev bus",
               VIR_DOMAIN_REDIRDEV_BUS_LAST,
               "usb",
 );
 
-VIR_ENUM_IMPL(virDomainState,
+VIR_ENUM_IMPL(virDomainState, "domain state",
               VIR_DOMAIN_LAST,
               "nostate",
               "running",
@@ -908,12 +908,12 @@  VIR_ENUM_IMPL(virDomainState,
               "pmsuspended",
 );
 
-VIR_ENUM_IMPL(virDomainNostateReason,
+VIR_ENUM_IMPL(virDomainNostateReason, "domain nostate reason",
               VIR_DOMAIN_NOSTATE_LAST,
               "unknown",
 );
 
-VIR_ENUM_IMPL(virDomainRunningReason,
+VIR_ENUM_IMPL(virDomainRunningReason, "domain running reason",
               VIR_DOMAIN_RUNNING_LAST,
               "unknown",
               "booted",
@@ -928,12 +928,12 @@  VIR_ENUM_IMPL(virDomainRunningReason,
               "post-copy",
 );
 
-VIR_ENUM_IMPL(virDomainBlockedReason,
+VIR_ENUM_IMPL(virDomainBlockedReason, "domain blocked reason",
               VIR_DOMAIN_BLOCKED_LAST,
               "unknown",
 );
 
-VIR_ENUM_IMPL(virDomainPausedReason,
+VIR_ENUM_IMPL(virDomainPausedReason, "domain paused reason",
               VIR_DOMAIN_PAUSED_LAST,
               "unknown",
               "user",
@@ -951,13 +951,13 @@  VIR_ENUM_IMPL(virDomainPausedReason,
               "post-copy failed",
 );
 
-VIR_ENUM_IMPL(virDomainShutdownReason,
+VIR_ENUM_IMPL(virDomainShutdownReason, "domain shutdown reason",
               VIR_DOMAIN_SHUTDOWN_LAST,
               "unknown",
               "user",
 );
 
-VIR_ENUM_IMPL(virDomainShutoffReason,
+VIR_ENUM_IMPL(virDomainShutoffReason, "domain shutoff reason",
               VIR_DOMAIN_SHUTOFF_LAST,
               "unknown",
               "shutdown",
@@ -970,18 +970,18 @@  VIR_ENUM_IMPL(virDomainShutoffReason,
               "daemon",
 );
 
-VIR_ENUM_IMPL(virDomainCrashedReason,
+VIR_ENUM_IMPL(virDomainCrashedReason, "domain crashed reason",
               VIR_DOMAIN_CRASHED_LAST,
               "unknown",
               "panicked",
 );
 
-VIR_ENUM_IMPL(virDomainPMSuspendedReason,
+VIR_ENUM_IMPL(virDomainPMSuspendedReason, "domain pmsuspended reason",
               VIR_DOMAIN_PMSUSPENDED_LAST,
               "unknown",
 );
 
-VIR_ENUM_IMPL(virDomainSeclabel,
+VIR_ENUM_IMPL(virDomainSeclabel, "seclabel type",
               VIR_DOMAIN_SECLABEL_LAST,
               "default",
               "none",
@@ -989,7 +989,7 @@  VIR_ENUM_IMPL(virDomainSeclabel,
               "static",
 );
 
-VIR_ENUM_IMPL(virDomainClockOffset,
+VIR_ENUM_IMPL(virDomainClockOffset, "clock offset",
               VIR_DOMAIN_CLOCK_OFFSET_LAST,
               "utc",
               "localtime",
@@ -997,13 +997,13 @@  VIR_ENUM_IMPL(virDomainClockOffset,
               "timezone",
 );
 
-VIR_ENUM_IMPL(virDomainClockBasis,
+VIR_ENUM_IMPL(virDomainClockBasis, "clock basis",
               VIR_DOMAIN_CLOCK_BASIS_LAST,
               "utc",
               "localtime",
 );
 
-VIR_ENUM_IMPL(virDomainTimerName,
+VIR_ENUM_IMPL(virDomainTimerName, "timer name",
               VIR_DOMAIN_TIMER_NAME_LAST,
               "platform",
               "pit",
@@ -1014,14 +1014,14 @@  VIR_ENUM_IMPL(virDomainTimerName,
               "hypervclock",
 );
 
-VIR_ENUM_IMPL(virDomainTimerTrack,
+VIR_ENUM_IMPL(virDomainTimerTrack, "timer track",
               VIR_DOMAIN_TIMER_TRACK_LAST,
               "boot",
               "guest",
               "wall",
 );
 
-VIR_ENUM_IMPL(virDomainTimerTickpolicy,
+VIR_ENUM_IMPL(virDomainTimerTickpolicy, "timer tickpolicy",
               VIR_DOMAIN_TIMER_TICKPOLICY_LAST,
               "delay",
               "catchup",
@@ -1029,7 +1029,7 @@  VIR_ENUM_IMPL(virDomainTimerTickpolicy,
               "discard",
 );
 
-VIR_ENUM_IMPL(virDomainTimerMode,
+VIR_ENUM_IMPL(virDomainTimerMode, "timer mode",
               VIR_DOMAIN_TIMER_MODE_LAST,
               "auto",
               "native",
@@ -1038,7 +1038,7 @@  VIR_ENUM_IMPL(virDomainTimerMode,
               "smpsafe",
 );
 
-VIR_ENUM_IMPL(virDomainStartupPolicy,
+VIR_ENUM_IMPL(virDomainStartupPolicy, "startupPolicy",
               VIR_DOMAIN_STARTUP_POLICY_LAST,
               "default",
               "mandatory",
@@ -1046,56 +1046,56 @@  VIR_ENUM_IMPL(virDomainStartupPolicy,
               "optional",
 );
 
-VIR_ENUM_IMPL(virDomainCpuPlacementMode,
+VIR_ENUM_IMPL(virDomainCpuPlacementMode, "vcpu placement",
               VIR_DOMAIN_CPU_PLACEMENT_MODE_LAST,
               "static",
               "auto",
 );
 
-VIR_ENUM_IMPL(virDomainDiskTray,
+VIR_ENUM_IMPL(virDomainDiskTray, "disk target tray",
               VIR_DOMAIN_DISK_TRAY_LAST,
               "closed",
               "open",
 );
 
-VIR_ENUM_IMPL(virDomainRNGModel,
+VIR_ENUM_IMPL(virDomainRNGModel, "rng model",
               VIR_DOMAIN_RNG_MODEL_LAST,
               "virtio",
               "virtio-transitional",
               "virtio-non-transitional",
 );
 
-VIR_ENUM_IMPL(virDomainRNGBackend,
+VIR_ENUM_IMPL(virDomainRNGBackend, "rng backend model",
               VIR_DOMAIN_RNG_BACKEND_LAST,
               "random",
               "egd",
 );
 
-VIR_ENUM_IMPL(virDomainTPMModel,
+VIR_ENUM_IMPL(virDomainTPMModel, "tpm model",
               VIR_DOMAIN_TPM_MODEL_LAST,
               "tpm-tis",
               "tpm-crb",
 );
 
-VIR_ENUM_IMPL(virDomainTPMBackend,
+VIR_ENUM_IMPL(virDomainTPMBackend, "tpm backend type",
               VIR_DOMAIN_TPM_TYPE_LAST,
               "passthrough",
               "emulator",
 );
 
-VIR_ENUM_IMPL(virDomainTPMVersion,
+VIR_ENUM_IMPL(virDomainTPMVersion, "tpm backend version",
               VIR_DOMAIN_TPM_VERSION_LAST,
               "default",
               "1.2",
               "2.0",
 );
 
-VIR_ENUM_IMPL(virDomainIOMMUModel,
+VIR_ENUM_IMPL(virDomainIOMMUModel, "iommu model",
               VIR_DOMAIN_IOMMU_MODEL_LAST,
               "intel",
 );
 
-VIR_ENUM_IMPL(virDomainVsockModel,
+VIR_ENUM_IMPL(virDomainVsockModel, "vsock model",
               VIR_DOMAIN_VSOCK_MODEL_LAST,
               "default",
               "virtio",
@@ -1103,14 +1103,14 @@  VIR_ENUM_IMPL(virDomainVsockModel,
               "virtio-non-transitional",
 );
 
-VIR_ENUM_IMPL(virDomainDiskDiscard,
+VIR_ENUM_IMPL(virDomainDiskDiscard, "disk driver discard",
               VIR_DOMAIN_DISK_DISCARD_LAST,
               "default",
               "unmap",
               "ignore",
 );
 
-VIR_ENUM_IMPL(virDomainDiskDetectZeroes,
+VIR_ENUM_IMPL(virDomainDiskDetectZeroes, "disk driver detect_zeroes",
               VIR_DOMAIN_DISK_DETECT_ZEROES_LAST,
               "default",
               "off",
@@ -1118,7 +1118,7 @@  VIR_ENUM_IMPL(virDomainDiskDetectZeroes,
               "unmap",
 );
 
-VIR_ENUM_IMPL(virDomainDiskModel,
+VIR_ENUM_IMPL(virDomainDiskModel, "disk model",
               VIR_DOMAIN_DISK_MODEL_LAST,
               "default",
               "virtio",
@@ -1126,7 +1126,7 @@  VIR_ENUM_IMPL(virDomainDiskModel,
               "virtio-non-transitional",
 );
 
-VIR_ENUM_IMPL(virDomainDiskMirrorState,
+VIR_ENUM_IMPL(virDomainDiskMirrorState, "disk mirror ready",
               VIR_DOMAIN_DISK_MIRROR_STATE_LAST,
               "none",
               "yes",
@@ -1134,7 +1134,7 @@  VIR_ENUM_IMPL(virDomainDiskMirrorState,
               "pivot",
 );
 
-VIR_ENUM_IMPL(virDomainMemorySource,
+VIR_ENUM_IMPL(virDomainMemorySource, "memoryBacking source type",
               VIR_DOMAIN_MEMORY_SOURCE_LAST,
               "none",
               "file",
@@ -1142,28 +1142,28 @@  VIR_ENUM_IMPL(virDomainMemorySource,
               "memfd",
 );
 
-VIR_ENUM_IMPL(virDomainMemoryAllocation,
+VIR_ENUM_IMPL(virDomainMemoryAllocation, "memoryBacking allocation mode",
               VIR_DOMAIN_MEMORY_ALLOCATION_LAST,
               "none",
               "immediate",
               "ondemand",
 );
 
-VIR_ENUM_IMPL(virDomainLoader,
+VIR_ENUM_IMPL(virDomainLoader, "loader type",
               VIR_DOMAIN_LOADER_TYPE_LAST,
               "none",
               "rom",
               "pflash",
 );
 
-VIR_ENUM_IMPL(virDomainIOAPIC,
+VIR_ENUM_IMPL(virDomainIOAPIC, "ioapic driver",
               VIR_DOMAIN_IOAPIC_LAST,
               "none",
               "qemu",
               "kvm",
 );
 
-VIR_ENUM_IMPL(virDomainHPTResizing,
+VIR_ENUM_IMPL(virDomainHPTResizing, "hpt resizing",
               VIR_DOMAIN_HPT_RESIZING_LAST,
               "none",
               "enabled",
@@ -1171,7 +1171,7 @@  VIR_ENUM_IMPL(virDomainHPTResizing,
               "required",
 );
 
-VIR_ENUM_IMPL(virDomainOsDefFirmware,
+VIR_ENUM_IMPL(virDomainOsDefFirmware, "os firmware",
               VIR_DOMAIN_OS_DEF_FIRMWARE_LAST,
               "none",
               "bios",
@@ -1181,26 +1181,26 @@  VIR_ENUM_IMPL(virDomainOsDefFirmware,
 /* Internal mapping: subset of block job types that can be present in
  * <mirror> XML (remaining types are not two-phase). */
 VIR_ENUM_DECL(virDomainBlockJob);
-VIR_ENUM_IMPL(virDomainBlockJob,
+VIR_ENUM_IMPL(virDomainBlockJob, "blockjob type",
               VIR_DOMAIN_BLOCK_JOB_TYPE_LAST,
               "", "", "copy", "", "active-commit",
 );
 
-VIR_ENUM_IMPL(virDomainMemoryModel,
+VIR_ENUM_IMPL(virDomainMemoryModel, "memory model",
               VIR_DOMAIN_MEMORY_MODEL_LAST,
               "",
               "dimm",
               "nvdimm",
 );
 
-VIR_ENUM_IMPL(virDomainShmemModel,
+VIR_ENUM_IMPL(virDomainShmemModel, "shmem model",
               VIR_DOMAIN_SHMEM_MODEL_LAST,
               "ivshmem",
               "ivshmem-plain",
               "ivshmem-doorbell",
 );
 
-VIR_ENUM_IMPL(virDomainLaunchSecurity,
+VIR_ENUM_IMPL(virDomainLaunchSecurity, "launchSecurity type",
               VIR_DOMAIN_LAUNCH_SECURITY_LAST,
               "",
               "sev",
diff --git a/src/conf/interface_conf.c b/src/conf/interface_conf.c
index b134ff4adc..d9b34e16ae 100644
--- a/src/conf/interface_conf.c
+++ b/src/conf/interface_conf.c
@@ -31,7 +31,7 @@ 
 
 #define VIR_FROM_THIS VIR_FROM_INTERFACE
 
-VIR_ENUM_IMPL(virInterface,
+VIR_ENUM_IMPL(virInterface, "interface type",
               VIR_INTERFACE_TYPE_LAST,
               "ethernet", "bridge", "bond", "vlan",
 );
diff --git a/src/conf/netdev_vlan_conf.c b/src/conf/netdev_vlan_conf.c
index 516129280d..abae6d0a45 100644
--- a/src/conf/netdev_vlan_conf.c
+++ b/src/conf/netdev_vlan_conf.c
@@ -24,7 +24,7 @@ 
 
 #define VIR_FROM_THIS VIR_FROM_NONE
 
-VIR_ENUM_IMPL(virNativeVlanMode,
+VIR_ENUM_IMPL(virNativeVlanMode, "tag nativeMode",
               VIR_NATIVE_VLAN_MODE_LAST,
               "default", "tagged", "untagged",
 );
diff --git a/src/conf/network_conf.c b/src/conf/network_conf.c
index 78bff6f687..e7e4031bce 100644
--- a/src/conf/network_conf.c
+++ b/src/conf/network_conf.c
@@ -43,32 +43,32 @@ 
 
 #define VIR_FROM_THIS VIR_FROM_NETWORK
 
-VIR_ENUM_IMPL(virNetworkForward,
+VIR_ENUM_IMPL(virNetworkForward, "forward mode",
               VIR_NETWORK_FORWARD_LAST,
               "none", "nat", "route", "open",
               "bridge", "private", "vepa", "passthrough",
               "hostdev",
 );
 
-VIR_ENUM_IMPL(virNetworkBridgeMACTableManager,
+VIR_ENUM_IMPL(virNetworkBridgeMACTableManager, "bridge macTableManager",
               VIR_NETWORK_BRIDGE_MAC_TABLE_MANAGER_LAST,
               "default", "kernel", "libvirt",
 );
 
 VIR_ENUM_DECL(virNetworkForwardHostdevDevice);
-VIR_ENUM_IMPL(virNetworkForwardHostdevDevice,
+VIR_ENUM_IMPL(virNetworkForwardHostdevDevice, "address type",
               VIR_NETWORK_FORWARD_HOSTDEV_DEVICE_LAST,
               "none", "pci", "netdev",
 );
 
-VIR_ENUM_IMPL(virNetworkForwardDriverName,
+VIR_ENUM_IMPL(virNetworkForwardDriverName, "driver name",
               VIR_NETWORK_FORWARD_DRIVER_NAME_LAST,
               "default",
               "kvm",
               "vfio",
 );
 
-VIR_ENUM_IMPL(virNetworkTaint,
+VIR_ENUM_IMPL(virNetworkTaint, "network taint",
               VIR_NETWORK_TAINT_LAST,
               "hook-script",
 );
diff --git a/src/conf/node_device_conf.c b/src/conf/node_device_conf.c
index 1db045d9ac..9597480dfc 100644
--- a/src/conf/node_device_conf.c
+++ b/src/conf/node_device_conf.c
@@ -42,13 +42,13 @@ 
 
 VIR_LOG_INIT("conf.node_device_conf");
 
-VIR_ENUM_IMPL(virNodeDevDevnode,
+VIR_ENUM_IMPL(virNodeDevDevnode, "devnode type",
               VIR_NODE_DEV_DEVNODE_LAST,
               "dev",
               "link",
 );
 
-VIR_ENUM_IMPL(virNodeDevCap,
+VIR_ENUM_IMPL(virNodeDevCap, "capability type",
               VIR_NODE_DEV_CAP_LAST,
               "system",
               "pci",
@@ -68,13 +68,13 @@  VIR_ENUM_IMPL(virNodeDevCap,
               "ccw",
 );
 
-VIR_ENUM_IMPL(virNodeDevNetCap,
+VIR_ENUM_IMPL(virNodeDevNetCap, "net capability type",
               VIR_NODE_DEV_CAP_NET_LAST,
               "80203",
               "80211",
 );
 
-VIR_ENUM_IMPL(virNodeDevDRM,
+VIR_ENUM_IMPL(virNodeDevDRM, "drm capability type",
               VIR_NODE_DEV_DRM_LAST,
               "primary",
               "control",
diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c
index 6720d5620d..490208a9ee 100644
--- a/src/conf/numa_conf.c
+++ b/src/conf/numa_conf.c
@@ -38,21 +38,21 @@ 
 
 #define VIR_FROM_THIS VIR_FROM_DOMAIN
 
-VIR_ENUM_IMPL(virDomainNumatuneMemMode,
+VIR_ENUM_IMPL(virDomainNumatuneMemMode, "numatune mode",
               VIR_DOMAIN_NUMATUNE_MEM_LAST,
               "strict",
               "preferred",
               "interleave",
 );
 
-VIR_ENUM_IMPL(virDomainNumatunePlacement,
+VIR_ENUM_IMPL(virDomainNumatunePlacement, "numatune placement",
               VIR_DOMAIN_NUMATUNE_PLACEMENT_LAST,
               "default",
               "static",
               "auto",
 );
 
-VIR_ENUM_IMPL(virDomainMemoryAccess,
+VIR_ENUM_IMPL(virDomainMemoryAccess, "memAccess",
               VIR_DOMAIN_MEMORY_ACCESS_LAST,
               "default",
               "shared",
diff --git a/src/conf/nwfilter_conf.c b/src/conf/nwfilter_conf.c
index cecee51d87..fe8a9c999c 100644
--- a/src/conf/nwfilter_conf.c
+++ b/src/conf/nwfilter_conf.c
@@ -49,7 +49,7 @@ 
 #define VIR_FROM_THIS VIR_FROM_NWFILTER
 
 
-VIR_ENUM_IMPL(virNWFilterRuleAction,
+VIR_ENUM_IMPL(virNWFilterRuleAction, "rule action",
               VIR_NWFILTER_RULE_ACTION_LAST,
               "drop",
               "accept",
@@ -58,7 +58,7 @@  VIR_ENUM_IMPL(virNWFilterRuleAction,
               "continue",
 );
 
-VIR_ENUM_IMPL(virNWFilterJumpTarget,
+VIR_ENUM_IMPL(virNWFilterJumpTarget, "jump target",
               VIR_NWFILTER_RULE_ACTION_LAST,
               "DROP",
               "ACCEPT",
@@ -67,27 +67,27 @@  VIR_ENUM_IMPL(virNWFilterJumpTarget,
               "CONTINUE",
 );
 
-VIR_ENUM_IMPL(virNWFilterRuleDirection,
+VIR_ENUM_IMPL(virNWFilterRuleDirection, "rule direction",
               VIR_NWFILTER_RULE_DIRECTION_LAST,
               "in",
               "out",
               "inout",
 );
 
-VIR_ENUM_IMPL(virNWFilterChainPolicy,
+VIR_ENUM_IMPL(virNWFilterChainPolicy, "chain policy",
               VIR_NWFILTER_CHAIN_POLICY_LAST,
               "ACCEPT",
               "DROP",
 );
 
-VIR_ENUM_IMPL(virNWFilterEbtablesTable,
+VIR_ENUM_IMPL(virNWFilterEbtablesTable, "ebtables table",
               VIR_NWFILTER_EBTABLES_TABLE_LAST,
               "filter",
               "nat",
               "broute",
 );
 
-VIR_ENUM_IMPL(virNWFilterChainSuffix,
+VIR_ENUM_IMPL(virNWFilterChainSuffix, "chain suffix",
               VIR_NWFILTER_CHAINSUFFIX_LAST,
               "root",
               "mac",
@@ -99,7 +99,7 @@  VIR_ENUM_IMPL(virNWFilterChainSuffix,
               "ipv6",
 );
 
-VIR_ENUM_IMPL(virNWFilterRuleProtocol,
+VIR_ENUM_IMPL(virNWFilterRuleProtocol, "rule protocol",
               VIR_NWFILTER_RULE_PROTOCOL_LAST,
               "none",
               "mac",
diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c
index ce543cbaf7..3edb68e05f 100644
--- a/src/conf/snapshot_conf.c
+++ b/src/conf/snapshot_conf.c
@@ -51,7 +51,7 @@ 
 
 VIR_LOG_INIT("conf.snapshot_conf");
 
-VIR_ENUM_IMPL(virDomainSnapshotLocation,
+VIR_ENUM_IMPL(virDomainSnapshotLocation, "snapshot location",
               VIR_DOMAIN_SNAPSHOT_LOCATION_LAST,
               "default",
               "no",
@@ -60,7 +60,7 @@  VIR_ENUM_IMPL(virDomainSnapshotLocation,
 );
 
 /* virDomainSnapshotState is really virDomainState plus one extra state */
-VIR_ENUM_IMPL(virDomainSnapshotState,
+VIR_ENUM_IMPL(virDomainSnapshotState, "snapshot state",
               VIR_DOMAIN_SNAPSHOT_LAST,
               "nostate",
               "running",
diff --git a/src/conf/storage_adapter_conf.c b/src/conf/storage_adapter_conf.c
index 18bcb5eb9e..79d589f49b 100644
--- a/src/conf/storage_adapter_conf.c
+++ b/src/conf/storage_adapter_conf.c
@@ -32,7 +32,7 @@ 
 
 VIR_LOG_INIT("conf.storage_adapter_conf");
 
-VIR_ENUM_IMPL(virStorageAdapter,
+VIR_ENUM_IMPL(virStorageAdapter, "adapter type",
               VIR_STORAGE_ADAPTER_TYPE_LAST,
               "default", "scsi_host", "fc_host",
 );
diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
index 3ae0d7ab77..a239356f9d 100644
--- a/src/conf/storage_conf.c
+++ b/src/conf/storage_conf.c
@@ -47,13 +47,13 @@ 
 
 VIR_LOG_INIT("conf.storage_conf");
 
-VIR_ENUM_IMPL(virStorageVol,
+VIR_ENUM_IMPL(virStorageVol, "volume type",
               VIR_STORAGE_VOL_LAST,
               "file", "block", "dir", "network",
               "netdir", "ploop",
 );
 
-VIR_ENUM_IMPL(virStoragePool,
+VIR_ENUM_IMPL(virStoragePool, "pool type",
               VIR_STORAGE_POOL_LAST,
               "dir", "fs", "netfs",
               "logical", "disk", "iscsi",
@@ -62,31 +62,31 @@  VIR_ENUM_IMPL(virStoragePool,
               "zfs", "vstorage",
 );
 
-VIR_ENUM_IMPL(virStoragePoolFormatFileSystem,
+VIR_ENUM_IMPL(virStoragePoolFormatFileSystem, "pool fs format",
               VIR_STORAGE_POOL_FS_LAST,
               "auto", "ext2", "ext3",
               "ext4", "ufs", "iso9660", "udf",
               "gfs", "gfs2", "vfat", "hfs+", "xfs", "ocfs2",
 );
 
-VIR_ENUM_IMPL(virStoragePoolFormatFileSystemNet,
+VIR_ENUM_IMPL(virStoragePoolFormatFileSystemNet, "pool netfs format",
               VIR_STORAGE_POOL_NETFS_LAST,
               "auto", "nfs", "glusterfs", "cifs",
 );
 
-VIR_ENUM_IMPL(virStoragePoolFormatDisk,
+VIR_ENUM_IMPL(virStoragePoolFormatDisk, "pool disk format",
               VIR_STORAGE_POOL_DISK_LAST,
               "unknown", "dos", "dvh", "gpt",
               "mac", "bsd", "pc98", "sun", "lvm2",
 );
 
-VIR_ENUM_IMPL(virStoragePoolFormatLogical,
+VIR_ENUM_IMPL(virStoragePoolFormatLogical, "pool logical format",
               VIR_STORAGE_POOL_LOGICAL_LAST,
               "unknown", "lvm2",
 );
 
 
-VIR_ENUM_IMPL(virStorageVolFormatDisk,
+VIR_ENUM_IMPL(virStorageVolFormatDisk, "volume disk format",
               VIR_STORAGE_VOL_DISK_LAST,
               "none", "linux", "fat16",
               "fat32", "linux-swap",
@@ -94,12 +94,12 @@  VIR_ENUM_IMPL(virStorageVolFormatDisk,
               "extended",
 );
 
-VIR_ENUM_IMPL(virStorageVolDefRefreshAllocation,
+VIR_ENUM_IMPL(virStorageVolDefRefreshAllocation, "volume refresh allocation",
               VIR_STORAGE_VOL_DEF_REFRESH_ALLOCATION_LAST,
               "default", "capacity",
 );
 
-VIR_ENUM_IMPL(virStoragePartedFs,
+VIR_ENUM_IMPL(virStoragePartedFs, "parted fs",
               VIR_STORAGE_PARTED_FS_TYPE_LAST,
               "ext2", "ext2", "fat16",
               "fat32", "linux-swap",
diff --git a/src/libxl/libxl_domain.c b/src/libxl/libxl_domain.c
index 27420c4111..2135135d5e 100644
--- a/src/libxl/libxl_domain.c
+++ b/src/libxl/libxl_domain.c
@@ -41,7 +41,7 @@ 
 
 VIR_LOG_INIT("libxl.libxl_domain");
 
-VIR_ENUM_IMPL(libxlDomainJob,
+VIR_ENUM_IMPL(libxlDomainJob, "libxl job",
               LIBXL_JOB_LAST,
               "none",
               "query",
diff --git a/src/locking/lock_daemon.c b/src/locking/lock_daemon.c
index 55c5840ab2..70a3ec381e 100644
--- a/src/locking/lock_daemon.c
+++ b/src/locking/lock_daemon.c
@@ -84,7 +84,7 @@  enum {
 };
 
 VIR_ENUM_DECL(virDaemonErr);
-VIR_ENUM_IMPL(virDaemonErr,
+VIR_ENUM_IMPL(virDaemonErr, "lock daemon error",
               VIR_LOCK_DAEMON_ERR_LAST,
               "Initialization successful",
               "Unable to obtain pidfile",
diff --git a/src/logging/log_daemon.c b/src/logging/log_daemon.c
index 3b91dd3c5e..b1a3c8f0ea 100644
--- a/src/logging/log_daemon.c
+++ b/src/logging/log_daemon.c
@@ -80,7 +80,7 @@  enum {
 };
 
 VIR_ENUM_DECL(virDaemonErr);
-VIR_ENUM_IMPL(virDaemonErr,
+VIR_ENUM_IMPL(virDaemonErr, "log daemon error",
               VIR_LOG_DAEMON_ERR_LAST,
               "Initialization successful",
               "Unable to obtain pidfile",
diff --git a/src/lxc/lxc_domain.c b/src/lxc/lxc_domain.c
index 51a9fd36eb..4569ce5a46 100644
--- a/src/lxc/lxc_domain.c
+++ b/src/lxc/lxc_domain.c
@@ -37,7 +37,7 @@ 
 #define VIR_FROM_THIS VIR_FROM_LXC
 #define LXC_NAMESPACE_HREF "http://libvirt.org/schemas/domain/lxc/1.0"
 
-VIR_ENUM_IMPL(virLXCDomainJob,
+VIR_ENUM_IMPL(virLXCDomainJob, "lxc job",
               LXC_JOB_LAST,
               "none",
               "query",
@@ -181,14 +181,14 @@  virLXCDomainObjPrivateFree(void *data)
 
 
 
-VIR_ENUM_IMPL(virLXCDomainNamespace,
+VIR_ENUM_IMPL(virLXCDomainNamespace, "lxc namespace",
               VIR_LXC_DOMAIN_NAMESPACE_LAST,
               "sharenet",
               "shareipc",
               "shareuts",
 );
 
-VIR_ENUM_IMPL(virLXCDomainNamespaceSource,
+VIR_ENUM_IMPL(virLXCDomainNamespaceSource, "lxc namespace type",
               VIR_LXC_DOMAIN_NAMESPACE_SOURCE_LAST,
               "none",
               "name",
diff --git a/src/lxc/lxc_native.c b/src/lxc/lxc_native.c
index b4c6e790d8..d35ca3e0cf 100644
--- a/src/lxc/lxc_native.c
+++ b/src/lxc/lxc_native.c
@@ -35,7 +35,7 @@ 
 
 VIR_LOG_INIT("lxc.lxc_native");
 
-VIR_ENUM_IMPL(virLXCNetworkConfigEntry,
+VIR_ENUM_IMPL(virLXCNetworkConfigEntry, "lxc network",
               VIR_LXC_NETWORK_CONFIG_LAST,
               "name",
               "type",
diff --git a/src/network/leaseshelper.c b/src/network/leaseshelper.c
index 46ebb7624d..e93e58b7c2 100644
--- a/src/network/leaseshelper.c
+++ b/src/network/leaseshelper.c
@@ -73,7 +73,7 @@  enum virLeaseActionFlags {
 
 VIR_ENUM_DECL(virLeaseAction);
 
-VIR_ENUM_IMPL(virLeaseAction,
+VIR_ENUM_IMPL(virLeaseAction, "lease action",
               VIR_LEASE_ACTION_LAST,
               "add", "old", "del", "init",
 );
diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
index ea62b4b4a5..20875e05c8 100644
--- a/src/qemu/qemu_agent.c
+++ b/src/qemu/qemu_agent.c
@@ -1214,7 +1214,7 @@  void qemuAgentNotifyEvent(qemuAgentPtr mon,
 
 VIR_ENUM_DECL(qemuAgentShutdownMode);
 
-VIR_ENUM_IMPL(qemuAgentShutdownMode,
+VIR_ENUM_IMPL(qemuAgentShutdownMode, "agent shutdown",
               QEMU_AGENT_SHUTDOWN_LAST,
               "powerdown", "reboot", "halt",
 );
@@ -1334,7 +1334,7 @@  int qemuAgentFSThaw(qemuAgentPtr mon)
 
 VIR_ENUM_DECL(qemuAgentSuspendMode);
 
-VIR_ENUM_IMPL(qemuAgentSuspendMode,
+VIR_ENUM_IMPL(qemuAgentSuspendMode, "agent suspend",
               VIR_NODE_SUSPEND_TARGET_LAST,
               "guest-suspend-ram",
               "guest-suspend-disk",
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index c48f171008..198d9a98a4 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -62,7 +62,7 @@  VIR_LOG_INIT("qemu.qemu_capabilities");
  * are used in domain status files which are read on
  * daemon restarts
  */
-VIR_ENUM_IMPL(virQEMUCaps,
+VIR_ENUM_IMPL(virQEMUCaps, "qemu caps",
               QEMU_CAPS_LAST, /* virQEMUCaps grouping marker */
               /* 0 */
               "kqemu",
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index d5ce9e7638..e7eb8e2389 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -72,7 +72,7 @@ 
 VIR_LOG_INIT("qemu.qemu_command");
 
 VIR_ENUM_DECL(virDomainDiskQEMUBus);
-VIR_ENUM_IMPL(virDomainDiskQEMUBus,
+VIR_ENUM_IMPL(virDomainDiskQEMUBus, "qemu disk bus",
               VIR_DOMAIN_DISK_BUS_LAST,
               "ide",
               "floppy",
@@ -88,7 +88,7 @@  VIR_ENUM_IMPL(virDomainDiskQEMUBus,
 
 VIR_ENUM_DECL(qemuDiskCacheV2);
 
-VIR_ENUM_IMPL(qemuDiskCacheV2,
+VIR_ENUM_IMPL(qemuDiskCacheV2, "qemu disk cache",
               VIR_DOMAIN_DISK_CACHE_LAST,
               "default",
               "none",
@@ -98,7 +98,7 @@  VIR_ENUM_IMPL(qemuDiskCacheV2,
               "unsafe",
 );
 
-VIR_ENUM_IMPL(qemuVideo,
+VIR_ENUM_IMPL(qemuVideo, "qemu video",
               VIR_DOMAIN_VIDEO_TYPE_LAST,
               "", /* default value, we shouldn't see this */
               "std",
@@ -115,7 +115,7 @@  VIR_ENUM_IMPL(qemuVideo,
 
 VIR_ENUM_DECL(qemuDeviceVideo);
 
-VIR_ENUM_IMPL(qemuDeviceVideo,
+VIR_ENUM_IMPL(qemuDeviceVideo, "qemu device video",
               VIR_DOMAIN_VIDEO_TYPE_LAST,
               "", /* default value, we shouldn't see this */
               "VGA",
@@ -132,7 +132,7 @@  VIR_ENUM_IMPL(qemuDeviceVideo,
 
 VIR_ENUM_DECL(qemuDeviceVideoSecondary);
 
-VIR_ENUM_IMPL(qemuDeviceVideoSecondary,
+VIR_ENUM_IMPL(qemuDeviceVideoSecondary, "qemu device video secondary",
               VIR_DOMAIN_VIDEO_TYPE_LAST,
               "", /* default value, we shouldn't see this */
               "", /* no secondary device for VGA */
@@ -149,7 +149,7 @@  VIR_ENUM_IMPL(qemuDeviceVideoSecondary,
 
 VIR_ENUM_DECL(qemuSoundCodec);
 
-VIR_ENUM_IMPL(qemuSoundCodec,
+VIR_ENUM_IMPL(qemuSoundCodec, "qemu codec",
               VIR_DOMAIN_SOUND_CODEC_TYPE_LAST,
               "hda-duplex",
               "hda-micro",
@@ -158,7 +158,7 @@  VIR_ENUM_IMPL(qemuSoundCodec,
 
 VIR_ENUM_DECL(qemuControllerModelUSB);
 
-VIR_ENUM_IMPL(qemuControllerModelUSB,
+VIR_ENUM_IMPL(qemuControllerModelUSB, "qemu controller usb",
               VIR_DOMAIN_CONTROLLER_MODEL_USB_LAST,
               "piix3-usb-uhci",
               "piix4-usb-uhci",
@@ -177,7 +177,7 @@  VIR_ENUM_IMPL(qemuControllerModelUSB,
 );
 
 VIR_ENUM_DECL(qemuDomainFSDriver);
-VIR_ENUM_IMPL(qemuDomainFSDriver,
+VIR_ENUM_IMPL(qemuDomainFSDriver, "qemu filesystem driver",
               VIR_DOMAIN_FS_DRIVER_TYPE_LAST,
               "local",
               "local",
@@ -188,7 +188,7 @@  VIR_ENUM_IMPL(qemuDomainFSDriver,
 );
 
 VIR_ENUM_DECL(qemuNumaPolicy);
-VIR_ENUM_IMPL(qemuNumaPolicy,
+VIR_ENUM_IMPL(qemuNumaPolicy, "qemu numa policy",
               VIR_DOMAIN_NUMATUNE_MEM_LAST,
               "bind",
               "preferred",
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index f4bfccdb3d..309aed3174 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -80,7 +80,7 @@  VIR_LOG_INIT("qemu.qemu_domain");
 
 #define QEMU_NAMESPACE_HREF "http://libvirt.org/schemas/domain/qemu/1.0"
 
-VIR_ENUM_IMPL(qemuDomainJob,
+VIR_ENUM_IMPL(qemuDomainJob, "qemu domain job",
               QEMU_JOB_LAST,
               "none",
               "query",
@@ -93,14 +93,14 @@  VIR_ENUM_IMPL(qemuDomainJob,
               "async nested",
 );
 
-VIR_ENUM_IMPL(qemuDomainAgentJob,
+VIR_ENUM_IMPL(qemuDomainAgentJob, "qemu agent job",
               QEMU_AGENT_JOB_LAST,
               "none",
               "query",
               "modify",
 );
 
-VIR_ENUM_IMPL(qemuDomainAsyncJob,
+VIR_ENUM_IMPL(qemuDomainAsyncJob, "qemu domain async job",
               QEMU_ASYNC_JOB_LAST,
               "none",
               "migration out",
@@ -111,7 +111,7 @@  VIR_ENUM_IMPL(qemuDomainAsyncJob,
               "start",
 );
 
-VIR_ENUM_IMPL(qemuDomainNamespace,
+VIR_ENUM_IMPL(qemuDomainNamespace, "qemu domain namespace",
               QEMU_DOMAIN_NS_LAST,
               "mount",
 );
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 30d3d73d19..d82f944178 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -2714,7 +2714,7 @@  typedef enum {
 } virQEMUSaveFormat;
 
 VIR_ENUM_DECL(qemuSaveCompression);
-VIR_ENUM_IMPL(qemuSaveCompression,
+VIR_ENUM_IMPL(qemuSaveCompression, "qemu save format",
               QEMU_SAVE_FORMAT_LAST,
               "raw",
               "gzip",
@@ -2724,7 +2724,7 @@  VIR_ENUM_IMPL(qemuSaveCompression,
 );
 
 VIR_ENUM_DECL(qemuDumpFormat);
-VIR_ENUM_IMPL(qemuDumpFormat,
+VIR_ENUM_IMPL(qemuDumpFormat, "qemu dump format",
               VIR_DOMAIN_CORE_DUMP_FORMAT_LAST,
               "elf",
               "kdump-zlib",
diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c
index affa0d6334..2027410aa8 100644
--- a/src/qemu/qemu_firmware.c
+++ b/src/qemu/qemu_firmware.c
@@ -51,7 +51,7 @@  typedef enum {
 } qemuFirmwareOSInterface;
 
 VIR_ENUM_DECL(qemuFirmwareOSInterface);
-VIR_ENUM_IMPL(qemuFirmwareOSInterface,
+VIR_ENUM_IMPL(qemuFirmwareOSInterface, "firmware interface",
               QEMU_FIRMWARE_OS_INTERFACE_LAST,
               "",
               "bios",
@@ -101,7 +101,7 @@  typedef enum {
 } qemuFirmwareDevice;
 
 VIR_ENUM_DECL(qemuFirmwareDevice);
-VIR_ENUM_IMPL(qemuFirmwareDevice,
+VIR_ENUM_IMPL(qemuFirmwareDevice, "firmware device",
               QEMU_FIRMWARE_DEVICE_LAST,
               "",
               "flash",
@@ -147,7 +147,7 @@  typedef enum {
 } qemuFirmwareFeature;
 
 VIR_ENUM_DECL(qemuFirmwareFeature);
-VIR_ENUM_IMPL(qemuFirmwareFeature,
+VIR_ENUM_IMPL(qemuFirmwareFeature, "firmware feature",
               QEMU_FIRMWARE_FEATURE_LAST,
               "",
               "acpi-s3",
diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
index a41ebadbcc..17d99e11bf 100644
--- a/src/qemu/qemu_migration.c
+++ b/src/qemu/qemu_migration.c
@@ -66,7 +66,7 @@ 
 
 VIR_LOG_INIT("qemu.qemu_migration");
 
-VIR_ENUM_IMPL(qemuMigrationJobPhase,
+VIR_ENUM_IMPL(qemuMigrationJobPhase, "migration phase",
               QEMU_MIGRATION_PHASE_LAST,
               "none",
               "perform2",
diff --git a/src/qemu/qemu_migration_cookie.c b/src/qemu/qemu_migration_cookie.c
index 74b8575a91..5a20423a92 100644
--- a/src/qemu/qemu_migration_cookie.c
+++ b/src/qemu/qemu_migration_cookie.c
@@ -38,7 +38,7 @@ 
 
 VIR_LOG_INIT("qemu.qemu_migration_cookie");
 
-VIR_ENUM_IMPL(qemuMigrationCookieFlag,
+VIR_ENUM_IMPL(qemuMigrationCookieFlag, "migration cookie",
               QEMU_MIGRATION_COOKIE_FLAG_LAST,
               "graphics",
               "lockstate",
diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_params.c
index e296fc1927..014e2559d7 100644
--- a/src/qemu/qemu_migration_params.c
+++ b/src/qemu/qemu_migration_params.c
@@ -72,13 +72,13 @@  typedef enum {
     QEMU_MIGRATION_COMPRESS_LAST
 } qemuMigrationCompressMethod;
 VIR_ENUM_DECL(qemuMigrationCompressMethod);
-VIR_ENUM_IMPL(qemuMigrationCompressMethod,
+VIR_ENUM_IMPL(qemuMigrationCompressMethod, "migration compress",
               QEMU_MIGRATION_COMPRESS_LAST,
               "xbzrle",
               "mt",
 );
 
-VIR_ENUM_IMPL(qemuMigrationCapability,
+VIR_ENUM_IMPL(qemuMigrationCapability, "migration capability",
               QEMU_MIGRATION_CAP_LAST,
               "xbzrle",
               "auto-converge",
@@ -93,7 +93,7 @@  VIR_ENUM_IMPL(qemuMigrationCapability,
 
 
 VIR_ENUM_DECL(qemuMigrationParam);
-VIR_ENUM_IMPL(qemuMigrationParam,
+VIR_ENUM_IMPL(qemuMigrationParam, "migration param",
               QEMU_MIGRATION_PARAM_LAST,
               "compress-level",
               "compress-threads",
diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
index babcbde878..91fb7e6ada 100644
--- a/src/qemu/qemu_monitor.c
+++ b/src/qemu/qemu_monitor.c
@@ -168,7 +168,7 @@  static int qemuMonitorOnceInit(void)
 VIR_ONCE_GLOBAL_INIT(qemuMonitor);
 
 
-VIR_ENUM_IMPL(qemuMonitorMigrationStatus,
+VIR_ENUM_IMPL(qemuMonitorMigrationStatus, "qemu monitor migration status",
               QEMU_MONITOR_MIGRATION_STATUS_LAST,
               "inactive", "setup",
               "active", "pre-switchover",
@@ -177,7 +177,7 @@  VIR_ENUM_IMPL(qemuMonitorMigrationStatus,
               "cancelling", "cancelled",
 );
 
-VIR_ENUM_IMPL(qemuMonitorVMStatus,
+VIR_ENUM_IMPL(qemuMonitorVMStatus, "qemu monitor vm status",
               QEMU_MONITOR_VM_STATUS_LAST,
               "debug", "inmigrate", "internal-error", "io-error", "paused",
               "postmigrate", "prelaunch", "finish-migrate", "restore-vm",
@@ -194,12 +194,12 @@  typedef enum {
 
 VIR_ENUM_DECL(qemuMonitorBlockIOStatus);
 
-VIR_ENUM_IMPL(qemuMonitorBlockIOStatus,
+VIR_ENUM_IMPL(qemuMonitorBlockIOStatus, "qemu monitor blockio status",
               QEMU_MONITOR_BLOCK_IO_STATUS_LAST,
               "ok", "failed", "nospace",
 );
 
-VIR_ENUM_IMPL(qemuMonitorDumpStatus,
+VIR_ENUM_IMPL(qemuMonitorDumpStatus, "qemu monitor dump status",
               QEMU_MONITOR_DUMP_STATUS_LAST,
               "none", "active", "completed", "failed",
 );
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index 4db9e7b85b..f0eb929a60 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -732,7 +732,7 @@  static void qemuMonitorJSONHandleRTCChange(qemuMonitorPtr mon, virJSONValuePtr d
 }
 
 VIR_ENUM_DECL(qemuMonitorWatchdogAction);
-VIR_ENUM_IMPL(qemuMonitorWatchdogAction,
+VIR_ENUM_IMPL(qemuMonitorWatchdogAction, "qemu monitor watchdog action",
               VIR_DOMAIN_EVENT_WATCHDOG_LAST,
               "none", "pause", "reset", "poweroff", "shutdown", "debug", "inject-nmi",
 );
@@ -755,7 +755,7 @@  static void qemuMonitorJSONHandleWatchdog(qemuMonitorPtr mon, virJSONValuePtr da
 }
 
 VIR_ENUM_DECL(qemuMonitorIOErrorAction);
-VIR_ENUM_IMPL(qemuMonitorIOErrorAction,
+VIR_ENUM_IMPL(qemuMonitorIOErrorAction, "qemu monitor ioerror action",
               VIR_DOMAIN_EVENT_IO_ERROR_LAST,
               "ignore", "stop", "report",
 );
@@ -798,7 +798,7 @@  qemuMonitorJSONHandleIOError(qemuMonitorPtr mon, virJSONValuePtr data)
 
 
 VIR_ENUM_DECL(qemuMonitorGraphicsAddressFamily);
-VIR_ENUM_IMPL(qemuMonitorGraphicsAddressFamily,
+VIR_ENUM_IMPL(qemuMonitorGraphicsAddressFamily, "qemu monitor graphics family",
               VIR_DOMAIN_EVENT_GRAPHICS_ADDRESS_LAST,
               "ipv4", "ipv6", "unix",
 );
@@ -5465,7 +5465,7 @@  qemuMonitorJSONGetCPUDefinitions(qemuMonitorPtr mon,
 }
 
 
-VIR_ENUM_IMPL(qemuMonitorCPUProperty,
+VIR_ENUM_IMPL(qemuMonitorCPUProperty, "qemu monitor cpu property",
               QEMU_MONITOR_CPU_PROPERTY_LAST,
               "boolean", "string", "number",
 );
diff --git a/src/remote/remote_daemon.c b/src/remote/remote_daemon.c
index c3782971f1..66576182bb 100644
--- a/src/remote/remote_daemon.c
+++ b/src/remote/remote_daemon.c
@@ -90,7 +90,7 @@  enum {
 };
 
 VIR_ENUM_DECL(virDaemonErr);
-VIR_ENUM_IMPL(virDaemonErr,
+VIR_ENUM_IMPL(virDaemonErr, "daemon error",
               VIR_DAEMON_ERR_LAST,
               "Initialization successful",
               "Unable to obtain pidfile",
diff --git a/src/util/vircgroup.c b/src/util/vircgroup.c
index 4238d7014b..2673177550 100644
--- a/src/util/vircgroup.c
+++ b/src/util/vircgroup.c
@@ -62,7 +62,7 @@  VIR_LOG_INIT("util.cgroup");
 #define CGROUP_NB_TOTAL_CPU_STAT_PARAM 3
 #define CGROUP_NB_PER_CPU_STAT_PARAM   1
 
-VIR_ENUM_IMPL(virCgroupController,
+VIR_ENUM_IMPL(virCgroupController, "cgroup controller",
               VIR_CGROUP_CONTROLLER_LAST,
               "cpu", "cpuacct", "cpuset", "memory", "devices",
               "freezer", "blkio", "net_cls", "perf_event",
diff --git a/src/util/vircgroupbackend.c b/src/util/vircgroupbackend.c
index d56e4ea292..f7a25094cc 100644
--- a/src/util/vircgroupbackend.c
+++ b/src/util/vircgroupbackend.c
@@ -30,7 +30,7 @@ 
 #define VIR_FROM_THIS VIR_FROM_CGROUP
 
 VIR_ENUM_DECL(virCgroupBackend);
-VIR_ENUM_IMPL(virCgroupBackend,
+VIR_ENUM_IMPL(virCgroupBackend, "cgroup backend",
               VIR_CGROUP_BACKEND_TYPE_LAST,
               "cgroup V2",
               "cgroup V1",
diff --git a/src/util/vircgroupv1.c b/src/util/vircgroupv1.c
index d91436027f..9198c162e7 100644
--- a/src/util/vircgroupv1.c
+++ b/src/util/vircgroupv1.c
@@ -48,7 +48,7 @@  VIR_LOG_INIT("util.cgroup");
 
 
 VIR_ENUM_DECL(virCgroupV1Controller);
-VIR_ENUM_IMPL(virCgroupV1Controller,
+VIR_ENUM_IMPL(virCgroupV1Controller, "cgroup v1 controller",
               VIR_CGROUP_CONTROLLER_LAST,
               "cpu", "cpuacct", "cpuset", "memory", "devices",
               "freezer", "blkio", "net_cls", "perf_event",
diff --git a/src/util/vircgroupv2.c b/src/util/vircgroupv2.c
index 6d90b4872d..0305c665bc 100644
--- a/src/util/vircgroupv2.c
+++ b/src/util/vircgroupv2.c
@@ -45,7 +45,7 @@  VIR_LOG_INIT("util.cgroup");
 #define VIR_FROM_THIS VIR_FROM_CGROUP
 
 VIR_ENUM_DECL(virCgroupV2Controller);
-VIR_ENUM_IMPL(virCgroupV2Controller,
+VIR_ENUM_IMPL(virCgroupV2Controller, "cgroup v2 controller",
               VIR_CGROUP_CONTROLLER_LAST,
               "cpu", "cpuacct", "cpuset", "memory", "devices",
               "freezer", "io", "net_cls", "perf_event", "name=systemd",
diff --git a/src/util/virconf.c b/src/util/virconf.c
index 665805b7cf..662d3fc77c 100644
--- a/src/util/virconf.c
+++ b/src/util/virconf.c
@@ -65,7 +65,7 @@  struct _virConfParserCtxt {
   do { while ((ctxt->cur < ctxt->end) && (c_isblank(CUR))) \
           ctxt->cur++; } while (0)
 
-VIR_ENUM_IMPL(virConf,
+VIR_ENUM_IMPL(virConf, "conf value type",
               VIR_CONF_LAST,
               "*unexpected*",
               "long",
diff --git a/src/util/virenum.c b/src/util/virenum.c
index 58968e7357..49719d6dc6 100644
--- a/src/util/virenum.c
+++ b/src/util/virenum.c
@@ -22,14 +22,14 @@ 
 
 #define VIR_FROM_THIS VIR_FROM_NONE
 
-VIR_ENUM_IMPL(virTristateBool,
+VIR_ENUM_IMPL(virTristateBool, "tristate bool",
               VIR_TRISTATE_BOOL_LAST,
               "default",
               "yes",
               "no",
 );
 
-VIR_ENUM_IMPL(virTristateSwitch,
+VIR_ENUM_IMPL(virTristateSwitch, "tristate switch",
               VIR_TRISTATE_SWITCH_LAST,
               "default",
               "on",
diff --git a/src/util/virerror.c b/src/util/virerror.c
index 37b5b2f3f9..94665d5cfb 100644
--- a/src/util/virerror.c
+++ b/src/util/virerror.c
@@ -57,7 +57,7 @@  static virLogPriority virErrorLevelPriority(virErrorLevel level)
 
 
 VIR_ENUM_DECL(virErrorDomain);
-VIR_ENUM_IMPL(virErrorDomain,
+VIR_ENUM_IMPL(virErrorDomain, "error domain",
               VIR_ERR_DOMAIN_LAST,
               "", /* 0 */
               "Xen Driver",
diff --git a/src/util/virfirewall.c b/src/util/virfirewall.c
index f6344b631c..8de4b259af 100644
--- a/src/util/virfirewall.c
+++ b/src/util/virfirewall.c
@@ -42,7 +42,7 @@  typedef struct _virFirewallGroup virFirewallGroup;
 typedef virFirewallGroup *virFirewallGroupPtr;
 
 VIR_ENUM_DECL(virFirewallLayerCommand);
-VIR_ENUM_IMPL(virFirewallLayerCommand,
+VIR_ENUM_IMPL(virFirewallLayerCommand, "firewall layer command",
               VIR_FIREWALL_LAYER_LAST,
               EBTABLES_PATH,
               IPTABLES_PATH,
diff --git a/src/util/virfirewalld.c b/src/util/virfirewalld.c
index 5d83c3ea2b..cbe40f82c2 100644
--- a/src/util/virfirewalld.c
+++ b/src/util/virfirewalld.c
@@ -41,7 +41,7 @@  VIR_LOG_INIT("util.firewalld");
  * understood by the firewalld.direct "passthrough" method
  */
 VIR_ENUM_DECL(virFirewallLayerFirewallD);
-VIR_ENUM_IMPL(virFirewallLayerFirewallD,
+VIR_ENUM_IMPL(virFirewallLayerFirewallD, "firewalld layer",
               VIR_FIREWALL_LAYER_LAST,
               "eb",
               "ipv4",
@@ -50,7 +50,7 @@  VIR_ENUM_IMPL(virFirewallLayerFirewallD,
 
 
 VIR_ENUM_DECL(virFirewallDBackend);
-VIR_ENUM_IMPL(virFirewallDBackend,
+VIR_ENUM_IMPL(virFirewallDBackend, "firewalld backend",
               VIR_FIREWALLD_BACKEND_LAST,
               "",
               "iptables",
diff --git a/src/util/virgic.c b/src/util/virgic.c
index a3ea3ce6ff..41e67f7dbe 100644
--- a/src/util/virgic.c
+++ b/src/util/virgic.c
@@ -23,7 +23,7 @@ 
 #include "virgic.h"
 #include "virutil.h"
 
-VIR_ENUM_IMPL(virGICVersion,
+VIR_ENUM_IMPL(virGICVersion, "gic version",
               VIR_GIC_VERSION_LAST,
               "none",
               "host",
diff --git a/src/util/virhook.c b/src/util/virhook.c
index 57549ef8e5..7b6f9577eb 100644
--- a/src/util/virhook.c
+++ b/src/util/virhook.c
@@ -49,7 +49,7 @@  VIR_ENUM_DECL(virHookLxcOp);
 VIR_ENUM_DECL(virHookNetworkOp);
 VIR_ENUM_DECL(virHookLibxlOp);
 
-VIR_ENUM_IMPL(virHookDriver,
+VIR_ENUM_IMPL(virHookDriver, "hook driver",
               VIR_HOOK_DRIVER_LAST,
               "daemon",
               "qemu",
@@ -58,21 +58,21 @@  VIR_ENUM_IMPL(virHookDriver,
               "libxl",
 );
 
-VIR_ENUM_IMPL(virHookDaemonOp,
+VIR_ENUM_IMPL(virHookDaemonOp, "hook daemonop",
               VIR_HOOK_DAEMON_OP_LAST,
               "start",
               "shutdown",
               "reload",
 );
 
-VIR_ENUM_IMPL(virHookSubop,
+VIR_ENUM_IMPL(virHookSubop, "hook subop",
               VIR_HOOK_SUBOP_LAST,
               "-",
               "begin",
               "end",
 );
 
-VIR_ENUM_IMPL(virHookQemuOp,
+VIR_ENUM_IMPL(virHookQemuOp, "hook qemuop",
               VIR_HOOK_QEMU_OP_LAST,
               "start",
               "stopped",
@@ -85,7 +85,7 @@  VIR_ENUM_IMPL(virHookQemuOp,
               "restore",
 );
 
-VIR_ENUM_IMPL(virHookLxcOp,
+VIR_ENUM_IMPL(virHookLxcOp, "hook lxcop",
               VIR_HOOK_LXC_OP_LAST,
               "start",
               "stopped",
@@ -95,7 +95,7 @@  VIR_ENUM_IMPL(virHookLxcOp,
               "reconnect",
 );
 
-VIR_ENUM_IMPL(virHookNetworkOp,
+VIR_ENUM_IMPL(virHookNetworkOp, "hook networkop",
               VIR_HOOK_NETWORK_OP_LAST,
               "start",
               "started",
@@ -105,7 +105,7 @@  VIR_ENUM_IMPL(virHookNetworkOp,
               "updated",
 );
 
-VIR_ENUM_IMPL(virHookLibxlOp,
+VIR_ENUM_IMPL(virHookLibxlOp, "hook libxlop",
               VIR_HOOK_LIBXL_OP_LAST,
               "start",
               "stopped",
diff --git a/src/util/virkeycode.c b/src/util/virkeycode.c
index 336443e01d..00c4085b3e 100644
--- a/src/util/virkeycode.c
+++ b/src/util/virkeycode.c
@@ -68,7 +68,7 @@  verify(VIR_KEYMAP_ENTRY_MAX == ARRAY_CARDINALITY(virKeyNameTable_linux));
 verify(VIR_KEYMAP_ENTRY_MAX == ARRAY_CARDINALITY(virKeyNameTable_osx));
 verify(VIR_KEYMAP_ENTRY_MAX == ARRAY_CARDINALITY(virKeyNameTable_win32));
 
-VIR_ENUM_IMPL(virKeycodeSet,
+VIR_ENUM_IMPL(virKeycodeSet, "keycode set",
               VIR_KEYCODE_SET_LAST,
               "linux",
               "xt",
diff --git a/src/util/virlog.c b/src/util/virlog.c
index 248ce19902..6f8ad506e1 100644
--- a/src/util/virlog.c
+++ b/src/util/virlog.c
@@ -76,7 +76,7 @@  static char virLogHostname[HOST_NAME_MAX+1];
     VIR_LOG_PID_REGEX ": " VIR_LOG_LEVEL_REGEX " : "
 
 VIR_ENUM_DECL(virLogDestination);
-VIR_ENUM_IMPL(virLogDestination,
+VIR_ENUM_IMPL(virLogDestination, "log destination",
               VIR_LOG_TO_OUTPUT_LAST,
               "stderr", "syslog", "file", "journald",
 );
diff --git a/src/util/virmdev.c b/src/util/virmdev.c
index 3d5488cdae..37cb4877fb 100644
--- a/src/util/virmdev.c
+++ b/src/util/virmdev.c
@@ -47,7 +47,7 @@  struct _virMediatedDeviceList {
     virMediatedDevicePtr *devs;
 };
 
-VIR_ENUM_IMPL(virMediatedDeviceModel,
+VIR_ENUM_IMPL(virMediatedDeviceModel, "mdev model",
               VIR_MDEV_MODEL_TYPE_LAST,
               "vfio-pci",
               "vfio-ccw",
diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c
index 8e098b3634..d55a24fabe 100644
--- a/src/util/virnetdev.c
+++ b/src/util/virnetdev.c
@@ -2414,7 +2414,7 @@  virNetDevSetNetConfig(const char *linkdev ATTRIBUTE_UNUSED,
 
 #endif /* defined(__linux__) && defined(HAVE_LIBNL) && defined(IFLA_VF_MAX) */
 
-VIR_ENUM_IMPL(virNetDevIfState,
+VIR_ENUM_IMPL(virNetDevIfState, "netdev ifstate",
               VIR_NETDEV_IF_STATE_LAST,
               "" /* value of zero means no state */,
               "unknown", "notpresent",
@@ -2422,7 +2422,7 @@  VIR_ENUM_IMPL(virNetDevIfState,
               "testing", "dormant", "up",
 );
 
-VIR_ENUM_IMPL(virNetDevFeature,
+VIR_ENUM_IMPL(virNetDevFeature, "netdev feature",
               VIR_NET_DEV_FEAT_LAST,
               "rx",
               "tx",
@@ -2766,7 +2766,7 @@  static int virNetDevGetMcastList(const char *ifname,
 }
 
 
-VIR_ENUM_IMPL(virNetDevRxFilterMode,
+VIR_ENUM_IMPL(virNetDevRxFilterMode, "netdev rxfilter",
               VIR_NETDEV_RX_FILTER_MODE_LAST,
               "none",
               "normal",
diff --git a/src/util/virnetdevmacvlan.c b/src/util/virnetdevmacvlan.c
index f09510646c..bbbd812572 100644
--- a/src/util/virnetdevmacvlan.c
+++ b/src/util/virnetdevmacvlan.c
@@ -34,7 +34,7 @@ 
 
 #define VIR_FROM_THIS VIR_FROM_NET
 
-VIR_ENUM_IMPL(virNetDevMacVLanMode,
+VIR_ENUM_IMPL(virNetDevMacVLanMode, "macvlan mode",
               VIR_NETDEV_MACVLAN_MODE_LAST,
               "vepa",
               "private",
diff --git a/src/util/virnetdevvportprofile.c b/src/util/virnetdevvportprofile.c
index 810feba615..035dc4367e 100644
--- a/src/util/virnetdevvportprofile.c
+++ b/src/util/virnetdevvportprofile.c
@@ -27,7 +27,7 @@ 
 
 #define VIR_FROM_THIS VIR_FROM_NET
 
-VIR_ENUM_IMPL(virNetDevVPort,
+VIR_ENUM_IMPL(virNetDevVPort, "virtualport type",
               VIR_NETDEV_VPORT_PROFILE_LAST,
               "none",
               "802.1Qbg",
@@ -36,7 +36,7 @@  VIR_ENUM_IMPL(virNetDevVPort,
               "midonet",
 );
 
-VIR_ENUM_IMPL(virNetDevVPortProfileOp,
+VIR_ENUM_IMPL(virNetDevVPortProfileOp, "virtualport profileop",
               VIR_NETDEV_VPORT_PROFILE_OP_LAST,
               "create",
               "save",
diff --git a/src/util/virpci.c b/src/util/virpci.c
index 8f2936c23a..7cfa49031f 100644
--- a/src/util/virpci.c
+++ b/src/util/virpci.c
@@ -46,12 +46,12 @@  VIR_LOG_INIT("util.pci");
 #define PCI_ID_LEN 10   /* "XXXX XXXX" */
 #define PCI_ADDR_LEN 13 /* "XXXX:XX:XX.X" */
 
-VIR_ENUM_IMPL(virPCIELinkSpeed,
+VIR_ENUM_IMPL(virPCIELinkSpeed, "pcie link speed",
               VIR_PCIE_LINK_SPEED_LAST,
               "", "2.5", "5", "8", "16",
 );
 
-VIR_ENUM_IMPL(virPCIStubDriver,
+VIR_ENUM_IMPL(virPCIStubDriver, "pci stub driver",
               VIR_PCI_STUB_DRIVER_LAST,
               "none",
               "pciback", /* XEN */
@@ -59,7 +59,7 @@  VIR_ENUM_IMPL(virPCIStubDriver,
               "vfio-pci", /* VFIO */
 );
 
-VIR_ENUM_IMPL(virPCIHeader,
+VIR_ENUM_IMPL(virPCIHeader, "pci header",
               VIR_PCI_HEADER_LAST,
               "endpoint",
               "pci-bridge",
diff --git a/src/util/virperf.c b/src/util/virperf.c
index 3e4b2eea8d..2855d41478 100644
--- a/src/util/virperf.c
+++ b/src/util/virperf.c
@@ -35,7 +35,7 @@  VIR_LOG_INIT("util.perf");
 
 #define VIR_FROM_THIS VIR_FROM_PERF
 
-VIR_ENUM_IMPL(virPerfEvent,
+VIR_ENUM_IMPL(virPerfEvent, "perm event",
               VIR_PERF_EVENT_LAST,
               "cmt", "mbmt", "mbml",
               "cpu_cycles", "instructions",
diff --git a/src/util/virprocess.c b/src/util/virprocess.c
index f2533f639f..367b3dfd37 100644
--- a/src/util/virprocess.c
+++ b/src/util/virprocess.c
@@ -107,7 +107,7 @@  static inline int setns(int fd ATTRIBUTE_UNUSED, int nstype ATTRIBUTE_UNUSED)
 }
 #endif
 
-VIR_ENUM_IMPL(virProcessSchedPolicy,
+VIR_ENUM_IMPL(virProcessSchedPolicy, "process sched policy",
               VIR_PROC_POLICY_LAST,
               "none",
               "batch",
diff --git a/src/util/virresctrl.c b/src/util/virresctrl.c
index 6196c3cdbf..f70b4bad47 100644
--- a/src/util/virresctrl.c
+++ b/src/util/virresctrl.c
@@ -54,7 +54,7 @@  VIR_LOG_INIT("util.virresctrl");
  * consistent in between all of them. */
 
 /* Cache name mapping for Linux kernel naming. */
-VIR_ENUM_IMPL(virCacheKernel,
+VIR_ENUM_IMPL(virCacheKernel, "kernel cache",
               VIR_CACHE_TYPE_LAST,
               "Unified",
               "Instruction",
@@ -62,7 +62,7 @@  VIR_ENUM_IMPL(virCacheKernel,
 );
 
 /* Cache name mapping for our XML naming. */
-VIR_ENUM_IMPL(virCache,
+VIR_ENUM_IMPL(virCache, "cache",
               VIR_CACHE_TYPE_LAST,
               "both",
               "code",
@@ -71,7 +71,7 @@  VIR_ENUM_IMPL(virCache,
 
 /* Cache name mapping for resctrl interface naming. */
 VIR_ENUM_DECL(virResctrl);
-VIR_ENUM_IMPL(virResctrl,
+VIR_ENUM_IMPL(virResctrl, "resctrl cache",
               VIR_CACHE_TYPE_LAST,
               "",
               "CODE",
@@ -79,7 +79,7 @@  VIR_ENUM_IMPL(virResctrl,
 );
 
 /* Monitor feature name prefix mapping for monitor naming */
-VIR_ENUM_IMPL(virResctrlMonitorPrefix,
+VIR_ENUM_IMPL(virResctrlMonitorPrefix, "resctrl monitor prefix",
               VIR_RESCTRL_MONITOR_TYPE_LAST,
               "__unsupported__",
               "llc_",
diff --git a/src/util/virsecret.c b/src/util/virsecret.c
index 854dc72b06..dc551c12ca 100644
--- a/src/util/virsecret.c
+++ b/src/util/virsecret.c
@@ -32,7 +32,7 @@ 
 
 VIR_LOG_INIT("util.secret");
 
-VIR_ENUM_IMPL(virSecretUsage,
+VIR_ENUM_IMPL(virSecretUsage, "secret type",
               VIR_SECRET_USAGE_TYPE_LAST,
               "none", "volume", "ceph", "iscsi", "tls",
 );
diff --git a/src/util/virstorageencryption.c b/src/util/virstorageencryption.c
index 49df7fddd8..d1a5c8c3e9 100644
--- a/src/util/virstorageencryption.c
+++ b/src/util/virstorageencryption.c
@@ -37,12 +37,12 @@ 
 
 #define VIR_FROM_THIS VIR_FROM_STORAGE
 
-VIR_ENUM_IMPL(virStorageEncryptionSecret,
+VIR_ENUM_IMPL(virStorageEncryptionSecret, "encryption secret type",
               VIR_STORAGE_ENCRYPTION_SECRET_TYPE_LAST,
               "passphrase",
 );
 
-VIR_ENUM_IMPL(virStorageEncryptionFormat,
+VIR_ENUM_IMPL(virStorageEncryptionFormat, "encryption format",
               VIR_STORAGE_ENCRYPTION_FORMAT_LAST,
               "default", "qcow", "luks",
 );
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index 2b1c0a5b8e..5a07b000d2 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -49,7 +49,7 @@  VIR_LOG_INIT("util.storagefile");
 
 static virClassPtr virStorageSourceClass;
 
-VIR_ENUM_IMPL(virStorage,
+VIR_ENUM_IMPL(virStorage, "storage type",
               VIR_STORAGE_TYPE_LAST,
               "none",
               "file",
@@ -59,7 +59,7 @@  VIR_ENUM_IMPL(virStorage,
               "volume",
 );
 
-VIR_ENUM_IMPL(virStorageFileFormat,
+VIR_ENUM_IMPL(virStorageFileFormat, "storage format",
               VIR_STORAGE_FILE_LAST,
               "none",
               "raw", "dir", "bochs",
@@ -71,12 +71,12 @@  VIR_ENUM_IMPL(virStorageFileFormat,
               "cow", "qcow", "qcow2", "qed", "vmdk",
 );
 
-VIR_ENUM_IMPL(virStorageFileFeature,
+VIR_ENUM_IMPL(virStorageFileFeature, "storage feature",
               VIR_STORAGE_FILE_FEATURE_LAST,
               "lazy_refcounts",
 );
 
-VIR_ENUM_IMPL(virStorageNetProtocol,
+VIR_ENUM_IMPL(virStorageNetProtocol, "storage protocol",
               VIR_STORAGE_NET_PROTOCOL_LAST,
               "none",
               "nbd",
@@ -93,21 +93,21 @@  VIR_ENUM_IMPL(virStorageNetProtocol,
               "vxhs",
 );
 
-VIR_ENUM_IMPL(virStorageNetHostTransport,
+VIR_ENUM_IMPL(virStorageNetHostTransport, "storage transport",
               VIR_STORAGE_NET_HOST_TRANS_LAST,
               "tcp",
               "unix",
               "rdma",
 );
 
-VIR_ENUM_IMPL(virStorageSourcePoolMode,
+VIR_ENUM_IMPL(virStorageSourcePoolMode, "storage mode",
               VIR_STORAGE_SOURCE_POOL_MODE_LAST,
               "default",
               "host",
               "direct",
 );
 
-VIR_ENUM_IMPL(virStorageAuth,
+VIR_ENUM_IMPL(virStorageAuth, "storage auth",
               VIR_STORAGE_AUTH_TYPE_LAST,
               "none", "chap", "ceph",
 );
diff --git a/src/util/virsysinfo.c b/src/util/virsysinfo.c
index 79a935b90a..4f4e8bf497 100644
--- a/src/util/virsysinfo.c
+++ b/src/util/virsysinfo.c
@@ -41,7 +41,7 @@ 
 
 VIR_LOG_INIT("util.sysinfo");
 
-VIR_ENUM_IMPL(virSysinfo,
+VIR_ENUM_IMPL(virSysinfo, "sysinfo type",
               VIR_SYSINFO_LAST,
               "smbios",
 );
diff --git a/src/util/virtypedparam.c b/src/util/virtypedparam.c
index 8f23348d97..5b4cf1e9c7 100644
--- a/src/util/virtypedparam.c
+++ b/src/util/virtypedparam.c
@@ -31,7 +31,7 @@ 
 
 #define VIR_FROM_THIS VIR_FROM_NONE
 
-VIR_ENUM_IMPL(virTypedParameter,
+VIR_ENUM_IMPL(virTypedParameter, "typed parameter",
               VIR_TYPED_PARAM_LAST,
               "unknown",
               "int",
diff --git a/src/vmware/vmware_conf.c b/src/vmware/vmware_conf.c
index 963e7a9876..9b5965f10d 100644
--- a/src/vmware/vmware_conf.c
+++ b/src/vmware/vmware_conf.c
@@ -38,7 +38,7 @@ 
 
 VIR_LOG_INIT("vmware.vmware_conf");
 
-VIR_ENUM_IMPL(vmwareDriver,
+VIR_ENUM_IMPL(vmwareDriver, "vmware driver",
               VMWARE_DRIVER_LAST,
               "player",
               "ws",
diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c
index cf2d4df945..d0194351c6 100644
--- a/src/vmx/vmx.c
+++ b/src/vmx/vmx.c
@@ -509,7 +509,7 @@  def->parallels[0]...
  * this is good enough for now because all virDomainControllerModel values
  * are actually SCSI controller models in the ESX case */
 VIR_ENUM_DECL(virVMXControllerModelSCSI);
-VIR_ENUM_IMPL(virVMXControllerModelSCSI,
+VIR_ENUM_IMPL(virVMXControllerModelSCSI, "vmx scsi controller model",
               VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST,
               "auto", /* just to match virDomainControllerModel, will never be used */
               "buslogic",
diff --git a/tools/virsh-domain-monitor.c b/tools/virsh-domain-monitor.c
index ad739a9df5..d0adcf7ef1 100644
--- a/tools/virsh-domain-monitor.c
+++ b/tools/virsh-domain-monitor.c
@@ -37,7 +37,7 @@ 
 #include "vsh-table.h"
 
 VIR_ENUM_DECL(virshDomainIOError);
-VIR_ENUM_IMPL(virshDomainIOError,
+VIR_ENUM_IMPL(virshDomainIOError, "disk ioerror",
               VIR_DOMAIN_DISK_ERROR_LAST,
               N_("no error"),
               N_("unspecified error"),
@@ -101,7 +101,7 @@  virshGetDomainDescription(vshControl *ctl, virDomainPtr dom, bool title,
 }
 
 VIR_ENUM_DECL(virshDomainControlState);
-VIR_ENUM_IMPL(virshDomainControlState,
+VIR_ENUM_IMPL(virshDomainControlState, "domain control state",
               VIR_DOMAIN_CONTROL_LAST,
               N_("ok"),
               N_("background job"),
@@ -117,7 +117,7 @@  virshDomainControlStateToString(int state)
 }
 
 VIR_ENUM_DECL(virshDomainControlErrorReason);
-VIR_ENUM_IMPL(virshDomainControlErrorReason,
+VIR_ENUM_IMPL(virshDomainControlErrorReason, "domain control error reason",
               VIR_DOMAIN_CONTROL_ERROR_REASON_LAST,
               "",
               N_("unknown"),
@@ -133,7 +133,7 @@  virshDomainControlErrorReasonToString(int reason)
 }
 
 VIR_ENUM_DECL(virshDomainState);
-VIR_ENUM_IMPL(virshDomainState,
+VIR_ENUM_IMPL(virshDomainState, "domain state",
               VIR_DOMAIN_LAST,
               N_("no state"),
               N_("running"),
@@ -153,13 +153,13 @@  virshDomainStateToString(int state)
 }
 
 VIR_ENUM_DECL(virshDomainNostateReason);
-VIR_ENUM_IMPL(virshDomainNostateReason,
+VIR_ENUM_IMPL(virshDomainNostateReason, "domain nostate reason",
               VIR_DOMAIN_NOSTATE_LAST,
               N_("unknown"),
 );
 
 VIR_ENUM_DECL(virshDomainRunningReason);
-VIR_ENUM_IMPL(virshDomainRunningReason,
+VIR_ENUM_IMPL(virshDomainRunningReason, "domain running reason",
               VIR_DOMAIN_RUNNING_LAST,
               N_("unknown"),
               N_("booted"),
@@ -175,13 +175,13 @@  VIR_ENUM_IMPL(virshDomainRunningReason,
 );
 
 VIR_ENUM_DECL(virshDomainBlockedReason);
-VIR_ENUM_IMPL(virshDomainBlockedReason,
+VIR_ENUM_IMPL(virshDomainBlockedReason, "domain blocked reason",
               VIR_DOMAIN_BLOCKED_LAST,
               N_("unknown"),
 );
 
 VIR_ENUM_DECL(virshDomainPausedReason);
-VIR_ENUM_IMPL(virshDomainPausedReason,
+VIR_ENUM_IMPL(virshDomainPausedReason, "domain paused reason",
               VIR_DOMAIN_PAUSED_LAST,
               N_("unknown"),
               N_("user"),
@@ -200,14 +200,14 @@  VIR_ENUM_IMPL(virshDomainPausedReason,
 );
 
 VIR_ENUM_DECL(virshDomainShutdownReason);
-VIR_ENUM_IMPL(virshDomainShutdownReason,
+VIR_ENUM_IMPL(virshDomainShutdownReason, "domain shutdown reason",
               VIR_DOMAIN_SHUTDOWN_LAST,
               N_("unknown"),
               N_("user"),
 );
 
 VIR_ENUM_DECL(virshDomainShutoffReason);
-VIR_ENUM_IMPL(virshDomainShutoffReason,
+VIR_ENUM_IMPL(virshDomainShutoffReason, "domain shutoff reason",
               VIR_DOMAIN_SHUTOFF_LAST,
               N_("unknown"),
               N_("shutdown"),
@@ -221,14 +221,14 @@  VIR_ENUM_IMPL(virshDomainShutoffReason,
 );
 
 VIR_ENUM_DECL(virshDomainCrashedReason);
-VIR_ENUM_IMPL(virshDomainCrashedReason,
+VIR_ENUM_IMPL(virshDomainCrashedReason, "domain crashed reason",
               VIR_DOMAIN_CRASHED_LAST,
               N_("unknown"),
               N_("panicked"),
 );
 
 VIR_ENUM_DECL(virshDomainPMSuspendedReason);
-VIR_ENUM_IMPL(virshDomainPMSuspendedReason,
+VIR_ENUM_IMPL(virshDomainPMSuspendedReason, "domain pmsuspended reason",
               VIR_DOMAIN_PMSUSPENDED_LAST,
               N_("unknown"),
 );
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 688480db75..6545564505 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -98,7 +98,7 @@  virshDomainDefine(virConnectPtr conn, const char *xml, unsigned int flags)
 }
 
 VIR_ENUM_DECL(virshDomainVcpuState);
-VIR_ENUM_IMPL(virshDomainVcpuState,
+VIR_ENUM_IMPL(virshDomainVcpuState, "vcpu state",
               VIR_VCPU_LAST,
               N_("offline"),
               N_("running"),
@@ -2555,7 +2555,7 @@  static const vshCmdOptDef opts_blockjob[] = {
 };
 
 VIR_ENUM_DECL(virshDomainBlockJob);
-VIR_ENUM_IMPL(virshDomainBlockJob,
+VIR_ENUM_IMPL(virshDomainBlockJob, "blockjob type",
               VIR_DOMAIN_BLOCK_JOB_TYPE_LAST,
               N_("Unknown job"),
               N_("Block Pull"),
@@ -5644,13 +5644,13 @@  static const vshCmdOptDef opts_setLifecycleAction[] = {
     {.name = NULL}
 };
 
-VIR_ENUM_IMPL(virDomainLifecycle,
+VIR_ENUM_IMPL(virDomainLifecycle, "domain lifecycle",
               VIR_DOMAIN_LIFECYCLE_LAST,
               "poweroff",
               "reboot",
               "crash");
 
-VIR_ENUM_IMPL(virDomainLifecycleAction,
+VIR_ENUM_IMPL(virDomainLifecycleAction, "domain lifecycle action",
               VIR_DOMAIN_LIFECYCLE_ACTION_LAST,
               "destroy",
               "restart",
@@ -6039,7 +6039,7 @@  static const vshCmdOptDef opts_domjobinfo[] = {
 };
 
 VIR_ENUM_DECL(virshDomainJob);
-VIR_ENUM_IMPL(virshDomainJob,
+VIR_ENUM_IMPL(virshDomainJob, "domain job",
               VIR_DOMAIN_JOB_LAST,
               N_("None"),
               N_("Bounded"),
@@ -6056,7 +6056,7 @@  virshDomainJobToString(int type)
 }
 
 VIR_ENUM_DECL(virshDomainJobOperation);
-VIR_ENUM_IMPL(virshDomainJobOperation,
+VIR_ENUM_IMPL(virshDomainJobOperation, "domain job operation",
               VIR_DOMAIN_JOB_OPERATION_LAST,
               N_("Unknown"),
               N_("Start"),
@@ -8773,7 +8773,7 @@  static const vshCmdOptDef opts_send_process_signal[] = {
 };
 
 VIR_ENUM_DECL(virDomainProcessSignal);
-VIR_ENUM_IMPL(virDomainProcessSignal,
+VIR_ENUM_IMPL(virDomainProcessSignal, "process signal",
               VIR_DOMAIN_PROCESS_SIGNAL_LAST,
                "nop",    "hup",  "int",  "quit",  "ill", /* 0-4 */
               "trap",   "abrt",  "bus",   "fpe", "kill", /* 5-9 */
@@ -12736,7 +12736,7 @@  cmdEdit(vshControl *ctl, const vshCmd *cmd)
  * "event" command
  */
 VIR_ENUM_DECL(virshDomainEvent);
-VIR_ENUM_IMPL(virshDomainEvent,
+VIR_ENUM_IMPL(virshDomainEvent, "domain event",
               VIR_DOMAIN_EVENT_LAST,
               N_("Defined"),
               N_("Undefined"),
@@ -12756,7 +12756,7 @@  virshDomainEventToString(int event)
 }
 
 VIR_ENUM_DECL(virshDomainEventDefined);
-VIR_ENUM_IMPL(virshDomainEventDefined,
+VIR_ENUM_IMPL(virshDomainEventDefined, "domain event defined",
               VIR_DOMAIN_EVENT_DEFINED_LAST,
               N_("Added"),
               N_("Updated"),
@@ -12764,13 +12764,13 @@  VIR_ENUM_IMPL(virshDomainEventDefined,
               N_("Snapshot"));
 
 VIR_ENUM_DECL(virshDomainEventUndefined);
-VIR_ENUM_IMPL(virshDomainEventUndefined,
+VIR_ENUM_IMPL(virshDomainEventUndefined, "domain event undefined",
               VIR_DOMAIN_EVENT_UNDEFINED_LAST,
               N_("Removed"),
               N_("Renamed"));
 
 VIR_ENUM_DECL(virshDomainEventStarted);
-VIR_ENUM_IMPL(virshDomainEventStarted,
+VIR_ENUM_IMPL(virshDomainEventStarted, "domain event started",
               VIR_DOMAIN_EVENT_STARTED_LAST,
               N_("Booted"),
               N_("Migrated"),
@@ -12779,7 +12779,7 @@  VIR_ENUM_IMPL(virshDomainEventStarted,
               N_("Event wakeup"));
 
 VIR_ENUM_DECL(virshDomainEventSuspended);
-VIR_ENUM_IMPL(virshDomainEventSuspended,
+VIR_ENUM_IMPL(virshDomainEventSuspended, "domain event suspended",
               VIR_DOMAIN_EVENT_SUSPENDED_LAST,
               N_("Paused"),
               N_("Migrated"),
@@ -12792,7 +12792,7 @@  VIR_ENUM_IMPL(virshDomainEventSuspended,
               N_("Post-copy Error"));
 
 VIR_ENUM_DECL(virshDomainEventResumed);
-VIR_ENUM_IMPL(virshDomainEventResumed,
+VIR_ENUM_IMPL(virshDomainEventResumed, "domain event resumed",
               VIR_DOMAIN_EVENT_RESUMED_LAST,
               N_("Unpaused"),
               N_("Migrated"),
@@ -12800,7 +12800,7 @@  VIR_ENUM_IMPL(virshDomainEventResumed,
               N_("Post-copy"));
 
 VIR_ENUM_DECL(virshDomainEventStopped);
-VIR_ENUM_IMPL(virshDomainEventStopped,
+VIR_ENUM_IMPL(virshDomainEventStopped, "domain event stopped",
               VIR_DOMAIN_EVENT_STOPPED_LAST,
               N_("Shutdown"),
               N_("Destroyed"),
@@ -12811,20 +12811,20 @@  VIR_ENUM_IMPL(virshDomainEventStopped,
               N_("Snapshot"));
 
 VIR_ENUM_DECL(virshDomainEventShutdown);
-VIR_ENUM_IMPL(virshDomainEventShutdown,
+VIR_ENUM_IMPL(virshDomainEventShutdown, "domain event shutdown",
               VIR_DOMAIN_EVENT_SHUTDOWN_LAST,
               N_("Finished"),
               N_("Finished after guest request"),
               N_("Finished after host request"));
 
 VIR_ENUM_DECL(virshDomainEventPMSuspended);
-VIR_ENUM_IMPL(virshDomainEventPMSuspended,
+VIR_ENUM_IMPL(virshDomainEventPMSuspended, "domain event pmsuspended",
               VIR_DOMAIN_EVENT_PMSUSPENDED_LAST,
               N_("Memory"),
               N_("Disk"));
 
 VIR_ENUM_DECL(virshDomainEventCrashed);
-VIR_ENUM_IMPL(virshDomainEventCrashed,
+VIR_ENUM_IMPL(virshDomainEventCrashed, "domain event crashed",
               VIR_DOMAIN_EVENT_CRASHED_LAST,
               N_("Panicked"));
 
@@ -12867,7 +12867,7 @@  virshDomainEventDetailToString(int event, int detail)
 }
 
 VIR_ENUM_DECL(virshDomainEventWatchdog);
-VIR_ENUM_IMPL(virshDomainEventWatchdog,
+VIR_ENUM_IMPL(virshDomainEventWatchdog, "domain event watchdog",
               VIR_DOMAIN_EVENT_WATCHDOG_LAST,
               N_("none"),
               N_("pause"),
@@ -12885,7 +12885,7 @@  virshDomainEventWatchdogToString(int action)
 }
 
 VIR_ENUM_DECL(virshDomainEventIOError);
-VIR_ENUM_IMPL(virshDomainEventIOError,
+VIR_ENUM_IMPL(virshDomainEventIOError, "domain event ioerror",
               VIR_DOMAIN_EVENT_IO_ERROR_LAST,
               N_("none"),
               N_("pause"),
@@ -12899,7 +12899,7 @@  virshDomainEventIOErrorToString(int action)
 }
 
 VIR_ENUM_DECL(virshGraphicsPhase);
-VIR_ENUM_IMPL(virshGraphicsPhase,
+VIR_ENUM_IMPL(virshGraphicsPhase, "graphics phase",
               VIR_DOMAIN_EVENT_GRAPHICS_LAST,
               N_("connect"),
               N_("initialize"),
@@ -12913,7 +12913,7 @@  virshGraphicsPhaseToString(int phase)
 }
 
 VIR_ENUM_DECL(virshGraphicsAddress);
-VIR_ENUM_IMPL(virshGraphicsAddress,
+VIR_ENUM_IMPL(virshGraphicsAddress, "graphics address",
               VIR_DOMAIN_EVENT_GRAPHICS_ADDRESS_LAST,
               N_("IPv4"),
               N_("IPv6"),
@@ -12927,7 +12927,7 @@  virshGraphicsAddressToString(int family)
 }
 
 VIR_ENUM_DECL(virshDomainBlockJobStatus);
-VIR_ENUM_IMPL(virshDomainBlockJobStatus,
+VIR_ENUM_IMPL(virshDomainBlockJobStatus, "blockjob status",
               VIR_DOMAIN_BLOCK_JOB_LAST,
               N_("completed"),
               N_("failed"),
@@ -12942,7 +12942,7 @@  virshDomainBlockJobStatusToString(int status)
 }
 
 VIR_ENUM_DECL(virshDomainEventDiskChange);
-VIR_ENUM_IMPL(virshDomainEventDiskChange,
+VIR_ENUM_IMPL(virshDomainEventDiskChange, "domain event disk change",
               VIR_DOMAIN_EVENT_DISK_CHANGE_LAST,
               N_("changed"),
               N_("dropped"));
@@ -12955,7 +12955,7 @@  virshDomainEventDiskChangeToString(int reason)
 }
 
 VIR_ENUM_DECL(virshDomainEventTrayChange);
-VIR_ENUM_IMPL(virshDomainEventTrayChange,
+VIR_ENUM_IMPL(virshDomainEventTrayChange, "domain event tray change",
               VIR_DOMAIN_EVENT_TRAY_CHANGE_LAST,
               N_("opened"),
               N_("closed"));
@@ -13279,14 +13279,14 @@  virshEventTunablePrint(virConnectPtr conn ATTRIBUTE_UNUSED,
 }
 
 VIR_ENUM_DECL(virshEventAgentLifecycleState);
-VIR_ENUM_IMPL(virshEventAgentLifecycleState,
+VIR_ENUM_IMPL(virshEventAgentLifecycleState, "agent lifecycle state",
               VIR_CONNECT_DOMAIN_EVENT_AGENT_LIFECYCLE_STATE_LAST,
               N_("unknown"),
               N_("connected"),
               N_("disconnected"));
 
 VIR_ENUM_DECL(virshEventAgentLifecycleReason);
-VIR_ENUM_IMPL(virshEventAgentLifecycleReason,
+VIR_ENUM_IMPL(virshEventAgentLifecycleReason, "agent lifecycle reason",
               VIR_CONNECT_DOMAIN_EVENT_AGENT_LIFECYCLE_REASON_LAST,
               N_("unknown"),
               N_("domain started"),
@@ -13365,7 +13365,7 @@  virshEventDeviceRemovalFailedPrint(virConnectPtr conn ATTRIBUTE_UNUSED,
 }
 
 VIR_ENUM_DECL(virshEventMetadataChangeType);
-VIR_ENUM_IMPL(virshEventMetadataChangeType,
+VIR_ENUM_IMPL(virshEventMetadataChangeType, "metadata change",
               VIR_DOMAIN_METADATA_LAST,
               N_("description"),
               N_("title"),
diff --git a/tools/virsh-host.c b/tools/virsh-host.c
index f12d7829b8..e72896a7a1 100644
--- a/tools/virsh-host.c
+++ b/tools/virsh-host.c
@@ -773,7 +773,7 @@  typedef enum {
 } virshCPUStats;
 
 VIR_ENUM_DECL(virshCPUStats);
-VIR_ENUM_IMPL(virshCPUStats,
+VIR_ENUM_IMPL(virshCPUStats, "cpu status",
               VIRSH_CPU_LAST,
               VIR_NODE_CPU_STATS_USER,
               VIR_NODE_CPU_STATS_KERNEL,
diff --git a/tools/virsh-network.c b/tools/virsh-network.c
index 62bf4fe5a8..09088d776a 100644
--- a/tools/virsh-network.c
+++ b/tools/virsh-network.c
@@ -905,12 +905,12 @@  static const vshCmdOptDef opts_network_update[] = {
 };
 
 VIR_ENUM_DECL(virNetworkUpdateCommand);
-VIR_ENUM_IMPL(virNetworkUpdateCommand,
+VIR_ENUM_IMPL(virNetworkUpdateCommand, "network update command",
               VIR_NETWORK_UPDATE_COMMAND_LAST,
               "none", "modify", "delete", "add-last", "add-first");
 
 VIR_ENUM_DECL(virNetworkSection);
-VIR_ENUM_IMPL(virNetworkSection,
+VIR_ENUM_IMPL(virNetworkSection, "network section",
               VIR_NETWORK_SECTION_LAST,
               "none", "bridge", "domain", "ip", "ip-dhcp-host",
               "ip-dhcp-range", "forward", "forward-interface",
@@ -1139,7 +1139,7 @@  cmdNetworkEdit(vshControl *ctl, const vshCmd *cmd)
  * "net-event" command
  */
 VIR_ENUM_DECL(virshNetworkEvent);
-VIR_ENUM_IMPL(virshNetworkEvent,
+VIR_ENUM_IMPL(virshNetworkEvent, "network event",
               VIR_NETWORK_EVENT_LAST,
               N_("Defined"),
               N_("Undefined"),
@@ -1163,7 +1163,7 @@  struct virshNetEventData {
 typedef struct virshNetEventData virshNetEventData;
 
 VIR_ENUM_DECL(virshNetworkEventId);
-VIR_ENUM_IMPL(virshNetworkEventId,
+VIR_ENUM_IMPL(virshNetworkEventId, "network event id",
               VIR_NETWORK_EVENT_ID_LAST,
               "lifecycle");
 
diff --git a/tools/virsh-nodedev.c b/tools/virsh-nodedev.c
index 1f787dadf3..c0f9e009d5 100644
--- a/tools/virsh-nodedev.c
+++ b/tools/virsh-nodedev.c
@@ -756,7 +756,7 @@  cmdNodeDeviceReset(vshControl *ctl, const vshCmd *cmd)
  * "nodedev-event" command
  */
 VIR_ENUM_DECL(virshNodeDeviceEvent);
-VIR_ENUM_IMPL(virshNodeDeviceEvent,
+VIR_ENUM_IMPL(virshNodeDeviceEvent, "nodedev event",
               VIR_NODE_DEVICE_EVENT_LAST,
               N_("Created"),
               N_("Deleted"));
diff --git a/tools/virsh-pool.c b/tools/virsh-pool.c
index f8688fa1f2..28cd6a53d0 100644
--- a/tools/virsh-pool.c
+++ b/tools/virsh-pool.c
@@ -1038,7 +1038,7 @@  virshStoragePoolListCollect(vshControl *ctl,
 
 
 VIR_ENUM_DECL(virshStoragePoolState);
-VIR_ENUM_IMPL(virshStoragePoolState,
+VIR_ENUM_IMPL(virshStoragePoolState, "pool state",
               VIR_STORAGE_POOL_STATE_LAST,
               N_("inactive"),
               N_("building"),
@@ -1889,7 +1889,7 @@  cmdPoolEdit(vshControl *ctl, const vshCmd *cmd)
  * "pool-event" command
  */
 VIR_ENUM_DECL(virshPoolEvent);
-VIR_ENUM_IMPL(virshPoolEvent,
+VIR_ENUM_IMPL(virshPoolEvent, "pool event",
               VIR_STORAGE_POOL_EVENT_LAST,
               N_("Defined"),
               N_("Undefined"),
diff --git a/tools/virsh-secret.c b/tools/virsh-secret.c
index b9fc5ededf..6f26a31a65 100644
--- a/tools/virsh-secret.c
+++ b/tools/virsh-secret.c
@@ -565,7 +565,7 @@  cmdSecretList(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
  * "Secret-event" command
  */
 VIR_ENUM_DECL(virshSecretEvent);
-VIR_ENUM_IMPL(virshSecretEvent,
+VIR_ENUM_IMPL(virshSecretEvent, "secret event",
               VIR_SECRET_EVENT_LAST,
               N_("Defined"),
               N_("Undefined"));
diff --git a/tools/virsh-volume.c b/tools/virsh-volume.c
index f697781330..e17d219edb 100644
--- a/tools/virsh-volume.c
+++ b/tools/virsh-volume.c
@@ -936,7 +936,7 @@  static const vshCmdOptDef opts_vol_wipe[] = {
 };
 
 VIR_ENUM_DECL(virStorageVolWipeAlgorithm);
-VIR_ENUM_IMPL(virStorageVolWipeAlgorithm,
+VIR_ENUM_IMPL(virStorageVolWipeAlgorithm, "wipe algorithm",
               VIR_STORAGE_VOL_WIPE_ALG_LAST,
               "zero", "nnsa", "dod", "bsi", "gutmann", "schneier",
               "pfitzner7", "pfitzner33", "random", "trim");
@@ -983,7 +983,7 @@  cmdVolWipe(vshControl *ctl, const vshCmd *cmd)
 
 
 VIR_ENUM_DECL(virshStorageVol);
-VIR_ENUM_IMPL(virshStorageVol,
+VIR_ENUM_IMPL(virshStorageVol, "vol type",
               VIR_STORAGE_VOL_LAST,
               N_("file"),
               N_("block"),
diff --git a/tools/virt-admin.c b/tools/virt-admin.c
index 048c805f0a..8620d2dcd6 100644
--- a/tools/virt-admin.c
+++ b/tools/virt-admin.c
@@ -55,7 +55,7 @@  static const vshCmdGrp cmdGroups[];
 static const vshClientHooks hooks;
 
 VIR_ENUM_DECL(virClientTransport);
-VIR_ENUM_IMPL(virClientTransport,
+VIR_ENUM_IMPL(virClientTransport, "client transport",
               VIR_CLIENT_TRANS_LAST,
               N_("unix"),
               N_("tcp"),
diff --git a/tools/virt-host-validate-common.c b/tools/virt-host-validate-common.c
index 804c0adc2d..30eb3f012e 100644
--- a/tools/virt-host-validate-common.c
+++ b/tools/virt-host-validate-common.c
@@ -35,7 +35,7 @@ 
 
 #define VIR_FROM_THIS VIR_FROM_NONE
 
-VIR_ENUM_IMPL(virHostValidateCPUFlag,
+VIR_ENUM_IMPL(virHostValidateCPUFlag, "host-validate cpu flag",
               VIR_HOST_VALIDATE_CPU_FLAG_LAST,
               "vmx",
               "svm",