diff --git a/lib/cdist/core/cdist_object.py b/lib/cdist/core/cdist_object.py index 43d07d6b..6b1e02b0 100644 --- a/lib/cdist/core/cdist_object.py +++ b/lib/cdist/core/cdist_object.py @@ -96,25 +96,29 @@ class CdistObject(object): """ return os.path.join(type_name, object_id) - @staticmethod - def validate_object_id(object_id): + def validate_object_id(self): """Validate the given object_id and raise IllegalObjectIdError if it's not valid. """ if object_id: - if object_id.startswith('/'): + if self.object_id.startswith('/'): raise IllegalObjectIdError(object_id, 'object_id may not start with /') - if OBJECT_MARKER in object_id.split(os.sep): + if OBJECT_MARKER in self.object_id.split(os.sep): raise IllegalObjectIdError(object_id, 'object_id may not contain \'%s\'' % OBJECT_MARKER) - if '//' in object_id: + if '//' in self.object_id: raise IllegalObjectIdError(object_id, 'object_id may not contain //') + # If no object_id and type is not singleton => error out + if not object_id and not self.type.is_singleton: + raise IllegalObjectIdError(object_id, + "Missing object_id and type is not a singleton.") + def __init__(self, cdist_type, base_path, object_id=None): self.type = cdist_type # instance of Type self.base_path = base_path self.object_id = object_id self.sanitise_object_id() - self.validate_object_id(object_id) + self.validate_object_id() self.name = self.join_name(self.type.name, self.object_id) self.path = os.path.join(self.type.path, self.object_id, OBJECT_MARKER)