[libvirt] [PATCH v2 11/12] virsh: add helper for returning event name string
Lin Ma
lma at suse.com
Tue May 15 09:32:26 UTC 2018
On 05/11/2018 05:03 PM, Michal Privoznik wrote:
> On 05/11/2018 10:22 AM, Lin Ma wrote:
>>
>> On 05/10/2018 05:17 PM, Michal Privoznik wrote:
>>> On 05/08/2018 04:20 PM, Lin Ma wrote:
>>>> Signed-off-by: Lin Ma <lma at suse.com>
>>>> ---
>>>> tools/virsh-util.c | 60
>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>> tools/virsh-util.h | 3 +++
>>>> 2 files changed, 63 insertions(+)
>>>>
>>>> diff --git a/tools/virsh-util.c b/tools/virsh-util.c
>>>> index 44be3ad64b..686f9aef98 100644
>>>> --- a/tools/virsh-util.c
>>>> +++ b/tools/virsh-util.c
>>>> @@ -285,3 +285,63 @@ virshDomainGetXML(vshControl *ctl,
>>>> return ret;
>>>> }
>>>> +
>>>> +
>>>> +const char *
>>>> +virshDomainEventGetName(int event)
>>>> +{
>>>> + switch ((int)event) {
>>>> + case VIR_DOMAIN_EVENT_ID_LIFECYCLE:
>>>> + return "lifecycle";
>>>> + case VIR_DOMAIN_EVENT_ID_REBOOT:
>>>> + return "reboot";
>>>> + case VIR_DOMAIN_EVENT_ID_RTC_CHANGE:
>>>> + return "rtc-change";
>>>> + case VIR_DOMAIN_EVENT_ID_WATCHDOG:
>>>> + return "watchdog";
>>>> + case VIR_DOMAIN_EVENT_ID_IO_ERROR:
>>>> + return "io-error";
>>>> + case VIR_DOMAIN_EVENT_ID_GRAPHICS:
>>>> + return "graphics";
>>>> + case VIR_DOMAIN_EVENT_ID_IO_ERROR_REASON:
>>>> + return "io-error-reason";
>>>> + case VIR_DOMAIN_EVENT_ID_CONTROL_ERROR:
>>>> + return "control-error";
>>>> + case VIR_DOMAIN_EVENT_ID_BLOCK_JOB:
>>>> + return "block-job";
>>>> + case VIR_DOMAIN_EVENT_ID_DISK_CHANGE:
>>>> + return "disk-change";
>>>> + case VIR_DOMAIN_EVENT_ID_TRAY_CHANGE:
>>>> + return "tray-change";
>>>> + case VIR_DOMAIN_EVENT_ID_PMWAKEUP:
>>>> + return "pm-wakeup";
>>>> + case VIR_DOMAIN_EVENT_ID_PMSUSPEND:
>>>> + return "pm-suspend";
>>>> + case VIR_DOMAIN_EVENT_ID_BALLOON_CHANGE:
>>>> + return "balloon-change";
>>>> + case VIR_DOMAIN_EVENT_ID_PMSUSPEND_DISK:
>>>> + return "pm-suspend-disk";
>>>> + case VIR_DOMAIN_EVENT_ID_DEVICE_REMOVED:
>>>> + return "device-removed";
>>>> + case VIR_DOMAIN_EVENT_ID_BLOCK_JOB_2:
>>>> + return "block-job-2";
>>>> + case VIR_DOMAIN_EVENT_ID_TUNABLE:
>>>> + return "tunable";
>>>> + case VIR_DOMAIN_EVENT_ID_AGENT_LIFECYCLE:
>>>> + return "agent-lifecycle";
>>>> + case VIR_DOMAIN_EVENT_ID_DEVICE_ADDED:
>>>> + return "device-added";
>>>> + case VIR_DOMAIN_EVENT_ID_MIGRATION_ITERATION:
>>>> + return "migration-iteration";
>>>> + case VIR_DOMAIN_EVENT_ID_JOB_COMPLETED:
>>>> + return "job-completed";
>>>> + case VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED:
>>>> + return "device-removal-failed";
>>>> + case VIR_DOMAIN_EVENT_ID_METADATA_CHANGE:
>>>> + return "metadata-change";
>>>> + case VIR_DOMAIN_EVENT_ID_BLOCK_THRESHOLD:
>>>> + return "block-threshold";
>>>> + default:
>>>> + return NULL;
>>>> + }
>>> Or simply:
>>>
>>> const char *
>>> virshDomainEventGetName(int event)
>>> {
>>> if (event < 0 || event >= VIR_DOMAIN_EVENT_ID_LAST)
>>> return NULL;
>>>
>>> return vshEventCallbacks[event].name;
>>> }
>>>
>>>
>>> I really want to avoid having two places defining strings (one for
>>> command parse code, the other for completions).
>> For using vshEventCallbacks in tools/virsh-util.c, It seems that we need to
>> move lots of code which related to vshEventCallbacks to virsh-util.h or
>> somewhere else.
>> Say those event callback functions and corresponding structures and macros.
>>
>> I'm not sure what is the reasonable way to make it happen, May I have
>> your idea?
> Well, the virshDomainEventGetName() function doesn't necessarily have to
> live in virsh-utils.c. And now that I'm looking into other sources,
> maybe this function can be renamed to virshDomainEventToString()? To
> match the other functions like virshSecretEventToString() for instance.
>
>
>>
>> (btw, there are other 'vshEventCallbacks' array which defining in
>> virsh-secret.c,
>> virsh-pool.c and virsh-nodedev.c.we only move the vshEventCallbacks and
>> related
>> data structures from virsh-domain.c?)
> We can have virshSecretEventToString(), virshPoolEventToString(), ...
> exposed and used in completers.
The function names about *EventToString are already occupied, So I'd like
to use the original name virshDomainEventGetName for the time being.
Because the function virshDomainEventGetName only be used for virsh, I think
I don't need to export it.
I prefer to put the implmentation of function virshDomainEventGetName into
virsh-domain.c and declare it in virsh-domain.h, Then virsh-completer.c
includes
virsh-domain.h for using virshDomainEventGetName in next patch, What do
you think?
Thanks,
Lin
More information about the libvir-list
mailing list