From d5faea318a83b5e6505715b75855b2fa296b7c99 Mon Sep 17 00:00:00 2001 From: Gunnar Mills Date: Tue, 8 Aug 2017 14:19:36 -0500 Subject: 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 --- .gitignore | 1 + src/Makefile.am | 1 + src/pdmgen.py | 26 ++++++++++++++++++++++++++ src/templates/elog.mako.cpp | 1 + src/templates/errors.mako.hpp | 1 + src/templates/generated.mako.hpp | 2 ++ 6 files changed, 32 insertions(+) create mode 100644 src/templates/errors.mako.hpp 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>()\ 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" -- cgit v1.2.1