From b5b8309de8b082658c28dc280ee82b71b264a0c5 Mon Sep 17 00:00:00 2001
From: Guido Trotter <ultrotter@google.com>
Date: Fri, 11 Jun 2010 21:23:33 +0100
Subject: [PATCH] ListVisibleFiles: do not sort output

Among all users, turns out just one *may* need the output to be sorted.
All the others can cope without.

Signed-off-by: Guido Trotter <ultrotter@google.com>
Reviewed-by: Iustin Pop <iustin@google.com>
---
 lib/backend.py                |  2 +-
 lib/jqueue.py                 |  2 +-
 lib/utils.py                  |  6 +-----
 test/ganeti.utils_unittest.py | 17 +----------------
 4 files changed, 4 insertions(+), 23 deletions(-)

diff --git a/lib/backend.py b/lib/backend.py
index 3fda9c7d6..2a158d637 100644
--- a/lib/backend.py
+++ b/lib/backend.py
@@ -2162,7 +2162,7 @@ def ListExports():
 
   """
   if os.path.isdir(constants.EXPORT_DIR):
-    return utils.ListVisibleFiles(constants.EXPORT_DIR)
+    return sorted(utils.ListVisibleFiles(constants.EXPORT_DIR))
   else:
     _Fail("No exports directory")
 
diff --git a/lib/jqueue.py b/lib/jqueue.py
index 1102c6513..2554c7cc4 100644
--- a/lib/jqueue.py
+++ b/lib/jqueue.py
@@ -913,7 +913,7 @@ class JobQueue(object):
 
     """
     jlist = []
-    for filename in utils.ListVisibleFiles(constants.QUEUE_DIR, sort=False):
+    for filename in utils.ListVisibleFiles(constants.QUEUE_DIR):
       m = self._RE_JOB_FILE.match(filename)
       if m:
         jlist.append(m.group(1))
diff --git a/lib/utils.py b/lib/utils.py
index 7d13617af..3be5d66c4 100644
--- a/lib/utils.py
+++ b/lib/utils.py
@@ -1741,13 +1741,11 @@ def OwnIpAddress(address):
                  source=constants.LOCALHOST_IP_ADDRESS)
 
 
-def ListVisibleFiles(path, sort=True):
+def ListVisibleFiles(path):
   """Returns a list of visible files in a directory.
 
   @type path: str
   @param path: the directory to enumerate
-  @type sort: boolean
-  @param sort: whether to provide a sorted output
   @rtype: list
   @return: the list of all files not starting with a dot
   @raise ProgrammerError: if L{path} is not an absolue and normalized path
@@ -1757,8 +1755,6 @@ def ListVisibleFiles(path, sort=True):
     raise errors.ProgrammerError("Path passed to ListVisibleFiles is not"
                                  " absolute/normalized: '%s'" % path)
   files = [i for i in os.listdir(path) if not i.startswith(".")]
-  if sort:
-    files.sort()
   return files
 
 
diff --git a/test/ganeti.utils_unittest.py b/test/ganeti.utils_unittest.py
index 650fd619d..477c40993 100755
--- a/test/ganeti.utils_unittest.py
+++ b/test/ganeti.utils_unittest.py
@@ -1341,8 +1341,7 @@ class TestListVisibleFiles(unittest.TestCase):
   def _test(self, files, expected):
     self._CreateFiles(files)
     found = ListVisibleFiles(self.path)
-    # by default ListVisibleFiles sorts its output
-    self.assertEqual(found, sorted(expected))
+    self.assertEqual(set(found), set(expected))
 
   def testAllVisible(self):
     files = ["a", "b", "c"]
@@ -1359,20 +1358,6 @@ class TestListVisibleFiles(unittest.TestCase):
     expected = ["a", "b"]
     self._test(files, expected)
 
-  def testForceSort(self):
-    files = ["c", "b", "a"]
-    self._CreateFiles(files)
-    found = ListVisibleFiles(self.path, sort=True)
-    self.assertEqual(found, sorted(files))
-
-  def testForceNonSort(self):
-    files = ["c", "b", "a"]
-    self._CreateFiles(files)
-    found = ListVisibleFiles(self.path, sort=False)
-    # We can't actually check that they weren't sorted, because they might come
-    # out sorted by chance
-    self.assertEqual(set(found), set(files))
-
   def testNonAbsolutePath(self):
     self.failUnlessRaises(errors.ProgrammerError, ListVisibleFiles, "abc")
 
-- 
GitLab