mirror of https://github.com/Icinga/icinga2.git
Merge pull request #5811 from Icinga/feature/update-constants-conf-api-setup
Update NodeName/ZoneName constants with 'api setup'
This commit is contained in:
commit
aec231b119
|
@ -54,6 +54,9 @@ bool ApiSetupUtility::SetupMaster(const String& cn, bool prompt_restart)
|
|||
if (!SetupMasterEnableApi())
|
||||
return false;
|
||||
|
||||
if (!SetupMasterUpdateConstants(cn))
|
||||
return false;
|
||||
|
||||
if (prompt_restart) {
|
||||
std::cout << "Done.\n\n";
|
||||
std::cout << "Now restart your Icinga 2 daemon to finish the installation!\n\n";
|
||||
|
@ -196,3 +199,9 @@ bool ApiSetupUtility::SetupMasterEnableApi(void)
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ApiSetupUtility::SetupMasterUpdateConstants(const String& cn)
|
||||
{
|
||||
NodeUtility::UpdateConstant("NodeName", cn);
|
||||
NodeUtility::UpdateConstant("ZoneName", cn);
|
||||
}
|
||||
|
|
|
@ -42,6 +42,7 @@ public:
|
|||
static bool SetupMasterCertificates(const String& cn);
|
||||
static bool SetupMasterApiUser(void);
|
||||
static bool SetupMasterEnableApi(void);
|
||||
static bool SetupMasterUpdateConstants(const String& cn);
|
||||
|
||||
static String GetConfdPath(void);
|
||||
|
||||
|
|
|
@ -208,10 +208,6 @@ int NodeSetupCommand::SetupMaster(const boost::program_options::variables_map& v
|
|||
<< "CN '" << cn << "' does not match the default FQDN '" << Utility::GetFQDN() << "'. Requires update for NodeName constant in constants.conf!";
|
||||
}
|
||||
|
||||
Log(LogInformation, "cli", "Updating constants.conf.");
|
||||
|
||||
NodeUtility::CreateBackupFile(Application::GetSysconfDir() + "/icinga2/constants.conf");
|
||||
|
||||
NodeUtility::UpdateConstant("NodeName", cn);
|
||||
NodeUtility::UpdateConstant("ZoneName", cn);
|
||||
|
||||
|
@ -426,10 +422,6 @@ int NodeSetupCommand::SetupNode(const boost::program_options::variables_map& vm,
|
|||
<< "CN '" << cn << "' does not match the default FQDN '" << Utility::GetFQDN() << "'. Requires an update for the NodeName constant in constants.conf!";
|
||||
}
|
||||
|
||||
Log(LogInformation, "cli", "Updating constants.conf.");
|
||||
|
||||
NodeUtility::CreateBackupFile(Application::GetSysconfDir() + "/icinga2/constants.conf");
|
||||
|
||||
NodeUtility::UpdateConstant("NodeName", cn);
|
||||
NodeUtility::UpdateConstant("ZoneName", vm["zone"].as<std::string>());
|
||||
|
||||
|
|
|
@ -43,6 +43,11 @@
|
|||
|
||||
using namespace icinga;
|
||||
|
||||
String NodeUtility::GetConstantsConfPath(void)
|
||||
{
|
||||
return Application::GetSysconfDir() + "/icinga2/constants.conf";
|
||||
}
|
||||
|
||||
/*
|
||||
* Node Setup helpers
|
||||
*/
|
||||
|
@ -240,7 +245,7 @@ bool NodeUtility::CreateBackupFile(const String& target, bool is_private)
|
|||
String backup = target + ".orig";
|
||||
|
||||
if (Utility::PathExists(backup)) {
|
||||
Log(LogWarning, "cli")
|
||||
Log(LogInformation, "cli")
|
||||
<< "Backup file '" << backup << "' already exists. Skipping backup.";
|
||||
return false;
|
||||
}
|
||||
|
@ -283,16 +288,18 @@ void NodeUtility::SerializeObject(std::ostream& fp, const Dictionary::Ptr& objec
|
|||
|
||||
void NodeUtility::UpdateConstant(const String& name, const String& value)
|
||||
{
|
||||
String constantsFile = Application::GetSysconfDir() + "/icinga2/constants.conf";
|
||||
|
||||
std::ifstream ifp(constantsFile.CStr());
|
||||
std::fstream ofp;
|
||||
String tempFile = Utility::CreateTempFile(constantsFile + ".XXXXXX", 0644, ofp);
|
||||
|
||||
bool found = false;
|
||||
String constantsConfPath = NodeUtility::GetConstantsConfPath();
|
||||
|
||||
Log(LogInformation, "cli")
|
||||
<< "Updating constants file '" << constantsFile << "'.";
|
||||
<< "Updating '" << name << "' constant in '" << constantsConfPath << "'.";
|
||||
|
||||
NodeUtility::CreateBackupFile(constantsConfPath);
|
||||
|
||||
std::ifstream ifp(constantsConfPath.CStr());
|
||||
std::fstream ofp;
|
||||
String tempFile = Utility::CreateTempFile(constantsConfPath + ".XXXXXX", 0644, ofp);
|
||||
|
||||
bool found = false;
|
||||
|
||||
std::string line;
|
||||
while (std::getline(ifp, line)) {
|
||||
|
@ -310,13 +317,13 @@ void NodeUtility::UpdateConstant(const String& name, const String& value)
|
|||
ofp.close();
|
||||
|
||||
#ifdef _WIN32
|
||||
_unlink(constantsFile.CStr());
|
||||
_unlink(constantsConfPath.CStr());
|
||||
#endif /* _WIN32 */
|
||||
|
||||
if (rename(tempFile.CStr(), constantsFile.CStr()) < 0) {
|
||||
if (rename(tempFile.CStr(), constantsConfPath.CStr()) < 0) {
|
||||
BOOST_THROW_EXCEPTION(posix_error()
|
||||
<< boost::errinfo_api_function("rename")
|
||||
<< boost::errinfo_errno(errno)
|
||||
<< boost::errinfo_file_name(constantsFile));
|
||||
<< boost::errinfo_file_name(constantsConfPath));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,6 +37,8 @@ namespace icinga
|
|||
class I2_CLI_API NodeUtility
|
||||
{
|
||||
public:
|
||||
static String GetConstantsConfPath(void);
|
||||
|
||||
static bool CreateBackupFile(const String& target, bool is_private = false);
|
||||
|
||||
static bool WriteNodeConfigObjects(const String& filename, const Array::Ptr& objects);
|
||||
|
|
|
@ -507,12 +507,6 @@ wizard_ticket:
|
|||
<< Utility::GetFQDN() << "'. Requires update for NodeName constant in constants.conf!";
|
||||
}
|
||||
|
||||
Log(LogInformation, "cli", "Updating constants.conf.");
|
||||
|
||||
String constants_file = Application::GetSysconfDir() + "/icinga2/constants.conf";
|
||||
|
||||
NodeUtility::CreateBackupFile(constants_file);
|
||||
|
||||
NodeUtility::UpdateConstant("NodeName", cn);
|
||||
NodeUtility::UpdateConstant("ZoneName", cn);
|
||||
|
||||
|
@ -660,12 +654,6 @@ int NodeWizardCommand::MasterSetup(void) const
|
|||
<< Utility::GetFQDN() << "'. Requires an update for the NodeName constant in constants.conf!";
|
||||
}
|
||||
|
||||
Log(LogInformation, "cli", "Updating constants.conf.");
|
||||
|
||||
String constants_file = Application::GetSysconfDir() + "/icinga2/constants.conf";
|
||||
|
||||
NodeUtility::CreateBackupFile(constants_file);
|
||||
|
||||
NodeUtility::UpdateConstant("NodeName", cn);
|
||||
NodeUtility::UpdateConstant("ZoneName", cn);
|
||||
|
||||
|
|
Loading…
Reference in New Issue