Accept allocation of 0 jobs
authorKlaus Aehlig <aehlig@google.com>
Fri, 7 Aug 2015 15:57:34 +0000 (17:57 +0200)
committerKlaus Aehlig <aehlig@google.com>
Fri, 7 Aug 2015 16:34:46 +0000 (18:34 +0200)
However, short-cut them and return the empty list
directly, as we do not need to do any change to the
serial file.

Note that allocating 0 jobs has legitimate use cases,
like gnt-node migrate on an empty node. Doing so
without complaining in line with the behaviour of
earlier Ganeti versions.

Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

src/Ganeti/JQueue.hs

index ecdd7b0..a49f628 100644 (file)
@@ -503,7 +503,10 @@ readSerialFromDisk = do
 allocateJobIds :: [Node] -> Lock -> Int -> IO (Result [JobId])
 allocateJobIds mastercandidates lock n =
   if n <= 0
-    then return . Bad $ "Can only allocate positive number of job ids"
+    then if n == 0
+           then return $ Ok []
+           else return . Bad
+                  $ "Can only allocate non-negative number of job ids"
     else withLock lock $ do
       rjobid <- readSerialFromDisk
       case rjobid of