summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGunnar Mills <gmills@us.ibm.com>2017-08-08 14:19:36 -0500
committerGunnar Mills <gmills@us.ibm.com>2017-08-21 14:26:32 +0000
commitd5faea318a83b5e6505715b75855b2fa296b7c99 (patch)
treec90b3abbe3994020cd06c2991ab35c323cc64a50
parent9679d43ea9a0d2ed89c8eb88851eee838a3e767c (diff)
downloadphosphor-dbus-monitor-d5faea318a83b5e6505715b75855b2fa296b7c99.tar.gz
phosphor-dbus-monitor-d5faea318a83b5e6505715b75855b2fa296b7c99.zip
Add support for elog callback
Added support for "callback: elog" in PDM. templates/elog.mako.cpp is used to generate the Elog call. templates/errors.mako.hpp is used to generate the errors.hpp used by generated.hpp to include any error.hpp files like "xyz/openbmc_project/Common/error.hpp" Change-Id: Id0ae3aca4282095f58a8939b70e398bec706d7f5 Signed-off-by: Gunnar Mills <gmills@us.ibm.com>
-rw-r--r--.gitignore1
-rw-r--r--src/Makefile.am1
-rwxr-xr-xsrc/pdmgen.py26
-rw-r--r--src/templates/elog.mako.cpp1
-rw-r--r--src/templates/errors.mako.hpp1
-rw-r--r--src/templates/generated.mako.hpp2
6 files changed, 32 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 23155c5..6500baa 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,4 +25,5 @@ missing
stamp-h1
phosphor-dbus-monitor
generated.hpp
+errors.hpp
test-driver
diff --git a/src/Makefile.am b/src/Makefile.am
index 211cb9f..c6a041f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -29,6 +29,7 @@ TEMPLATES = \
templates/generated.mako.hpp \
templates/journal.mako.cpp \
templates/elog.mako.cpp \
+ templates/errors.mako.hpp \
templates/method.mako.cpp
generated.hpp: $(PDMGEN) $(YAML_PATH) $(TEMPLATES)
diff --git a/src/pdmgen.py b/src/pdmgen.py
index ac2b8e0..dc2c704 100755
--- a/src/pdmgen.py
+++ b/src/pdmgen.py
@@ -660,6 +660,28 @@ class Journal(Callback, Renderer):
indent=indent)
+class Elog(Callback, Renderer):
+ '''Handle the elog callback config file directive.'''
+
+ def __init__(self, *a, **kw):
+ self.error = kw.pop('error')
+ super(Elog, self).__init__(**kw)
+
+ def construct(self, loader, indent):
+
+ with open('errors.hpp', 'a') as fd:
+ fd.write(
+ self.render(
+ loader,
+ 'errors.mako.hpp',
+ c=self))
+ return self.render(
+ loader,
+ 'elog.mako.cpp',
+ c=self,
+ indent=indent)
+
+
class Method(ConfigEntry, Renderer):
'''Handle the method callback config file directive.'''
@@ -827,6 +849,7 @@ class Everything(Renderer):
},
'callback': {
'journal': Journal,
+ 'elog': Elog,
'group': GroupOfCallbacks,
'method': Method,
},
@@ -930,6 +953,9 @@ class Everything(Renderer):
def generate_cpp(self, loader):
'''Render the template with the provided data.'''
+ # errors.hpp is used by generated.hpp to included any error.hpp files
+ open('errors.hpp', 'w+')
+
with open(args.output, 'w') as fd:
fd.write(
self.render(
diff --git a/src/templates/elog.mako.cpp b/src/templates/elog.mako.cpp
index e69de29..894ecde 100644
--- a/src/templates/elog.mako.cpp
+++ b/src/templates/elog.mako.cpp
@@ -0,0 +1 @@
+std::make_unique<Elog<sdbusplus::${c.error}>>()\
diff --git a/src/templates/errors.mako.hpp b/src/templates/errors.mako.hpp
new file mode 100644
index 0000000..e28d9f9
--- /dev/null
+++ b/src/templates/errors.mako.hpp
@@ -0,0 +1 @@
+#include "${c.error.split('Error::', 1)[0].replace('::','/')}error.hpp"
diff --git a/src/templates/generated.mako.hpp b/src/templates/generated.mako.hpp
index b8ad523..04f2bde 100644
--- a/src/templates/generated.mako.hpp
+++ b/src/templates/generated.mako.hpp
@@ -8,6 +8,8 @@
#include "count.hpp"
#include "data_types.hpp"
#include "journal.hpp"
+#include "elog.hpp"
+#include "errors.hpp"
#include "method.hpp"
#include "propertywatchimpl.hpp"
#include "sdbusplus.hpp"
OpenPOWER on IntegriCloud