summaryrefslogtreecommitdiff
path: root/morphlib/morphloader.py
diff options
context:
space:
mode:
Diffstat (limited to 'morphlib/morphloader.py')
-rw-r--r--morphlib/morphloader.py40
1 files changed, 23 insertions, 17 deletions
diff --git a/morphlib/morphloader.py b/morphlib/morphloader.py
index c94078f9..702a330c 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,11 +149,11 @@ class MorphologyLoader(object):
'strata': [],
'description': '',
'arch': None,
- 'system-kind': 'rootfs-tarball',
'configuration-extensions': [],
- 'disk-size': '1G',
},
- 'cluster': {},
+ 'cluster': {
+ 'description': '',
+ },
}
def parse_morphology_text(self, text, whence):
@@ -229,8 +234,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 +267,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 +309,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: