Antoni Segura Puimedon has uploaded a new change for review. Change subject: Get rid of mutables(lists) as default parameters ......................................................................
Get rid of mutables(lists) as default parameters In Python having a mutable as a default method parameter is dangerous due to the fact that the mutables are created on module creation rather than on method invokation. Thus, a call to a method could pollute the environment for the next call. This patch cleans most instances of that happening. Change-Id: I911485cf30d587f5b6b8bf44cf3552c1517abfd5 Signed-off-by: Antoni S. Puimedon <[email protected]> --- M vdsm/API.py M vdsm/BindingXMLRPC.py M vdsm/gluster/exception.py M vdsm/storage/fileUtils.py M vdsm/storage/lvm.py M vdsm/storage/misc.py M vdsm/storage/outOfProcess.py M vdsm/vm.py 8 files changed, 20 insertions(+), 15 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/56/18356/1 diff --git a/vdsm/API.py b/vdsm/API.py index 37bb908..efc7081 100644 --- a/vdsm/API.py +++ b/vdsm/API.py @@ -1230,7 +1230,7 @@ return dict(status=doneCode) # VM-related functions - def getVMList(self, fullStatus=False, vmList=[]): + def getVMList(self, fullStatus=False, vmList=()): """ return a list of known VMs with full (or partial) config each """ def reportedStatus(v, full): diff --git a/vdsm/BindingXMLRPC.py b/vdsm/BindingXMLRPC.py index fb65ad4..0c67ebe 100644 --- a/vdsm/BindingXMLRPC.py +++ b/vdsm/BindingXMLRPC.py @@ -214,7 +214,7 @@ vm = API.VM(vmParams['vmId']) return vm.create(vmParams) - def getVMList(self, fullStatus=False, vmList=[]): + def getVMList(self, fullStatus=False, vmList=None): api = API.Global() return api.getVMList(fullStatus, vmList) diff --git a/vdsm/gluster/exception.py b/vdsm/gluster/exception.py index c569a9e..b61af73 100644 --- a/vdsm/gluster/exception.py +++ b/vdsm/gluster/exception.py @@ -40,10 +40,10 @@ out = [] err = [] - def __init__(self, rc=0, out=[], err=[]): + def __init__(self, rc=0, out=None, err=None): self.rc = rc - self.out = out - self.err = err + self.out = [] if out is None else out + self.err = [] if err is None else err def __str__(self): o = '\n'.join(self.out) diff --git a/vdsm/storage/fileUtils.py b/vdsm/storage/fileUtils.py index 6090a07..d883190 100644 --- a/vdsm/storage/fileUtils.py +++ b/vdsm/storage/fileUtils.py @@ -51,7 +51,7 @@ pass -def tarCopy(src, dst, exclude=[]): +def tarCopy(src, dst, exclude=()): excludeArgs = ["--exclude=%s" % path for path in exclude] tsrc = subprocess.Popen([constants.EXT_TAR, "cf", "-"] + diff --git a/vdsm/storage/lvm.py b/vdsm/storage/lvm.py index bc9d30c..2f91e54 100644 --- a/vdsm/storage/lvm.py +++ b/vdsm/storage/lvm.py @@ -1160,7 +1160,7 @@ raise se.MissingTagOnLogicalVolume("%s/%s" % (vg, lv), tag) -def changeLVTags(vg, lv, delTags=[], addTags=[]): +def changeLVTags(vg, lv, delTags=(), addTags=()): lvname = '%s/%s' % (vg, lv) delTags = set(delTags) addTags = set(addTags) @@ -1218,7 +1218,7 @@ return os.path.exists(lvPath(vgName, lvName)) -def changeVGTags(vgName, delTags=[], addTags=[]): +def changeVGTags(vgName, delTags=(), addTags=()): delTags = set(delTags) addTags = set(addTags) if delTags.intersection(addTags): diff --git a/vdsm/storage/misc.py b/vdsm/storage/misc.py index fe3a870..8dac036 100644 --- a/vdsm/storage/misc.py +++ b/vdsm/storage/misc.py @@ -124,14 +124,17 @@ return False -def findCaller(skipUp=0, ignoreSourceFiles=[], ignoreMethodNames=[], +def findCaller(skipUp=0, ignoreSourceFiles=None, ignoreMethodNames=None, logSkipName=None): """ Find the stack frame of the caller so that we can note the source file name, line number and function name. """ # Ignore file extension can be either py or pyc - ignoreSourceFiles = ignoreSourceFiles + [logging._srcfile] + if ignoreSourceFiles is None: + ignoreSourceFiles = [logging._srcfile] + else: + ignoreSourceFiles += [logging._srcfile] ignoreSourceFiles = [os.path.splitext(sf)[0] for sf in ignoreSourceFiles] frame = inspect.currentframe().f_back @@ -141,8 +144,10 @@ code = frame.f_code filename = os.path.normcase(code.co_filename) - logSkip = _shouldLogSkip(skipUp, ignoreSourceFiles, ignoreMethodNames, - logSkipName, code, filename) + logSkip = _shouldLogSkip( + skipUp, ignoreSourceFiles, + [] if ignoreMethodNames is None else ignoreMethodNames, + logSkipName, code, filename) if logSkip: skipUp -= 1 @@ -1116,7 +1121,7 @@ pass -def walk(top, topdown=True, onerror=None, followlinks=False, blacklist=[]): +def walk(top, topdown=True, onerror=None, followlinks=False, blacklist=()): """Directory tree generator. Custom implementation of os.walk that doesn't block if the destination of diff --git a/vdsm/storage/outOfProcess.py b/vdsm/storage/outOfProcess.py index bf61d54..65d29e9 100644 --- a/vdsm/storage/outOfProcess.py +++ b/vdsm/storage/outOfProcess.py @@ -51,7 +51,7 @@ class _ModuleWrapper(types.ModuleType): - def __init__(self, modName, procPool, timeout, subModNames=[]): + def __init__(self, modName, procPool, timeout, subModNames=()): self._modName = modName self._procPool = procPool self._timeout = timeout diff --git a/vdsm/vm.py b/vdsm/vm.py index 9a24822..c6f84b3 100644 --- a/vdsm/vm.py +++ b/vdsm/vm.py @@ -1147,7 +1147,7 @@ if not a.startswith('__')] return ' '.join(attrs) - def createXmlElem(self, elemType, deviceType, attributes=[]): + def createXmlElem(self, elemType, deviceType, attributes=()): """ Create domxml device element according to passed in params """ -- To view, visit http://gerrit.ovirt.org/18356 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I911485cf30d587f5b6b8bf44cf3552c1517abfd5 Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Antoni Segura Puimedon <[email protected]> _______________________________________________ vdsm-patches mailing list [email protected] https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches
