mirror of https://github.com/Icinga/icinga2.git
parent
35c75d95b5
commit
3979bd87b3
|
@ -401,6 +401,20 @@ int Main(void)
|
|||
if (vm.count("arg"))
|
||||
args = vm["arg"].as<std::vector<std::string> >();
|
||||
|
||||
if (args.size() < command->GetMinArguments()) {
|
||||
Log(LogCritical, "cli")
|
||||
<< "Too few arguments. Command needs at least " << command->GetMinArguments()
|
||||
<< " argument" << (command->GetMinArguments() != 1 ? "s" : "") << ".";
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
if (command->GetMaxArguments() >= 0 && args.size() > command->GetMaxArguments()) {
|
||||
Log(LogCritical, "cli")
|
||||
<< "Too many arguments. At most " << command->GetMaxArguments()
|
||||
<< " argument" << (command->GetMaxArguments() != 1 ? "s" : "") << " may be specified.";
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
rc = command->Run(vm, args);
|
||||
}
|
||||
|
||||
|
|
|
@ -43,6 +43,11 @@ String AgentAddCommand::GetShortDescription(void) const
|
|||
return "add agent";
|
||||
}
|
||||
|
||||
int AgentAddCommand::GetMinArguments(void) const
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* The entry point for the "agent add" CLI command.
|
||||
*
|
||||
|
@ -50,11 +55,6 @@ String AgentAddCommand::GetShortDescription(void) const
|
|||
*/
|
||||
int AgentAddCommand::Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const
|
||||
{
|
||||
if (ap.empty()) {
|
||||
Log(LogCritical, "cli", "No agent name provided.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!AgentUtility::AddAgent(ap[0])) {
|
||||
Log(LogCritical, "cli")
|
||||
<< "Cannot add agent '" << ap[0] << "'.";
|
||||
|
|
|
@ -37,6 +37,7 @@ public:
|
|||
|
||||
virtual String GetDescription(void) const;
|
||||
virtual String GetShortDescription(void) const;
|
||||
virtual int GetMinArguments(void) const;
|
||||
virtual int Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const;
|
||||
};
|
||||
|
||||
|
|
|
@ -48,6 +48,16 @@ std::vector<String> AgentRemoveCommand::GetPositionalSuggestions(const String& w
|
|||
return AgentUtility::GetAgentCompletionSuggestions(word);
|
||||
}
|
||||
|
||||
int AgentRemoveCommand::GetMinArguments(void) const
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
int AgentRemoveCommand::GetMaxArguments(void) const
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* The entry point for the "agent remove" CLI command.
|
||||
*
|
||||
|
@ -55,11 +65,6 @@ std::vector<String> AgentRemoveCommand::GetPositionalSuggestions(const String& w
|
|||
*/
|
||||
int AgentRemoveCommand::Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const
|
||||
{
|
||||
if (ap.empty()) {
|
||||
Log(LogCritical, "cli", "No agent name provided.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
bool failed = false;
|
||||
|
||||
BOOST_FOREACH(const String& agent, ap) {
|
||||
|
|
|
@ -37,6 +37,8 @@ public:
|
|||
|
||||
virtual String GetDescription(void) const;
|
||||
virtual String GetShortDescription(void) const;
|
||||
virtual int GetMinArguments(void) const;
|
||||
virtual int GetMaxArguments(void) const;
|
||||
virtual std::vector<String> GetPositionalSuggestions(const String& word) const;
|
||||
virtual int Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const;
|
||||
};
|
||||
|
|
|
@ -48,6 +48,11 @@ void AgentSetCommand::InitParameters(boost::program_options::options_description
|
|||
|
||||
}
|
||||
|
||||
int AgentSetCommand::GetMinArguments(void) const
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* The entry point for the "agent set" CLI command.
|
||||
*
|
||||
|
@ -55,11 +60,6 @@ void AgentSetCommand::InitParameters(boost::program_options::options_description
|
|||
*/
|
||||
int AgentSetCommand::Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const
|
||||
{
|
||||
if (ap.empty()) {
|
||||
Log(LogCritical, "cli", "No agent name provided.");
|
||||
return 1;
|
||||
}
|
||||
|
||||
Log(LogWarning, "cli", "TODO: Not implemented yet.");
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -37,6 +37,7 @@ public:
|
|||
|
||||
virtual String GetDescription(void) const;
|
||||
virtual String GetShortDescription(void) const;
|
||||
virtual int GetMinArguments(void) const;
|
||||
virtual void InitParameters(boost::program_options::options_description& visibleDesc,
|
||||
boost::program_options::options_description& hiddenDesc) const;
|
||||
virtual int Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const;
|
||||
|
|
|
@ -49,11 +49,6 @@ String AgentUpdateConfigCommand::GetShortDescription(void) const
|
|||
*/
|
||||
int AgentUpdateConfigCommand::Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const
|
||||
{
|
||||
if (!ap.empty()) {
|
||||
Log(LogWarning, "cli")
|
||||
<< "Ignoring parameters: " << boost::algorithm::join(ap, " ");
|
||||
}
|
||||
|
||||
Log(LogWarning, "cli", "TODO: Not implemented yet.");
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -49,11 +49,6 @@ String AgentWizardCommand::GetShortDescription(void) const
|
|||
*/
|
||||
int AgentWizardCommand::Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const
|
||||
{
|
||||
if (!ap.empty()) {
|
||||
Log(LogWarning, "cli")
|
||||
<< "Ignoring parameters: " << boost::algorithm::join(ap, " ");
|
||||
}
|
||||
|
||||
Log(LogWarning, "cli", "TODO: Not implemented yet.");
|
||||
|
||||
/*
|
||||
|
|
|
@ -92,6 +92,16 @@ std::vector<String> icinga::GetFieldCompletionSuggestions(const Type *type, cons
|
|||
return result;
|
||||
}
|
||||
|
||||
int CLICommand::GetMinArguments(void) const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int CLICommand::GetMaxArguments(void) const
|
||||
{
|
||||
return GetMinArguments();
|
||||
}
|
||||
|
||||
boost::mutex& CLICommand::GetRegistryMutex(void)
|
||||
{
|
||||
static boost::mutex mtx;
|
||||
|
|
|
@ -46,6 +46,8 @@ public:
|
|||
|
||||
virtual String GetDescription(void) const = 0;
|
||||
virtual String GetShortDescription(void) const = 0;
|
||||
virtual int GetMinArguments(void) const;
|
||||
virtual int GetMaxArguments(void) const;
|
||||
virtual void InitParameters(boost::program_options::options_description& visibleDesc,
|
||||
boost::program_options::options_description& hiddenDesc) const;
|
||||
virtual int Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const = 0;
|
||||
|
|
|
@ -41,6 +41,16 @@ std::vector<String> FeatureDisableCommand::GetPositionalSuggestions(const String
|
|||
return FeatureUtility::GetFieldCompletionSuggestions(word, false);
|
||||
}
|
||||
|
||||
int FeatureDisableCommand::GetMinArguments(void) const
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
int FeatureDisableCommand::GetMaxArguments(void) const
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* The entry point for the "feature disable" CLI command.
|
||||
*
|
||||
|
|
|
@ -37,6 +37,8 @@ public:
|
|||
|
||||
virtual String GetDescription(void) const;
|
||||
virtual String GetShortDescription(void) const;
|
||||
virtual int GetMinArguments(void) const;
|
||||
virtual int GetMaxArguments(void) const;
|
||||
virtual std::vector<String> GetPositionalSuggestions(const String& word) const;
|
||||
virtual int Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const;
|
||||
|
||||
|
|
|
@ -41,6 +41,16 @@ std::vector<String> FeatureEnableCommand::GetPositionalSuggestions(const String&
|
|||
return FeatureUtility::GetFieldCompletionSuggestions(word, true);
|
||||
}
|
||||
|
||||
int FeatureEnableCommand::GetMinArguments(void) const
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
int FeatureEnableCommand::GetMaxArguments(void) const
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* The entry point for the "feature enable" CLI command.
|
||||
*
|
||||
|
@ -48,12 +58,5 @@ std::vector<String> FeatureEnableCommand::GetPositionalSuggestions(const String&
|
|||
*/
|
||||
int FeatureEnableCommand::Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const
|
||||
{
|
||||
if (ap.empty()) {
|
||||
Log(LogCritical, "cli", "Cannot enable feature(s). Name(s) are missing!");
|
||||
return 0;
|
||||
}
|
||||
|
||||
return FeatureUtility::EnableFeatures(ap);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -37,6 +37,8 @@ public:
|
|||
|
||||
virtual String GetDescription(void) const;
|
||||
virtual String GetShortDescription(void) const;
|
||||
virtual int GetMinArguments(void) const;
|
||||
virtual int GetMaxArguments(void) const;
|
||||
virtual std::vector<String> GetPositionalSuggestions(const String& word) const;
|
||||
virtual int Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const;
|
||||
};
|
||||
|
|
|
@ -48,10 +48,5 @@ String FeatureListCommand::GetShortDescription(void) const
|
|||
*/
|
||||
int FeatureListCommand::Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const
|
||||
{
|
||||
if (!ap.empty()) {
|
||||
Log(LogWarning, "cli")
|
||||
<< "Ignoring parameters: " << boost::algorithm::join(ap, " ");
|
||||
}
|
||||
|
||||
return FeatureUtility::ListFeatures();
|
||||
}
|
||||
|
|
|
@ -66,11 +66,6 @@ void ObjectListCommand::InitParameters(boost::program_options::options_descripti
|
|||
*/
|
||||
int ObjectListCommand::Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const
|
||||
{
|
||||
if (!ap.empty()) {
|
||||
Log(LogWarning, "cli")
|
||||
<< "Ignoring parameters: " << boost::algorithm::join(ap, " ");
|
||||
}
|
||||
|
||||
String objectfile = Application::GetObjectsPath();
|
||||
|
||||
if (!Utility::PathExists(objectfile)) {
|
||||
|
|
|
@ -65,11 +65,6 @@ void RepositoryCommitCommand::InitParameters(boost::program_options::options_des
|
|||
*/
|
||||
int RepositoryCommitCommand::Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const
|
||||
{
|
||||
if (!ap.empty()) {
|
||||
Log(LogWarning, "cli")
|
||||
<< "Ignoring parameters: " << boost::algorithm::join(ap, " ");
|
||||
}
|
||||
|
||||
if (vm.count("simulate")) {
|
||||
RepositoryUtility::PrintChangeLog(std::cout);
|
||||
std::cout << "Simulation not yet implemented.\n";
|
||||
|
|
|
@ -132,6 +132,11 @@ std::vector<String> RepositoryObjectCommand::GetPositionalSuggestions(const Stri
|
|||
return CLICommand::GetPositionalSuggestions(word);
|
||||
}
|
||||
|
||||
int RepositoryObjectCommand::GetMaxArguments(void) const
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* The entry point for the "repository <type> <add/remove/list>" CLI command.
|
||||
*
|
||||
|
@ -139,7 +144,6 @@ std::vector<String> RepositoryObjectCommand::GetPositionalSuggestions(const Stri
|
|||
*/
|
||||
int RepositoryObjectCommand::Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const
|
||||
{
|
||||
|
||||
Dictionary::Ptr attrs = RepositoryUtility::GetArgumentAttributes(ap);
|
||||
|
||||
if (!attrs->Contains("name")) {
|
||||
|
|
|
@ -47,6 +47,7 @@ public:
|
|||
|
||||
virtual String GetDescription(void) const;
|
||||
virtual String GetShortDescription(void) const;
|
||||
virtual int GetMaxArguments(void) const;
|
||||
virtual void InitParameters(boost::program_options::options_description& visibleDesc,
|
||||
boost::program_options::options_description& hiddenDesc) const;
|
||||
virtual std::vector<String> GetPositionalSuggestions(const String& word) const;
|
||||
|
|
|
@ -58,6 +58,11 @@ void VariableGetCommand::InitParameters(boost::program_options::options_descript
|
|||
("current", "Uses the current value (i.e. from the running process, rather than from the vars file)");
|
||||
}
|
||||
|
||||
int VariableGetCommand::GetMinArguments(void) const
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* The entry point for the "variable get" CLI command.
|
||||
*
|
||||
|
@ -65,11 +70,6 @@ void VariableGetCommand::InitParameters(boost::program_options::options_descript
|
|||
*/
|
||||
int VariableGetCommand::Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const
|
||||
{
|
||||
if (ap.size() != 1) {
|
||||
Log(LogCritical, "cli", "Missing argument: variable name");
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (vm.count("current")) {
|
||||
std::cout << ScriptVariable::Get(ap[0], &Empty) << "\n";
|
||||
return 0;
|
||||
|
|
|
@ -40,6 +40,7 @@ public:
|
|||
|
||||
virtual String GetDescription(void) const;
|
||||
virtual String GetShortDescription(void) const;
|
||||
virtual int GetMinArguments(void) const;
|
||||
void InitParameters(boost::program_options::options_description& visibleDesc,
|
||||
boost::program_options::options_description& hiddenDesc) const;
|
||||
virtual int Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const;
|
||||
|
|
|
@ -57,11 +57,6 @@ String VariableListCommand::GetShortDescription(void) const
|
|||
*/
|
||||
int VariableListCommand::Run(const boost::program_options::variables_map& vm, const std::vector<std::string>& ap) const
|
||||
{
|
||||
if (!ap.empty()) {
|
||||
Log(LogWarning, "cli")
|
||||
<< "Ignoring parameters: " << boost::algorithm::join(ap, " ");
|
||||
}
|
||||
|
||||
String varsfile = Application::GetVarsPath();
|
||||
|
||||
if (!Utility::PathExists(varsfile)) {
|
||||
|
|
Loading…
Reference in New Issue