1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 """reloading of code
19 """
20
21 import sys
22
23 from twisted.python.rebuild import rebuild
24
25 from flumotion.common import log
26
27 __version__ = "$Rev$"
28
29
31 """Properly reload all flumotion-related modules currently loaded."""
32 needs_reload = lambda name: name.startswith('flumotion')
33 for name in filter(needs_reload, sys.modules.keys()):
34 if not name in sys.modules:
35 log.warning("reload", "hm, %s disappeared from the modules" % name)
36 continue
37 module = sys.modules[name]
38 if not module:
39 log.log("reload", "hm, module '%s' == None" % name)
40 continue
41 log.log("reload", "rebuilding %s" % module)
42 try:
43 rebuild(module, doLog=0)
44 except SyntaxError, msg:
45 from flumotion.common import errors
46 raise errors.ReloadSyntaxError(msg)
47
48
49
50 reinitialize = {'flumotion.extern.log.log':
51 lambda mod: mod.init('FLU_DEBUG')}
52 for name in reinitialize:
53 if name in sys.modules:
54 reinitialize[name](sys.modules[name])
55