Improve error handling in yaml_fs
Signed-off-by: martin f. krafft <madduck@madduck.net>
diff --git a/reclass/storage/yaml_fs/__init__.py b/reclass/storage/yaml_fs/__init__.py
index fcb6710..933def3 100644
--- a/reclass/storage/yaml_fs/__init__.py
+++ b/reclass/storage/yaml_fs/__init__.py
@@ -20,6 +20,12 @@
def __init__(self, nodes_uri, classes_uri):
super(ExternalNodeStorage, self).__init__(nodes_uri, classes_uri)
+ def _handle_read_error(self, exc, name, base_uri, nodename):
+ if base_uri == self.classes_uri:
+ raise reclass.errors.ClassNotFound('yaml_fs', name, base_uri, nodename)
+ else:
+ raise reclass.errors.NodeNotFound('yaml_fs', name, base_uri)
+
def _read_entity(self, name, base_uri, seen, nodename=None):
path = os.path.join(base_uri, name + FILE_EXTENSION)
try:
@@ -41,11 +47,11 @@
merge_base.merge(entity)
return merge_base, path
- except IOError:
- if base_uri == self.classes_uri:
- raise reclass.errors.ClassNotFound('yaml_fs', name, base_uri, nodename)
- else:
- raise reclass.errors.NodeNotFound('yaml_fs', name, base_uri)
+ except reclass.errors.NotFoundError, e:
+ self._handle_read_error(e, name, base_uri, nodename)
+
+ except IOError, e:
+ self._handle_read_error(e, name, base_uri, nodename)
def _list_inventory(self):
d = Directory(self.nodes_uri)