/****************************************************************************** * Icinga 2 * * Copyright (C) 2012-2014 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 IcingaApplication { } %type IcingaStatusWriter { %attribute %string "status_path", %attribute %number "update_interval" } %type Checkable { %attribute %string "display_name", %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 %number "enable_notifications", %attribute %number "enable_active_checks", %attribute %number "enable_passive_checks", %attribute %number "enable_event_handler", %attribute %name(EventCommand) "event_command", %attribute %number "enable_flapping", %attribute %number "flapping_threshold", %attribute %number "enable_perfdata", %attribute %number "volatile", %attribute %string "notes", %attribute %string "notes_url", %attribute %string "action_url", %attribute %string "icon_image", %attribute %string "icon_image_alt", } %type Host %inherits Checkable { %attribute %string "display_name", %attribute %array "groups" { %attribute %name(HostGroup) "*" }, %attribute %string "address", %attribute %string "address6", } %type HostGroup { %attribute %string "display_name" %attribute %array "groups" { %attribute %name(HostGroup) "*" }, %attribute %string "notes", %attribute %string "notes_url", %attribute %string "action_url", } %type Service %inherits Checkable { %require "host_name", %attribute %name(Host) "host_name", %attribute %string "name", %attribute %array "groups" { %attribute %name(ServiceGroup) "*" }, } %type ServiceGroup { %attribute %string "display_name" %attribute %array "groups" { %attribute %name(ServiceGroup) "*" }, %attribute %string "notes", %attribute %string "notes_url", %attribute %string "action_url", } %type Notification { %validator "ValidateNotificationFilters" %require "host_name", %attribute %name(Host) "host_name", %attribute %string "service_name", %attribute %string "name", %attribute %array "users" { %attribute %name(User) "*" }, %attribute %array "user_groups" { %attribute %name(UserGroup) "*" }, %attribute %dictionary "times" { %attribute %number "begin", %attribute %number "end", }, %require "command", %attribute %name(NotificationCommand) "command", %attribute %number "interval", %attribute %name(TimePeriod) "period", %attribute %array "types" { %attribute %number "*" }, %attribute %array "states" { %attribute %number "*" }, } %type User { %attribute %string "display_name", %attribute %array "groups" { %attribute %name(UserGroup) "*" }, %attribute %number "enable_notifications", %attribute %array "types" { %attribute %number "*" }, %attribute %array "states" { %attribute %number "*" }, %attribute %name(TimePeriod) "period", %attribute %string "email", %attribute %string "pager", } %type UserGroup { %attribute %string "display_name", %attribute %array "groups" { %attribute %name(UserGroup) "*" }, } %type TimePeriod { %attribute %string "display_name", %require "methods", %attribute %dictionary "methods" { %require "update", %attribute %string "update" }, /* %if (methods.update == "LegacyTimePeriod") { */ // %require "ranges", %attribute %dictionary "ranges" { %attribute %string "*" } /* } */ } %type Command { %validator "ValidateCommandAttributes", %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 %dictionary "arguments" { %attribute %string "*", %attribute %dictionary "*" { %attribute %string "value" %attribute %string "description" %attribute %number "required" %attribute %number "skip_key" %attribute %string "set_if" %attribute %number "order" } }, %attribute %dictionary "env" { %attribute %string "*" }, %attribute %number "timeout" /* } */ } %type CheckCommand %inherits Command { } %type NotificationCommand %inherits Command { } %type EventCommand %inherits Command { } %type ScheduledDowntime { %require "host_name", %attribute %name(Host) "host_name", %attribute %string "service_name", %attribute %string "name", %require "author", %attribute %string "author", %require "comment", %attribute %string "comment", %attribute %number "duration", %attribute %number "fixed", %require "ranges", %attribute %dictionary "ranges" { %attribute %string "*" }, } %type Dependency { %validator "ValidateDependencyFilters" %require "parent_host_name", %attribute %name(Host) "parent_host_name", %attribute %string "parent_service_name", %require "child_host_name", %attribute %name(Host) "child_host_name", %attribute %string "child_service_name", %attribute %string "name", %attribute %name(TimePeriod) "period", %attribute %array "states" { %attribute %number "*" }, %attribute %number "disable_checks", %attribute %number "disable_notifications" }