pimgen: Switch to new Mako templates

A substantial structural update to pimgen.

The existing template and supporting code is difficult
to enhance.  Given that the code being generated by
pimgen is primarily a large map, with map elements being
initialized by simple types, initializers lists or the result
of method calls - structure pimgen types in a way that track
these givens.

yaml: Simplify the yaml structures.
MethodCall: become an argument.
Mako: Simplify main template.
Use new convenience types.
Use new decorator types.
Remove unused function throughout.

Change-Id: I1c3c16776ef8d5d7e005142999817e0371f9ce89
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
5 files changed
tree: 10d6ed79efb8a352647bc74bd9f6a3bdb0140e20
  1. example/
  2. test/
  3. xyz/
  4. .gitignore
  5. actions.hpp
  6. app.cpp
  7. argument.mako.cpp
  8. bootstrap.sh
  9. configure.ac
  10. events.hpp
  11. generated.mako.cpp
  12. LICENSE
  13. Makefile.am
  14. manager.cpp
  15. manager.hpp
  16. method.mako.cpp
  17. pimgen.py
  18. README.md
  19. signature.mako.cpp
  20. utils.hpp
  21. xyz.openbmc_project.Inventory.Manager.cpp
README.md

Phosphor Inventory Manager (PIM) is an implementation of the xyz.openbmc_project.Inventory.Manager DBus interface, and supporting tools. PIM uses a combination of build-time YAML files and run-time calls to the Notify method of the Manager interface to provide a generalized inventory state management solution.

YAML

PIM includes a YAML parser (pimgen.py). For PIM to do anything useful, a set of YAML files must be provided externally that tell it what to do. Examples can be found in the examples directory.

The following top level YAML tags are supported:

  • description - An optional description of the file.
  • events - One or more events that PIM should monitor.

events

Supported event tags are:

  • name - A globally unique event name.
  • description - An optional description of the event.
  • type - The event type. Supported types are: match.
  • actions - The responses to the event.

Subsequent tags are defined by the event type.


match

Supported match tags are:

  • signatures - A DBus match specification.
  • filters - Filters to apply when a match occurs.

filters

Supported filter tags are:

  • name - The filter to use.

Subsequent tags are defined by the filter type.

The available filters provided by PIM are:

  • propertyChangedTo - Only match events when the specified property has the specified value.

propertyChangedTo

Supported arguments for the propertyChangedTo filter are:

  • interface - The interface hosting the property to be checked.
  • property - The property to check.
  • value - The value to check.

actions

Supported action tags are:

  • name - The action to perform.

Subsequent tags are defined by the action type.

The available actions provided by PIM are:

  • destroyObject - Destroy the specified DBus object.
  • setProperty - Set the specified property on the specified DBus object.

destroyObject

Supported arguments for the destroyObject action are:

  • path - The path of the object to remove from DBus.

setProperty

Supported arguments for the setProperty action are:

  • interface - The interface hosting the property to be set.
  • property - The property to set.
  • path - The object hosting the property to be set.
  • value - The value to set.

Building

After running pimgen.py, build PIM using the following steps:

    ./bootstrap.sh
    ./configure ${CONFIGURE_FLAGS}
    make

To clean the repository run:

 ./bootstrap.sh clean