| #pragma once |
| |
| #include <nlohmann/json.hpp> |
| |
| #include <list> |
| #include <set> |
| |
| namespace configuration |
| { |
| constexpr const char* globalSchema = "global.json"; |
| constexpr const char* hostConfigurationDirectory = SYSCONF_DIR "configurations"; |
| constexpr const char* configurationDirectory = PACKAGE_DIR "configurations"; |
| constexpr const char* currentConfiguration = "/var/configuration/system.json"; |
| constexpr const char* schemaDirectory = PACKAGE_DIR "configurations/schemas"; |
| |
| bool writeJsonFiles(const nlohmann::json& systemConfiguration); |
| |
| bool loadConfigurations(std::list<nlohmann::json>& configurations); |
| |
| template <typename JsonType> |
| bool setJsonFromPointer(const std::string& ptrStr, const JsonType& value, |
| nlohmann::json& systemConfiguration) |
| { |
| try |
| { |
| nlohmann::json::json_pointer ptr(ptrStr); |
| nlohmann::json& ref = systemConfiguration[ptr]; |
| ref = value; |
| return true; |
| } |
| catch (const std::out_of_range&) |
| { |
| return false; |
| } |
| } |
| |
| void deriveNewConfiguration(const nlohmann::json& oldConfiguration, |
| nlohmann::json& newConfiguration); |
| |
| bool validateJson(const nlohmann::json& schemaFile, |
| const nlohmann::json& input); |
| |
| std::set<std::string> getProbeInterfaces(); |
| |
| } // namespace configuration |