Handle empty top-level parameters

If classes/applications/parameters are undefined, that's not an error.
Just make them empty collections.

Signed-off-by: martin f. krafft <madduck@madduck.net>
diff --git a/storage/yaml_fs/tests/nodes/null.yml b/storage/yaml_fs/tests/nodes/null.yml
new file mode 100644
index 0000000..eae0e02
--- /dev/null
+++ b/storage/yaml_fs/tests/nodes/null.yml
@@ -0,0 +1,3 @@
+classes:
+applications:  # null-value must be handled
+parameters:
diff --git a/storage/yaml_fs/tests/test_yamlfile.py b/storage/yaml_fs/tests/test_yamlfile.py
index ff074c7..1700f30 100644
--- a/storage/yaml_fs/tests/test_yamlfile.py
+++ b/storage/yaml_fs/tests/test_yamlfile.py
@@ -12,6 +12,7 @@
 
 TESTFILE = os.path.join(sys.path[0], 'nodes', 'blue.yml')
 EMPTYFILE = os.path.join(sys.path[0], 'nodes', 'empty.yml')
+NULLFILE = os.path.join(sys.path[0], 'nodes', 'null.yml')
 
 class TestYamlFile:
 
@@ -45,3 +46,13 @@
         assert len(e.parameters) == 0
         assert isinstance(e.applications, Applications)
         assert len(e.applications) == 0
+
+    def test_null_file(self):
+        e = yamlfile.YamlFile(NULLFILE).entity
+        assert isinstance(e, Entity)
+        assert isinstance(e.classes, Classes)
+        assert len(e.classes) == 0
+        assert isinstance(e.parameters, Parameters)
+        assert len(e.parameters) == 0
+        assert isinstance(e.applications, Applications)
+        assert len(e.applications) == 0
diff --git a/storage/yaml_fs/yamlfile.py b/storage/yaml_fs/yamlfile.py
index ee69b0a..2a8b21a 100644
--- a/storage/yaml_fs/yamlfile.py
+++ b/storage/yaml_fs/yamlfile.py
@@ -26,9 +26,21 @@
         fp.close()
 
     def _get_entity(self):
-        classes = datatypes.Classes(self._data.get('classes', []))
-        applications = datatypes.Applications(self._data.get('applications', []))
-        parameters = datatypes.Parameters(self._data.get('parameters', {}))
+        classes = self._data.get('classes')
+        if classes is None:
+            classes = []
+        classes = datatypes.Classes(classes)
+
+        applications = self._data.get('applications')
+        if applications is None:
+            applications = []
+        applications = datatypes.Applications(applications)
+
+        parameters = self._data.get('parameters')
+        if parameters is None:
+            parameters = {}
+        parameters = datatypes.Parameters(parameters)
+
         return datatypes.Entity(classes, applications, parameters)
     entity = property(lambda self: self._get_entity())