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";
return true;
}
+
+bool ApiSetupUtility::SetupMasterUpdateConstants(const String& cn)
+{
+ NodeUtility::UpdateConstant("NodeName", cn);
+ NodeUtility::UpdateConstant("ZoneName", cn);
+}
static bool SetupMasterCertificates(const String& cn);
static bool SetupMasterApiUser(void);
static bool SetupMasterEnableApi(void);
+ static bool SetupMasterUpdateConstants(const String& cn);
static String GetConfdPath(void);
<< "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);
<< "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>());
using namespace icinga;
+String NodeUtility::GetConstantsConfPath(void)
+{
+ return Application::GetSysconfDir() + "/icinga2/constants.conf";
+}
+
/*
* Node Setup helpers
*/
String backup = target + ".orig";
if (Utility::PathExists(backup)) {
- Log(LogWarning, "cli")
+ Log(LogInformation, "cli")
<< "Backup file '" << backup << "' already exists. Skipping backup.";
return false;
}
void NodeUtility::UpdateConstant(const String& name, const String& value)
{
- String constantsFile = Application::GetSysconfDir() + "/icinga2/constants.conf";
+ String constantsConfPath = NodeUtility::GetConstantsConfPath();
- std::ifstream ifp(constantsFile.CStr());
+ Log(LogInformation, "cli")
+ << "Updating '" << name << "' constant in '" << constantsConfPath << "'.";
+
+ NodeUtility::CreateBackupFile(constantsConfPath);
+
+ std::ifstream ifp(constantsConfPath.CStr());
std::fstream ofp;
- String tempFile = Utility::CreateTempFile(constantsFile + ".XXXXXX", 0644, ofp);
+ String tempFile = Utility::CreateTempFile(constantsConfPath + ".XXXXXX", 0644, ofp);
bool found = false;
- Log(LogInformation, "cli")
- << "Updating constants file '" << constantsFile << "'.";
-
std::string line;
while (std::getline(ifp, line)) {
if (line.find("const " + name + " = ") != std::string::npos) {
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));
}
}
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);
<< 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);
<< 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);