blob: b3b2cdc11c8136175fb9c71adf4ad3b225378e94 [file] [log] [blame]
#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