2021-01-25 00:24:31 +01:00
|
|
|
#include "./buildactionprivate.h"
|
|
|
|
|
|
|
|
#include "../serversetup.h"
|
|
|
|
|
|
|
|
namespace LibRepoMgr {
|
|
|
|
|
|
|
|
ReloadConfiguration::ReloadConfiguration(ServiceSetup &setup, const std::shared_ptr<BuildAction> &buildAction)
|
|
|
|
: InternalBuildAction(setup, buildAction)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
void ReloadConfiguration::run()
|
|
|
|
{
|
|
|
|
auto configLock = init(BuildActionAccess::WriteConfig, RequiredDatabases::None, RequiredParameters::None);
|
|
|
|
if (std::holds_alternative<std::monostate>(configLock)) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
m_setup.config.markAllDatabasesToBeDiscarded();
|
|
|
|
auto setupLock = m_setup.lockToWrite();
|
|
|
|
m_setup.auth.users.clear();
|
|
|
|
m_setup.loadConfigFiles(false);
|
|
|
|
setupLock.unlock();
|
|
|
|
m_setup.config.discardDatabases();
|
|
|
|
std::get<std::unique_lock<std::shared_mutex>>(configLock).unlock();
|
|
|
|
|
|
|
|
{
|
|
|
|
const auto buildActionLock = m_setup.building.lockToWrite();
|
|
|
|
reportSuccess();
|
|
|
|
}
|
|
|
|
{
|
|
|
|
const auto configReadLock = m_setup.config.lockToRead();
|
2022-03-15 01:07:51 +01:00
|
|
|
m_setup.saveState();
|
2021-01-25 00:24:31 +01:00
|
|
|
m_setup.printDatabases();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
} // namespace LibRepoMgr
|