Clean : (Grégory Starck) clean of some getattr code, bis.
[shinken.git] / shinken / comment.py
blob6bf3480f6b6526b902c54855a2448786cfd8a418
1 #!/usr/bin/env python
2 #Copyright (C) 2010 Gabes Jean, naparuba@gmail.com
4 #This file is part of Shinken.
6 #Shinken is free software: you can redistribute it and/or modify
7 #it under the terms of the GNU Affero General Public License as published by
8 #the Free Software Foundation, either version 3 of the License, or
9 #(at your option) any later version.
11 #Shinken is distributed in the hope that it will be useful,
12 #but WITHOUT ANY WARRANTY; without even the implied warranty of
13 #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 #GNU Affero General Public License for more details.
16 #You should have received a copy of the GNU Affero General Public License
17 #along with Shinken. If not, see <http://www.gnu.org/licenses/>.
20 import time
22 class Comment:
23 id = 1
25 properties = {
26 'entry_time' : None,
27 'persistent' : None,
28 'author' : None,
29 'comment' : None,
30 'comment_type' : None,
31 'entry_type' : None,
32 'source' : None,
33 'expires' : None,
34 'expire_time' : None,
35 'can_be_deleted' : None,
41 #Adds a comment to a particular service. If the "persistent" field
42 #is set to zero (0), the comment will be deleted the next time
43 #Nagios is restarted. Otherwise, the comment will persist
44 #across program restarts until it is deleted manually.
45 def __init__(self, ref, persistent, author, comment, comment_type, entry_type, source, expires, expire_time):
46 self.id = self.__class__.id
47 self.__class__.id += 1
48 self.ref = ref #pointer to srv or host we are apply
49 self.entry_time = int(time.time())
50 self.persistent = persistent
51 self.author = author
52 self.comment = comment
53 #Now the hidden attributes
54 #HOST_COMMENT=1,SERVICE_COMMENT=2
55 self.comment_type = comment_type
56 #USER_COMMENT=1,DOWNTIME_COMMENT=2,FLAPPING_COMMENT=3,ACKNOWLEDGEMENT_COMMENT=4
57 self.entry_type = entry_type
58 #COMMENTSOURCE_INTERNAL=0,COMMENTSOURCE_EXTERNAL=1
59 self.source = source
60 self.expires = expires
61 self.expire_time = expire_time
62 self.can_be_deleted = False
65 def __str__(self):
66 return "Comment id=%d %s" % (self.id, self.comment)
69 #Call by picle for dataify the coment
70 #because we DO NOT WANT REF in this pickleisation!
71 def __getstate__(self):
72 # print "Asking a getstate for a comment on", self.ref.get_dbg_name()
73 cls = self.__class__
74 #id is not in *_properties
75 res = [self.id]
76 for prop in cls.properties:
77 res.append(getattr(self, prop))
78 #We reverse because we want to recreate
79 #By check at properties in the same order
80 res.reverse()
81 return res
84 #Inversed funtion of getstate
85 def __setstate__(self, state):
86 cls = self.__class__
87 self.id = state.pop()
88 for prop in cls.properties:
89 val = state.pop()
90 setattr(self, prop, val)