[libvirt] [PATCH python] Add support for storage pool refesh callback
Cole Robinson
crobinso at redhat.com
Fri Jun 24 18:01:34 UTC 2016
On 06/24/2016 01:38 PM, Daniel P. Berrange wrote:
> Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
> ---
> examples/event-test.py | 6 ++++-
> libvirt-override-virConnect.py | 10 ++++++++
> libvirt-override.c | 54 ++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 69 insertions(+), 1 deletion(-)
>
> diff --git a/examples/event-test.py b/examples/event-test.py
> index 241369b..f0341b5 100755
> --- a/examples/event-test.py
> +++ b/examples/event-test.py
> @@ -572,7 +572,6 @@ def storageEventToString(event):
> "Undefined",
> "Started",
> "Stopped",
> - "Refreshed",
> )
> return storageEventStrings[event]
>
> @@ -581,6 +580,9 @@ def myStoragePoolEventLifecycleCallback(conn, pool, event, detail, opaque):
> storageEventToString(event),
> detail))
>
> +def myStoragePoolEventRefreshCallback(conn, pool, event, detail, opaque):
> + print("myStoragePoolEventRefreshCallback: Storage pool %s" % pool.name())
> +
> ##########################################################################
> # Set up and run the program
> ##########################################################################
> @@ -672,7 +674,9 @@ def main():
> vc.domainEventRegisterAny(None, libvirt.VIR_DOMAIN_EVENT_ID_DEVICE_REMOVAL_FAILED, myDomainEventDeviceRemovalFailedCallback, None)
>
> vc.networkEventRegisterAny(None, libvirt.VIR_NETWORK_EVENT_ID_LIFECYCLE, myNetworkEventLifecycleCallback, None)
> +
> vc.storagePoolEventRegisterAny(None, libvirt.VIR_STORAGE_POOL_EVENT_ID_LIFECYCLE, myStoragePoolEventLifecycleCallback, None)
> + vc.storagePoolEventRegisterAny(None, libvirt.VIR_STORAGE_POOL_EVENT_ID_REFRESH, myStoragePoolEventRefreshCallback, None)
>
> vc.setKeepAlive(5, 3)
>
> diff --git a/libvirt-override-virConnect.py b/libvirt-override-virConnect.py
> index 1aaa586..b085b07 100644
> --- a/libvirt-override-virConnect.py
> +++ b/libvirt-override-virConnect.py
> @@ -312,6 +312,16 @@
> cb(self, virStoragePool(self, _obj=pool), event, detail, opaque)
> return 0
>
> + def _dispatchStoragePoolEventGenericCallback(self, pool, cbData):
> + """Dispatches events to python user storage pool
> + generic event callbacks
> + """
> + cb = cbData["cb"]
> + opaque = cbData["opaque"]
> +
> + cb(self, virStoragePool(self, _obj=pool), opaque)
> + return 0
> +
> def storagePoolEventDeregisterAny(self, callbackID):
> """Removes a Storage Pool Event Callback. De-registering for a
> storage pool callback will disable delivery of this event type"""
> diff --git a/libvirt-override.c b/libvirt-override.c
> index 4734b7e..79e3d30 100644
> --- a/libvirt-override.c
> +++ b/libvirt-override.c
> @@ -8832,6 +8832,56 @@ libvirt_virConnectStoragePoolEventLifecycleCallback(virConnectPtr conn ATTRIBUTE
> return ret;
> }
>
> +static int
> +libvirt_virConnectStoragePoolEventGenericCallback(virConnectPtr conn ATTRIBUTE_UNUSED,
> + virStoragePoolPtr pool,
> + void *opaque)
> +{
> + PyObject *pyobj_cbData = (PyObject*)opaque;
> + PyObject *pyobj_pool;
> + PyObject *pyobj_ret = NULL;
> + PyObject *pyobj_conn;
> + PyObject *dictKey;
> + int ret = -1;
> +
> + LIBVIRT_ENSURE_THREAD_STATE;
> +
> + if (!(dictKey = libvirt_constcharPtrWrap("conn")))
> + goto cleanup;
> + pyobj_conn = PyDict_GetItem(pyobj_cbData, dictKey);
> + Py_DECREF(dictKey);
> +
> + /* Create a python instance of this virNetworkPtr */
Mentions virNetworkPtr
ACK otherwise
- Cole
More information about the libvir-list
mailing list