MCPcopy Create free account
hub / github.com/Icinga/icinga2 / SendStateChange

Method SendStateChange

lib/icingadb/icingadb-objects.cpp:1867–1966  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1865}
1866
1867void IcingaDB::SendStateChange(const ConfigObject::Ptr& object, const CheckResult::Ptr& cr, StateType type)
1868{
1869 if (!GetActive()) {
1870 return;
1871 }
1872
1873 Checkable::Ptr checkable = dynamic_pointer_cast<Checkable>(object);
1874 if (!checkable)
1875 return;
1876
1877 if (!cr)
1878 return;
1879
1880 Host::Ptr host;
1881 Service::Ptr service;
1882
1883 tie(host, service) = GetHostService(checkable);
1884
1885 EnqueueConfigObject(checkable, icingadb::task_queue::RuntimeState);
1886
1887 int hard_state{};
1888 if (!cr) {
1889 hard_state = ServicePending;
1890 } else if (service) {
1891 hard_state = service->GetLastHardState();
1892 } else {
1893 hard_state = host->GetLastHardState();
1894 }
1895
1896 int soft_state{};
1897 if (!cr) {
1898 soft_state = ServicePending;
1899 } else if (service) {
1900 soft_state = cr->GetState();
1901 } else {
1902 soft_state = Host::CalculateState(cr->GetState());
1903 }
1904
1905 auto eventTime (cr->GetExecutionEnd());
1906 auto eventTs (TimestampToMilliseconds(eventTime));
1907
1908 Array::Ptr rawId = new Array({m_EnvironmentId, object->GetName()});
1909 rawId->Add(eventTs);
1910
1911 RedisConnection::Query xAdd ({
1912 "XADD", "icinga:history:stream:state", "*",
1913 "id", HashValue(rawId),
1914 "environment_id", m_EnvironmentId,
1915 "host_id", GetObjectIdentifier(host),
1916 "state_type", Checkable::StateTypeToString(type).ToLower(),
1917 "soft_state", Convert::ToString(soft_state),
1918 "hard_state", Convert::ToString(hard_state),
1919 "check_attempt", Convert::ToString(checkable->GetCheckAttempt()),
1920 "previous_soft_state", Convert::ToString(GetPreviousState(checkable, service, StateTypeSoft)),
1921 "previous_hard_state", Convert::ToString(GetPreviousState(checkable, service, StateTypeHard)),
1922 "max_check_attempts", Convert::ToString(checkable->GetMaxCheckAttempts()),
1923 "event_time", Convert::ToString(eventTs),
1924 "event_id", CalcEventID("state_change", object, eventTime),

Callers 1

StateChangeHandlerMethod · 0.80

Calls 12

GetPreviousStateFunction · 0.85
GetLastHardStateMethod · 0.80
ToLowerMethod · 0.80
FindMethod · 0.80
SubStrMethod · 0.80
ProduceOneMethod · 0.80
GetStateMethod · 0.45
GetNameMethod · 0.45
AddMethod · 0.45
eraseMethod · 0.45
BeginMethod · 0.45
EndMethod · 0.45

Tested by

no test coverage detected