xref: /openbmc/phosphor-psu-code-mgmt/src/association_interface.hpp (revision 66a54ad41b40d019f52ff15866d249962b5c3f88)
1 #pragma once
2 
3 #include <string>
4 
5 class AssociationInterface
6 {
7   public:
8     AssociationInterface() = default;
9     AssociationInterface(const AssociationInterface&) = delete;
10     AssociationInterface& operator=(const AssociationInterface&) = delete;
11     AssociationInterface(AssociationInterface&&) = delete;
12     AssociationInterface& operator=(AssociationInterface&&) = delete;
13 
14     virtual ~AssociationInterface() = default;
15 
16     /** @brief Create an active association to the
17      *  newly active software image
18      *
19      * @param[in]  path - The path to create the association to.
20      */
21     virtual void createActiveAssociation(const std::string& path) = 0;
22 
23     /** @brief Add the functional association to the
24      *  new "running" PSU images
25      *
26      * @param[in]  path - The path to add the association to.
27      */
28     virtual void addFunctionalAssociation(const std::string& path) = 0;
29 
30     /** @brief Add the updateable association to the
31      *  "running" PSU software image
32      *
33      * @param[in]  path - The path to create the association.
34      */
35     virtual void addUpdateableAssociation(const std::string& path) = 0;
36 
37     /** @brief Remove the associations from the provided software image path
38      *
39      * @param[in]  path - The path to remove the association from.
40      */
41     virtual void removeAssociation(const std::string& path) = 0;
42 };
43