DRBD parser: consume initial empty resource lines stable-2.8 github/stable-2.8
authorApollon Oikonomopoulos <apoikos@gmail.com>
Fri, 4 Jul 2014 09:20:17 +0000 (12:20 +0300)
committerKlaus Aehlig <aehlig@google.com>
Fri, 4 Jul 2014 09:30:12 +0000 (11:30 +0200)
When a DRBD resource is taken down, its minor number is freed and its
place in /proc/drbd is taken by an empty line. Currently the parser is
able to consume any empty lines appearing inside the resource stanza,
but cannot handle the first resource being empty.

We fix this by consuming all EOL characters appearing before the device
number. A test for this case should also be added.

This fixes issue #869.

Signed-off-by: Apollon Oikonomopoulos <apoikos@gmail.com>
Signed-off-by: Klaus Aehlig <aehlig@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

src/Ganeti/Block/Drbd/Parser.hs

index 9d3e66c..9e1a9b7 100644 (file)
@@ -114,6 +114,7 @@ versionInfoParser = do
 -- | The parser for a (multi-line) string representing a device.
 deviceParser :: [DrbdInstMinor] -> Parser DeviceInfo
 deviceParser instMinor = do
+  _ <- additionalEOL
   deviceNum <- skipSpaces *> A.decimal <* A.char ':'
   cs <- skipSpacesAndString "cs:" connStateParser
   if cs == Unconfigured