[Kimchi-devel] [PATCH 4/5] Add a monitor to change iso ownership
Sheldon
shaohef at linux.vnet.ibm.com
Tue Jun 10 10:42:33 UTC 2014
On 06/10/2014 06:06 PM, lvroyce at linux.vnet.ibm.com wrote:
> From: Royce Lv <lvroyce at linux.vnet.ibm.com>
>
> Add a threaded monitor to change file ownership.
> Also its pynotify dependecy is added.
>
> Signed-off-by: Royce Lv <lvroyce at linux.vnet.ibm.com>
> ---
> docs/README.md | 6 ++++--
> src/kimchi/isomonitor.py | 33 +++++++++++++++++++++++++++++++++
> 2 files changed, 37 insertions(+), 2 deletions(-)
> create mode 100644 src/kimchi/isomonitor.py
>
> diff --git a/docs/README.md b/docs/README.md
> index 63ac760..9f059ca 100644
> --- a/docs/README.md
> +++ b/docs/README.md
> @@ -53,7 +53,8 @@ Install Dependencies
> PyPAM m2crypto python-jsonschema rpm-build \
> qemu-kvm python-psutil python-ethtool sos \
> python-ipaddr python-lxml nfs-utils \
> - iscsi-initiator-utils libxslt pyparted nginx
> + iscsi-initiator-utils libxslt pyparted nginx \
> + python-inotify
> # If using RHEL6, install the following additional packages:
> $ sudo yum install python-unittest2 python-ordereddict
> # Restart libvirt to allow configuration changes to take effect
> @@ -75,7 +76,8 @@ for more information on how to configure your system to access this repository.
> python-pam python-m2crypto python-jsonschema \
> qemu-kvm libtool python-psutil python-ethtool \
> sosreport python-ipaddr python-lxml nfs-common \
> - open-iscsi lvm2 xsltproc python-parted nginx
> + open-iscsi lvm2 xsltproc python-parted nginx \
> + python-pyinotify
>
For openSUSE?
also update spec file?
> Packages version requirement:
> python-jsonschema >= 1.3.0
> diff --git a/src/kimchi/isomonitor.py b/src/kimchi/isomonitor.py
> new file mode 100644
> index 0000000..c20d71a
> --- /dev/null
> +++ b/src/kimchi/isomonitor.py
> @@ -0,0 +1,33 @@
> +import os
> +import pyinotify
> +
> +
> +from kimchi.utils import get_qemu_owner
> +
> +
> +class EventHandler(pyinotify.ProcessEvent):
> + def process_IN_CREATE(self, event):
> + uid, gid = get_qemu_owner()
> + os.chown(event.pathname, uid, gid)
> +
also, you follow code also notify the DELETE event
+ def process_IN_DELETE(self, event):
+ uid, gid = get_qemu_owner()
+ os.chown(event.pathname, uid, gid)
> +
> +class pathMonitor(object):
> + def __init__(self):
> + self.wm = pyinotify.WatchManager()
> + self.notifier = pyinotify.ThreadedNotifier(self.wm, EventHandler())
> + self.handlers = dict()
> +
> + self.notifier.start()
> +
> + def add_monitor_path(self, path):
> + mask = pyinotify.IN_DELETE | pyinotify.IN_CREATE # watched events
> + self.handlers[path] = self.wm.add_watch(path, mask, rec=True)
what is IN_CREATE? the start of copy a iso file?
not sure it should be pyinotify.IN_CLOSE_WRITE ?
> +
> + def rm_monitor_path(self, path):
> + self.wm.rm_watch(self.handlers.pop(path).values())
> +
> + def stop_monitor(self):
> + for path in self.handlers.iterkeys():
> + self.rm_monitor_path(path)
> + self.notifier.stop()
> +
--
Thanks and best regards!
Sheldon Feng(冯少合)<shaohef at linux.vnet.ibm.com>
IBM Linux Technology Center
More information about the Kimchi-devel
mailing list