]> granicus.if.org Git - icinga2/commitdiff
Clear sticky ack on soft recovery, fix sticky=2, normal=1|0.
authorMichael Friedrich <Michael.Friedrich@netways.de>
Wed, 19 Mar 2014 22:08:01 +0000 (23:08 +0100)
committerMichael Friedrich <Michael.Friedrich@netways.de>
Wed, 19 Mar 2014 22:08:44 +0000 (23:08 +0100)
Fixes #5365

lib/icinga/externalcommandprocessor.cpp
lib/icinga/service-check.cpp

index e752707c4b38cd7ef18156536e54cfe2a4915d1d..764b32f122b5db07acb10b9036193c61f8ef1617 100644 (file)
@@ -616,7 +616,7 @@ void ExternalCommandProcessor::AcknowledgeSvcProblem(double, const std::vector<S
        if (arguments.size() < 7)
                BOOST_THROW_EXCEPTION(std::invalid_argument("Expected 7 arguments."));
 
-       bool sticky = Convert::ToBool(arguments[2]);
+       bool sticky = (Convert::ToLong(arguments[2]) == 2 ? true : false);
 
        Service::Ptr service = Service::GetByNamePair(arguments[0], arguments[1]);
 
@@ -637,7 +637,7 @@ void ExternalCommandProcessor::AcknowledgeSvcProblemExpire(double, const std::ve
        if (arguments.size() < 8)
                BOOST_THROW_EXCEPTION(std::invalid_argument("Expected 8 arguments."));
 
-       bool sticky = Convert::ToBool(arguments[2]);
+       bool sticky = (Convert::ToLong(arguments[2]) == 2 ? true : false);
        double timestamp = Convert::ToDouble(arguments[5]);
 
        Service::Ptr service = Service::GetByNamePair(arguments[0], arguments[1]);
@@ -679,7 +679,7 @@ void ExternalCommandProcessor::AcknowledgeHostProblem(double, const std::vector<
        if (arguments.size() < 6)
                BOOST_THROW_EXCEPTION(std::invalid_argument("Expected 6 arguments."));
 
-       bool sticky = Convert::ToBool(arguments[1]);
+       bool sticky = (Convert::ToLong(arguments[1]) == 2 ? true : false);
 
        Host::Ptr host = Host::GetByName(arguments[0]);
 
@@ -702,7 +702,7 @@ void ExternalCommandProcessor::AcknowledgeHostProblemExpire(double, const std::v
        if (arguments.size() < 7)
                BOOST_THROW_EXCEPTION(std::invalid_argument("Expected 7 arguments."));
 
-       bool sticky = Convert::ToBool(arguments[1]);
+       bool sticky = (Convert::ToLong(arguments[1]) == 2 ? true : false);
        double timestamp = Convert::ToDouble(arguments[4]);
 
        Host::Ptr host = Host::GetByName(arguments[0]);
index f3b87bdcf47278b779f2ed778a1f2b90455d470d..67a1b512fc84aad3ab673e5871d1b469fafd7a03 100644 (file)
@@ -319,7 +319,7 @@ void Service::ProcessCheckResult(const CheckResult::Ptr& cr, const String& autho
 
                /* remove acknowledgements */
                if (GetAcknowledgement() == AcknowledgementNormal ||
-                   (GetAcknowledgement() == AcknowledgementSticky && GetStateType() == StateTypeHard && GetState() == StateOK)) {
+                   (GetAcknowledgement() == AcknowledgementSticky && GetState() == StateOK)) {
                        ClearAcknowledgement();
                }