mirror of https://github.com/Icinga/icinga2.git
Move UpdateObjectAttrs into the objects scope
This commit is contained in:
parent
f715d479e7
commit
33a00e4b5a
|
@ -320,6 +320,46 @@ void RedisWriter::SendStatusUpdate(const ConfigObject::Ptr& object, bool useTran
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RedisWriter::UpdateObjectAttrs(const String& keyPrefix, const ConfigObject::Ptr& object, int fieldType)
|
||||||
|
{
|
||||||
|
Type::Ptr type = object->GetReflectionType();
|
||||||
|
|
||||||
|
String typeName = type->GetName().ToLower();
|
||||||
|
String objectName = object->GetName();
|
||||||
|
|
||||||
|
std::vector<std::vector<String> > queries;
|
||||||
|
|
||||||
|
queries.push_back({ "DEL", keyPrefix + object->GetName() });
|
||||||
|
|
||||||
|
std::vector<String> hmsetCommand({ "HMSET", keyPrefix + typeName + ":" + object->GetName() });
|
||||||
|
|
||||||
|
for (int fid = 0; fid < type->GetFieldCount(); fid++) {
|
||||||
|
Field field = type->GetFieldInfo(fid);
|
||||||
|
|
||||||
|
if ((field.Attributes & fieldType) == 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
Value val = object->GetField(fid);
|
||||||
|
|
||||||
|
/* hide attributes which shouldn't be user-visible */
|
||||||
|
if (field.Attributes & FANoUserView)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* hide internal navigation fields */
|
||||||
|
if (field.Attributes & FANavigation && !(field.Attributes & (FAConfig | FAState)))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
hmsetCommand.push_back(field.Name);
|
||||||
|
|
||||||
|
Value sval = Serialize(val);
|
||||||
|
hmsetCommand.push_back(JsonEncode(sval));
|
||||||
|
}
|
||||||
|
|
||||||
|
queries.push_back(hmsetCommand);
|
||||||
|
|
||||||
|
ExecuteQueries(queries);
|
||||||
|
}
|
||||||
|
|
||||||
void RedisWriter::StateChangedHandler(const ConfigObject::Ptr& object)
|
void RedisWriter::StateChangedHandler(const ConfigObject::Ptr& object)
|
||||||
{
|
{
|
||||||
Type::Ptr type = object->GetReflectionType();
|
Type::Ptr type = object->GetReflectionType();
|
||||||
|
|
|
@ -86,43 +86,3 @@ String RedisWriter::HashValue(const Value& value)
|
||||||
return SHA1(JsonEncode(temp));
|
return SHA1(JsonEncode(temp));
|
||||||
}
|
}
|
||||||
|
|
||||||
void RedisWriter::UpdateObjectAttrs(const String& keyPrefix, const ConfigObject::Ptr& object, int fieldType)
|
|
||||||
{
|
|
||||||
Type::Ptr type = object->GetReflectionType();
|
|
||||||
|
|
||||||
String typeName = type->GetName();
|
|
||||||
String objectName = object->GetName();
|
|
||||||
|
|
||||||
std::vector<std::vector<String> > queries;
|
|
||||||
|
|
||||||
queries.push_back({ "DEL", keyPrefix + object->GetName() });
|
|
||||||
|
|
||||||
std::vector<String> hmsetCommand({ "HMSET", keyPrefix + typeName + ":" + objectName });
|
|
||||||
|
|
||||||
for (int fid = 0; fid < type->GetFieldCount(); fid++) {
|
|
||||||
Field field = type->GetFieldInfo(fid);
|
|
||||||
|
|
||||||
if ((field.Attributes & fieldType) == 0)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
Value val = object->GetField(fid);
|
|
||||||
|
|
||||||
/* hide attributes which shouldn't be user-visible */
|
|
||||||
if (field.Attributes & FANoUserView)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
/* hide internal navigation fields */
|
|
||||||
if (field.Attributes & FANavigation && !(field.Attributes & (FAConfig | FAState)))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
hmsetCommand.push_back(field.Name);
|
|
||||||
|
|
||||||
Value sval = Serialize(val);
|
|
||||||
hmsetCommand.push_back(JsonEncode(sval));
|
|
||||||
}
|
|
||||||
|
|
||||||
queries.push_back(hmsetCommand);
|
|
||||||
|
|
||||||
ExecuteQueries(queries);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue