From 50e3e31e049d95096e18cbcdab4b4db1121197e7 Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Mon, 3 Jan 2022 13:28:19 +0100 Subject: [PATCH] Icinga DB: ensure icinga:*command:argument#order is an int The config parser requires *Command#arguments#order to be a Number, i.e. 42, 4.2 or even "4.2". That's int-casted where needed, now also for Icinga DB. Before: ``` object CheckCommand "9117" { command = [ "true" ] arguments = { "4.2" = { order = "4.2" } } } ``` 2022-01-03T13:25:07.166+0100 FATAL icingadb json: cannot unmarshal string into Go value of type int64 --- lib/icingadb/icingadb-objects.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/icingadb/icingadb-objects.cpp b/lib/icingadb/icingadb-objects.cpp index 768095e2c..740e2f787 100644 --- a/lib/icingadb/icingadb-objects.cpp +++ b/lib/icingadb/icingadb-objects.cpp @@ -1009,6 +1009,15 @@ void IcingaDB::InsertObjectDependencies(const ConfigObject::Ptr& object, const S } } + { + Value order; + + // Intify if set. + if (values->Get("order", &order)) { + values->Set("order", (int)order); + } + } + values->Set(objectKeyName, objectKey); values->Set("argument_key", kv.first); values->Set("environment_id", m_EnvironmentId);