summaryrefslogtreecommitdiff
path: root/lorrycontroller/confparser.py
diff options
context:
space:
mode:
Diffstat (limited to 'lorrycontroller/confparser.py')
-rw-r--r--lorrycontroller/confparser.py15
1 files changed, 8 insertions, 7 deletions
diff --git a/lorrycontroller/confparser.py b/lorrycontroller/confparser.py
index 8179a61..b78dc54 100644
--- a/lorrycontroller/confparser.py
+++ b/lorrycontroller/confparser.py
@@ -9,7 +9,6 @@ import os
import time
default_values = [
- ( u'serial', 0 ),
( u'create', u'never' ),
( u'destroy', u'never' ),
( u'interval', u'1m' ),
@@ -55,7 +54,7 @@ class LorryControllerConfig(object):
# Set the defaults
for key, defval in default_values:
entry[key] = entry.get(key, defval)
- # And validate the generic values such as serial
+ # And validate the generic values
self._validate__generics(entry)
# Now validate the rest
validator = getattr(self, '_validate_' + entry['type'], None)
@@ -65,9 +64,12 @@ class LorryControllerConfig(object):
validator(entry)
def _validate__generics(self, entry):
- '''Validate the generic entries such as 'serial'.'''
+ '''Validate the generic entries such as 'uuid'.'''
if type(entry.get('uuid', None)) != unicode:
self._give_up("UUID missing, cannot reconcile without it!")
+ if entry['uuid'] in self.configs:
+ self._give_up("UUID is not unique")
+ self.configs[entry['uuid']] = entry
for key, defval in default_values:
if type(defval) != type(entry[key]):
self._give_up("Invalid type for '%s': %r" % (key, entry[key]))
@@ -129,10 +131,9 @@ class LorryControllerConfig(object):
fullname = os.path.join(entry['prefix'], name)
if self.lorries.get(fullname, None) is not None:
self._give_up("Lorry repeated: %s" % fullname)
- content['serial'] = entry['serial']
+ content['controller-uuid'] = entry['uuid']
my_lorry_names.add(fullname)
self.lorries[fullname] = content
- self.configs[fullname] = entry
except Exception, e:
logging.debug("Unable to parse %s, because of %s. Moving on" %
(lorry, e))
@@ -210,7 +211,8 @@ class LorryControllerConfig(object):
lorry = {
"type": "git",
"url": "ssh://git@%s/%s.git" % (trove['trovehost'],
- remotereponame)
+ remotereponame),
+ "controller-uuid": trove['uuid']
}
if localreponame in self.lorries:
logging.warn("Skipping %s (%s from %s) because we already "
@@ -218,7 +220,6 @@ class LorryControllerConfig(object):
localreponame, remotereponame, trove['trovehost']))
else:
self.lorries[localreponame] = lorry
- self.configs[localreponame] = trove
lorries_made.add(localreponame)
# 3. Now schedule all those lorries in case they're new