diff options
Diffstat (limited to 'lorrycontroller/confparser.py')
-rw-r--r-- | lorrycontroller/confparser.py | 38 |
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) |