]> granicus.if.org Git - icinga2/commitdiff
Cli: Check path before removing any object from repository
authorMichael Friedrich <michael.friedrich@netways.de>
Tue, 28 Oct 2014 14:45:01 +0000 (15:45 +0100)
committerMichael Friedrich <michael.friedrich@netways.de>
Tue, 28 Oct 2014 14:45:01 +0000 (15:45 +0100)
refs #7255

lib/cli/repositoryutility.cpp

index 109ef4dfe0b06eefffdbb609a546c3ac0f6865f4..52306fcd84f2f210f6d6c301e84331449fe40b0b 100644 (file)
@@ -344,6 +344,13 @@ bool RepositoryUtility::AddObjectInternal(const String& name, const String& type
 bool RepositoryUtility::RemoveObjectInternal(const String& name, const String& type, const Dictionary::Ptr& attrs)
 {
        String path = GetRepositoryObjectConfigPath(type, attrs) + "/" + name + ".conf";
+
+       if (!Utility::PathExists(path)) {
+               Log(LogCritical, "cli")
+                   << type << " '" << name << "' does not exist.";
+               return true;
+       }
+
        bool success = RemoveObjectFileInternal(path);
 
        /* special treatment for hosts -> remove the services too */
@@ -395,7 +402,7 @@ bool RepositoryUtility::RemoveObjectFileInternal(const String& path)
 
 bool RepositoryUtility::SetObjectAttributeInternal(const String& name, const String& type, const String& key, const Value& val, const Dictionary::Ptr& attrs)
 {
-       //Fixme
+       //TODO
        String path = GetRepositoryObjectConfigPath(type, attrs) + "/" + name + ".conf";
 
        Dictionary::Ptr obj = GetObjectFromRepository(path); //TODO
@@ -595,7 +602,7 @@ void RepositoryUtility::FormatChangelogEntry(std::ostream& fp, const Dictionary:
 
        BOOST_FOREACH(const Dictionary::Pair& kv, attrs) {
                /* skip the name */
-               if (kv.first == "name")
+               if (kv.first == "name" || kv.first == "__name")
                        continue;
 
                fp << std::setw(4) << " " << ConsoleColorTag(Console_ForegroundGreen) << kv.first << ConsoleColorTag(Console_Normal) << " = ";