Handle reading of empty YamlFiles

python-yaml's safe_load returns 'None' when it parses an empty YamlFile,
but since empty YamlFiles correspond to empty dictionaries, really, we
handle things accordingly.

Signed-off-by: martin f. krafft <madduck@madduck.net>
diff --git a/storage/yaml_fs/tests/nodes/empty.yml b/storage/yaml_fs/tests/nodes/empty.yml
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/storage/yaml_fs/tests/nodes/empty.yml
diff --git a/storage/yaml_fs/tests/test_yamlfile.py b/storage/yaml_fs/tests/test_yamlfile.py
index 7e2bfb7..6a8c4db 100644
--- a/storage/yaml_fs/tests/test_yamlfile.py
+++ b/storage/yaml_fs/tests/test_yamlfile.py
@@ -10,6 +10,7 @@
 import os, sys
 
 TESTFILE = os.path.join(sys.path[0], 'nodes', 'blue.yml')
+EMPTYFILE = os.path.join(sys.path[0], 'nodes', 'empty.yml')
 
 class TestYamlFile:
 
@@ -29,3 +30,9 @@
         assert 'motd' in p
         assert 'colour' in p
         assert hasattr(p, 'merge')
+
+    def test_empty_file(self):
+        e = yamlfile.YamlFile(EMPTYFILE).entity
+        assert len(e.classes) == 0
+        assert len(e.parameters) == 0
+        assert len(e.applications) == 0
diff --git a/storage/yaml_fs/yamlfile.py b/storage/yaml_fs/yamlfile.py
index 56d1325..7570155 100644
--- a/storage/yaml_fs/yamlfile.py
+++ b/storage/yaml_fs/yamlfile.py
@@ -20,7 +20,9 @@
 
     def _read(self):
         fp = file(self._path)
-        self._data = yaml.safe_load(fp)
+        data = yaml.safe_load(fp)
+        if data is not None:
+            self._data = data
         fp.close()
 
     def _get_entity(self):