diff options
| author | Justin Clift <justin@gluster.org> | 2014-03-21 20:13:16 +0000 | 
|---|---|---|
| committer | Vijay Bellur <vbellur@redhat.com> | 2014-03-24 10:31:22 -0700 | 
| commit | f7a815a2d0e7e9d7ed1ec2da587790bd3ddda9e5 (patch) | |
| tree | a7d5b9d38f624b83677bf715ff8e3519ba3d189d /xlators/features/glupy/src | |
| parent | a8b03479af1cd23baddd373a4d52f366b49c2398 (diff) | |
features/glupy: Rename Glupy python module to avoid namespace conflict
* Rename gluster.py to glupy.py to avoid namespace conflict (#1018619)
* Move the main Glupy files into glusterfs-extra-xlators rpm
* Move the Glupy Translator examples into glusterfs-devel rpm
* Add Glupy entry to the MAINTAINERS file
BUG: 1018619
Change-Id: I48de598ba5ae8eec0e7e276bbcca1abb0e549cef
Signed-off-by: Justin Clift <justin@gluster.org>
Reviewed-on: http://review.gluster.org/6979
Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Diffstat (limited to 'xlators/features/glupy/src')
| -rw-r--r-- | xlators/features/glupy/src/Makefile.am | 13 | ||||
| -rw-r--r-- | xlators/features/glupy/src/debug-trace.py | 774 | ||||
| -rw-r--r-- | xlators/features/glupy/src/glupy.c | 5 | ||||
| -rw-r--r-- | xlators/features/glupy/src/glupy.py (renamed from xlators/features/glupy/src/gluster.py) | 0 | ||||
| -rw-r--r-- | xlators/features/glupy/src/helloworld.py | 19 | ||||
| -rw-r--r-- | xlators/features/glupy/src/negative.py | 92 | ||||
| -rw-r--r-- | xlators/features/glupy/src/setup.py.in | 24 | 
7 files changed, 34 insertions, 893 deletions
diff --git a/xlators/features/glupy/src/Makefile.am b/xlators/features/glupy/src/Makefile.am index 21b91a16455..ae7b6d14d45 100644 --- a/xlators/features/glupy/src/Makefile.am +++ b/xlators/features/glupy/src/Makefile.am @@ -1,11 +1,12 @@  xlator_LTLIBRARIES = glupy.la +# Ensure GLUSTER_PYTHON_PATH is passed to glupy.so  xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/features -  glupydir = $(xlatordir)/glupy +AM_CPPFLAGS = $(PYTHONDEV_CPPFLAGS) $(GF_CPPFLAGS) -I$(top_srcdir)/libglusterfs/src -isystem $(BUILD_PYTHON_INC) +AM_CFLAGS = $(PYTHONDEV_CFLAGS) -Wall -fno-strict-aliasing -DGLUSTER_PYTHON_PATH=\"$(glupydir)\" $(GF_CFLAGS) -glupy_PYTHON = gluster.py negative.py helloworld.py debug-trace.py - +# Flags to build glupy.so with  glupy_la_LDFLAGS = $(PYTHONDEV_LDFLAGS) -module -avoid-version -shared -nostartfiles  glupy_la_SOURCES = glupy.c  glupy_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la \ @@ -13,8 +14,8 @@ glupy_la_LIBADD = $(top_builddir)/libglusterfs/src/libglusterfs.la \  noinst_HEADERS = glupy.h -AM_CPPFLAGS = $(PYTHONDEV_CPPFLAGS) $(GF_CPPFLAGS) -I$(top_srcdir)/libglusterfs/src -isystem $(BUILD_PYTHON_INC) - -AM_CFLAGS = $(PYTHONDEV_CFLAGS) -Wall -fno-strict-aliasing -DGLUSTER_PYTHON_PATH=\"$(glupydir)\" $(GF_CFLAGS) +# Install glupy.py into the Python site-packages area +pyglupydir = $(pythondir)/gluster +pyglupy_PYTHON = glupy.py  CLEANFILES = diff --git a/xlators/features/glupy/src/debug-trace.py b/xlators/features/glupy/src/debug-trace.py deleted file mode 100644 index 53e76546b15..00000000000 --- a/xlators/features/glupy/src/debug-trace.py +++ /dev/null @@ -1,774 +0,0 @@ -import sys -import stat -from uuid import UUID -from time import strftime, localtime -from gluster import * -# This translator was written primarily to test the fop entry point definitions -# and structure definitions in 'gluster.py'. -# It is similar to the debug-trace translator, one of the already available -# translator types written in C, that logs the arguments passed to the fops and -# their corresponding cbk functions. - -dl.get_id.restype = c_long -dl.get_id.argtypes = [ POINTER(call_frame_t) ] - -dl.get_rootunique.restype = c_uint64 -dl.get_rootunique.argtypes = [ POINTER(call_frame_t) ] - -def uuid2str (gfid): -        return str(UUID(''.join(map("{0:02x}".format, gfid)))) - - -def st_mode_from_ia (prot, filetype): -        st_mode = 0 -        type_bit = 0 -        prot_bit = 0 - -        if filetype == IA_IFREG: -                type_bit = stat.S_IFREG -        elif filetype == IA_IFDIR: -                type_bit = stat.S_IFDIR -        elif filetype == IA_IFLNK: -                type_bit = stat.S_IFLNK -        elif filetype == IA_IFBLK: -                type_bit = stat.S_IFBLK -        elif filetype == IA_IFCHR: -                type_bit = stat.S_IFCHR -        elif filetype == IA_IFIFO: -                type_bit = stat.S_IFIFO -        elif filetype == IA_IFSOCK: -                type_bit = stat.S_IFSOCK -        elif filetype == IA_INVAL: -                pass - - -        if prot.suid: -                prot_bit |= stat.S_ISUID -        if prot.sgid: -                prot_bit |= stat.S_ISGID -        if prot.sticky: -                prot_bit |= stat.S_ISVTX - -        if prot.owner.read: -                prot_bit |= stat.S_IRUSR -        if prot.owner.write: -                prot_bit |= stat.S_IWUSR -        if prot.owner.execn: -                prot_bit |= stat.S_IXUSR - -        if prot.group.read: -                prot_bit |= stat.S_IRGRP -        if prot.group.write: -                prot_bit |= stat.S_IWGRP -        if prot.group.execn: -                prot_bit |= stat.S_IXGRP - -        if prot.other.read: -                prot_bit |= stat.S_IROTH -        if prot.other.write: -                prot_bit |= stat.S_IWOTH -        if prot.other.execn: -                prot_bit |= stat.S_IXOTH - -        st_mode = (type_bit | prot_bit) - -        return st_mode - - -def trace_stat2str (buf): -        gfid = uuid2str(buf.contents.ia_gfid) -        mode = st_mode_from_ia(buf.contents.ia_prot, buf.contents.ia_type) -        atime_buf = strftime("[%b %d %H:%M:%S]", -                             localtime(buf.contents.ia_atime)) -        mtime_buf = strftime("[%b %d %H:%M:%S]", -                             localtime(buf.contents.ia_mtime)) -        ctime_buf = strftime("[%b %d %H:%M:%S]", -                             localtime(buf.contents.ia_ctime)) -        return ("(gfid={0:s}, ino={1:d}, mode={2:o}, nlink={3:d}, uid ={4:d}, "+ -                "gid ={5:d}, size={6:d}, blocks={7:d}, atime={8:s}, mtime={9:s}, "+ -                "ctime={10:s})").format(gfid, buf.contents.ia_no, mode, -                                        buf.contents.ia_nlink, -                                        buf.contents.ia_uid, -                                        buf.contents.ia_gid, -                                        buf.contents.ia_size, -                                        buf.contents.ia_blocks, -                                        atime_buf, mtime_buf, -                                        ctime_buf) - -class xlator(Translator): - -        def __init__(self, c_this): -                Translator.__init__(self, c_this) -                self.gfids = {} - -        def lookup_fop(self, frame, this, loc, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = uuid2str(loc.contents.gfid) -                print("GLUPY TRACE LOOKUP FOP- {0:d}: gfid={1:s}; " + -                      "path={2:s}").format(unique, gfid, loc.contents.path) -                self.gfids[key] = gfid -                dl.wind_lookup(frame, POINTER(xlator_t)(), loc, xdata) -                return 0 - -        def lookup_cbk(self, frame, cookie, this, op_ret, op_errno, -                       inode, buf, xdata, postparent): -                unique =dl.get_rootunique(frame) -                key =dl.get_id(frame) -                if op_ret == 0: -                        gfid = uuid2str(buf.contents.ia_gfid) -                        statstr = trace_stat2str(buf) -                        postparentstr = trace_stat2str(postparent) -                        print("GLUPY TRACE LOOKUP CBK- {0:d}: gfid={1:s}; "+ -                              "op_ret={2:d}; *buf={3:s}; " + -                              "*postparent={4:s}").format(unique, gfid, -                                                          op_ret, statstr, -                                                          postparentstr) -                else: -                        gfid = self.gfids[key] -                        print("GLUPY TRACE LOOKUP CBK - {0:d}: gfid={1:s};" + -                              " op_ret={2:d}; op_errno={3:d}").format(unique, -                                                                      gfid, -                                                                      op_ret, -                                                                      op_errno) -                del self.gfids[key] -                dl.unwind_lookup(frame, cookie, this, op_ret, op_errno, -                                 inode, buf, xdata, postparent) -                return 0 - -        def create_fop(self, frame, this, loc, flags, mode, umask, fd, -                       xdata): -                unique = dl.get_rootunique(frame) -                gfid = uuid2str(loc.contents.gfid) -                print("GLUPY TRACE CREATE FOP- {0:d}: gfid={1:s}; path={2:s}; " + -                      "fd={3:s}; flags=0{4:o}; mode=0{5:o}; " + -                      "umask=0{6:o}").format(unique, gfid, loc.contents.path, -                                             fd, flags, mode, umask) -                dl.wind_create(frame, POINTER(xlator_t)(), loc, flags,mode, -                               umask, fd, xdata) -                return 0 - -        def create_cbk(self, frame, cookie, this, op_ret, op_errno, fd, -                       inode, buf, preparent, postparent, xdata): -                unique = dl.get_rootunique(frame) -                if op_ret >= 0: -                        gfid = uuid2str(inode.contents.gfid) -                        statstr = trace_stat2str(buf) -                        preparentstr = trace_stat2str(preparent) -                        postparentstr = trace_stat2str(postparent) -                        print("GLUPY TRACE CREATE CBK- {0:d}: gfid={1:s};" + -                              " op_ret={2:d}; fd={3:s}; *stbuf={4:s}; " + -                              "*preparent={5:s};" + -                              " *postparent={6:s}").format(unique, gfid, op_ret, -                                                           fd, statstr, -                                                           preparentstr, -                                                           postparentstr) -                else: -                        print ("GLUPY TRACE CREATE CBK- {0:d}: op_ret={1:d}; " + -                              "op_errno={2:d}").format(unique, op_ret, op_errno) -                dl.unwind_create(frame, cookie, this, op_ret, op_errno, fd, -                                 inode, buf, preparent, postparent, xdata) -                return 0 - -        def open_fop(self, frame, this, loc, flags, fd, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = uuid2str(loc.contents.inode.contents.gfid) -                print("GLUPY TRACE OPEN FOP- {0:d}: gfid={1:s}; path={2:s}; "+ -                      "flags={3:d}; fd={4:s}").format(unique, gfid, -                                                      loc.contents.path, flags, -                                                      fd) -                self.gfids[key] = gfid -                dl.wind_open(frame, POINTER(xlator_t)(), loc, flags, fd, xdata) -                return 0 - -        def open_cbk(self, frame, cookie, this, op_ret, op_errno, fd, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = self.gfids[key] -                print("GLUPY TRACE OPEN CBK- {0:d}: gfid={1:s}; op_ret={2:d}; " -                      "op_errno={3:d}; *fd={4:s}").format(unique, gfid, -                                                          op_ret, op_errno, fd) -                del self.gfids[key] -                dl.unwind_open(frame, cookie, this, op_ret, op_errno, fd, -                               xdata) -                return 0 - -        def readv_fop(self, frame, this, fd, size, offset, flags, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = uuid2str(fd.contents.inode.contents.gfid) -                print("GLUPY TRACE READV FOP- {0:d}: gfid={1:s}; "+ -                      "fd={2:s}; size ={3:d}; offset={4:d}; " + -                      "flags=0{5:x}").format(unique, gfid, fd, size, offset, -                                             flags) -                self.gfids[key] = gfid -                dl.wind_readv (frame, POINTER(xlator_t)(), fd, size, offset, -                               flags, xdata) -                return 0 - -        def readv_cbk(self, frame, cookie, this, op_ret, op_errno, vector, -                      count, buf, iobref, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = self.gfids[key] -                if op_ret >= 0: -                        statstr = trace_stat2str(buf) -                        print("GLUPY TRACE READV CBK- {0:d}: gfid={1:s}, "+ -                              "op_ret={2:d}; *buf={3:s};").format(unique, gfid, -                                                                  op_ret, -                                                                  statstr) - -                else: -                        print("GLUPY TRACE READV CBK- {0:d}: gfid={1:s}, "+ -                              "op_ret={2:d}; op_errno={3:d}").format(unique, -                                                                     gfid, -                                                                     op_ret, -                                                                     op_errno) -                del self.gfids[key] -                dl.unwind_readv (frame, cookie, this, op_ret, op_errno, -                                 vector, count, buf, iobref, xdata) -                return 0 - -        def writev_fop(self, frame, this, fd, vector, count, offset, flags, -                       iobref, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = uuid2str(fd.contents.inode.contents.gfid) -                print("GLUPY TRACE  WRITEV FOP- {0:d}: gfid={1:s}; " + -                      "fd={2:s}; count={3:d}; offset={4:d}; " + -                      "flags=0{5:x}").format(unique, gfid, fd, count, offset, -                                             flags) -                self.gfids[key] = gfid -                dl.wind_writev(frame, POINTER(xlator_t)(), fd, vector, count, -                               offset, flags, iobref, xdata) -                return 0 - -        def writev_cbk(self, frame, cookie, this, op_ret, op_errno, prebuf, -                       postbuf, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                if op_ret >= 0: -                        preopstr = trace_stat2str(prebuf) -                        postopstr = trace_stat2str(postbuf) -                        print("GLUPY TRACE WRITEV CBK- {0:d}: op_ret={1:d}; " + -                              "*prebuf={2:s}; " + -                              "*postbuf={3:s}").format(unique, op_ret, preopstr, -                                                       postopstr) -                else: -                        gfid = self.gfids[key] -                        print("GLUPY TRACE WRITEV CBK- {0:d}: gfid={1:s}; "+ -                              "op_ret={2:d}; op_errno={3:d}").format(unique, -                                                                     gfid, -                                                                     op_ret, -                                                                     op_errno) -                del self.gfids[key] -                dl.unwind_writev (frame, cookie, this, op_ret, op_errno, -                                  prebuf, postbuf, xdata) -                return 0 - -        def opendir_fop(self, frame, this, loc, fd, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = uuid2str(loc.contents.inode.contents.gfid) -                print("GLUPY TRACE OPENDIR FOP- {0:d}: gfid={1:s}; path={2:s}; "+ -                      "fd={3:s}").format(unique, gfid, loc.contents.path, fd) -                self.gfids[key] = gfid -                dl.wind_opendir(frame, POINTER(xlator_t)(), loc, fd, xdata) -                return 0 - -        def opendir_cbk(self, frame, cookie, this, op_ret, op_errno, fd, -                        xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = self.gfids[key] -                print("GLUPY TRACE OPENDIR CBK- {0:d}: gfid={1:s}; op_ret={2:d};"+ -                      " op_errno={3:d}; fd={4:s}").format(unique, gfid, op_ret, -                                                          op_errno, fd) -                del self.gfids[key] -                dl.unwind_opendir(frame, cookie, this, op_ret, op_errno, -                                  fd, xdata) -                return 0 - -        def readdir_fop(self, frame, this, fd, size, offset, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = uuid2str(fd.contents.inode.contents.gfid) -                print("GLUPY TRACE READDIR FOP- {0:d}:  gfid={1:s}; fd={2:s}; " + -                      "size={3:d}; offset={4:d}").format(unique, gfid, fd, size, -                                                         offset) -                self.gfids[key] = gfid -                dl.wind_readdir(frame, POINTER(xlator_t)(), fd, size, offset, -                                xdata) -                return 0 - -        def readdir_cbk(self, frame, cookie, this, op_ret, op_errno, buf, -                        xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = self.gfids[key] -                print("GLUPY TRACE READDIR CBK- {0:d}: gfid={1:s}; op_ret={2:d};"+ -                      " op_errno={3:d}").format(unique, gfid, op_ret, op_errno) -                del self.gfids[key] -                dl.unwind_readdir(frame, cookie, this, op_ret, op_errno, buf, -                                  xdata) -                return 0 - -        def readdirp_fop(self, frame, this, fd, size, offset, dictionary): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = uuid2str(fd.contents.inode.contents.gfid) -                print("GLUPY TRACE READDIRP FOP- {0:d}: gfid={1:s}; fd={2:s}; "+ -                      " size={3:d}; offset={4:d}").format(unique, gfid, fd, size, -                                                          offset) -                self.gfids[key] = gfid -                dl.wind_readdirp(frame, POINTER(xlator_t)(), fd, size, offset, -                                 dictionary) -                return 0 - -        def readdirp_cbk(self, frame, cookie, this, op_ret, op_errno, buf, -                         xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = self.gfids[key] -                print("GLUPY TRACE READDIRP CBK- {0:d}: gfid={1:s}; "+ -                      "op_ret={2:d}; op_errno={3:d}").format(unique, gfid, -                                                             op_ret, op_errno) -                del self.gfids[key] -                dl.unwind_readdirp(frame, cookie, this, op_ret, op_errno, buf, -                                  xdata) -                return 0 - -        def mkdir_fop(self, frame, this, loc, mode, umask, xdata): -                unique = dl.get_rootunique(frame) -                gfid = uuid2str(loc.contents.inode.contents.gfid) -                print("GLUPY TRACE MKDIR FOP- {0:d}: gfid={1:s}; path={2:s}; " + -                      "mode={3:d}; umask=0{4:o}").format(unique, gfid, -                                                         loc.contents.path, mode, -                                                         umask) -                dl.wind_mkdir(frame, POINTER(xlator_t)(), loc, mode, umask, -                              xdata) -                return 0 - -        def mkdir_cbk(self, frame, cookie, this, op_ret, op_errno, inode, buf, -                      preparent, postparent,  xdata): -                unique = dl.get_rootunique(frame) -                if op_ret == 0: -                        gfid = uuid2str(inode.contents.gfid) -                        statstr = trace_stat2str(buf) -                        preparentstr = trace_stat2str(preparent) -                        postparentstr = trace_stat2str(postparent) -                        print("GLUPY TRACE MKDIR CBK- {0:d}: gfid={1:s}; "+ -                              "op_ret={2:d}; *stbuf={3:s}; *prebuf={4:s}; "+ -                              "*postbuf={5:s} ").format(unique, gfid, op_ret, -                                                        statstr, -                                                        preparentstr, -                                                        postparentstr) -                else: -                        print("GLUPY TRACE MKDIR CBK- {0:d}:  op_ret={1:d}; "+ -                              "op_errno={2:d}").format(unique, op_ret, op_errno) -                dl.unwind_mkdir(frame, cookie, this, op_ret, op_errno, inode, -                                buf, preparent, postparent, xdata) -                return 0 - -        def rmdir_fop(self, frame, this, loc, flags, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = uuid2str(loc.contents.inode.contents.gfid) -                print("GLUPY TRACE RMDIR FOP- {0:d}: gfid={1:s}; path={2:s}; "+ -                      "flags={3:d}").format(unique, gfid, loc.contents.path, -                                            flags) -                self.gfids[key] = gfid -                dl.wind_rmdir(frame, POINTER(xlator_t)(), loc, flags, xdata) -                return 0 - -        def rmdir_cbk(self, frame, cookie, this, op_ret, op_errno, preparent, -                      postparent, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = self.gfids[key] -                if op_ret == 0: -                        preparentstr = trace_stat2str(preparent) -                        postparentstr = trace_stat2str(postparent) -                        print("GLUPY TRACE RMDIR CBK- {0:d}: gfid={1:s}; "+ -                              "op_ret={2:d}; *prebuf={3:s}; "+ -                              "*postbuf={4:s}").format(unique, gfid, op_ret, -                                                       preparentstr, -                                                       postparentstr) -                else: -                        print("GLUPY TRACE RMDIR CBK- {0:d}: gfid={1:s}; "+ -                              "op_ret={2:d}; op_errno={3:d}").format(unique, -                                                                     gfid, -                                                                     op_ret, -                                                                     op_errno) -                del self.gfids[key] -                dl.unwind_rmdir(frame, cookie, this, op_ret, op_errno, -                                preparent, postparent, xdata) -                return 0 - -        def stat_fop(self, frame, this, loc, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = uuid2str(loc.contents.inode.contents.gfid) -                print("GLUPY TRACE STAT FOP- {0:d}: gfid={1:s}; " + -                      " path={2:s}").format(unique, gfid, loc.contents.path) -                self.gfids[key] = gfid -                dl.wind_stat(frame, POINTER(xlator_t)(), loc, xdata) -                return 0 - -        def stat_cbk(self, frame, cookie, this, op_ret, op_errno, buf, -                     xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = self.gfids[key] -                if op_ret == 0: -                        statstr = trace_stat2str(buf) -                        print("GLUPY TRACE STAT CBK- {0:d}: gfid={1:s}; "+ -                              "op_ret={2:d};  *buf={3:s};").format(unique, -                                                                   gfid, -                                                                   op_ret, -                                                                   statstr) -                else: -                        print("GLUPY TRACE STAT CBK- {0:d}: gfid={1:s}; "+ -                              "op_ret={2:d}; op_errno={3:d}").format(unique, -                                                                     gfid, -                                                                     op_ret, -                                                                     op_errno) -                del self.gfids[key] -                dl.unwind_stat(frame, cookie, this, op_ret, op_errno, -                               buf, xdata) -                return 0 - -        def fstat_fop(self, frame, this, fd, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = uuid2str(fd.contents.inode.contents.gfid) -                print("GLUPY TRACE FSTAT FOP- {0:d}:  gfid={1:s}; " + -                      "fd={2:s}").format(unique, gfid, fd) -                self.gfids[key] = gfid -                dl.wind_fstat(frame, POINTER(xlator_t)(), fd, xdata) -                return 0 - -        def fstat_cbk(self, frame, cookie, this, op_ret, op_errno, buf, -                      xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = self.gfids[key] -                if op_ret == 0: -                        statstr = trace_stat2str(buf) -                        print("GLUPY TRACE FSTAT CBK- {0:d}: gfid={1:s} "+ -                              " op_ret={2:d}; *buf={3:s}").format(unique, -                                                                  gfid, -                                                                  op_ret, -                                                                  statstr) -                else: -                        print("GLUPY TRACE FSTAT CBK- {0:d}: gfid={1:s} "+ -                              "op_ret={2:d}; op_errno={3:d}").format(unique. -                                                                     gfid, -                                                                     op_ret, -                                                                     op_errno) -                del self.gfids[key] -                dl.unwind_fstat(frame, cookie, this, op_ret, op_errno, -                                buf, xdata) -                return 0 - -        def statfs_fop(self, frame, this, loc, xdata): -                unique = dl.get_rootunique(frame) -                if loc.contents.inode: -                        gfid = uuid2str(loc.contents.inode.contents.gfid) -                else: -                        gfid = "0" -                print("GLUPY TRACE STATFS FOP- {0:d}: gfid={1:s}; "+ -                      "path={2:s}").format(unique, gfid, loc.contents.path) -                dl.wind_statfs(frame, POINTER(xlator_t)(), loc, xdata) -                return 0 - -        def statfs_cbk(self, frame, cookie, this, op_ret, op_errno, buf, -                       xdata): -                unique = dl.get_rootunique(frame) -                if op_ret == 0: -                        #TBD: print buf (pointer to an iovec type object) -                        print("GLUPY TRACE STATFS CBK {0:d}: "+ -                              "op_ret={1:d}").format(unique, op_ret) -                else: -                        print("GLUPY TRACE STATFS CBK-  {0:d}"+ -                              "op_ret={1:d}; op_errno={2:d}").format(unique, -                                                                     op_ret, -                                                                     op_errno) -                dl.unwind_statfs(frame, cookie, this, op_ret, op_errno, -                                 buf, xdata) -                return 0 - -        def getxattr_fop(self, frame, this, loc, name, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = uuid2str(loc.contents.inode.contents.gfid) -                print("GLUPY TRACE GETXATTR FOP- {0:d}: gfid={1:s}; path={2:s};"+ -                      " name={3:s}").format(unique, gfid, loc.contents.path, -                                            name) -                self.gfids[key]=gfid -                dl.wind_getxattr(frame, POINTER(xlator_t)(), loc, name, xdata) -                return 0 - -        def getxattr_cbk(self, frame, cookie, this, op_ret, op_errno, -                         dictionary, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = self.gfids[key] -                print("GLUPY TRACE GETXATTR CBK- {0:d}: gfid={1:s}; "+ -                      "op_ret={2:d}; op_errno={3:d}; "+ -                      " dictionary={4:s}").format(unique, gfid, op_ret, op_errno, -                                                  dictionary) -                del self.gfids[key] -                dl.unwind_getxattr(frame, cookie, this, op_ret, op_errno, -                                   dictionary, xdata) -                return 0 - -        def fgetxattr_fop(self, frame, this, fd, name, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = uuid2str(fd.contents.inode.contents.gfid) -                print("GLUPY TRACE FGETXATTR FOP- {0:d}: gfid={1:s}; fd={2:s}; "+ -                      "name={3:s}").format(unique, gfid, fd, name) -                self.gfids[key] = gfid -                dl.wind_fgetxattr(frame, POINTER(xlator_t)(), fd, name, xdata) -                return 0 - -        def fgetxattr_cbk(self, frame, cookie, this, op_ret, op_errno, -                          dictionary, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = self.gfids[key] -                print("GLUPY TRACE FGETXATTR CBK- {0:d}: gfid={1:s}; "+ -                      "op_ret={2:d}; op_errno={3:d};"+ -                      " dictionary={4:s}").format(unique, gfid, op_ret, -                                                  op_errno, dictionary) -                del self.gfids[key] -                dl.unwind_fgetxattr(frame, cookie, this, op_ret, op_errno, -                                    dictionary, xdata) -                return 0 - -        def setxattr_fop(self, frame, this, loc, dictionary, flags, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = uuid2str(loc.contents.inode.contents.gfid) -                print("GLUPY TRACE SETXATTR FOP- {0:d}:  gfid={1:s}; path={2:s};"+ -                      " flags={3:d}").format(unique, gfid, loc.contents.path, -                                             flags) -                self.gfids[key] = gfid -                dl.wind_setxattr(frame, POINTER(xlator_t)(), loc, dictionary, -                                 flags, xdata) -                return 0 - -        def setxattr_cbk(self, frame, cookie, this, op_ret, op_errno, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = self.gfids[key] -                print("GLUPY TRACE SETXATTR CBK- {0:d}: gfid={1:s}; "+ -                      "op_ret={2:d}; op_errno={3:d}").format(unique, gfid, -                                                             op_ret, op_errno) -                del self.gfids[key] -                dl.unwind_setxattr(frame, cookie, this, op_ret, op_errno, -                                   xdata) -                return 0 - -        def fsetxattr_fop(self, frame, this, fd, dictionary, flags, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = uuid2str(fd.contents.inode.contents.gfid) -                print("GLUPY TRACE FSETXATTR FOP- {0:d}: gfid={1:s}; fd={2:p}; "+ -                      "flags={3:d}").format(unique, gfid, fd, flags) -                self.gfids[key] = gfid -                dl.wind_fsetxattr(frame, POINTER(xlator_t)(), fd, dictionary, -                                  flags, xdata) -                return 0 - -        def fsetxattr_cbk(self, frame, cookie, this, op_ret, op_errno, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = self.gfids[key] -                print("GLUPY TRACE FSETXATTR CBK- {0:d}: gfid={1:s};  "+ -                      "op_ret={2:d}; op_errno={3:d}").format(unique, gfid, -                                                             op_ret, op_errno) -                del self.gfids[key] -                dl.unwind_fsetxattr(frame, cookie, this, op_ret, op_errno, -                                   xdata) -                return 0 - -        def removexattr_fop(self, frame, this, loc, name, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = uuid2str(loc.contents.inode.contents.gfid) -                print("GLUPY TRACE REMOVEXATTR FOP- {0:d}:  gfid={1:s}; "+ -                      "path={2:s}; name={3:s}").format(unique, gfid, -                                                       loc.contents.path, -                                                       name) -                self.gfids[key] = gfid -                dl.wind_removexattr(frame, POINTER(xlator_t)(), loc, name, -                                    xdata) -                return 0 - -        def removexattr_cbk(self, frame, cookie, this, op_ret, op_errno, -                            xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = self.gfids[key] -                print("GLUPY TRACE REMOVEXATTR CBK- {0:d}: gfid={1:s} "+ -                      " op_ret={2:d}; op_errno={3:d}").format(unique, gfid, -                                                              op_ret, op_errno) -                del self.gfids[key] -                dl.unwind_removexattr(frame, cookie, this, op_ret, op_errno, -                                      xdata) -                return 0 - -        def link_fop(self, frame, this, oldloc, newloc, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                if (newloc.contents.inode): -                        newgfid = uuid2str(newloc.contents.inode.contents.gfid) -                else: -                        newgfid = "0" -                oldgfid = uuid2str(oldloc.contents.inode.contents.gfid) -                print("GLUPY TRACE LINK FOP-{0:d}: oldgfid={1:s}; oldpath={2:s};"+ -                      "newgfid={3:s};"+ -                      "newpath={4:s}").format(unique, oldgfid, -                                              oldloc.contents.path, -                                              newgfid, -                                              newloc.contents.path) -                self.gfids[key] =  oldgfid -                dl.wind_link(frame, POINTER(xlator_t)(), oldloc, newloc, -                             xdata) -                return 0 - -        def link_cbk(self, frame, cookie, this, op_ret, op_errno, inode, buf, -                     preparent, postparent, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = self.gfids[key] -                if op_ret == 0: -                        statstr = trace_stat2str(buf) -                        preparentstr = trace_stat2str(preparent) -                        postparentstr = trace_stat2str(postparent) -                        print("GLUPY TRACE LINK CBK- {0:d}: op_ret={1:d} "+ -                              "*stbuf={2:s}; *prebuf={3:s}; "+ -                              "*postbuf={4:s} ").format(unique, op_ret, statstr, -                                                        preparentstr, -                                                        postparentstr) -                else: -                        print("GLUPY TRACE LINK CBK- {0:d}: gfid={1:s}; "+ -                              "op_ret={2:d}; "+ -                              "op_errno={3:d}").format(unique, gfid, -                                                       op_ret, op_errno) -                del self.gfids[key] -                dl.unwind_link(frame, cookie, this, op_ret, op_errno, inode, -                               buf, preparent, postparent, xdata) -                return 0 - -        def unlink_fop(self, frame, this, loc, xflag, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = uuid2str(loc.contents.inode.contents.gfid) -                print("GLUPY TRACE UNLINK FOP- {0:d}; gfid={1:s}; path={2:s}; "+ -                      "flag={3:d}").format(unique, gfid, loc.contents.path, -                                           xflag) -                self.gfids[key] = gfid -                dl.wind_unlink(frame, POINTER(xlator_t)(), loc, xflag, -                               xdata) -                return 0 - -        def unlink_cbk(self, frame, cookie, this, op_ret, op_errno, -                       preparent, postparent, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = self.gfids[key] -                if op_ret == 0: -                        preparentstr = trace_stat2str(preparent) -                        postparentstr = trace_stat2str(postparent) -                        print("GLUPY TRACE UNLINK CBK- {0:d}: gfid ={1:s}; "+ -                              "op_ret={2:d}; *prebuf={3:s}; "+ -                              "*postbuf={4:s} ").format(unique, gfid, op_ret, -                                                        preparentstr, -                                                        postparentstr) -                else: -                        print("GLUPY TRACE UNLINK CBK: {0:d}: gfid ={1:s}; "+ -                              "op_ret={2:d}; "+ -                              "op_errno={3:d}").format(unique, gfid, op_ret, -                                                       op_errno) -                del self.gfids[key] -                dl.unwind_unlink(frame, cookie, this, op_ret, op_errno, -                                 preparent, postparent, xdata) -                return 0 - -        def readlink_fop(self, frame, this, loc, size, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = uuid2str(loc.contents.inode.contents.gfid) -                print("GLUPY TRACE READLINK FOP- {0:d}:  gfid={1:s}; path={2:s};"+ -                      " size={3:d}").format(unique, gfid, loc.contents.path, -                                            size) -                self.gfids[key] = gfid -                dl.wind_readlink(frame, POINTER(xlator_t)(), loc, size, -                               xdata) -                return 0 - -        def readlink_cbk(self, frame, cookie, this, op_ret, op_errno, -                         buf, stbuf, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid  = self.gfids[key] -                if op_ret == 0: -                        statstr = trace_stat2str(stbuf) -                        print("GLUPY TRACE READLINK CBK- {0:d}: gfid={1:s} "+ -                              " op_ret={2:d}; op_errno={3:d}; *prebuf={4:s}; "+ -                              "*postbuf={5:s} ").format(unique, gfid, -                                                        op_ret, op_errno, -                                                        buf, statstr) -                else: -                        print("GLUPY TRACE READLINK CBK- {0:d}: gfid={1:s} "+ -                              " op_ret={2:d}; op_errno={3:d}").format(unique, -                                                                      gfid, -                                                                      op_ret, -                                                                      op_errno) -                del self.gfids[key] -                dl.unwind_readlink(frame, cookie, this, op_ret, op_errno, buf, -                                   stbuf, xdata) -                return 0 - -        def symlink_fop(self, frame, this, linkpath, loc, umask, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = uuid2str(loc.contents.inode.contents.gfid) -                print("GLUPY TRACE SYMLINK FOP- {0:d}: gfid={1:s}; "+ -                      "linkpath={2:s}; path={3:s};"+ -                      "umask=0{4:o}").format(unique, gfid, linkpath, -                                             loc.contents.path, umask) -                self.gfids[key] = gfid -                dl.wind_symlink(frame, POINTER(xlator_t)(), linkpath, loc, -                                umask, xdata) -                return 0 - -        def symlink_cbk(self, frame, cookie, this, op_ret, op_errno, -                        inode, buf, preparent, postparent, xdata): -                unique = dl.get_rootunique(frame) -                key = dl.get_id(frame) -                gfid = self.gfids[key] -                if op_ret == 0: -                        statstr = trace_stat2str(buf) -                        preparentstr = trace_stat2str(preparent) -                        postparentstr = trace_stat2str(postparent) -                        print("GLUPY TRACE SYMLINK CBK- {0:d}: gfid={1:s}; "+ -                              "op_ret={2:d}; *stbuf={3:s}; *preparent={4:s}; "+ -                              "*postparent={5:s}").format(unique, gfid, -                                                          op_ret, statstr, -                                                          preparentstr, -                                                          postparentstr) -                else: -                        print("GLUPY TRACE SYMLINK CBK- {0:d}: gfid={1:s}; "+ -                              "op_ret={2:d}; op_errno={3:d}").format(unique, -                                                                     gfid, -                                                                     op_ret, -                                                                     op_errno) -                del self.gfids[key] -                dl.unwind_symlink(frame, cookie, this, op_ret, op_errno, -                                  inode, buf, preparent, postparent, xdata) -                return 0 diff --git a/xlators/features/glupy/src/glupy.c b/xlators/features/glupy/src/glupy.c index dc86c0071e1..948b66f8d11 100644 --- a/xlators/features/glupy/src/glupy.c +++ b/xlators/features/glupy/src/glupy.c @@ -2365,7 +2365,7 @@ init (xlator_t *this)                  goto *err_cleanup;          } -        gf_log (this->name, GF_LOG_ERROR, "py_mod_name = %s", module_name); +        gf_log (this->name, GF_LOG_DEBUG, "py_mod_name = %s", module_name);          priv->py_module = PyImport_Import(py_mod_name);          Py_DECREF(py_mod_name);          if (!priv->py_module) { @@ -2375,6 +2375,7 @@ init (xlator_t *this)                  }                  goto *err_cleanup;          } +        gf_log (this->name, GF_LOG_INFO, "Import of %s succeeded", module_name);          err_cleanup = &&err_deref_module;          py_init_func = PyObject_GetAttrString(priv->py_module, "xlator"); @@ -2407,7 +2408,7 @@ init (xlator_t *this)                  }                  goto *err_cleanup;          } -        gf_log (this->name, GF_LOG_INFO, "init returned %p", priv->py_xlator); +        gf_log (this->name, GF_LOG_DEBUG, "init returned %p", priv->py_xlator);          return 0; diff --git a/xlators/features/glupy/src/gluster.py b/xlators/features/glupy/src/glupy.py index a5daa77d32a..a5daa77d32a 100644 --- a/xlators/features/glupy/src/gluster.py +++ b/xlators/features/glupy/src/glupy.py diff --git a/xlators/features/glupy/src/helloworld.py b/xlators/features/glupy/src/helloworld.py deleted file mode 100644 index 8fe4037118e..00000000000 --- a/xlators/features/glupy/src/helloworld.py +++ /dev/null @@ -1,19 +0,0 @@ -import sys -from gluster import * - -class xlator (Translator): - -    def __init__(self, c_this): -        Translator.__init__(self, c_this) - -    def lookup_fop(self, frame, this, loc, xdata): -        print "Python xlator: Hello!" -        dl.wind_lookup(frame, POINTER(xlator_t)(), loc, xdata) -        return 0 - -    def lookup_cbk(self, frame, cookie, this, op_ret, op_errno, inode, buf, -                   xdata, postparent): -        print "Python xlator: Hello again!" -        dl.unwind_lookup(frame, cookie, this, op_ret, op_errno, inode, buf, -                         xdata, postparent) -        return 0 diff --git a/xlators/features/glupy/src/negative.py b/xlators/features/glupy/src/negative.py deleted file mode 100644 index 1023602b9f3..00000000000 --- a/xlators/features/glupy/src/negative.py +++ /dev/null @@ -1,92 +0,0 @@ -import sys -from uuid import UUID -from gluster import * - -# Negative-lookup-caching example.  If a file wasn't there the last time we -# looked, it's probably still not there.  This translator keeps track of -# those failed lookups for us, and returns ENOENT without needing to pass the -# call any further for repeated requests. - -# If we were doing this for real, we'd need separate caches for each xlator -# instance.  The easiest way to do this would be to have xlator.__init__ -# "register" each instance in a module-global dict, with the key as the C -# translator address and the value as the xlator object itself.  For testing -# and teaching, it's sufficient just to have one cache.  The keys are parent -# GFIDs, and the entries are lists of names within that parent that we know -# don't exist. -cache = {} - -# TBD: we need a better way of handling per-request data (frame->local in C). -dl.get_id.restype = c_long -dl.get_id.argtypes = [ POINTER(call_frame_t) ] - -def uuid2str (gfid): -    return str(UUID(''.join(map("{0:02x}".format, gfid)))) - -class xlator (Translator): - -    def __init__ (self, c_this): -        self.requests = {} -        Translator.__init__(self,c_this) - -    def lookup_fop (self, frame, this, loc, xdata): -        pargfid = uuid2str(loc.contents.pargfid) -        print "lookup FOP: %s:%s" % (pargfid, loc.contents.name) -        # Check the cache. -        if cache.has_key(pargfid): -            if loc.contents.name in cache[pargfid]: -                print "short-circuiting for %s:%s" % (pargfid, -                    loc.contents.name) -                dl.unwind_lookup(frame,0,this,-1,2,None,None,None,None) -                return 0 -        key = dl.get_id(frame) -        self.requests[key] = (pargfid, loc.contents.name[:]) -        # TBD: get real child xl from init, pass it here -        dl.wind_lookup(frame,POINTER(xlator_t)(),loc,xdata) -        return 0 - -    def lookup_cbk (self, frame, cookie, this, op_ret, op_errno, inode, buf, -                    xdata, postparent): -        print "lookup CBK: %d (%d)" % (op_ret, op_errno) -        key = dl.get_id(frame) -        pargfid, name = self.requests[key] -        # Update the cache. -        if op_ret == 0: -            print "found %s, removing from cache" % name -            if cache.has_key(pargfid): -                cache[pargfid].discard(name) -        elif op_errno == 2:    # ENOENT -            print "failed to find %s, adding to cache" % name -            if cache.has_key(pargfid): -                cache[pargfid].add(name) -            else: -                cache[pargfid] = set([name]) -        del self.requests[key] -        dl.unwind_lookup(frame,cookie,this,op_ret,op_errno, -                         inode,buf,xdata,postparent) -        return 0 - -    def create_fop (self, frame, this, loc, flags, mode, umask, fd, xdata): -        pargfid = uuid2str(loc.contents.pargfid) -        print "create FOP: %s:%s" % (pargfid, loc.contents.name) -        key = dl.get_id(frame) -        self.requests[key] = (pargfid, loc.contents.name[:]) -        # TBD: get real child xl from init, pass it here -        dl.wind_create(frame,POINTER(xlator_t)(),loc,flags,mode,umask,fd,xdata) -        return 0 - -    def create_cbk (self, frame, cookie, this, op_ret, op_errno, fd, inode, -                    buf, preparent, postparent, xdata): -        print "create CBK: %d (%d)" % (op_ret, op_errno) -        key = dl.get_id(frame) -        pargfid, name = self.requests[key] -        # Update the cache. -        if op_ret == 0: -            print "created %s, removing from cache" % name -            if cache.has_key(pargfid): -                cache[pargfid].discard(name) -        del self.requests[key] -        dl.unwind_create(frame,cookie,this,op_ret,op_errno,fd,inode,buf, -                         preparent,postparent,xdata) -        return 0 - diff --git a/xlators/features/glupy/src/setup.py.in b/xlators/features/glupy/src/setup.py.in new file mode 100644 index 00000000000..1aea9875f0a --- /dev/null +++ b/xlators/features/glupy/src/setup.py.in @@ -0,0 +1,24 @@ +from distutils.core import setup + +DESC = """GlusterFS is a clustered file-system capable of scaling to +several petabytes. It aggregates various storage bricks over Infiniband +RDMA or TCP/IP interconnect into one large parallel network file system. +GlusterFS is one of the most sophisticated file systems in terms of +features and extensibility.  It borrows a powerful concept called +Translators from GNU Hurd kernel. Much of the code in GlusterFS is in +user space and easily manageable. + +This package contains Glupy, the Python translator interface for GlusterFS.""" + +setup( +    name='glusterfs-glupy', +    version='@PACKAGE_VERSION@', +    description='Glupy is the Python translator interface for GlusterFS', +    long_description=DESC, +    author='Gluster Community', +    author_email='gluster-devel@nongnu.org', +    license='LGPLv3', +    url='http://gluster.org/', +    package_dir={'gluster':''}, +    packages=['gluster'] +)  | 
