commit python-raet for openSUSE:Factory
Hello community, here is the log from the commit of package python-raet for openSUSE:Factory checked in at 2014-07-18 06:40:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-raet (Old) and /work/SRC/openSUSE:Factory/.python-raet.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "python-raet" Changes: -------- --- /work/SRC/openSUSE:Factory/python-raet/python-raet.changes 2014-07-17 17:31:30.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.python-raet.new/python-raet.changes 2014-07-18 06:41:30.000000000 +0200 @@ -1,0 +2,7 @@ +Thu Jul 17 19:28:17 UTC 2014 - aboe76@gmail.com + +- Updated to 0.2.4 + - Fixed race condition in Yarding makedirs + - Road Keep files are now stored by name not uid + +------------------------------------------------------------------- Old: ---- raet-0.2.3.tar.gz New: ---- raet-0.2.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-raet.spec ++++++ --- /var/tmp/diff_new_pack.tlmqsy/_old 2014-07-18 06:41:31.000000000 +0200 +++ /var/tmp/diff_new_pack.tlmqsy/_new 2014-07-18 06:41:31.000000000 +0200 @@ -16,7 +16,7 @@ # Name: python-raet -Version: 0.2.3 +Version: 0.2.4 Release: 0 License: Apache-2.0 Summary: Reliable Asynchronous Event Transport protocol ++++++ raet-0.2.3.tar.gz -> raet-0.2.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/raet-0.2.3/PKG-INFO new/raet-0.2.4/PKG-INFO --- old/raet-0.2.3/PKG-INFO 2014-07-15 01:57:25.000000000 +0200 +++ new/raet-0.2.4/PKG-INFO 2014-07-16 01:53:26.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: raet -Version: 0.2.3 +Version: 0.2.4 Summary: Reliable Asynchronous Event Transport protocol Home-page: https://github.com/saltstack/raet Author: Samuel M. Smith diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/raet-0.2.3/raet/__metadata__.py new/raet-0.2.4/raet/__metadata__.py --- old/raet-0.2.3/raet/__metadata__.py 2014-07-15 01:54:43.000000000 +0200 +++ new/raet-0.2.4/raet/__metadata__.py 2014-07-16 01:50:22.000000000 +0200 @@ -2,7 +2,7 @@ Raet package metadata ''' -__version_info__ = (0, 2, 3) +__version_info__ = (0, 2, 4) __version__ = '{0}.{1}.{2}'.format(*__version_info__) __author__ = "Samuel M. Smith" __license__ = "Apache2" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/raet-0.2.3/raet/keeping.py new/raet-0.2.4/raet/keeping.py --- old/raet-0.2.3/raet/keeping.py 2014-07-15 01:54:43.000000000 +0200 +++ new/raet-0.2.4/raet/keeping.py 2014-07-16 01:46:04.000000000 +0200 @@ -52,8 +52,8 @@ local/ prefix.ext remote/ - prefix.uid.ext - prefix.uid.ext + prefix.name.ext + prefix.name.ext ''' if not dirpath: if not basedirpath: @@ -181,38 +181,44 @@ remoteFields = remoteFields if remoteFields is not None else self.RemoteFields return (set(remoteFields) == set(data.keys())) - def dumpRemoteData(self, data, uid): + def dumpRemoteData(self, data, name): ''' - Dump the remote data to file named with uid + Dump the remote data to file ''' + #filepath = os.path.join(self.remotedirpath, + #"{0}.{1}.{2}".format(self.prefix, uid, self.ext)) filepath = os.path.join(self.remotedirpath, - "{0}.{1}.{2}".format(self.prefix, uid, self.ext)) + "{0}.{1}.{2}".format(self.prefix, name, self.ext)) self.dump(data, filepath) def dumpAllRemoteData(self, datadict): ''' - Dump the data in the datadict keyed by uid to remote data files + Dump the data in the datadict keyed by name to remote data files ''' - for uid, data in datadict.items(): - self.dumpRemoteData(data, uid) + for name, data in datadict.items(): + self.dumpRemoteData(data, name) - def loadRemoteData(self, uid): + def loadRemoteData(self, name): ''' - Load and Return the data from the remote file named with uid + Load and Return the data from the remote file ''' + #filepath = os.path.join(self.remotedirpath, + #"{0}.{1}.{2}".format(self.prefix, uid, self.ext)) filepath = os.path.join(self.remotedirpath, - "{0}.{1}.{2}".format(self.prefix, uid, self.ext)) + "{0}.{1}.{2}".format(self.prefix, name, self.ext)) if not os.path.exists(filepath): return None return (self.load(filepath)) - def clearRemoteData(self, uid): + def clearRemoteData(self, name): ''' - Clear data from the remote data file named with uid + Clear data from the remote data file ''' + #filepath = os.path.join(self.remotedirpath, + #"{0}.{1}.{2}".format(self.prefix, uid, self.ext)) filepath = os.path.join(self.remotedirpath, - "{0}.{1}.{2}".format(self.prefix, uid, self.ext)) + "{0}.{1}.{2}".format(self.prefix, name, self.ext)) if os.path.exists(filepath): os.remove(filepath) @@ -227,18 +233,18 @@ def loadAllRemoteData(self): ''' Load and Return the datadict from the all the remote data files - indexed by uid in filenames + indexed by name in filenames ''' datadict = odict() for filename in os.listdir(self.remotedirpath): root, ext = os.path.splitext(filename) if ext != '.json' or not root.startswith(self.prefix): continue - prefix, sep, uid = root.partition('.') - if not uid or prefix != self.prefix: + prefix, sep, name = root.partition('.') + if not name or prefix != self.prefix: continue filepath = os.path.join(self.remotedirpath, filename) - datadict[uid] = self.load(filepath) + datadict[name] = self.load(filepath) return datadict def clearAllRemoteData(self): @@ -282,20 +288,19 @@ ]) if self.verifyRemoteData(data): - self.dumpRemoteData(data, remote.uid) + self.dumpRemoteData(data, remote.name) def loadRemote(self, remote): ''' - Load the data from file given by remote.uid + Load the data from file given by remote.name ''' - return (self.loadRemoteData(remote.uid)) + return (self.loadRemoteData(remote.name)) def clearRemote(self, remote): ''' Clear the remote estate file - Override this in sub class to change uid ''' - self.clearRemoteData(remote.uid) + self.clearRemoteData(remote.name) def replaceRemote(self, remote, old): ''' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/raet-0.2.3/raet/lane/yarding.py new/raet-0.2.4/raet/lane/yarding.py --- old/raet-0.2.3/raet/lane/yarding.py 2014-07-09 04:02:45.000000000 +0200 +++ new/raet-0.2.4/raet/lane/yarding.py 2014-07-16 01:46:04.000000000 +0200 @@ -7,6 +7,7 @@ # Import python libs import socket import os +import errno # Import ioflo libs from ioflo.base.odicting import odict @@ -84,12 +85,25 @@ except OSError as ex: dirpath = os.path.abspath(os.path.expanduser(ALT_YARD_UXD_DIR)) if not os.path.exists(dirpath): - os.makedirs(dirpath) + try: + os.makedirs(dirpath) + except OSError as ex: + if ex.errno == errno.EEXIST: + pass # race condition + else: + raise else: if not os.access(dirpath, os.R_OK | os.W_OK): dirpath = os.path.abspath(os.path.expanduser(ALT_YARD_UXD_DIR)) if not os.path.exists(dirpath): - os.makedirs(dirpath) + try: + os.makedirs(dirpath) + except OSError as ex: + if ex.errno == errno.EEXIST: + pass # race condition + else: + raise + ha = os.path.join(dirpath, "{0}.{1}.uxd".format(self.lanename, self.name)) self.ha = ha diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/raet-0.2.3/raet/road/keeping.py new/raet-0.2.4/raet/road/keeping.py --- old/raet-0.2.3/raet/road/keeping.py 2014-07-15 01:54:43.000000000 +0200 +++ new/raet-0.2.4/raet/road/keeping.py 2014-07-16 01:46:04.000000000 +0200 @@ -36,8 +36,8 @@ local/ estate.ext remote/ - estate.uid.ext - estate.uid.ext + estate.name.ext + estate.name.ext ''' LocalFields = ['uid', 'name', 'ha', 'main', 'sid', 'neid', 'sighex', 'prihex', 'auto'] RemoteFields = ['uid', 'name', 'ha', 'sid', 'joined', 'acceptance', 'verhex', 'pubhex'] @@ -83,14 +83,14 @@ ('pubhex', remote.pubber.keyhex), ]) if self.verifyRemoteData(data): - self.dumpRemoteData(data, remote.uid) + self.dumpRemoteData(data, remote.name) def statusRemote(self, remote, verhex, pubhex, main=True): ''' Evaluate acceptance status of estate per its keys persist key data differentially based on status ''' - data = self.loadRemoteData(remote.uid) + data = self.loadRemoteData(remote.name) status = data.get('acceptance') if data else None # pre-existing status if main: #main estate logic diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/raet-0.2.3/raet/road/stacking.py new/raet-0.2.4/raet/road/stacking.py --- old/raet-0.2.3/raet/road/stacking.py 2014-07-15 01:54:43.000000000 +0200 +++ new/raet-0.2.4/raet/road/stacking.py 2014-07-16 01:46:04.000000000 +0200 @@ -147,21 +147,21 @@ bufsize=raeting.UDP_MAX_PACKET_SIZE * self.bufcnt) return server - def addRemote(self, remote, uid=None, dump=False): + def addRemote(self, remote, dump=False): ''' Add a remote to .remotes ''' - super(RoadStack, self).addRemote(remote=remote, uid=uid, dump=dump) + super(RoadStack, self).addRemote(remote=remote, dump=dump) if remote.timer.store is not self.store: raise raeting.StackError("Store reference mismatch between remote" " '{0}' and stack '{1}'".format(remote.name, stack.name)) - def renameRemote(self, remote, new, dump=False): + def renameRemote(self, remote, new, clear=True, dump=False): ''' Clear remote keeps of remote estate ''' old = remote.name - super(RoadStack, self).renameRemote(remote=remote, new=new, dump=dump) + super(RoadStack, self).renameRemote(remote=remote, new=new, clear=clear, dump=dump) if new != old: self.keep.replaceRemote(remote, old) # support for external key mgmt @@ -260,13 +260,13 @@ self.local = local return local - def restoreRemote(self, uid): + def restoreRemote(self, name): ''' - Load, add, and return remote with uid if any + Load, add, and return remote with name if any Otherwise return None ''' remote = None - keepData = self.keep.loadRemoteData(uid) + keepData = self.keep.loadRemoteData(name) if keepData and self.keep.verifyRemoteData(keepData): remote = estating.RemoteEstate(stack=self, eid=keepData['uid'], @@ -290,7 +290,7 @@ keeps = self.keep.loadAllRemoteData() if not keeps: return - for key, keepData in keeps.items(): + for keepData in keeps.values(): if not self.keep.verifyRemoteData(keepData): continue remote = estating.RemoteEstate(stack=self, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/raet-0.2.3/raet/road/test/test_keeping.py new/raet-0.2.4/raet/road/test/test_keeping.py --- old/raet-0.2.3/raet/road/test/test_keeping.py 2014-07-15 01:54:43.000000000 +0200 +++ new/raet-0.2.4/raet/road/test/test_keeping.py 2014-07-16 01:46:04.000000000 +0200 @@ -227,45 +227,51 @@ period=stack.period, offset=stack.offset)) + self.assertEqual(len(stack.remotes), len(stack.names)) + self.assertEqual(len(stack.remotes), len(stack.uids)) + for uid, remote in stack.remotes.items(): + self.assertEqual(stack.names[remote.uid], remote.name) + self.assertEqual(stack.uids[remote.name], remote.uid) + self.assertEqual(stack.remotes[uid].name, stack.names[uid]) + self.assertEqual(stack.remotes[uid].uid, stack.uids[remote.name]) + + stack.dumpRemotes() + for remote in stack.remotes.values(): + path = os.path.join(stack.keep.remotedirpath, + "{0}.{1}.{2}".format(stack.keep.prefix, remote.name, stack.keep.ext)) + self.assertTrue(os.path.exists(path)) remoteKeepData = stack.keep.loadAllRemoteData() console.terse("Remote keep data = '{0}'\n".format(remoteKeepData)) - validRemoteKeepData = {'2': - {'uid': 2, - 'name': other1Data['name'], - 'ha': ['127.0.0.1', 7531], - 'sid': 0, - 'joined': None, - 'acceptance': None, - 'verhex': other1Data['verhex'], - 'pubhex': other1Data['pubhex']}, - '3': - {'uid': 3, - 'name': other2Data['name'], - 'ha': ['127.0.0.1', 7532], - 'sid': 0, - 'joined': None, - 'acceptance': None, - 'verhex': other2Data['verhex'], - 'pubhex': other2Data['pubhex']} - } + validRemoteKeepData = { + 'other1': + {'uid': 2, + 'name': other1Data['name'], + 'ha': ['127.0.0.1', 7531], + 'sid': 0, + 'joined': None, + 'acceptance': None, + 'verhex': other1Data['verhex'], + 'pubhex': other1Data['pubhex']}, + 'other2': + {'uid': 3, + 'name': other2Data['name'], + 'ha': ['127.0.0.1', 7532], + 'sid': 0, + 'joined': None, + 'acceptance': None, + 'verhex': other2Data['verhex'], + 'pubhex': other2Data['pubhex']} + } self.assertDictEqual(remoteKeepData, validRemoteKeepData) # stack method - - #convert string uid keys into int uid keys - temp = validRemoteKeepData - validRemoteKeepData = odict() - for uid in temp: - validRemoteKeepData[int(uid)] = temp[uid] - - #stack.removeAllRemotes() stack.remotes = odict() stack.uids = odict() stack.restoreRemotes() remoteKeepData = odict() for remote in stack.remotes.values(): - remoteKeepData[remote.uid] = odict([ + remoteKeepData[remote.name] = odict([ ('uid', remote.uid), ('name', remote.name), ('ha', list(remote.ha)), @@ -302,7 +308,7 @@ remoteKeepData = odict() for remote in stack.remotes.values(): - remoteKeepData[remote.uid] = odict([ + remoteKeepData[remote.name] = odict([ ('uid', remote.uid), ('name', remote.name), ('ha', list(remote.ha)), @@ -312,7 +318,7 @@ ('verhex', remote.verfer.keyhex), ('pubhex', remote.pubber.keyhex), ]) - validRemoteKeepData[remote.uid]['sid'] += 1 #increments on stack load + validRemoteKeepData[remote.name]['sid'] += 1 #increments on stack load self.assertDictEqual(remoteKeepData, validRemoteKeepData) stack.server.close() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/raet-0.2.3/raet/road/test/test_presenting.py new/raet-0.2.4/raet/road/test/test_presenting.py --- old/raet-0.2.3/raet/road/test/test_presenting.py 2014-07-15 01:54:43.000000000 +0200 +++ new/raet-0.2.4/raet/road/test/test_presenting.py 2014-07-16 01:46:04.000000000 +0200 @@ -889,7 +889,12 @@ self.assertIs(remote.joined, False) # vacuuous join from main is rejected main.removeRemote(remote) self.assertEqual(len(main.remotes), 0) + self.assertEqual(len(main.uids), 0) + self.assertEqual(len(main.names), 0) + self.assertEqual(len(other.remotes), 0) + self.assertEqual(len(other.uids), 0) + self.assertEqual(len(other.names), 0) #now create remote for other and add to main main.addRemote(estating.RemoteEstate(stack=main, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/raet-0.2.3/raet/road/transacting.py new/raet-0.2.4/raet/road/transacting.py --- old/raet-0.2.3/raet/road/transacting.py 2014-07-15 01:54:43.000000000 +0200 +++ new/raet-0.2.4/raet/road/transacting.py 2014-07-16 01:46:04.000000000 +0200 @@ -910,7 +910,7 @@ return elif (reid != 0 and reid not in self.stack.remotes): - remote = self.stack.restoreRemote(reid) # see if still on disk + remote = self.stack.restoreRemote(name) # see if still on disk if not remote: emsg = "Joinent {0}. Received stale reid {1} for remote {2}\n".format( self.stack.name, reid, name) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/raet-0.2.3/raet/stacking.py new/raet-0.2.4/raet/stacking.py --- old/raet-0.2.3/raet/stacking.py 2014-07-15 01:54:43.000000000 +0200 +++ new/raet-0.2.4/raet/stacking.py 2014-07-16 01:46:04.000000000 +0200 @@ -73,6 +73,7 @@ self.remotes = odict() # remotes indexed by uid self.uids = odict() # remote uids indexed by name + self.names = odict() # remote names indexed by uid self.bufcnt = bufcnt if not server: @@ -115,12 +116,11 @@ ''' return None - def addRemote(self, remote, uid=None): + def addRemote(self, remote): ''' Add a remote to .remotes ''' - if uid is None: - uid = remote.uid + uid = remote.uid # allow for condition where local.uid == 0 and remote.uid == 0 if uid in self.remotes or (uid and uid == self.local.uid): emsg = "Cannot add remote at uid '{0}', alreadys exists".format(uid) @@ -131,6 +131,7 @@ emsg = "Cannot add remote with name '{0}', alreadys exists".format(remote.name) raise raeting.StackError(emsg) self.uids[remote.name] = remote.uid + self.names[remote.uid] = remote.name def moveRemote(self, remote, new): ''' @@ -151,12 +152,15 @@ emsg = "Cannot move remote at '{0}', not identical".format(old) raise raeting.StackError(emsg) - #remote = self.remotes[old] - index = self.remotes.keys().index(old) + remote.uid = new self.uids[remote.name] = new + index = self.remotes.keys().index(old) del self.remotes[old] self.remotes.insert(index, remote.uid, remote) + index = self.names.keys().index(old) + del self.names[old] + self.names.insert(index, remote.uid, remote.name) def renameRemote(self, remote, new): ''' @@ -176,8 +180,8 @@ emsg = "Cannot rename remote '{0}', not identical".format(old) raise raeting.StackError(emsg) - #remote = self.remotes[self.uids[old]] remote.name = new + self.names[remote.uid] = new index = self.uids.keys().index(old) del self.uids[old] self.uids.insert(index, remote.name, remote.uid) @@ -195,9 +199,9 @@ emsg = "Cannot remove remote '{0}', not identical".format(uid) raise raeting.StackError(emsg) - #remote = self.remotes[uid] del self.remotes[uid] del self.uids[remote.name] + del self.names[remote.uid] def removeAllRemotes(self): ''' @@ -522,44 +526,47 @@ self.dumpLocal() # save local data self.dumpRemotes() # save remote data - def addRemote(self, remote, uid=None, dump=False): + def addRemote(self, remote, dump=False): ''' Add a remote to .remotes ''' - super(KeepStack, self).addRemote(remote=remote, uid=uid) + super(KeepStack, self).addRemote(remote=remote) if dump: self.dumpRemote(remote) - def moveRemote(self, remote, new, clear=True, dump=False): + def moveRemote(self, remote, new, clear=False, dump=False): ''' Move remote with key remote.uid old to key new uid and replace the odict key index so order is the same. If clear then clear the keep file for remote at old If dump then dump the keep file for the remote at new ''' - old = remote.uid + #old = remote.uid super(KeepStack, self).moveRemote(remote, new=new) if clear: - self.keep.clearRemoteData(old) + self.keep.clearRemoteData(remote.name) if dump: self.dumpRemote(remote=remote) - def renameRemote(self, remote, new, dump=False): + def renameRemote(self, remote, new, clear=True, dump=False): ''' Rename remote with old remote.name to new name but keep same index ''' + old = remote.name super(KeepStack, self).renameRemote(remote=remote, new=new) + if clear: + self.keep.clearRemoteData(old) if dump: self.dumpRemote(remote=remote) def removeRemote(self, remote, clear=True): ''' - Remove remote at key uid + Remove remote If clear then also remove from disk ''' super(KeepStack, self).removeRemote(remote=remote) if clear: - self.keep.clearRemoteData(remote.uid) + self.clearRemote(remote) def removeAllRemotes(self, clear=True): ''' @@ -622,13 +629,13 @@ for remote in self.remotes.values(): self.dumpRemote(remote) - def restoreRemote(self, uid): + def restoreRemote(self, name): ''' - Load, add, and return remote with uid if any + Load, add, and return remote with name if any Otherwise return None ''' remote = None - data = self.keep.loadRemoteData(uid) + data = self.keep.loadRemoteData(name) if data and self.keep.verifyRemoteData(data): remote = lotting.Lot(stack=self, uid=data['uid'], @@ -656,7 +663,7 @@ ''' Clear remote keep of remote ''' - self.keep.clearRemoteData(remote.uid) + self.keep.clearRemoteData(remote.name) def clearRemotes(self): ''' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/raet-0.2.3/raet.egg-info/PKG-INFO new/raet-0.2.4/raet.egg-info/PKG-INFO --- old/raet-0.2.3/raet.egg-info/PKG-INFO 2014-07-15 01:57:11.000000000 +0200 +++ new/raet-0.2.4/raet.egg-info/PKG-INFO 2014-07-16 01:53:16.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: raet -Version: 0.2.3 +Version: 0.2.4 Summary: Reliable Asynchronous Event Transport protocol Home-page: https://github.com/saltstack/raet Author: Samuel M. Smith -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@hilbert.suse.de