mirror of https://github.com/Icinga/icinga2.git
parent
39116e4906
commit
ce6f7ace89
|
@ -56,14 +56,14 @@ public:
|
||||||
static void Unregister(const std::vector<String>& name);
|
static void Unregister(const std::vector<String>& name);
|
||||||
|
|
||||||
static bool ParseCommand(int argc, char **argv, boost::program_options::options_description& visibleDesc,
|
static bool ParseCommand(int argc, char **argv, boost::program_options::options_description& visibleDesc,
|
||||||
boost::program_options::options_description& hiddenDesc,
|
boost::program_options::options_description& hiddenDesc,
|
||||||
boost::program_options::positional_options_description& positionalDesc,
|
boost::program_options::positional_options_description& positionalDesc,
|
||||||
ArgumentCompletionDescription& argCompletionDesc,
|
ArgumentCompletionDescription& argCompletionDesc,
|
||||||
boost::program_options::variables_map& vm, String& cmdname,
|
boost::program_options::variables_map& vm, String& cmdname,
|
||||||
CLICommand::Ptr& command, bool autocomplete);
|
CLICommand::Ptr& command, bool autocomplete);
|
||||||
|
|
||||||
static void ShowCommands(int argc, char **argv,
|
static void ShowCommands(int argc, char **argv,
|
||||||
boost::program_options::options_description *visibleDesc = NULL,
|
boost::program_options::options_description *visibleDesc = NULL,
|
||||||
boost::program_options::options_description *hiddenDesc = NULL,
|
boost::program_options::options_description *hiddenDesc = NULL,
|
||||||
ArgumentCompletionDescription *argCompletionDesc = NULL,
|
ArgumentCompletionDescription *argCompletionDesc = NULL,
|
||||||
bool autocomplete = false, int autoindex = -1);
|
bool autocomplete = false, int autoindex = -1);
|
||||||
|
|
|
@ -48,7 +48,7 @@ void FeatureDisableCommand::InitParameters(boost::program_options::options_descr
|
||||||
boost::program_options::options_description& hiddenDesc,
|
boost::program_options::options_description& hiddenDesc,
|
||||||
ArgumentCompletionDescription& argCompletionDesc) const
|
ArgumentCompletionDescription& argCompletionDesc) const
|
||||||
{
|
{
|
||||||
/* Command doesn't support any parameters. */
|
/* Command doesn't support any parameters. */
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -60,46 +60,46 @@ int FeatureDisableCommand::Run(const boost::program_options::variables_map& vm,
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
//TODO: Add Windows support
|
//TODO: Add Windows support
|
||||||
Log(LogInformation, "cli", "This command is not available on Windows.");
|
Log(LogInformation, "cli", "This command is not available on Windows.");
|
||||||
#else
|
#else
|
||||||
String features_enabled_dir = Application::GetSysconfDir() + "/icinga2/features-enabled";
|
String features_enabled_dir = Application::GetSysconfDir() + "/icinga2/features-enabled";
|
||||||
|
|
||||||
if (ap.empty()) {
|
if (ap.empty()) {
|
||||||
Log(LogCritical, "cli", "Cannot disable feature(s). Name(s) are missing!");
|
Log(LogCritical, "cli", "Cannot disable feature(s). Name(s) are missing!");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Utility::PathExists(features_enabled_dir) ) {
|
if (!Utility::PathExists(features_enabled_dir) ) {
|
||||||
Log(LogCritical, "cli", "Cannot disable features. Path '" + features_enabled_dir + "' does not exist.");
|
Log(LogCritical, "cli", "Cannot disable features. Path '" + features_enabled_dir + "' does not exist.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<std::string> errors;
|
std::vector<std::string> errors;
|
||||||
|
|
||||||
BOOST_FOREACH(const String& feature, ap) {
|
BOOST_FOREACH(const String& feature, ap) {
|
||||||
String target = features_enabled_dir + "/" + feature + ".conf";
|
String target = features_enabled_dir + "/" + feature + ".conf";
|
||||||
|
|
||||||
if (!Utility::PathExists(target) ) {
|
if (!Utility::PathExists(target) ) {
|
||||||
Log(LogCritical, "cli", "Cannot disable feature '" + feature + "'. Target file '" + target + "' does not exist.");
|
Log(LogCritical, "cli", "Cannot disable feature '" + feature + "'. Target file '" + target + "' does not exist.");
|
||||||
errors.push_back(feature);
|
errors.push_back(feature);
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
if (unlink(target.CStr()) < 0) {
|
|
||||||
Log(LogCritical, "cli", "Cannot disable feature '" + feature + "'. Unlinking target file '" + target +
|
|
||||||
"' failed with error code " + Convert::ToString(errno) + ", \"" + Utility::FormatErrorNumber(errno) + "\".");
|
|
||||||
errors.push_back(feature);
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Log(LogInformation, "cli", "Disabling feature " + feature + " in '" + features_enabled_dir + "'.");
|
if (unlink(target.CStr()) < 0) {
|
||||||
}
|
Log(LogCritical, "cli", "Cannot disable feature '" + feature + "'. Unlinking target file '" + target +
|
||||||
|
"' failed with error code " + Convert::ToString(errno) + ", \"" + Utility::FormatErrorNumber(errno) + "\".");
|
||||||
|
errors.push_back(feature);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (!errors.empty()) {
|
Log(LogInformation, "cli", "Disabling feature " + feature + " in '" + features_enabled_dir + "'.");
|
||||||
Log(LogCritical, "cli", "Cannot disable feature(s): " + boost::algorithm::join(errors, " "));
|
}
|
||||||
|
|
||||||
|
if (!errors.empty()) {
|
||||||
|
Log(LogCritical, "cli", "Cannot disable feature(s): " + boost::algorithm::join(errors, " "));
|
||||||
errors.clear();
|
errors.clear();
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* _WIN32 */
|
#endif /* _WIN32 */
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ void FeatureEnableCommand::InitParameters(boost::program_options::options_descri
|
||||||
boost::program_options::options_description& hiddenDesc,
|
boost::program_options::options_description& hiddenDesc,
|
||||||
ArgumentCompletionDescription& argCompletionDesc) const
|
ArgumentCompletionDescription& argCompletionDesc) const
|
||||||
{
|
{
|
||||||
/* Command doesn't support any parameters. */
|
/* Command doesn't support any parameters. */
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -48,7 +48,7 @@ void FeatureListCommand::InitParameters(boost::program_options::options_descript
|
||||||
boost::program_options::options_description& hiddenDesc,
|
boost::program_options::options_description& hiddenDesc,
|
||||||
ArgumentCompletionDescription& argCompletionDesc) const
|
ArgumentCompletionDescription& argCompletionDesc) const
|
||||||
{
|
{
|
||||||
/* Command doesn't support any parameters. */
|
/* Command doesn't support any parameters. */
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -58,13 +58,13 @@ void FeatureListCommand::InitParameters(boost::program_options::options_descript
|
||||||
*/
|
*/
|
||||||
int FeatureListCommand::Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const
|
int FeatureListCommand::Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const
|
||||||
{
|
{
|
||||||
if (!ap.empty()) {
|
if (!ap.empty()) {
|
||||||
Log(LogWarning, "cli", "Ignoring parameters: " + boost::algorithm::join(ap, " "));
|
Log(LogWarning, "cli", "Ignoring parameters: " + boost::algorithm::join(ap, " "));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
//TODO: Add Windows support
|
//TODO: Add Windows support
|
||||||
Log(LogInformation, "cli", "This command is not available on Windows.");
|
Log(LogInformation, "cli", "This command is not available on Windows.");
|
||||||
#else
|
#else
|
||||||
std::vector<String> enabled_features;
|
std::vector<String> enabled_features;
|
||||||
std::vector<String> available_features;
|
std::vector<String> available_features;
|
||||||
|
|
|
@ -44,7 +44,7 @@ public:
|
||||||
virtual int Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const;
|
virtual int Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void CollectFeatures(const String& feature_file, std::vector<String>& features);
|
static void CollectFeatures(const String& feature_file, std::vector<String>& features);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue