control: Add request target base action

Add the YAML based set_request_speed_base_with_max action function as an
action class for JSON configs to use. This action required to be
enhanced to handle the different supported data types of groups that
could be configured in the JSON with this action.

Change-Id: I8cc223cc10d33462ddc303145fee08347ea7c8b5
Signed-off-by: Matthew Barth <msbarth@us.ibm.com>
diff --git a/control/json/manager.hpp b/control/json/manager.hpp
index 8919b63..eeedfd3 100644
--- a/control/json/manager.hpp
+++ b/control/json/manager.hpp
@@ -146,6 +146,22 @@
     static bool hasOwner(const std::string& path, const std::string& intf);
 
     /**
+     * @brief Get the object's property value as a variant
+     *
+     * @param[in] path - Path of the object containing the property
+     * @param[in] intf - Interface name containing the property
+     * @param[in] prop - Name of property
+     *
+     * @return - The object's property value as a variant
+     */
+    static inline auto getObjValueVariant(const std::string& path,
+                                          const std::string& intf,
+                                          const std::string& prop)
+    {
+        return _objects.at(path).at(intf).at(prop);
+    };
+
+    /**
      * @brief Get the configured power on delay(OPTIONAL)
      *
      * @return Power on delay in seconds
@@ -181,6 +197,12 @@
                                           std::vector<std::string>>>
         _servTree;
 
+    /* Object map of paths to interfaces of properties and their values */
+    static std::map<
+        std::string,
+        std::map<std::string, std::map<std::string, PropertyVariantType>>>
+        _objects;
+
     /* List of zones configured */
     std::map<configKey, std::unique_ptr<Zone>> _zones;