diff options
| -rw-r--r-- | events/src/glustereventsd.py | 2 | ||||
| -rwxr-xr-x | extras/create_new_xlator/generate_xlator.py | 2 | ||||
| -rwxr-xr-x | extras/failed-tests.py | 2 | ||||
| -rwxr-xr-x | extras/git-branch-diff.py | 4 | ||||
| -rwxr-xr-x | extras/prot_filter.py | 2 | ||||
| -rwxr-xr-x | extras/rebalance.py | 2 | ||||
| -rw-r--r-- | extras/volfilter.py | 2 | ||||
| -rw-r--r-- | geo-replication/src/peer_mountbroker.in | 21 | ||||
| -rw-r--r-- | geo-replication/src/peer_mountbroker.py.in | 7 | ||||
| -rw-r--r-- | geo-replication/syncdaemon/resource.py | 2 | ||||
| -rw-r--r-- | libglusterfs/src/gen-defaults.py | 10 | ||||
| -rwxr-xr-x | libglusterfs/src/generator.py | 209 | ||||
| -rwxr-xr-x | xlators/experimental/fdl/src/gen_dumper.py | 4 | ||||
| -rwxr-xr-x | xlators/experimental/fdl/src/gen_fdl.py | 2 | ||||
| -rwxr-xr-x | xlators/experimental/fdl/src/gen_recon.py | 14 | ||||
| -rwxr-xr-x | xlators/experimental/jbr-client/src/gen-fops.py | 8 | ||||
| -rwxr-xr-x | xlators/experimental/jbr-server/src/gen-fops.py | 6 | ||||
| -rw-r--r-- | xlators/features/cloudsync/src/cloudsync-fops-h.py | 2 | ||||
| -rw-r--r-- | xlators/features/glupy/src/glupy.c | 54 | ||||
| -rw-r--r-- | xlators/features/utime/src/utime-gen-fops-h.py | 2 | 
20 files changed, 195 insertions, 162 deletions
diff --git a/events/src/glustereventsd.py b/events/src/glustereventsd.py index 014f5a0009d..b61d1a1b28b 100644 --- a/events/src/glustereventsd.py +++ b/events/src/glustereventsd.py @@ -49,7 +49,7 @@ class GlusterEventsRequestHandler(SocketServer.BaseRequestHandler):              logger.warn("Unable to parse Event {0}".format(data))              return -        for k, v in data_dict.iteritems(): +        for k, v in data_dict.items():              try:                  if k in AUTO_BOOL_ATTRIBUTES:                      data_dict[k] = boolify(v) diff --git a/extras/create_new_xlator/generate_xlator.py b/extras/create_new_xlator/generate_xlator.py index 0a54089080c..67e2e9c6e17 100755 --- a/extras/create_new_xlator/generate_xlator.py +++ b/extras/create_new_xlator/generate_xlator.py @@ -67,7 +67,7 @@ def generate(tmpl, name, table):          sdict["@RET_TYPE@"] = string.join(ret_type, "")          sdict["@RET_VAR@"] = string.join(ret_var, "") -        for old, new in sdict.iteritems(): +        for old, new in sdict.items():                  tmpl = tmpl.replace(old, new)          # TBD: reindent/reformat the result for maximum readability.          return tmpl diff --git a/extras/failed-tests.py b/extras/failed-tests.py index 54406f91ad3..0f5ad38aa09 100755 --- a/extras/failed-tests.py +++ b/extras/failed-tests.py @@ -74,7 +74,7 @@ def print_summary(failed_builds, total_builds, html=False):              count[template],              {'failed': failed_builds, 'total': total_builds}      )) -    for k, v in summary.iteritems(): +    for k, v in summary.items():          if k == 'core':              print(''.join([TERM.red, "Found cores:", TERM.normal]))              for comp, link in zip(v[::2], v[1::2]): diff --git a/extras/git-branch-diff.py b/extras/git-branch-diff.py index 99cc707b837..3c29e35bd7b 100755 --- a/extras/git-branch-diff.py +++ b/extras/git-branch-diff.py @@ -217,7 +217,7 @@ class GitBranchDiff:          print(self.tick + " Successfully Backported changes:")          print('      {' + 'from: ' + self.s_pattern + \                '  to: '+ self.t_pattern + '}\n') -        for key, value in self.s_dict.iteritems(): +        for key, value in self.s_dict.items():              if value in self.t_dict.itervalues():                  print("[%s%s%s] %s" %(self.yello_set,                                        key, @@ -231,7 +231,7 @@ class GitBranchDiff:          else:              review_list = [] -        for key, value in self.s_dict.iteritems(): +        for key, value in self.s_dict.items():              if value not in self.t_dict.itervalues():                  if any(value in s for s in review_list):                      print("[%s%s%s] %s %s(under review)%s" %(self.yello_set, diff --git a/extras/prot_filter.py b/extras/prot_filter.py index e2b81218f40..3baa27c3f6d 100755 --- a/extras/prot_filter.py +++ b/extras/prot_filter.py @@ -91,7 +91,7 @@ def generate (graph, last, stream=sys.stdout):              sv.dumped = True      print("volume %s" % last.name, file=stream)      print("    type %s" % last.xl_type, file=stream) -    for k, v in last.opts.iteritems(): +    for k, v in last.opts.items():          print("    option %s %s" % (k, v), file=stream)      if last.subvols:          print("    subvolumes %s" % string.join( diff --git a/extras/rebalance.py b/extras/rebalance.py index 32ca067b32d..0023f9970a8 100755 --- a/extras/rebalance.py +++ b/extras/rebalance.py @@ -49,7 +49,7 @@ def generate_stanza (vf, all_xlators, cur_subvol):                  sv_list.append(sv.name)          vf.write("volume %s\n"%cur_subvol.name)          vf.write("  type %s\n"%cur_subvol.type) -        for kvpair in cur_subvol.opts.iteritems(): +        for kvpair in cur_subvol.opts.items():                  vf.write("  option %s %s\n"%kvpair)          if sv_list:                  vf.write("  subvolumes %s\n"%string.join(sv_list)) diff --git a/extras/volfilter.py b/extras/volfilter.py index da0a0e62ddb..ea4bf22a440 100644 --- a/extras/volfilter.py +++ b/extras/volfilter.py @@ -132,7 +132,7 @@ def generate (graph, last, stream=sys.stdout):  			sv.dumped = True  	print("volume %s" % last.name, file=stream)  	print("    type %s" % last.type, file=stream) -	for k, v in last.opts.iteritems(): +	for k, v in last.opts.items():  		print("    option %s %s" % (k, v), file=stream)  	if last.subvols:  		print("    subvolumes %s" % string.join( diff --git a/geo-replication/src/peer_mountbroker.in b/geo-replication/src/peer_mountbroker.in index 89bb0c0ba6f..5d19db88b80 100644 --- a/geo-replication/src/peer_mountbroker.in +++ b/geo-replication/src/peer_mountbroker.in @@ -1,11 +1,12 @@  #!/usr/bin/python2 +from __future__ import print_function +  import os  from argparse import ArgumentParser, RawDescriptionHelpFormatter  import json  import sys -  PROG_DESCRIPTION = """  GlusterFS Mountbroker user management  """ @@ -15,19 +16,19 @@ args = None  def ok(message=""):      if (not args and "-j" in sys.argv) or (args and args.json): -        print json.dumps({"ok": True, "message": message}) +        print(json.dumps({"ok": True, "message": message}))      else:          if message: -            print message +            print(message)      sys.exit(0)  def notok(message=""):      if (not args and "-j" in sys.argv) or (args and args.json): -        print json.dumps({"ok": False, "message": message}) +        print(json.dumps({"ok": False, "message": message}))      else: -        print "error: %s" % message +        print("error: %s" % message)      # Always return zero due to limitation while executing      # as `gluster system:: execute` @@ -65,7 +66,7 @@ class MountbrokerUserMgmt(object):      def _get_write_data(self):          op = "volume management\n"          op += "    type mgmt/glusterd\n" -        for k, v in self._options.iteritems(): +        for k, v in self._options.items():              op += "    option %s %s\n" % (k, v)          for line in self.commented_lines:              op += "    %s\n" % line @@ -88,7 +89,7 @@ class MountbrokerUserMgmt(object):      def add_user(self, user, volumes):          vols = set() -        for k, v in self._options.iteritems(): +        for k, v in self._options.items():              if k.startswith("mountbroker-geo-replication.") \                 and user == k.split(".")[-1]:                  vols.update(v.split(",")) @@ -99,7 +100,7 @@ class MountbrokerUserMgmt(object):      def remove_volume(self, user, volumes):          vols = set() -        for k, v in self._options.iteritems(): +        for k, v in self._options.items():              if k.startswith("mountbroker-geo-replication.") \                 and user == k.split(".")[-1]:                  vols.update(v.split(",")) @@ -119,7 +120,7 @@ class MountbrokerUserMgmt(object):      def info(self):          data = {"users": []} -        for k, v in self._options.iteritems(): +        for k, v in self._options.items():              if k.startswith("mountbroker-geo-replication."):                  data["users"].append(                      {"name": k.split(".")[-1], "volumes": v.split(",")} @@ -133,7 +134,7 @@ class MountbrokerUserMgmt(object):  def format_info(data):      op = "%s %s\n" % ("Option".ljust(50), "Value".ljust(50))      op += ("-" * 101) + "\n" -    for key, value in data.iteritems(): +    for key, value in data.items():          if key != "users":              op += "%s %s\n" % (key.ljust(50), value) diff --git a/geo-replication/src/peer_mountbroker.py.in b/geo-replication/src/peer_mountbroker.py.in index 8f2367b7d49..d101de561e4 100644 --- a/geo-replication/src/peer_mountbroker.py.in +++ b/geo-replication/src/peer_mountbroker.py.in @@ -1,4 +1,7 @@  #!/usr/bin/python2 + +from __future__ import print_function +  import os  from errno import EEXIST, ENOENT @@ -48,7 +51,7 @@ class MountbrokerUserMgmt(object):                  if line.startswith("#"):                      self.commented_lines.append(line) -        for k, v in self._options.iteritems(): +        for k, v in self._options.items():              if k.startswith("mountbroker-geo-replication."):                  user = k.split(".")[-1]                  self.user_volumes[user] = set(v.split(",")) @@ -59,7 +62,7 @@ class MountbrokerUserMgmt(object):      def _get_write_data(self):          op = "volume management\n"          op += "    type mgmt/glusterd\n" -        for k, v in self._options.iteritems(): +        for k, v in self._options.items():              if k.startswith("mountbroker-geo-replication."):                  # Users will be added seperately                  continue diff --git a/geo-replication/syncdaemon/resource.py b/geo-replication/syncdaemon/resource.py index e261812f39f..575a6605393 100644 --- a/geo-replication/syncdaemon/resource.py +++ b/geo-replication/syncdaemon/resource.py @@ -1325,7 +1325,7 @@ class SSH(object):          da0 = (rv, exrv)          da1 = ({}, {})          for i in range(2): -            for k, v in da0[i].iteritems(): +            for k, v in da0[i].items():                  da1[i][k] = int(v)          if da1[0] != da1[1]:              raise GsyncdError( diff --git a/libglusterfs/src/gen-defaults.py b/libglusterfs/src/gen-defaults.py index ccd5f5fc6c9..0c96fd0c176 100644 --- a/libglusterfs/src/gen-defaults.py +++ b/libglusterfs/src/gen-defaults.py @@ -61,15 +61,15 @@ default_@NAME@ (  """  def gen_defaults (): -	for name in ops.iterkeys(): +	for name in list(ops.keys()):  		print(generate(FAILURE_CBK_TEMPLATE, name, cbk_subs)) -	for name in ops.iterkeys(): +	for name in list(ops.keys()):  		print(generate(CBK_RESUME_TEMPLATE, name, cbk_subs)) -	for name in ops.iterkeys(): +	for name in list(ops.keys()):  		print(generate(CBK_TEMPLATE, name, cbk_subs)) -	for name in ops.iterkeys(): +	for name in list(ops.keys()):  		print(generate(RESUME_TEMPLATE, name, fop_subs)) -	for name in ops.iterkeys(): +	for name in list(ops.keys()):  		print(generate(FOP_TEMPLATE, name, fop_subs))  for l in open(sys.argv[1], 'r').readlines(): diff --git a/libglusterfs/src/generator.py b/libglusterfs/src/generator.py index 3b7df986f1f..64db4e8c479 100755 --- a/libglusterfs/src/generator.py +++ b/libglusterfs/src/generator.py @@ -543,170 +543,170 @@ ops['getspec'] = (  )  ops['lease'] = ( -        ('fop-arg',     'loc',                  'loc_t *'), -        ('fop-arg',     'lease',                'struct gf_lease *'), -        ('fop-arg',     'xdata',                'dict_t *'), -        ('cbk-arg',     'lease',                'struct gf_lease *'), -        ('cbk-arg',     'xdata',                'dict_t *'), +	('fop-arg',     'loc',                  'loc_t *'), +	('fop-arg',     'lease',                'struct gf_lease *'), +	('fop-arg',     'xdata',                'dict_t *'), +	('cbk-arg',     'lease',                'struct gf_lease *'), +	('cbk-arg',     'xdata',                'dict_t *'),  )  ops['getactivelk'] = ( -        ('fop-arg',     'loc',                  'loc_t *'), -        ('fop-arg',     'xdata',                'dict_t *'), -        ('cbk-arg',     'locklist',             'lock_migration_info_t *'), -        ('cbk-arg',     'xdata',                'dict_t *'), +	('fop-arg',     'loc',                  'loc_t *'), +	('fop-arg',     'xdata',                'dict_t *'), +	('cbk-arg',     'locklist',             'lock_migration_info_t *'), +	('cbk-arg',     'xdata',                'dict_t *'),  )  ops['setactivelk'] = ( -        ('fop-arg',     'loc',                  'loc_t *'), -        ('fop-arg',     'locklist',             'lock_migration_info_t *'), -        ('fop-arg',     'xdata',                'dict_t *'), -        ('cbk-arg',     'xdata',                'dict_t *'), +	('fop-arg',     'loc',                  'loc_t *'), +	('fop-arg',     'locklist',             'lock_migration_info_t *'), +	('fop-arg',     'xdata',                'dict_t *'), +	('cbk-arg',     'xdata',                'dict_t *'),  )  ops['put'] = ( -        ('fop-arg',     'loc',                  'loc_t *',                      'loc'), -        ('fop-arg',     'mode',                 'mode_t',                       'mode'), -        ('fop-arg',     'umask',                'mode_t',                       'umask'), -        ('fop-arg',     'flags',                'uint32_t',                     'flags'), -        ('fop-arg',     'vector',               'struct iovec *',               'vector'), -        ('fop-arg',     'count',                'int32_t'), -        ('fop-arg',     'off',                  'off_t',                        'offset'), -        ('fop-arg',     'iobref',               'struct iobref *'), -        ('fop-arg',     'dict',                 'dict_t *',                     'xattr'), -        ('fop-arg',     'xdata',                'dict_t *',                     'xdata'), -        ('cbk-arg',     'inode',                'inode_t *'), -        ('cbk-arg',     'buf',                  'struct iatt *'), -        ('cbk-arg',     'preparent',            'struct iatt *'), -        ('cbk-arg',     'postparent',           'struct iatt *'), -        ('cbk-arg',     'xdata',                'dict_t *'), +	('fop-arg',     'loc',                  'loc_t *',                      'loc'), +	('fop-arg',     'mode',                 'mode_t',                       'mode'), +	('fop-arg',     'umask',                'mode_t',                       'umask'), +	('fop-arg',     'flags',                'uint32_t',                     'flags'), +	('fop-arg',     'vector',               'struct iovec *',               'vector'), +	('fop-arg',     'count',                'int32_t'), +	('fop-arg',     'off',                  'off_t',                        'offset'), +	('fop-arg',     'iobref',               'struct iobref *'), +	('fop-arg',     'dict',                 'dict_t *',                     'xattr'), +	('fop-arg',     'xdata',                'dict_t *',                     'xdata'), +	('cbk-arg',     'inode',                'inode_t *'), +	('cbk-arg',     'buf',                  'struct iatt *'), +	('cbk-arg',     'preparent',            'struct iatt *'), +	('cbk-arg',     'postparent',           'struct iatt *'), +	('cbk-arg',     'xdata',                'dict_t *'),  )  ops['icreate'] = ( -        ('fop-arg',     'loc',                   'loc_t *'), -        ('fop-arg',     'mode',                  'mode_t'), -        ('fop-arg',     'xdata',                 'dict_t *'), -        ('cbk-arg',     'inode',                 'inode_t *'), -        ('cbk-arg',     'buf',                   'struct iatt *'), -        ('cbk-arg',     'xdata',                 'dict_t *'), +	('fop-arg',     'loc',                   'loc_t *'), +	('fop-arg',     'mode',                  'mode_t'), +	('fop-arg',     'xdata',                 'dict_t *'), +	('cbk-arg',     'inode',                 'inode_t *'), +	('cbk-arg',     'buf',                   'struct iatt *'), +	('cbk-arg',     'xdata',                 'dict_t *'),  )  ops['namelink'] = ( -        ('fop-arg',     'loc',                   'loc_t *'), -        ('fop-arg',     'xdata',                 'dict_t *'), -        ('cbk-arg',     'prebuf',                'struct iatt *'), -        ('cbk-arg',     'postbuf',               'struct iatt *'), -        ('cbk-arg',     'xdata',                 'dict_t *'), +	('fop-arg',     'loc',                   'loc_t *'), +	('fop-arg',     'xdata',                 'dict_t *'), +	('cbk-arg',     'prebuf',                'struct iatt *'), +	('cbk-arg',     'postbuf',               'struct iatt *'), +	('cbk-arg',     'xdata',                 'dict_t *'),  )  #####################################################################  xlator_cbks['forget'] = ( -        ('fn-arg',      'this',        'xlator_t *'), -        ('fn-arg',      'inode',       'inode_t *'), +	('fn-arg',      'this',        'xlator_t *'), +	('fn-arg',      'inode',       'inode_t *'),  	('ret-val',     'int32_t',     '0'),  )  xlator_cbks['release'] = ( -        ('fn-arg',      'this',        'xlator_t *'), -        ('fn-arg',      'fd',          'fd_t *'), -        ('ret-val',     'int32_t',     '0'), +	('fn-arg',      'this',        'xlator_t *'), +	('fn-arg',      'fd',          'fd_t *'), +	('ret-val',     'int32_t',     '0'),  )  xlator_cbks['releasedir'] = ( -        ('fn-arg',      'this',        'xlator_t *'), -        ('fn-arg',      'fd',          'fd_t *'), -        ('ret-val',     'int32_t',     '0'), +	('fn-arg',      'this',        'xlator_t *'), +	('fn-arg',      'fd',          'fd_t *'), +	('ret-val',     'int32_t',     '0'),  )  xlator_cbks['invalidate'] = ( -        ('fn-arg',      'this',        'xlator_t *'), -        ('fn-arg',      'inode',       'inode_t *'), -        ('ret-val',     'int32_t',     '0'), +	('fn-arg',      'this',        'xlator_t *'), +	('fn-arg',      'inode',       'inode_t *'), +	('ret-val',     'int32_t',     '0'),  )  xlator_cbks['client_destroy'] = ( -        ('fn-arg',      'this',        'xlator_t *'), -        ('fn-arg',      'client',      'client_t *'), -        ('ret-val',     'int32_t',     '0'), +	('fn-arg',      'this',        'xlator_t *'), +	('fn-arg',      'client',      'client_t *'), +	('ret-val',     'int32_t',     '0'),  )  xlator_cbks['client_disconnect'] = ( -        ('fn-arg',      'this',        'xlator_t *'), -        ('fn-arg',      'client',      'client_t *'), -        ('ret-val',     'int32_t',     '0'), +	('fn-arg',      'this',        'xlator_t *'), +	('fn-arg',      'client',      'client_t *'), +	('ret-val',     'int32_t',     '0'),  )  xlator_cbks['ictxmerge'] = ( -        ('fn-arg',      'this',        'xlator_t *'), -        ('fn-arg',      'fd',          'fd_t *'), -        ('fn-arg',      'inode',       'inode_t *'), -        ('fn-arg',      'linked_inode', 'inode_t *'), -        ('ret-val',     'void',        ''), +	('fn-arg',      'this',        'xlator_t *'), +	('fn-arg',      'fd',          'fd_t *'), +	('fn-arg',      'inode',       'inode_t *'), +	('fn-arg',      'linked_inode', 'inode_t *'), +	('ret-val',     'void',        ''),  )  #####################################################################  xlator_dumpops['priv'] = ( -        ('fn-arg',      'this',        'xlator_t *'), -        ('ret-val',     'int32_t',     '0'), +	('fn-arg',      'this',        'xlator_t *'), +	('ret-val',     'int32_t',     '0'),  )  xlator_dumpops['inode'] = ( -        ('fn-arg',      'this',        'xlator_t *'), -        ('ret-val',     'int32_t',     '0'), +	('fn-arg',      'this',        'xlator_t *'), +	('ret-val',     'int32_t',     '0'),  )  xlator_dumpops['fd'] = ( -        ('fn-arg',      'this',        'xlator_t *'), -        ('ret-val',     'int32_t',     '0'), +	('fn-arg',      'this',        'xlator_t *'), +	('ret-val',     'int32_t',     '0'),  )  xlator_dumpops['inodectx'] = ( -        ('fn-arg',      'this',        'xlator_t *'), -        ('fn-arg',      'ino',         'inode_t *'), -        ('ret-val',     'int32_t',     '0'), +	('fn-arg',      'this',        'xlator_t *'), +	('fn-arg',      'ino',         'inode_t *'), +	('ret-val',     'int32_t',     '0'),  )  xlator_dumpops['fdctx'] = ( -        ('fn-arg',      'this',        'xlator_t *'), -        ('fn-arg',      'fd',          'fd_t *'), -        ('ret-val',     'int32_t',     '0'), +	('fn-arg',      'this',        'xlator_t *'), +	('fn-arg',      'fd',          'fd_t *'), +	('ret-val',     'int32_t',     '0'),  )  xlator_dumpops['priv_to_dict'] = ( -        ('fn-arg',      'this',        'xlator_t *'), -        ('fn-arg',      'dict',        'dict_t *'), -        ('ret-val',     'int32_t',     '0'), +	('fn-arg',      'this',        'xlator_t *'), +	('fn-arg',      'dict',        'dict_t *'), +	('ret-val',     'int32_t',     '0'),  )  xlator_dumpops['inode_to_dict'] = ( -        ('fn-arg',      'this',        'xlator_t *'), -        ('fn-arg',      'dict',        'dict_t *'), -        ('ret-val',     'int32_t',     '0'), +	('fn-arg',      'this',        'xlator_t *'), +	('fn-arg',      'dict',        'dict_t *'), +	('ret-val',     'int32_t',     '0'),  )  xlator_dumpops['fd_to_dict'] = ( -        ('fn-arg',      'this',        'xlator_t *'), -        ('fn-arg',      'dict',        'dict_t *'), -        ('ret-val',     'int32_t',     '0'), +	('fn-arg',      'this',        'xlator_t *'), +	('fn-arg',      'dict',        'dict_t *'), +	('ret-val',     'int32_t',     '0'),  )  xlator_dumpops['inodectx_to_dict'] = ( -        ('fn-arg',      'this',        'xlator_t *'), -        ('fn-arg',      'ino',         'inode_t *'), -        ('fn-arg',      'dict',        'dict_t *'), -        ('ret-val',     'int32_t',     '0'), +	('fn-arg',      'this',        'xlator_t *'), +	('fn-arg',      'ino',         'inode_t *'), +	('fn-arg',      'dict',        'dict_t *'), +	('ret-val',     'int32_t',     '0'),  )  xlator_dumpops['fdctx_to_dict'] = ( -        ('fn-arg',      'this',        'xlator_t *'), -        ('fn-arg',      'fd',          'fd_t *'), -        ('fn-arg',      'dict',        'dict_t *'), -        ('ret-val',     'int32_t',     '0'), +	('fn-arg',      'this',        'xlator_t *'), +	('fn-arg',      'fd',          'fd_t *'), +	('fn-arg',      'dict',        'dict_t *'), +	('ret-val',     'int32_t',     '0'),  )  xlator_dumpops['history'] = ( -        ('fn-arg',      'this',        'xlator_t *'), -        ('ret-val',     'int32_t',     '0'), +	('fn-arg',      'this',        'xlator_t *'), +	('ret-val',     'int32_t',     '0'),  )  def get_error_arg (type_str): @@ -716,18 +716,17 @@ def get_error_arg (type_str):  def get_subs (names, types, cbktypes=None):  	sdict = {} -	sdict["@SHORT_ARGS@"] = string.join(names, ", ") +	sdict["@SHORT_ARGS@"] = ', '.join(names)  	# Convert two separate tuples to one of (name, type) sub-tuples.  	as_tuples = list(zip(types, names))  	# Convert each sub-tuple into a "type name" string. -	as_strings = list(map(string.join, as_tuples)) +	as_strings = [' '.join(item) for item in as_tuples]  	# Join all of those into one big string. -	sdict["@LONG_ARGS@"] = string.join(as_strings, ",\n\t") +	sdict["@LONG_ARGS@"] = ',\n\t'.join(as_strings)  	# So much more readable than string.join(map(string.join,zip(...)))) -	sdict["@ERROR_ARGS@"] = string.join(list(map(get_error_arg, types)), ", ") -        if cbktypes is not None: -                sdict["@CBK_ERROR_ARGS@"] = string.join(list(map( -                                            get_error_arg, cbktypes)), ", ") +	sdict["@ERROR_ARGS@"] = ', '.join(list(map(get_error_arg, types))) +	if cbktypes is not None: +		sdict["@CBK_ERROR_ARGS@"] = ', '.join(list(map(get_error_arg, cbktypes)))  	return sdict  def generate (tmpl, name, subs): @@ -735,24 +734,24 @@ def generate (tmpl, name, subs):  	if name == "writev":  		# More spurious inconsistency.  		text = text.replace("@UPNAME@", "WRITE") -        elif name == "readv": -                text = text.replace("@UPNAME@", "READ") +	elif name == "readv": +		text = text.replace("@UPNAME@", "READ")  	else:  		text = text.replace("@UPNAME@", name.upper()) -	for old, new in subs[name].iteritems(): +	for old, new in subs[name].items():  		text = text.replace(old, new)  	# TBD: reindent/reformat the result for maximum readability. -	return  text +	return text  fop_subs = {}  cbk_subs = {} -for name, args in ops.iteritems(): +for name, args in ops.items():  	# Create the necessary substitution strings for fops.  	arg_names = [ a[1] for a in args if a[0] == 'fop-arg']  	arg_types = [ a[2] for a in args if a[0] == 'fop-arg'] -        cbk_types = [ a[2] for a in args if a[0] == 'cbk-arg'] +	cbk_types = [ a[2] for a in args if a[0] == 'cbk-arg']  	fop_subs[name] = get_subs(arg_names, arg_types, cbk_types)  	# Same thing for callbacks. diff --git a/xlators/experimental/fdl/src/gen_dumper.py b/xlators/experimental/fdl/src/gen_dumper.py index 95313adefcc..c15f7c8870d 100755 --- a/xlators/experimental/fdl/src/gen_dumper.py +++ b/xlators/experimental/fdl/src/gen_dumper.py @@ -73,7 +73,7 @@ def get_special_subs (args):  def gen_functions ():  	code = "" -	for name, value in ops.iteritems(): +	for name, value in ops.items():  		if "journal" not in [ x[0] for x in value ]:  			continue  		fop_subs[name]["@FUNCTION_BODY@"] = get_special_subs(value) @@ -83,7 +83,7 @@ def gen_functions ():  def gen_cases ():  	code = "" -	for name, value in ops.iteritems(): +	for name, value in ops.items():  		if "journal" not in [ x[0] for x in value ]:  			continue  		# Add the CASE fragment for this fop. diff --git a/xlators/experimental/fdl/src/gen_fdl.py b/xlators/experimental/fdl/src/gen_fdl.py index e8f97dc9957..8647ba7b6f1 100755 --- a/xlators/experimental/fdl/src/gen_fdl.py +++ b/xlators/experimental/fdl/src/gen_fdl.py @@ -310,7 +310,7 @@ selective_generate = {  def gen_fdl ():  	entrypoints = [] -	for name, value in ops.iteritems(): +	for name, value in ops.items():  		if "journal" not in [ x[0] for x in value ]:  			continue diff --git a/xlators/experimental/fdl/src/gen_recon.py b/xlators/experimental/fdl/src/gen_recon.py index ff5b5e16066..c6b3b02a2fe 100755 --- a/xlators/experimental/fdl/src/gen_recon.py +++ b/xlators/experimental/fdl/src/gen_recon.py @@ -142,14 +142,14 @@ def get_special_subs (name, args, fop_type):  		# is not stored in or read from the journal.  There are other ways to  		# do that, but this is the only place we need anything similar and we  		# already have to treat it as a special case so this is simplest. -               s_args_str = 'fd, &vector, 1, off, iobref, flags, &preop, &postop, xdata' +	       s_args_str = 'fd, &vector, 1, off, iobref, flags, &preop, &postop, xdata'  	elif name == 'symlink':  		# Swap 'linkpath' and 'loc'.  		s_args_str = '&loc, linkpath, &iatt, xdata' -        elif name == 'xattrop': -                s_args_str = '&loc, flags, dict, xdata, NULL' -        elif name == 'fxattrop': -                s_args_str = 'fd, flags, dict, xdata, NULL' +	elif name == 'xattrop': +	        s_args_str = '&loc, flags, dict, xdata, NULL' +	elif name == 'fxattrop': +	        s_args_str = 'fd, flags, dict, xdata, NULL'  	else:  		s_args_str = string.join (s_args, ", ")  	return code, links, s_args_str, cleanups @@ -162,7 +162,7 @@ def get_special_subs (name, args, fop_type):  # an error is detected.  This will probably get messy.  def gen_functions ():  	code = "" -	for name, value in ops.iteritems(): +	for name, value in ops.items():  		fop_type = [ x[1] for x in value if x[0] == "journal" ]  		if not fop_type:  			continue @@ -184,7 +184,7 @@ def gen_functions ():  def gen_cases ():  	code = "" -	for name, value in ops.iteritems(): +	for name, value in ops.items():  		if "journal" not in [ x[0] for x in value ]:  			continue  		# Add the CASE fragment for this fop. diff --git a/xlators/experimental/jbr-client/src/gen-fops.py b/xlators/experimental/jbr-client/src/gen-fops.py index 1962d2f8067..47b339910d4 100755 --- a/xlators/experimental/jbr-client/src/gen-fops.py +++ b/xlators/experimental/jbr-client/src/gen-fops.py @@ -14,7 +14,7 @@ from generator import ops, fop_subs, cbk_subs, generate  # We really want the callback argument list, even when we're generating fop  # code, so we propagate here.  # TBD: this should probably be right in generate.py -for k, v in cbk_subs.iteritems(): +for k, v in cbk_subs.items():  	fop_subs[k]['@ERROR_ARGS@'] = v['@ERROR_ARGS@']  # Stolen from old codegen.py @@ -29,18 +29,18 @@ def load_templates (path):  		m = tmpl_re.match(line)  		if m:  			if t_name: -				templates[t_name] = string.join(t_contents, '') +				templates[t_name] = ''.join(t_contents)  			t_name = m.group(1).strip()  			t_contents = []  		elif t_name:  			t_contents.append(line)  	if t_name: -		templates[t_name] = string.join(t_contents, '') +		templates[t_name] = ''.join(t_contents)  	return templates  # Stolen from gen_fdl.py  def gen_client (templates): -	for name, value in ops.iteritems(): +	for name, value in ops.items():  		if name == 'getspec':  			# It's not real if it doesn't have a stub function.  			continue diff --git a/xlators/experimental/jbr-server/src/gen-fops.py b/xlators/experimental/jbr-server/src/gen-fops.py index c4c87556cb3..bf6ff912d0c 100755 --- a/xlators/experimental/jbr-server/src/gen-fops.py +++ b/xlators/experimental/jbr-server/src/gen-fops.py @@ -19,7 +19,7 @@ from generator import ops, fop_subs, cbk_subs, generate  # We really want the callback argument list, even when we're generating fop  # code, so we propagate here.  # TBD: this should probably be right in generate.py -for k, v in cbk_subs.iteritems(): +for k, v in cbk_subs.items():  	fop_subs[k]['@ERROR_ARGS@'] = v['@ERROR_ARGS@']  # Stolen from old codegen.py @@ -34,13 +34,13 @@ def load_templates (path):  		m = tmpl_re.match(line)  		if m:  			if t_name: -				templates[t_name] = string.join(t_contents, '') +				templates[t_name] = ''.join(t_contents)  			t_name = m.group(1).strip()  			t_contents = []  		elif t_name:  			t_contents.append(line)  	if t_name: -		templates[t_name] = string.join(t_contents, '') +		templates[t_name] = ''.join(t_contents)  	return templates  # We need two types of templates.  The first, for pure read operations, just diff --git a/xlators/features/cloudsync/src/cloudsync-fops-h.py b/xlators/features/cloudsync/src/cloudsync-fops-h.py index 37dfa5b10be..8a97cd0fcdd 100644 --- a/xlators/features/cloudsync/src/cloudsync-fops-h.py +++ b/xlators/features/cloudsync/src/cloudsync-fops-h.py @@ -16,7 +16,7 @@ cs_@NAME@ (call_frame_t *frame, xlator_t *this,  """  def gen_defaults(): -    for name, value in ops.iteritems(): +    for name, value in ops.items():          if name == 'getspec':              continue          print(generate(OP_FOP_TEMPLATE, name, fop_subs)) diff --git a/xlators/features/glupy/src/glupy.c b/xlators/features/glupy/src/glupy.c index 46d1af5533a..bacccfef686 100644 --- a/xlators/features/glupy/src/glupy.c +++ b/xlators/features/glupy/src/glupy.c @@ -2317,6 +2317,41 @@ mem_acct_init (xlator_t *this)          return ret;  } +static void +py_error_log(const char *name, PyObject *pystr) +{ +#if PY_MAJOR_VERSION > 2 +        char            scr[256]; +        if (PyUnicode_Check(pystr)) { +                PyObject *tmp = +                        PyUnicode_AsEncodedString(pystr, "UTF-8", "strict"); +                if (tmp != NULL) { +                        strncpy(scr, PyBytes_AS_STRING(pystr), sizeof(scr)); +                        Py_DECREF(tmp); +                } else { +                        strncpy(scr, "string encoding error", sizeof(scr)); +                } +        } else if (PyBytes_Check(pystr)) { +                strncpy(scr, PyBytes_AS_STRING(pystr), sizeof(scr)); +        } else { +                strncpy(scr, "string encoding error", sizeof(scr)); +        } +        gf_log (name, GF_LOG_ERROR, "Python error: %s", scr); +#else +        gf_log (name, GF_LOG_ERROR, "Python error: %s", PyString_AsString(pystr)); +#endif +} + +static PyObject * +encode (const char *str) +{ +#if PY_MAJOR_VERSION > 2 +        return PyUnicode_FromString(str); +#else +        return PyString_FromString(str); +#endif +} +  int32_t  init (xlator_t *this)  { @@ -2385,17 +2420,16 @@ init (xlator_t *this)  	/* Adjust python's path */  	syspath = PySys_GetObject("path"); -	path = PyString_FromString(GLUSTER_PYTHON_PATH); +	path = encode(GLUSTER_PYTHON_PATH);  	PyList_Append(syspath, path);  	Py_DECREF(path); -	py_mod_name = PyString_FromString(module_name); +	py_mod_name = encode(module_name);          if (!py_mod_name) {                  gf_log (this->name, GF_LOG_ERROR, "could not create name");                  if (PyErr_Occurred()) {                          PyErr_Fetch (&error_type, &error_msg, &error_bt); -                        gf_log (this->name, GF_LOG_ERROR, "Python error: %s", -                                PyString_AsString(error_msg)); +                        py_error_log(this->name, error_msg);                  }                  goto *err_cleanup;          } @@ -2408,8 +2442,7 @@ init (xlator_t *this)                          module_name);                  if (PyErr_Occurred()) {                          PyErr_Fetch (&error_type, &error_msg, &error_bt); -                        gf_log (this->name, GF_LOG_ERROR, "Python error: %s", -                                PyString_AsString(error_msg)); +                        py_error_log (this->name, error_msg);                  }                  goto *err_cleanup;          } @@ -2421,8 +2454,7 @@ init (xlator_t *this)                  gf_log (this->name, GF_LOG_ERROR, "missing init func");                  if (PyErr_Occurred()) {                          PyErr_Fetch (&error_type, &error_msg, &error_bt); -                        gf_log (this->name, GF_LOG_ERROR, "Python error: %s", -                                PyString_AsString(error_msg)); +                        py_error_log (this->name, error_msg);                  }                  goto *err_cleanup;          } @@ -2433,8 +2465,7 @@ init (xlator_t *this)                  gf_log (this->name, GF_LOG_ERROR, "could not create args");                  if (PyErr_Occurred()) {                          PyErr_Fetch (&error_type, &error_msg, &error_bt); -                        gf_log (this->name, GF_LOG_ERROR, "Python error: %s", -                                PyString_AsString(error_msg)); +                        py_error_log (this->name, error_msg);                  }                  goto *err_cleanup;          } @@ -2447,8 +2478,7 @@ init (xlator_t *this)                  gf_log (this->name, GF_LOG_ERROR, "Python init failed");                  if (PyErr_Occurred()) {                          PyErr_Fetch (&error_type, &error_msg, &error_bt); -                        gf_log (this->name, GF_LOG_ERROR, "Python error: %s", -                                PyString_AsString(error_msg)); +                        py_error_log (this->name, error_msg);                  }                  goto *err_cleanup;          } diff --git a/xlators/features/utime/src/utime-gen-fops-h.py b/xlators/features/utime/src/utime-gen-fops-h.py index 9c297062929..e04cbd41293 100644 --- a/xlators/features/utime/src/utime-gen-fops-h.py +++ b/xlators/features/utime/src/utime-gen-fops-h.py @@ -21,7 +21,7 @@ utime_ops = ['fallocate', 'zerofill', 'opendir', 'mknod', 'mkdir',               'readv', 'writev', 'setattr', 'fsetattr']  def gen_defaults(): -    for name, value in ops.iteritems(): +    for name, value in ops.items():          if name in utime_ops:              print(generate(OP_FOP_TEMPLATE, name, fop_subs))  | 
