/****************************************************************************** * Icinga 2 * * Copyright (C) 2012 Icinga Development Team (http://www.icinga.org/) * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * * as published by the Free Software Foundation; either version 2 * * of the License, or (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the Free Software Foundation * * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ******************************************************************************/ type Host { %attribute string "display_name", %attribute string "hostcheck", %attribute array "hostgroups" { %attribute name(HostGroup) "*" }, %attribute array "hostdependencies" { %attribute name(Host) "*" }, %attribute array "servicedependencies" { %attribute dictionary "*" { %require "host", %attribute name(Host) "host", %require "service", %attribute string "service" } }, %attribute dictionary "services" { %validator "ValidateServiceDictionary", %attribute dictionary "*" { %attribute array "templates" { %attribute name(Service) "*" }, %attribute string "short_name", %attribute string "display_name", %attribute dictionary "macros" { %attribute string "*" }, %attribute name(CheckCommand) "check_command", %attribute name(TimePeriod) "check_period", %attribute number "check_interval", %attribute number "retry_interval", %attribute number "notification_interval", %attribute name(TimePeriod) "notification_period", %attribute array "servicegroups" { %attribute name(ServiceGroup) "*" }, %attribute array "checkers" { %attribute string "*" }, %attribute array "hostdependencies" { %attribute name(Host) "*" }, %attribute array "servicedependencies" { %attribute dictionary "*" { %require "host", %attribute name(Host) "host", %require "service", %attribute string "service" } }, %attribute dictionary "notifications" { %attribute dictionary "*" { %attribute array "templates" { %attribute name(Notification) "*" }, %attribute dictionary "macros" { %attribute string "*" }, %attribute array "users" { %attribute name(User) "*" }, %attribute array "groups" { %attribute name(UserGroup) "*" }, %attribute dictionary "times" { %attribute number "begin", %attribute number "end", }, } }, } }, %attribute dictionary "notifications" { %attribute dictionary "*" { %attribute array "templates" { %attribute name(Notification) "*" }, %attribute dictionary "macros" { %attribute string "*" }, %attribute array "users" { %attribute name(User) "*" }, %attribute array "groups" { %attribute name(UserGroup) "*" }, %attribute dictionary "times" { %attribute number "begin", %attribute number "end", }, } }, /* service attributes */ %attribute number "max_check_attempts", %attribute name(TimePeriod) "check_period", %attribute number "check_interval", %attribute number "retry_interval", %attribute number "notification_interval", %attribute name(TimePeriod) "notification_period", %attribute dictionary "macros" { %attribute string "*" }, %attribute array "servicegroups" { %attribute name(ServiceGroup) "*" }, %attribute array "checkers" { %attribute string "*" } } type HostGroup { %attribute string "display_name", %attribute string "notes_url", %attribute string "action_url" } type IcingaApplication { %attribute string "cert_path", %attribute string "ca_path", %attribute string "node", %attribute string "service", %attribute string "pid_path", %attribute string "state_path", %attribute dictionary "macros" { %attribute string "*" } } type Service { %require "host_name", %attribute string "host_name", %attribute string "short_name", %attribute string "display_name", %attribute dictionary "macros" { %attribute string "*" }, %require "check_command", %attribute name(CheckCommand) "check_command", %attribute number "max_check_attempts", %attribute name(TimePeriod) "check_period", %attribute number "check_interval", %attribute number "retry_interval", %attribute name(EventCommand) "event_command", %attribute number "notification_interval", %attribute name(TimePeriod) "notification_period", %attribute array "hostdependencies" { %attribute name(Host) "*" }, %attribute array "servicedependencies" { %attribute dictionary "*" { %require "host", %attribute name(Host) "host", %require "service", %attribute string "service" } }, %attribute array "servicegroups" { %attribute name(ServiceGroup) "*" }, %attribute array "checkers" { %attribute string "*" }, %attribute dictionary "notifications" { %attribute dictionary "*" { %attribute array "templates" { %attribute name(Notification) "*" }, %attribute dictionary "macros" { %attribute string "*" }, %attribute array "users" { %attribute name(User) "*" }, %attribute array "groups" { %attribute name(UserGroup) "*" }, %attribute dictionary "times" { %attribute number "begin", %attribute number "end", }, } } } type ServiceGroup { %attribute string "display_name", %attribute string "notes_url", %attribute string "action_url" } type Notification { %require "host_name", %attribute string "host_name", %attribute string "service", %attribute dictionary "macros" { %attribute string "*" }, %attribute array "users" { %attribute name(User) "*" }, %attribute array "groups" { %attribute name(UserGroup) "*" }, %attribute dictionary "times" { %attribute number "begin", %attribute number "end", }, %attribute name(NotificationCommand) "notification_command", %attribute number "notification_interval", %attribute name(TimePeriod) "notification_period" } type User { %attribute string "display_name", %attribute dictionary "macros" { %attribute string "*" }, %attribute array "groups" { %attribute name(UserGroup) "*" } } type UserGroup { %attribute string "display_name", %attribute string "action_url", %attribute string "notes_url" } type TimePeriod { %require "methods", %attribute dictionary "methods" { %require "update", %attribute string "update" }, } type PerfdataWriter { %attribute string "path_prefix", %attribute string "format_template", %attribute number "rotation_interval" } type Command { %require "methods", %attribute dictionary "methods" { %require "execute", %attribute string "execute" }, /* %if (methods.execute == "PluginNotification" || methods.execute == "PluginCheck" || methods.execute == "PluginEvent") { */ // %require "command", %attribute string "command", %attribute array "command" { %attribute string "*" }, %attribute array "export_macros" { %attribute string "*" }, %attribute dictionary "macros" { %attribute string "*" }, %attribute number "timeout" /* } */ } type CheckCommand inherits Command { } type NotificationCommand inherits Command { } type EventCommand inherits Command { }