diff --git a/callouts/callouts-gen.mako.hpp b/callouts/callouts-gen.mako.hpp
new file mode 100644
index 0000000..7d28a3a
--- /dev/null
+++ b/callouts/callouts-gen.mako.hpp
@@ -0,0 +1,23 @@
+## Note that this file is not auto generated, it is what generates the
+## callouts-gen.hpp file
+// This file was autogenerated.  Do not edit!
+// See callouts-gen.py for more details
+#pragma once
+
+#include <string>
+#include <tuple>
+
+namespace phosphor
+{
+namespace logging
+{
+
+constexpr auto callouts =
+{
+% for key, value in sorted(calloutsMap.iteritems()):
+    std::make_tuple("${key}", "${value}"),
+% endfor
+};
+
+} // namespace logging
+} // namespace phosphor
diff --git a/callouts/callouts.py b/callouts/callouts.py
new file mode 100755
index 0000000..c9a5024
--- /dev/null
+++ b/callouts/callouts.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+
+import os
+import yaml
+from mako.template import Template
+import argparse
+
+
+def main():
+    parser = argparse.ArgumentParser(
+        description="Callout code generator")
+
+    parser.add_argument(
+        '-i', '--callouts_yaml', dest='callouts_yaml',
+        default='callouts-example.yaml', help='input callouts yaml')
+    args = parser.parse_args()
+
+    with open(os.path.join(script_dir, args.callouts_yaml), 'r') as fd:
+        calloutsMap = yaml.safe_load(fd)
+
+        # Render the mako template
+        template = os.path.join(script_dir, 'callouts-gen.mako.hpp')
+        t = Template(filename=template)
+        with open('callouts-gen.hpp', 'w') as fd:
+            fd.write(
+                t.render(
+                    calloutsMap=calloutsMap))
+
+
+if __name__ == '__main__':
+    script_dir = os.path.dirname(os.path.realpath(__file__))
+    main()
