On Fri, Jan 06, 2017 at 04:02:45PM +0100, Michal Privoznik wrote:
On 01/05/2017 02:59 PM, Daniel P. Berrange wrote:
> Emit an event whenever a secret value changes
>
> Signed-off-by: Daniel P. Berrange <berrange(a)redhat.com>
> ---
> daemon/remote.c | 29 ++++++++++++++++++++
> include/libvirt/libvirt-secret.h | 1 +
> src/conf/secret_event.c | 59 ++++++++++++++++++++++++++++++++++++++++
> src/conf/secret_event.h | 4 +++
> src/libvirt_private.syms | 1 +
> src/remote/remote_driver.c | 30 ++++++++++++++++++++
> src/remote/remote_protocol.x | 13 ++++++++-
> src/secret/secret_driver.c | 6 ++++
> tools/virsh-secret.c | 35 ++++++++++++++++++++++++
> 9 files changed, 177 insertions(+), 1 deletion(-)
> +
> static vshEventCallback vshEventCallbacks[] = {
> { "lifecycle",
> VIR_SECRET_EVENT_CALLBACK(vshEventLifecyclePrint), },
> + { "value-changed", vshEventGenericPrint, },
We advise users to wrap their callbacks with VIR_SECRET_EVENT_CALLBACK() macro. We should
follow our own advices.
The macro casts to virConnectSecretGenericCallback, and vshEventGenericPrint
already has that type, so no cast is required here.
> };
>
> static const vshCmdInfo info_secret_event[] = {
>
Also, looks like there's something missing:
object-events/event-test.c:1094:1: note: in expansion of macro 'verify'
verify(ARRAY_CARDINALITY(secretEvents) == VIR_SECRET_EVENT_ID_LAST);
^
Opps, yes, I guess I didn't test the examples
Perhaps this?
diff --git i/examples/object-events/event-test.c w/examples/object-events/event-test.c
index cf8c1bca2..55c004f93 100644
--- i/examples/object-events/event-test.c
+++ w/examples/object-events/event-test.c
@@ -763,6 +763,18 @@ mySecretEventCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
}
+static int
+mySecretEventValueChanged(virConnectPtr conn ATTRIBUTE_UNUSED,
+ virSecretPtr secret,
+ void *opaque ATTRIBUTE_UNUSED)
+{
+ char uuid[VIR_UUID_STRING_BUFLEN];
+ virSecretGetUUIDString(secret, uuid);
+ printf("%s EVENT: Secret %s\n", __func__, uuid);
+ return 0;
+}
+
+
static void
eventTypedParamsPrint(virTypedParameterPtr params,
int nparams)
@@ -1085,6 +1097,7 @@ struct secretEventData {
struct secretEventData secretEvents[] = {
SECRET_EVENT(VIR_SECRET_EVENT_ID_LIFECYCLE, mySecretEventCallback),
+ SECRET_EVENT(VIR_SECRET_EVENT_ID_VALUE_CHANGED, mySecretEventValueChanged),
};
/* make sure that the events are kept in sync */
Yep, that looks sane.
Regards,
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://entangle-photo.org -o-
http://search.cpan.org/~danberr/ :|