diff options
author | Dan Firth <dan.firth@codethink.co.uk> | 2013-10-01 12:47:00 +0000 |
---|---|---|
committer | Dan Firth <dan.firth@codethink.co.uk> | 2013-10-01 12:47:00 +0000 |
commit | 091809507fca909cd7c1a37ce6dbd553a973da09 (patch) | |
tree | 7b4f10049f1d94454643fca1f2c867c1d19bdc4f /morphlib/morphloader.py | |
parent | 5e0ad6ad29fa776088241828580d58b7d91e9fd1 (diff) | |
download | morph-091809507fca909cd7c1a37ce6dbd553a973da09.tar.gz |
'system-kind' and 'disk-size' system morphology fields now raise ObsoleteFieldError
Diffstat (limited to 'morphlib/morphloader.py')
-rw-r--r-- | morphlib/morphloader.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/morphlib/morphloader.py b/morphlib/morphloader.py index aea87777..9601784c 100644 --- a/morphlib/morphloader.py +++ b/morphlib/morphloader.py @@ -54,6 +54,11 @@ class InvalidFieldError(morphlib.Error): self.msg = ( 'Field %s not allowed in morphology %s' % (field, morphology)) +class ObsoleteFieldError(morphlib.Error): + + def __init__(self, field, morphology): + self.msg = ( + 'Field %s is now obsolete but present in %s' % (field, morphology)) class UnknownArchitectureError(morphlib.Error): @@ -107,6 +112,13 @@ class MorphologyLoader(object): ], } + _obsolete_fields = { + 'system': [ + 'system-kind', + 'disk-size', + ], + } + _static_defaults = { 'chunk': { 'description': '', @@ -219,8 +231,10 @@ class MorphologyLoader(object): raise UnknownKindError(morph['kind'], morph.filename) required = ['kind'] + self._required_fields[kind] + obsolete = self._obsolete_fields.get(kind, []) allowed = self._static_defaults[kind].keys() self._require_fields(required, morph) + self._deny_obsolete_fields(obsolete, morph) self._deny_unknown_fields(required + allowed, morph) if kind == 'system': @@ -292,6 +306,11 @@ class MorphologyLoader(object): for field in fields: self._require_field(field, morphology) + def _deny_obsolete_fields(self, fields, morphology): + for field in morphology: + if field in fields: + raise ObsoleteFieldError(field, morphology.filename) + def _deny_unknown_fields(self, allowed, morphology): for field in morphology: if field not in allowed: |