Convert the libvirt enum integer value into a human readable string.

    :param prefix: start of the libvirt attribute to look for.
    :param value: integer to convert to string

def _get_libvirt_enum_string(prefix, value):
    '''
    Convert the libvirt enum integer value into a human readable string.

    :param prefix: start of the libvirt attribute to look for.
    :param value: integer to convert to string
    '''
    attributes = [attr[len(prefix):] for attr in libvirt.__dict__ if attr.startswith(prefix)]

    # Filter out the values starting with a common base as they match another enum
    prefixes = [_compute_subprefix(p) for p in attributes]
    counts = {p: prefixes.count(p) for p in prefixes}
    sub_prefixes = [p for p, count in counts.items() if count > 1 or (p.endswith('_') and p[:-1] in prefixes)]
    filtered = [attr for attr in attributes if _compute_subprefix(attr) not in sub_prefixes]

    for candidate in filtered:
        if value == getattr(libvirt, ''.join((prefix, candidate))):
            name = candidate.lower().replace('_', ' ')
            return name
    return 'unknown'