/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ #include "icinga/checkable.hpp" #include "icinga/host.hpp" #include "icinga/icingaapplication.hpp" #include "icinga/customvarobject.hpp" #impl_include "icinga/servicegroup.hpp" library icinga; namespace icinga { code {{{ class ServiceNameComposer : public NameComposer { public: virtual String MakeName(const String& shortName, const Object::Ptr& context) const; virtual Dictionary::Ptr ParseName(const String& name) const; }; }}} class Service : Checkable < ServiceNameComposer { load_after ApiListener; load_after Endpoint; load_after Host; load_after Zone; [config, no_user_modify, required, signal_with_old_value] array(name(ServiceGroup)) groups { default {{{ return new Array(); }}} }; [config] String display_name { get {{{ String displayName = m_DisplayName.load(); if (displayName.IsEmpty()) return GetShortName(); else return displayName; }}} }; [config, no_user_modify, required] name(Host) host_name; [no_storage, navigation] Host::Ptr host { get; navigate {{{ return GetHost(); }}} }; [enum, no_storage] ServiceState "state" { get {{{ return GetStateRaw(); }}} }; [enum, no_storage] ServiceState last_state { get {{{ return GetLastStateRaw(); }}} }; [enum, no_storage] ServiceState last_hard_state { get {{{ return GetLastHardStateRaw(); }}} }; [state] Timestamp last_state_ok (LastStateOK); [state] Timestamp last_state_warning; [state] Timestamp last_state_critical; [state] Timestamp last_state_unknown; }; }