psu-ng: Handle health rollup based on availability

When a PSU is set to not available, create an association between the
power supply and its chassis as a way to 'roll up' the health status to
that chassis.  It looks like:

    <chassis>/critical
        endpoints: <power supply>
    <power supply>/health_rollup
        endpoints: <chassis>

There is Redfish code that look at the endpoints in that chassis
association object to determine if the chassis health is OK or not.

Note that some systems, such as IBM's, have other code that will fill
in that association when it is called out in an event log, which is why
this code doesn't have to do it for every single fault.

Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: I262dd738ebadb72aa207011941066fc282bfe4df
diff --git a/types.hpp b/types.hpp
index 19563e3..502c134 100644
--- a/types.hpp
+++ b/types.hpp
@@ -15,6 +15,7 @@
 constexpr auto VERSION_IFACE = "xyz.openbmc_project.Software.Version";
 constexpr auto AVAILABILITY_IFACE =
     "xyz.openbmc_project.State.Decorator.Availability";
+constexpr auto ASSOC_DEF_IFACE = "xyz.openbmc_project.Association.Definitions";
 #ifdef IBM_VPD
 constexpr auto DINF_IFACE = "com.ibm.ipzvpd.DINF";
 constexpr auto VINI_IFACE = "com.ibm.ipzvpd.VINI";
@@ -26,6 +27,7 @@
 constexpr auto PRESENT_PROP = "Present";
 constexpr auto FUNCTIONAL_PROP = "Functional";
 constexpr auto AVAILABLE_PROP = "Available";
+constexpr auto ASSOC_PROP = "Associations";
 
 constexpr auto INVENTORY_OBJ_PATH = "/xyz/openbmc_project/inventory";
 constexpr auto POWER_OBJ_PATH = "/org/openbmc/control/power0";