mirror of https://github.com/Icinga/icinga2.git
Fix notify flag is ignored in ACKNOWLEDGE_*_PROBLEM commands
fixes #8298
This commit is contained in:
parent
d67679c0ec
commit
a1f04992f3
|
@ -1392,7 +1392,7 @@ Value ApiEvents::DowntimeRemovedAPIHandler(const MessageOrigin& origin, const Di
|
||||||
|
|
||||||
void ApiEvents::AcknowledgementSetHandler(const Checkable::Ptr& checkable,
|
void ApiEvents::AcknowledgementSetHandler(const Checkable::Ptr& checkable,
|
||||||
const String& author, const String& comment, AcknowledgementType type,
|
const String& author, const String& comment, AcknowledgementType type,
|
||||||
double expiry, const MessageOrigin& origin)
|
bool notify, double expiry, const MessageOrigin& origin)
|
||||||
{
|
{
|
||||||
ApiListener::Ptr listener = ApiListener::GetInstance();
|
ApiListener::Ptr listener = ApiListener::GetInstance();
|
||||||
|
|
||||||
|
@ -1410,6 +1410,7 @@ void ApiEvents::AcknowledgementSetHandler(const Checkable::Ptr& checkable,
|
||||||
params->Set("author", author);
|
params->Set("author", author);
|
||||||
params->Set("comment", comment);
|
params->Set("comment", comment);
|
||||||
params->Set("acktype", type);
|
params->Set("acktype", type);
|
||||||
|
params->Set("notify", notify);
|
||||||
params->Set("expiry", expiry);
|
params->Set("expiry", expiry);
|
||||||
|
|
||||||
Dictionary::Ptr message = new Dictionary();
|
Dictionary::Ptr message = new Dictionary();
|
||||||
|
@ -1448,7 +1449,7 @@ Value ApiEvents::AcknowledgementSetAPIHandler(const MessageOrigin& origin, const
|
||||||
|
|
||||||
checkable->AcknowledgeProblem(params->Get("author"), params->Get("comment"),
|
checkable->AcknowledgeProblem(params->Get("author"), params->Get("comment"),
|
||||||
static_cast<AcknowledgementType>(static_cast<int>(params->Get("acktype"))),
|
static_cast<AcknowledgementType>(static_cast<int>(params->Get("acktype"))),
|
||||||
params->Get("expiry"), origin);
|
params->Get("notify"), params->Get("expiry"), origin);
|
||||||
|
|
||||||
return Empty;
|
return Empty;
|
||||||
}
|
}
|
||||||
|
|
|
@ -103,7 +103,8 @@ public:
|
||||||
static void DowntimeRemovedHandler(const Checkable::Ptr& checkable, const Downtime::Ptr& downtime, const MessageOrigin& origin);
|
static void DowntimeRemovedHandler(const Checkable::Ptr& checkable, const Downtime::Ptr& downtime, const MessageOrigin& origin);
|
||||||
static Value DowntimeRemovedAPIHandler(const MessageOrigin& origin, const Dictionary::Ptr& params);
|
static Value DowntimeRemovedAPIHandler(const MessageOrigin& origin, const Dictionary::Ptr& params);
|
||||||
|
|
||||||
static void AcknowledgementSetHandler(const Checkable::Ptr& checkable, const String& author, const String& comment, AcknowledgementType type, double expiry, const MessageOrigin& origin);
|
static void AcknowledgementSetHandler(const Checkable::Ptr& checkable, const String& author, const String& comment, AcknowledgementType type,
|
||||||
|
bool notify, double expiry, const MessageOrigin& origin);
|
||||||
static Value AcknowledgementSetAPIHandler(const MessageOrigin& origin, const Dictionary::Ptr& params);
|
static Value AcknowledgementSetAPIHandler(const MessageOrigin& origin, const Dictionary::Ptr& params);
|
||||||
|
|
||||||
static void AcknowledgementClearedHandler(const Checkable::Ptr& checkable, const MessageOrigin& origin);
|
static void AcknowledgementClearedHandler(const Checkable::Ptr& checkable, const MessageOrigin& origin);
|
||||||
|
|
|
@ -31,7 +31,7 @@ REGISTER_TYPE(Checkable);
|
||||||
REGISTER_SCRIPTFUNCTION(ValidateCheckableCheckInterval, &Checkable::ValidateCheckInterval);
|
REGISTER_SCRIPTFUNCTION(ValidateCheckableCheckInterval, &Checkable::ValidateCheckInterval);
|
||||||
|
|
||||||
boost::signals2::signal<void (const Checkable::Ptr&, bool, const MessageOrigin&)> Checkable::OnEnablePerfdataChanged;
|
boost::signals2::signal<void (const Checkable::Ptr&, bool, const MessageOrigin&)> Checkable::OnEnablePerfdataChanged;
|
||||||
boost::signals2::signal<void (const Checkable::Ptr&, const String&, const String&, AcknowledgementType, double, const MessageOrigin&)> Checkable::OnAcknowledgementSet;
|
boost::signals2::signal<void (const Checkable::Ptr&, const String&, const String&, AcknowledgementType, bool, double, const MessageOrigin&)> Checkable::OnAcknowledgementSet;
|
||||||
boost::signals2::signal<void (const Checkable::Ptr&, const MessageOrigin&)> Checkable::OnAcknowledgementCleared;
|
boost::signals2::signal<void (const Checkable::Ptr&, const MessageOrigin&)> Checkable::OnAcknowledgementCleared;
|
||||||
|
|
||||||
Checkable::Checkable(void)
|
Checkable::Checkable(void)
|
||||||
|
@ -121,7 +121,7 @@ bool Checkable::IsAcknowledged(void)
|
||||||
return GetAcknowledgement() != AcknowledgementNone;
|
return GetAcknowledgement() != AcknowledgementNone;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Checkable::AcknowledgeProblem(const String& author, const String& comment, AcknowledgementType type, double expiry, const MessageOrigin& origin)
|
void Checkable::AcknowledgeProblem(const String& author, const String& comment, AcknowledgementType type, bool notify, double expiry, const MessageOrigin& origin)
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
ObjectLock olock(this);
|
ObjectLock olock(this);
|
||||||
|
@ -130,9 +130,10 @@ void Checkable::AcknowledgeProblem(const String& author, const String& comment,
|
||||||
SetAcknowledgementExpiry(expiry);
|
SetAcknowledgementExpiry(expiry);
|
||||||
}
|
}
|
||||||
|
|
||||||
OnNotificationsRequested(this, NotificationAcknowledgement, GetLastCheckResult(), author, comment);
|
if (notify)
|
||||||
|
OnNotificationsRequested(this, NotificationAcknowledgement, GetLastCheckResult(), author, comment);
|
||||||
|
|
||||||
OnAcknowledgementSet(this, author, comment, type, expiry, origin);
|
OnAcknowledgementSet(this, author, comment, type, notify, expiry, origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Checkable::ClearAcknowledgement(const MessageOrigin& origin)
|
void Checkable::ClearAcknowledgement(const MessageOrigin& origin)
|
||||||
|
|
|
@ -94,7 +94,7 @@ public:
|
||||||
|
|
||||||
AcknowledgementType GetAcknowledgement(void);
|
AcknowledgementType GetAcknowledgement(void);
|
||||||
|
|
||||||
void AcknowledgeProblem(const String& author, const String& comment, AcknowledgementType type, double expiry = 0, const MessageOrigin& origin = MessageOrigin());
|
void AcknowledgeProblem(const String& author, const String& comment, AcknowledgementType type, bool notify = true, double expiry = 0, const MessageOrigin& origin = MessageOrigin());
|
||||||
void ClearAcknowledgement(const MessageOrigin& origin = MessageOrigin());
|
void ClearAcknowledgement(const MessageOrigin& origin = MessageOrigin());
|
||||||
|
|
||||||
/* Checks */
|
/* Checks */
|
||||||
|
@ -187,7 +187,7 @@ public:
|
||||||
static boost::signals2::signal<void (const Checkable::Ptr&, FlappingState)> OnFlappingChanged;
|
static boost::signals2::signal<void (const Checkable::Ptr&, FlappingState)> OnFlappingChanged;
|
||||||
static boost::signals2::signal<void (const Checkable::Ptr&, const Downtime::Ptr&)> OnDowntimeTriggered;
|
static boost::signals2::signal<void (const Checkable::Ptr&, const Downtime::Ptr&)> OnDowntimeTriggered;
|
||||||
static boost::signals2::signal<void (const Checkable::Ptr&, const String&, const String&, AcknowledgementType,
|
static boost::signals2::signal<void (const Checkable::Ptr&, const String&, const String&, AcknowledgementType,
|
||||||
double, const MessageOrigin&)> OnAcknowledgementSet;
|
bool, double, const MessageOrigin&)> OnAcknowledgementSet;
|
||||||
static boost::signals2::signal<void (const Checkable::Ptr&, const MessageOrigin&)> OnAcknowledgementCleared;
|
static boost::signals2::signal<void (const Checkable::Ptr&, const MessageOrigin&)> OnAcknowledgementCleared;
|
||||||
static boost::signals2::signal<void (const Checkable::Ptr&)> OnEventCommandExecuted;
|
static boost::signals2::signal<void (const Checkable::Ptr&)> OnEventCommandExecuted;
|
||||||
|
|
||||||
|
|
|
@ -641,6 +641,7 @@ void ExternalCommandProcessor::DisableHostSvcChecks(double, const std::vector<St
|
||||||
void ExternalCommandProcessor::AcknowledgeSvcProblem(double, const std::vector<String>& arguments)
|
void ExternalCommandProcessor::AcknowledgeSvcProblem(double, const std::vector<String>& arguments)
|
||||||
{
|
{
|
||||||
bool sticky = (Convert::ToLong(arguments[2]) == 2 ? true : false);
|
bool sticky = (Convert::ToLong(arguments[2]) == 2 ? true : false);
|
||||||
|
bool notify = (Convert::ToLong(arguments[3]) > 0 ? true : false);
|
||||||
|
|
||||||
Service::Ptr service = Service::GetByNamePair(arguments[0], arguments[1]);
|
Service::Ptr service = Service::GetByNamePair(arguments[0], arguments[1]);
|
||||||
|
|
||||||
|
@ -651,15 +652,16 @@ void ExternalCommandProcessor::AcknowledgeSvcProblem(double, const std::vector<S
|
||||||
BOOST_THROW_EXCEPTION(std::invalid_argument("The service '" + arguments[1] + "' is OK."));
|
BOOST_THROW_EXCEPTION(std::invalid_argument("The service '" + arguments[1] + "' is OK."));
|
||||||
|
|
||||||
Log(LogNotice, "ExternalCommandProcessor")
|
Log(LogNotice, "ExternalCommandProcessor")
|
||||||
<< "Setting acknowledgement for service '" << service->GetName() << "'";
|
<< "Setting acknowledgement for service '" << service->GetName() << "'" << (notify ? "" : ". Disabled notification");
|
||||||
|
|
||||||
service->AddComment(CommentAcknowledgement, arguments[5], arguments[6], 0);
|
service->AddComment(CommentAcknowledgement, arguments[5], arguments[6], 0);
|
||||||
service->AcknowledgeProblem(arguments[5], arguments[6], sticky ? AcknowledgementSticky : AcknowledgementNormal);
|
service->AcknowledgeProblem(arguments[5], arguments[6], sticky ? AcknowledgementSticky : AcknowledgementNormal, notify);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExternalCommandProcessor::AcknowledgeSvcProblemExpire(double, const std::vector<String>& arguments)
|
void ExternalCommandProcessor::AcknowledgeSvcProblemExpire(double, const std::vector<String>& arguments)
|
||||||
{
|
{
|
||||||
bool sticky = (Convert::ToLong(arguments[2]) == 2 ? true : false);
|
bool sticky = (Convert::ToLong(arguments[2]) == 2 ? true : false);
|
||||||
|
bool notify = (Convert::ToLong(arguments[3]) > 0 ? true : false);
|
||||||
double timestamp = Convert::ToDouble(arguments[5]);
|
double timestamp = Convert::ToDouble(arguments[5]);
|
||||||
|
|
||||||
Service::Ptr service = Service::GetByNamePair(arguments[0], arguments[1]);
|
Service::Ptr service = Service::GetByNamePair(arguments[0], arguments[1]);
|
||||||
|
@ -671,10 +673,10 @@ void ExternalCommandProcessor::AcknowledgeSvcProblemExpire(double, const std::ve
|
||||||
BOOST_THROW_EXCEPTION(std::invalid_argument("The service '" + arguments[1] + "' is OK."));
|
BOOST_THROW_EXCEPTION(std::invalid_argument("The service '" + arguments[1] + "' is OK."));
|
||||||
|
|
||||||
Log(LogNotice, "ExternalCommandProcessor")
|
Log(LogNotice, "ExternalCommandProcessor")
|
||||||
<< "Setting timed acknowledgement for service '" << service->GetName() << "'";
|
<< "Setting timed acknowledgement for service '" << service->GetName() << "'" << (notify ? "" : ". Disabled notification");
|
||||||
|
|
||||||
service->AddComment(CommentAcknowledgement, arguments[6], arguments[7], 0);
|
service->AddComment(CommentAcknowledgement, arguments[6], arguments[7], 0);
|
||||||
service->AcknowledgeProblem(arguments[6], arguments[7], sticky ? AcknowledgementSticky : AcknowledgementNormal, timestamp);
|
service->AcknowledgeProblem(arguments[6], arguments[7], sticky ? AcknowledgementSticky : AcknowledgementNormal, notify, timestamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExternalCommandProcessor::RemoveSvcAcknowledgement(double, const std::vector<String>& arguments)
|
void ExternalCommandProcessor::RemoveSvcAcknowledgement(double, const std::vector<String>& arguments)
|
||||||
|
@ -698,6 +700,7 @@ void ExternalCommandProcessor::RemoveSvcAcknowledgement(double, const std::vecto
|
||||||
void ExternalCommandProcessor::AcknowledgeHostProblem(double, const std::vector<String>& arguments)
|
void ExternalCommandProcessor::AcknowledgeHostProblem(double, const std::vector<String>& arguments)
|
||||||
{
|
{
|
||||||
bool sticky = (Convert::ToLong(arguments[1]) == 2 ? true : false);
|
bool sticky = (Convert::ToLong(arguments[1]) == 2 ? true : false);
|
||||||
|
bool notify = (Convert::ToLong(arguments[2]) > 0 ? true : false);
|
||||||
|
|
||||||
Host::Ptr host = Host::GetByName(arguments[0]);
|
Host::Ptr host = Host::GetByName(arguments[0]);
|
||||||
|
|
||||||
|
@ -705,18 +708,19 @@ void ExternalCommandProcessor::AcknowledgeHostProblem(double, const std::vector<
|
||||||
BOOST_THROW_EXCEPTION(std::invalid_argument("Cannot acknowledge host problem for non-existent host '" + arguments[0] + "'"));
|
BOOST_THROW_EXCEPTION(std::invalid_argument("Cannot acknowledge host problem for non-existent host '" + arguments[0] + "'"));
|
||||||
|
|
||||||
Log(LogNotice, "ExternalCommandProcessor")
|
Log(LogNotice, "ExternalCommandProcessor")
|
||||||
<< "Setting acknowledgement for host '" << host->GetName() << "'";
|
<< "Setting acknowledgement for host '" << host->GetName() << "'" << (notify ? "" : ". Disabled notification");
|
||||||
|
|
||||||
if (host->GetState() == HostUp)
|
if (host->GetState() == HostUp)
|
||||||
BOOST_THROW_EXCEPTION(std::invalid_argument("The host '" + arguments[0] + "' is OK."));
|
BOOST_THROW_EXCEPTION(std::invalid_argument("The host '" + arguments[0] + "' is OK."));
|
||||||
|
|
||||||
host->AddComment(CommentAcknowledgement, arguments[4], arguments[5], 0);
|
host->AddComment(CommentAcknowledgement, arguments[4], arguments[5], 0);
|
||||||
host->AcknowledgeProblem(arguments[4], arguments[5], sticky ? AcknowledgementSticky : AcknowledgementNormal);
|
host->AcknowledgeProblem(arguments[4], arguments[5], sticky ? AcknowledgementSticky : AcknowledgementNormal, notify);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExternalCommandProcessor::AcknowledgeHostProblemExpire(double, const std::vector<String>& arguments)
|
void ExternalCommandProcessor::AcknowledgeHostProblemExpire(double, const std::vector<String>& arguments)
|
||||||
{
|
{
|
||||||
bool sticky = (Convert::ToLong(arguments[1]) == 2 ? true : false);
|
bool sticky = (Convert::ToLong(arguments[1]) == 2 ? true : false);
|
||||||
|
bool notify = (Convert::ToLong(arguments[2]) > 0 ? true : false);
|
||||||
double timestamp = Convert::ToDouble(arguments[4]);
|
double timestamp = Convert::ToDouble(arguments[4]);
|
||||||
|
|
||||||
Host::Ptr host = Host::GetByName(arguments[0]);
|
Host::Ptr host = Host::GetByName(arguments[0]);
|
||||||
|
@ -725,13 +729,13 @@ void ExternalCommandProcessor::AcknowledgeHostProblemExpire(double, const std::v
|
||||||
BOOST_THROW_EXCEPTION(std::invalid_argument("Cannot acknowledge host problem with expire time for non-existent host '" + arguments[0] + "'"));
|
BOOST_THROW_EXCEPTION(std::invalid_argument("Cannot acknowledge host problem with expire time for non-existent host '" + arguments[0] + "'"));
|
||||||
|
|
||||||
Log(LogNotice, "ExternalCommandProcessor")
|
Log(LogNotice, "ExternalCommandProcessor")
|
||||||
<< "Setting timed acknowledgement for host '" << host->GetName() << "'";
|
<< "Setting timed acknowledgement for host '" << host->GetName() << "'" << (notify ? "" : ". Disabled notification");
|
||||||
|
|
||||||
if (host->GetState() == HostUp)
|
if (host->GetState() == HostUp)
|
||||||
BOOST_THROW_EXCEPTION(std::invalid_argument("The host '" + arguments[0] + "' is OK."));
|
BOOST_THROW_EXCEPTION(std::invalid_argument("The host '" + arguments[0] + "' is OK."));
|
||||||
|
|
||||||
host->AddComment(CommentAcknowledgement, arguments[5], arguments[6], 0);
|
host->AddComment(CommentAcknowledgement, arguments[5], arguments[6], 0);
|
||||||
host->AcknowledgeProblem(arguments[5], arguments[6], sticky ? AcknowledgementSticky : AcknowledgementNormal, timestamp);
|
host->AcknowledgeProblem(arguments[5], arguments[6], sticky ? AcknowledgementSticky : AcknowledgementNormal, notify, timestamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExternalCommandProcessor::RemoveHostAcknowledgement(double, const std::vector<String>& arguments)
|
void ExternalCommandProcessor::RemoveHostAcknowledgement(double, const std::vector<String>& arguments)
|
||||||
|
|
Loading…
Reference in New Issue