Skip to content

Commit 16bbdff

Browse files
author
Richard Jones
committed
sanity check instance attributes on open
1 parent dea13ae commit 16bbdff

File tree

1 file changed

+28
-15
lines changed

1 file changed

+28
-15
lines changed

roundup/instance.py

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,36 +15,49 @@
1515
# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
1616
# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
1717
#
18-
# $Id: instance.py,v 1.6 2002-09-10 00:18:20 richard Exp $
18+
# $Id: instance.py,v 1.7 2002-09-17 23:59:32 richard Exp $
1919

2020
__doc__ = '''
21-
Instance handling (open instance).
21+
Tracker handling (open tracker).
2222
2323
Currently this module provides one function: open. This function opens
24-
an instance.
24+
a tracker. Note that trackers used to be called instances.
2525
'''
2626

2727
import imp, os
2828

29+
class InstanceError(Exception):
30+
pass
31+
2932
class Opener:
3033
def __init__(self):
3134
self.number = 0
32-
self.instances = {}
35+
self.trackers = {}
3336

34-
def open(self, instance_home):
35-
'''Open the instance.
37+
def open(self, tracker_home):
38+
''' Open the tracker.
3639
37-
Raise ValueError if the instance home doesn't exist.
40+
Raise ValueError if the tracker home doesn't exist.
3841
'''
39-
if not os.path.exists(instance_home):
40-
raise ValueError, 'no such directory: "%s"'%instance_home
41-
if self.instances.has_key(instance_home):
42-
return imp.load_package(self.instances[instance_home],
43-
instance_home)
42+
if not os.path.exists(tracker_home):
43+
raise ValueError, 'no such directory: "%s"'%tracker_home
44+
if self.trackers.has_key(tracker_home):
45+
return imp.load_package(self.trackers[tracker_home],
46+
tracker_home)
4447
self.number = self.number + 1
45-
modname = '_roundup_instance_%s'%self.number
46-
self.instances[instance_home] = modname
47-
return imp.load_package(modname, instance_home)
48+
modname = '_roundup_tracker_%s'%self.number
49+
self.trackers[tracker_home] = modname
50+
51+
# load the tracker
52+
tracker = imp.load_package(modname, tracker_home)
53+
54+
# ensure the tracker has all the required bits
55+
for required in 'config open init Client MailGW'.split():
56+
if not hasattr(tracker, required):
57+
raise InstanceError, 'Required tracker attribute "%s" '\
58+
'missing'%required
59+
60+
return tracker
4861

4962
opener = Opener()
5063
open = opener.open

0 commit comments

Comments
 (0)