Add support for metadata

Added support for metadata in elog.hpp, elog mako file, and pdmgen.
This metadata will be added with the error log.

Change-Id: Iaf0fe24d71f6bdd02b51df208b2c1d66c68319d3
Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
diff --git a/src/pdmgen.py b/src/pdmgen.py
index dc2c704..3691d59 100755
--- a/src/pdmgen.py
+++ b/src/pdmgen.py
@@ -176,6 +176,23 @@
 
         return a
 
+class Metadata(Argument):
+    '''Metadata type arguments.'''
+
+    def __init__(self, **kw):
+        self.value = kw.pop('value')
+        self.decorators = kw.pop('decorators', [])
+        if kw.get('type', None) == 'string':
+            self.decorators.insert(0, Quote())
+
+        super(Metadata, self).__init__(**kw)
+
+    def argument(self, loader, indent):
+        a = str(self.value)
+        for d in self.decorators:
+            a = d(a)
+
+        return a
 
 class Indent(object):
     '''Help templates be depth agnostic.'''
@@ -665,10 +682,10 @@
 
     def __init__(self, *a, **kw):
         self.error = kw.pop('error')
+        self.metadata = [Metadata(**x) for x in kw.pop('metadata', {})]
         super(Elog, self).__init__(**kw)
 
     def construct(self, loader, indent):
-
         with open('errors.hpp', 'a') as fd:
             fd.write(
                 self.render(