interface: Parse YAML content

Change-Id: I3f10b927b55e6b1f72875a18589ac3adf92e6cb0
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
diff --git a/tools/sdbusplus/__init__.py b/tools/sdbusplus/__init__.py
new file mode 100644
index 0000000..2ab249b
--- /dev/null
+++ b/tools/sdbusplus/__init__.py
@@ -0,0 +1 @@
+from sdbusplus.interface import Interface
diff --git a/tools/sdbusplus/interface.py b/tools/sdbusplus/interface.py
new file mode 100644
index 0000000..4c5a4c3
--- /dev/null
+++ b/tools/sdbusplus/interface.py
@@ -0,0 +1,18 @@
+import os
+import yaml
+from .namedelement import NamedElement
+
+class Interface(NamedElement, object):
+    @staticmethod
+    def load(name, rootdir='.'):
+        filename = os.path.join(rootdir,
+                                name.replace('.', '/') + ".interface.yaml")
+
+        with open(filename) as f:
+            data = f.read();
+            y = yaml.safe_load(data)
+            y['name'] = name
+            return Interface(**y)
+
+    def __init__(self, **kwargs):
+        super(Interface, self).__init__(**kwargs)
diff --git a/tools/sdbusplus/namedelement.py b/tools/sdbusplus/namedelement.py
new file mode 100644
index 0000000..ed989d1
--- /dev/null
+++ b/tools/sdbusplus/namedelement.py
@@ -0,0 +1,5 @@
+class NamedElement(object):
+    def __init__(self, **kwargs):
+        self.name = kwargs.pop('name', "unnamed")
+        self.description = kwargs.pop('description', "")
+        super(NamedElement, self).__init__(**kwargs)