mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-27 07:34:15 +02:00
Fix command arguments and envvars
This commit is contained in:
parent
9308acfcd5
commit
8421a98a2c
@ -114,8 +114,6 @@ void RedisWriter::UpdateAllConfigObjects()
|
|||||||
m_PrefixConfigObject + "action_url",
|
m_PrefixConfigObject + "action_url",
|
||||||
m_PrefixConfigObject + "notes_url",
|
m_PrefixConfigObject + "notes_url",
|
||||||
m_PrefixConfigObject + "icon_image",
|
m_PrefixConfigObject + "icon_image",
|
||||||
m_PrefixConfigObject + "commandargument",
|
|
||||||
m_PrefixConfigObject + "commandenvvar",
|
|
||||||
};
|
};
|
||||||
DeleteKeys(globalKeys);
|
DeleteKeys(globalKeys);
|
||||||
|
|
||||||
@ -581,49 +579,64 @@ void RedisWriter::InsertObjectDependencies(const ConfigObject::Ptr& object, cons
|
|||||||
Dictionary::Ptr arguments = command->GetArguments();
|
Dictionary::Ptr arguments = command->GetArguments();
|
||||||
if (arguments) {
|
if (arguments) {
|
||||||
ObjectLock argumentsLock(arguments);
|
ObjectLock argumentsLock(arguments);
|
||||||
Array::Ptr argumentIds(new Array);
|
|
||||||
auto& typeArgs (statements[m_PrefixConfigObject + typeName + ":argument"]);
|
auto& typeArgs (statements[m_PrefixConfigObject + typeName + ":argument"]);
|
||||||
auto& allArgs (statements[m_PrefixConfigObject + "commandargument"]);
|
|
||||||
auto& argChksms (statements[m_PrefixConfigCheckSum + typeName + ":argument"]);
|
auto& argChksms (statements[m_PrefixConfigCheckSum + typeName + ":argument"]);
|
||||||
|
|
||||||
argumentIds->Reserve(arguments->GetLength());
|
|
||||||
|
|
||||||
for (auto& kv : arguments) {
|
for (auto& kv : arguments) {
|
||||||
String id = HashValue(kv.first + HashValue(kv.second));
|
Dictionary::Ptr values;
|
||||||
argumentIds->Add(id);
|
if (kv.second.IsObjectType<Dictionary>()) {
|
||||||
|
values = kv.second;
|
||||||
|
} else if (kv.second.IsObjectType<Array>()) {
|
||||||
|
values = new Dictionary({{"value", JsonEncode(kv.second)}});
|
||||||
|
} else {
|
||||||
|
values = new Dictionary({{"value", kv.second}});
|
||||||
|
}
|
||||||
|
|
||||||
allArgs.emplace_back(id);
|
values->Set("value", JsonEncode(values->Get("value")));
|
||||||
allArgs.emplace_back(JsonEncode(kv.second));
|
values->Set("command_id", objectKey);
|
||||||
|
values->Set("argument_key", kv.first);
|
||||||
|
values->Set("env_id", envId);
|
||||||
|
|
||||||
|
String id = HashValue(objectKey + kv.first + envId);
|
||||||
|
|
||||||
|
typeArgs.emplace_back(id);
|
||||||
|
typeArgs.emplace_back(JsonEncode(values));
|
||||||
|
argChksms.emplace_back(id);
|
||||||
|
argChksms.emplace_back(JsonEncode(new Dictionary({{"checksum", HashValue(kv.second)}})));
|
||||||
}
|
}
|
||||||
|
|
||||||
argChksms.emplace_back(objectKey);
|
|
||||||
argChksms.emplace_back(JsonEncode(new Dictionary({{"checksum", CalculateCheckSumArray(argumentIds)}})));
|
|
||||||
typeArgs.emplace_back(objectKey);
|
|
||||||
typeArgs.emplace_back(JsonEncode(new Dictionary({{"env_id", envId}, {"arguments", argumentIds}})));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Dictionary::Ptr envvars = command->GetArguments();
|
Dictionary::Ptr envvars = command->GetEnv();
|
||||||
if (envvars) {
|
if (envvars) {
|
||||||
ObjectLock envvarsLock(envvars);
|
ObjectLock envvarsLock(envvars);
|
||||||
Array::Ptr envvarIds(new Array);
|
Array::Ptr envvarIds(new Array);
|
||||||
auto& typeVars (statements[m_PrefixConfigObject + typeName + ":envvar"]);
|
auto& typeVars (statements[m_PrefixConfigObject + typeName + ":envvar"]);
|
||||||
auto& allVars (statements[m_PrefixConfigObject + "commandenvvar"]);
|
|
||||||
auto& varChksms (statements[m_PrefixConfigCheckSum + typeName + ":envvar"]);
|
auto& varChksms (statements[m_PrefixConfigCheckSum + typeName + ":envvar"]);
|
||||||
|
|
||||||
envvarIds->Reserve(envvars->GetLength());
|
envvarIds->Reserve(envvars->GetLength());
|
||||||
|
|
||||||
for (auto& kv : envvars) {
|
for (auto& kv : envvars) {
|
||||||
String id = HashValue(kv.first + HashValue(kv.second));
|
Dictionary::Ptr values;
|
||||||
envvarIds->Add(id);
|
if (kv.second.IsObjectType<Dictionary>()) {
|
||||||
|
values = kv.second;
|
||||||
|
} else if (kv.second.IsObjectType<Array>()) {
|
||||||
|
values = new Dictionary({{"value", JsonEncode(kv.second)}});
|
||||||
|
} else {
|
||||||
|
values = new Dictionary({{"value", kv.second}});
|
||||||
|
}
|
||||||
|
|
||||||
allVars.emplace_back(id);
|
values->Set("value", JsonEncode(values->Get("value")));
|
||||||
allVars.emplace_back(JsonEncode(kv.second));
|
values->Set("command_id", objectKey);
|
||||||
|
values->Set("envvar_key", kv.first);
|
||||||
|
values->Set("env_id", envId);
|
||||||
|
|
||||||
|
String id = HashValue(objectKey + kv.first + envId);
|
||||||
|
|
||||||
|
typeVars.emplace_back(id);
|
||||||
|
typeVars.emplace_back(JsonEncode(values));
|
||||||
|
varChksms.emplace_back(id);
|
||||||
|
varChksms.emplace_back(JsonEncode(new Dictionary({{"checksum", HashValue(kv.second)}})));
|
||||||
}
|
}
|
||||||
|
|
||||||
varChksms.emplace_back(objectKey);
|
|
||||||
varChksms.emplace_back(JsonEncode(new Dictionary({{"checksum", CalculateCheckSumArray(envvarIds)}})));
|
|
||||||
typeVars.emplace_back(objectKey);
|
|
||||||
typeVars.emplace_back(JsonEncode(new Dictionary({{"env_id", envId}, {"envvars", envvarIds}})));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user