-#include "icinga/checkable.h"
-#include "icinga/host.h"
-#include "icinga/icingaapplication.h"
-#include "base/dynamicobject.h"
+/* 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
{
-class Service : Checkable
+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] array(name(ServiceGroup)) groups {
+ default {{{ return new Array(); }}}
+ };
+
[config] String display_name {
get {{{
if (m_DisplayName.IsEmpty())
return m_DisplayName;
}}}
};
- [config] String short_name {
- get {{{
- if (m_ShortName.IsEmpty())
- return GetName();
- else
- return m_ShortName;
+ [config, required] name(Host) host_name;
+ [no_storage, navigation] Host::Ptr host {
+ get;
+ navigate {{{
+ return GetHost();
}}}
};
- [config] String host (HostRaw);
- [enum] ServiceState "state" {
+ [enum, no_storage] ServiceState "state" {
get {{{
return GetStateRaw();
}}}
};
- [enum] ServiceState last_state {
+ [enum, no_storage] ServiceState last_state {
get {{{
return GetLastStateRaw();
}}}
};
- [enum] ServiceState last_hard_state {
+ [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;
};
}