[RARSLAVE] Enable production actions
[rarslave2.git] / RarslaveLogger.py
index 83752f0..d60b105 100644 (file)
@@ -1,67 +1,84 @@
 #!/usr/bin/env python
 # vim: set ts=4 sts=4 sw=4 textwidth=92:
 
+class MessageType (object):
+       Fatal = -1
+       Normal = 0
+       Verbose = 1
+       Debug = 2
+
 class RarslaveMessage (object):
-       def __init__ (self, msg, printquiet):
+       def __init__ (self, msg, type=MessageType.Normal):
                self.msg = msg
-               self.printquiet = printquiet
+               self.type = type
 
        def __repr__ (self):
                return "%s" % self.msg
 
+       def isFatal (self):
+               return self.type == MessageType.Fatal
+
+       def isNormal (self):
+               return self.type == MessageType.Normal
+
        def isVerbose (self):
-               # A message is verbose only if we should
-               # print it when we are not printing quietly
-               return not self.printquiet
+               return self.type == MessageType.Verbose
+
+       def isDebug (self):
+               return self.type == MessageType.Debug
 
 class RarslaveLogger (object):
        # This class will log multiple messages, one for each set that is operated on.
        # It will then be able to print all of them out.
 
        def __init__ (self):
-               self.__msg_dict = {}
+               self.__messages = []
+
+       def addMessage (self, msg, type=MessageType.Normal):
+               self.__messages.append (RarslaveMessage (msg, type))
+
+       def hasFatalMessages (self):
+               for m in self.__messages:
+                       if m.isFatal ():
+                               return True
 
-       def __get_key (self, id):
-               """__get_key (id) -> key"""
-               # Get a valid key which will always be the same as any other similar key, even if
-               # the actual memory reference is different.
-               return str(id)
+               return False
 
-       def addMessage (self, id, msg, printquiet=True):
-               # Add a message to the dictionary, to be printed later.
-               # The printquiet variable controls whether the message will be printed
-               # normally, or only in verbose mode. The default is to print always.
+       def hasNormalMessages (self):
+               for m in self.__messages:
+                       if m.isNormal ():
+                               return True
 
-               # Get the key
-               key = self.__get_key (id)
+               return False
 
-               # Create the dictionary entry if necessary
-               if key not in self.__msg_dict.keys():
-                       self.__msg_dict[key] = []
+       def hasVerboseMessages (self):
+               for m in self.__messages:
+                       if m.isVerbose ():
+                               return True
 
-               # Get the list from the dictionary, then add the message to it
-               self.__msg_dict[key].append (RarslaveMessage (msg, printquiet))
+               return False
 
-       def printAllMessages (self, verbose=False):
-               # Print all messages in groups by id
-               for k in self.__msg_dict.keys():
-                       for msg in self.__msg_dict[k]:
+       def hasDebugMessages (self):
+               for m in self.__messages:
+                       if m.isDebug ():
+                               return True
 
-                               # Skip verbose messages if we're not in verbose mode
-                               if msg.isVerbose() and not verbose:
-                                       continue
+               return False
 
-                               print msg
+       def printAllMessages (self, level=MessageType.Normal):
+               # Print all messages with level upto and including $level.
+               for m in self.__messages:
+                       if m.type <= level:
+                               print m
 
-                       print
+       def printLoglevel (self, level=MessageType.Normal):
+               # Print all message with exactly the loglevel given
+               for m in self.__messages:
+                       if m.type == level:
+                               print m
 
 def main ():
-       logger = RarslaveLogger ()
-       logger.addMessage (1, 'hello 1')
-       logger.addMessage (2, 'hello 2')
-       logger.addMessage (2, 'world 2')
-       logger.addMessage (1, 'world 1')
-       logger.printAllMessages ()
+       pass
 
 if __name__ == '__main__':
        main ()