summaryrefslogtreecommitdiff
path: root/lorrycontroller/confparser.py
diff options
context:
space:
mode:
Diffstat (limited to 'lorrycontroller/confparser.py')
-rw-r--r--lorrycontroller/confparser.py38
1 files changed, 37 insertions, 1 deletions
diff --git a/lorrycontroller/confparser.py b/lorrycontroller/confparser.py
index d23cf4c..cc8f0e5 100644
--- a/lorrycontroller/confparser.py
+++ b/lorrycontroller/confparser.py
@@ -65,6 +65,8 @@ class LorryControllerConfig(object):
def _validate__generics(self, entry):
'''Validate the generic entries such as 'serial'.'''
+ if type(entry.get('uuid', None)) != unicode:
+ self._give_up("UUID missing, cannot reconcile without it!")
for key, defval in default_values:
if type(defval) != type(entry[key]):
self._give_up("Invalid type for '%s': %r" % (key, entry[key]))
@@ -73,6 +75,9 @@ class LorryControllerConfig(object):
self._give_up("Invalid value for create: unchanged")
self._validate__when(entry, 'destroy')
entry['interval-parsed'] = self._parse_interval(entry['interval'])
+ if 'ls-interval' in entry:
+ entry['ls-interval-parsed'] = \
+ self._parse_interval(entry['ls-interval'])
def _validate__when(self, entry, key):
if entry[key] not in valid_whens:
@@ -142,7 +147,38 @@ class LorryControllerConfig(object):
starttime += step
logging.debug("Now loaded %d lorries" % len(self.lorries.keys()))
-
+
+ def _validate_trove(self, entry):
+ # Validate top levels
+ if type(entry.get('trovehost', None)) != unicode:
+ self._give_up("Trove host %r is not a string" %
+ entry.get('trovehost', None))
+ if 'ls-interval-parsed' not in entry:
+ self._give_up("No ls-interval specified for %s" %
+ entry['trovehost'])
+ if type(entry.get('prefixmap', None)) != dict:
+ self._give_up("Prefixmap not a dict for %s" %
+ entry['trovehost'])
+ if type(entry.get('ignore', [])) != list:
+ self._give_up("Ignore is not a list for %s" %
+ entry['trovehost'])
+ # Validate prefixmap
+ for local, remote in entry['prefixmap'].iteritems():
+ if type(local) != unicode:
+ self._give_up("Local part of prefixmap is not a string: %r" %
+ local)
+ if type(remote) != unicode:
+ self._give_up("Remote part of prefixmap is not a string: %r" %
+ remote)
+ # Validate ignore
+ for ign in entry.get('ignore', []):
+ if type(ign) != unicode:
+ self._give_up("Part of ignore list is not a string: %r" % ign)
+
+ def update_troves(self, statemgr):
+ # Now that we have a state manager we can look at the trove data.
+ pass
+
def _give_up(self, *args, **kwargs):
logging.error(*args, **kwargs)
raise SystemExit(5)