/****************************************************************************** * 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 DynamicObject { %require "__abstract", %attribute number "__abstract", %require "__local", %attribute number "__local", %require "__name", %attribute string "__name", %require "__type", %attribute string "__type", %attribute dictionary "methods" { }, %attribute any "custom::*" } type Component { } type Logger { %attribute string "type", %attribute string "path", %attribute string "severity" } type Host { %attribute string "alias", %attribute string "hostcheck", %attribute dictionary "hostgroups" { %attribute string "*" }, %attribute dictionary "hostdependencies" { %attribute string "*" }, %attribute dictionary "servicedependencies" { %attribute string "*", %attribute dictionary "*" { %require "host", %attribute string "host", %require "service", %attribute string "service" } }, %attribute dictionary "services" { %validator "ValidateServiceDictionary", %attribute string "*", %attribute dictionary "*" { %attribute dictionary "templates" { %attribute string "*" }, %attribute string "short_name", %attribute dictionary "macros" { %attribute string "*" }, %attribute number "check_interval", %attribute number "retry_interval", %attribute dictionary "servicegroups" { %attribute string "*" }, %attribute dictionary "checkers" { %attribute string "*" }, %attribute dictionary "hostdependencies" { %attribute string "*" }, %attribute dictionary "servicedependencies" { %attribute string "*", %attribute dictionary "*" { %require "host", %attribute string "host", %require "service", %attribute string "service" } } } }, %attribute dictionary "notifications" { %attribute string "*", %attribute dictionary "*" { %attribute dictionary "templates" { %attribute string "*" }, %attribute dictionary "macros" { %attribute string "*" }, %attribute dictionary "users" { %attribute string "*" }, %attribute dictionary "groups" { %attribute string "*" } } }, /* service attributes */ %attribute number "max_check_attempts", %attribute number "check_interval", %attribute number "retry_interval", %attribute number "notification_interval", %attribute dictionary "macros" { %attribute string "*" }, %attribute dictionary "servicegroups" { %attribute string "*" }, %attribute dictionary "checkers" { %attribute string "*" } } type HostGroup { %attribute string "alias", %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" } type Service { %require "host_name", %attribute string "host_name", %attribute string "short_name", %attribute string "alias", %attribute dictionary "macros" { %attribute string "*" }, %attribute dictionary "check_command" { %attribute string "_*" }, %attribute string "check_command", %attribute number "max_check_attempts", %attribute number "check_interval", %attribute number "retry_interval", %attribute dictionary "hostdependencies" { %attribute string "*" }, %attribute dictionary "servicedependencies" { %attribute string "*", %attribute dictionary "*" { %require "host", %attribute string "host", %require "service", %attribute string "service" } }, %attribute dictionary "servicegroups" { %attribute string "*" }, %attribute dictionary "checkers" { %attribute string "*" }, %require "methods", %attribute dictionary "methods" { %require "check", %attribute string "check" }, %attribute dictionary "notifications" { %attribute string "*", %attribute dictionary "*" { %attribute dictionary "templates" { %attribute string "*" }, %attribute dictionary "macros" { %attribute string "*" }, %attribute dictionary "users" { %attribute string "*" }, %attribute dictionary "groups" { %attribute string "*" } } }, %attribute number "notification_interval" } type ServiceGroup { %attribute string "alias", %attribute string "notes_url", %attribute string "action_url" } type Endpoint { %attribute string "node", %attribute string "service", %attribute number "local" } type TimePeriod { } type Notification { %require "methods", %attribute dictionary "methods" { %require "notify", %attribute string "notify" }, %require "host_name", %attribute string "host_name", %attribute string "service", %attribute dictionary "macros" { %attribute string "*" }, %attribute dictionary "users" { %attribute string "*" }, %attribute dictionary "groups" { %attribute string "*" }, %attribute dictionary "notification_command" { %attribute string "_*" }, %attribute string "notification_command" } type Script { %require "language", %attribute string "language", %require "code", %attribute string "code" } type User { %attribute string "display_name", %attribute dictionary "macros" { %attribute string "*" }, %attribute dictionary "groups" { %attribute string "*" } } type UserGroup { %attribute string "display_name", %attribute string "action_url", %attribute string "notes_url" }