summaryrefslogtreecommitdiff
path: root/morphlib/morphloader.py
diff options
context:
space:
mode:
authorLars Wirzenius <lars.wirzenius@codethink.co.uk>2013-10-08 15:53:21 +0000
committerLars Wirzenius <lars.wirzenius@codethink.co.uk>2013-10-08 15:53:21 +0000
commit6e36e9a1a29495f0c8b62fedddadcf8df78506d9 (patch)
tree609fc24eaf3d9ac9ed14d6520cccae147a7f3907 /morphlib/morphloader.py
parentc63bd810e953429b728adbadf60f10a08e6d4a06 (diff)
parentf4aaea23b7d80084504832d6b967a50c2d501b9e (diff)
downloadmorph-6e36e9a1a29495f0c8b62fedddadcf8df78506d9.tar.gz
Merge remote-tracking branch 'origin/danielfirth/RT189'
Changed the error (exception) to list all obsolete fields.
Diffstat (limited to 'morphlib/morphloader.py')
-rw-r--r--morphlib/morphloader.py36
1 files changed, 20 insertions, 16 deletions
diff --git a/morphlib/morphloader.py b/morphlib/morphloader.py
index c94078f9..8c20d9ed 100644
--- a/morphlib/morphloader.py
+++ b/morphlib/morphloader.py
@@ -54,6 +54,12 @@ class InvalidFieldError(morphlib.Error):
self.msg = (
'Field %s not allowed in morphology %s' % (field, morphology))
+class ObsoleteFieldsError(morphlib.Error):
+
+ def __init__(self, fields, morphology):
+ self.msg = (
+ 'Morphology %s uses obsolete fields: %s' %
+ (morphology, ' '.join(fields)))
class UnknownArchitectureError(morphlib.Error):
@@ -62,14 +68,6 @@ class UnknownArchitectureError(morphlib.Error):
'Unknown architecture %s in morphology %s' % (arch, morphology))
-class InvalidSystemKindError(morphlib.Error):
-
- def __init__(self, system_kind, morphology):
- self.msg = (
- 'system-kind %s not allowed (must be rootfs-tarball), in %s' %
- (system_kind, morphology))
-
-
class NoBuildDependenciesError(morphlib.Error):
def __init__(self, stratum_name, chunk_name, morphology):
@@ -115,6 +113,13 @@ class MorphologyLoader(object):
],
}
+ _obsolete_fields = {
+ 'system': [
+ 'system-kind',
+ 'disk-size',
+ ],
+ }
+
_static_defaults = {
'chunk': {
'description': '',
@@ -144,9 +149,7 @@ class MorphologyLoader(object):
'strata': [],
'description': '',
'arch': None,
- 'system-kind': 'rootfs-tarball',
'configuration-extensions': [],
- 'disk-size': '1G',
},
'cluster': {},
}
@@ -229,8 +232,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':
@@ -260,12 +265,6 @@ class MorphologyLoader(object):
if morph['arch'] not in morphlib.valid_archs:
raise UnknownArchitectureError(morph['arch'], morph.filename)
- # If system-kind is present, it must be rootfs-tarball.
- if 'system-kind' in morph:
- if morph['system-kind'] not in (None, 'rootfs-tarball'):
- raise InvalidSystemKindError(
- morph['system-kind'], morph.filename)
-
def _validate_stratum(self, morph):
# Require at least one chunk.
if len(morph.get('chunks', [])) == 0:
@@ -308,6 +307,11 @@ class MorphologyLoader(object):
for field in fields:
self._require_field(field, morphology)
+ def _deny_obsolete_fields(self, fields, morphology):
+ obsolete_ones = [x for x in morphology if x in fields]
+ if obsolete_ones:
+ raise ObsoleteFieldsError(obsolete_ones, morphology.filename)
+
def _deny_unknown_fields(self, allowed, morphology):
for field in morphology:
if field not in allowed: