/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */

object CheckCommand "interfacetable" {
	command = [ PluginContribDir + "/check_interface_table_v3t" ]

	arguments = {
		"-H" = {
			value = "$interfacetable_hostquery$"
			description = "Specifies the remote host to poll"
		}
		"-h" = {
			value = "$interfacetable_hostdisplay$"
			description = "Specifies the hostname to display in the HTML link"
		}
		"-r" = {
			set_if = "$interfacetable_regex$"
			description = "Interface names and property names for some other options will be interpreted as regular expressions"
		}
		"--outputshort" = {
			set_if = "$interfacetable_outputshort$"
			description = "Reduce the verbosity of the plugin output"
		}
		"-e" = {
			value = "$interfacetable_exclude$"
			description = "Comma separated list of interfaces globally excluded from the monitoring"
		}
		"-i" = {
			value = "$interfacetable_include$"
			description = "Comma separated list of interfaces globally included in the monitoring"
		}
		"--alias-matching" = {
			set_if = "$interfacetable_aliasmatching$"
			description = "Allow you to specify alias in addition to interface names"
		}
		"--et" = {
			value = "$interfacetable_excludetraffic$"
			description = "Comma separated list of interfaces excluded from traffic checks"
		}
		"--it" = {
			value = "$interfacetable_includetraffic$"
			description = "Comma separated list of interfaces included for traffic checks"
		}
		"--wt" = {
			value = "$interfacetable_warningtraffic$"
			description = "Interface traffic load percentage leading to a warning alert"
		}
		"--ct" = {
			value = "$interfacetable_criticaltraffic$"
			description = "Interface traffic load percentage leading to a critical alert"
		}
		"--pkt" = {
			set_if = "$interfacetable_pkt$"
			description = "Add unicast/non-unicast pkt stats for each interface"
		}
		"--trafficwithpkt" = {
			set_if = "$interfacetable_trafficwithpkt$"
			description = "Enable traffic calculation using pkt counters instead of octet counters. Useful when using 32-bit counters to track the load on > 1GbE interfaces."
		}
		"--tp" = {
			value = "$interfacetable_trackproperty$"
			description = "List of tracked properties"
		}
		"--ep" = {
			value = "$interfacetable_excludeproperty$"
			description = "Comma separated list of interfaces excluded from the property tracking"
		}
		"--ip" = {
			value = "$interfacetable_includeproperty$"
			description = "Comma separated list of interfaces included in the property tracking"
		}
		"--wp" = {
			value = "$interfacetable_warningproperty$"
			description = "Number of property changes before leading to a warning alert"
		}
		"--cp" = {
			value = "$interfacetable_criticalproperty$"
			description = "Number of property changes before leading to a critical alert"
		}
		"-C" = {
			value = "$interfacetable_community$"
			description = "Specifies the snmp v1/v2c community string"
		}
		"-2" = {
			set_if = "$interfacetable_snmpv2$"
			description = "Use snmp v2c"
		}
		"-l" = {
			value = "$interfacetable_login$"
			description = "Login for snmpv3 authentication"
		}
		"-x" = {
			value = "$interfacetable_passwd$"
			description = "Auth password for snmpv3 authentication"
		}
		"-X" = {
			value = "$interfacetable_privpass$"
			description = "Priv password for snmpv3"
		}
		"-L" = {
			value = "$interfacetable_protocols$"
			description = "Authentication protocol,Priv protocol"
		}
		"--domain" = {
			value = "$interfacetable_domain$"
			description = "SNMP transport domain"
		}
		"--contextname" = {
			value = "$interfacetable_contextname$"
			description = "Context name for the snmp requests"
		}
		"-P" = {
			value = "$interfacetable_port$"
			description = "SNMP port"
		}
		"--64bits" = {
			set_if = "$interfacetable_64bits$"
			description = "Use SNMP 64-bits counters"
		}
		"--max-repetitions" = {
			value = "$interfacetable_maxrepetitions$"
			description = "Increasing this value may enhance snmp query performances by gathering more results at one time"
		}
		"--snmp-timeout" = {
			value = "$interfacetable_snmptimeout$"
			description = "Define the Transport Layer timeout for the snmp queries"
		}
		"--snmp-retries" = {
			value = "$interfacetable_snmpretries$"
			description = "Define the number of times to retry sending a SNMP message"
		}
		"--snmp-maxmsgsize" = {
			value = "$interfacetable_snmpmaxmsgsize$"
			description = "Size of the SNMP message in octets, usefull in case of too long responses. Be carefull with network filters. Range 484 - 65535. Apply only to netsnmp perl bindings. The default is 1472 octets for UDP/IPv4, 1452 octets for UDP/IPv6, 1460 octets for TCP/IPv4, and 1440 octets for TCP/IPv6."
		}
		"--unixsnmp" = {
			set_if = "$interfacetable_unixsnmp$"
			description = "Use unix snmp utilities for snmp requests"
		}
		"-f" = {
			set_if = "$interfacetable_enableperfdata$"
			description = "Enable port performance data"
		}
		"--perfdataformat" = {
			value = "$interfacetable_perfdataformat$"
			description = "Define which performance data will be generated"
		}
		"--perfdatathreshold" = {
			value = "$interfacetable_perfdatathreshold$"
			description = "Define which thresholds are printed in the generated performance data"
		}
		"--perfdatadir" = {
			value = "$interfacetable_perfdatadir$"
			description = "When specified, the performance data are also written directly to a file, in the specified location"
		}
		"--perfdataservicedesc" = {
			value = "$interfacetable_perfdataservicedesc$"
			description = "Specify additional parameters for output performance data to PNP"
		}
		"-g" = {
			value = "$interfacetable_grapher$"
			description = "Specify the used graphing solution"
		}
		"--grapherurl" = {
			value = "$interfacetable_grapherurl$"
			description = "Graphing system url"
		}
		"--portperfunit" = {
			value = "$interfacetable_portperfunit$"
			description = "Traffic could be reported in bits (counters) or in bps (calculated value)"
		}
		"--nodetype" = {
			value = "$interfacetable_nodetype$"
			description = "Specify the node type, for specific information to be printed / specific oids to be used"
		}
		"--duplex" = {
			set_if = "$interfacetable_duplex$"
			description = "Add the duplex mode property for each interface in the interface table"
		}
		"--stp" = {
			set_if = "$interfacetable_stp$"
			description = "Add the stp state property for each interface in the interface table"
		}
		"--vlan" = {
			set_if = "$interfacetable_vlan$"
			description = "Add the vlan attribution property for each interface in the interface table"
		}
		"--noipinfo" = {
			set_if = "$interfacetable_noipinfo$"
			description = "Remove the ip information for each interface from the interface table"
		}
		"--alias" = {
			set_if = "$interfacetable_alias$"
			description = "Add the alias information for each interface in the interface table"
		}
		"--accessmethod" = {
			value = "$interfacetable_accessmethod$"
			description = "Access method for a shortcut to the host in the HTML page"
		}
		"--htmltablelinktarget" = {
			value = "$interfacetable_htmltablelinktarget$"
			description = "Specifies the windows or the frame where the [details] link will load the generated html page"
		}
		"--delta" = {
			value = "$interfacetable_delta$"
			description = "Set the delta used for interface throuput calculation"
		}
		"--ifs" = {
			value = "$interfacetable_ifs$"
			description = "Input field separator"
		}
		"--cache" = {
			value = "$interfacetable_cache$"
			description = "Define the retention time of the cached data"
		}
		"--noifloadgradient" = {
			set_if = "$interfacetable_noifloadgradient$"
			description = "Disable color gradient from green over yellow to red for the load percentage"
		}
		"--nohuman" = {
			set_if = "$interfacetable_nohuman$"
			description = "Do not translate bandwidth usage in human readable format"
		}
		"--snapshot" = {
			set_if = "$interfacetable_snapshot$"
			description = "Force the plugin to run like if it was the first launch"
		}
		"--timeout" = {
			value = "$interfacetable_timeout$"
			description = "Define the global timeout limit of the plugin"
		}
		"--css" = {
			value = "$interfacetable_css$"
			description = "Define the css stylesheet used by the generated html files"
		}
		"--config" = {
			value = "$interfacetable_config$"
			description = "Specify a config file to load"
		}
		"--noconfigtable" = {
			set_if = "$interfacetable_noconfigtable$"
			description = "Disable configuration table on the generated HTML page"
		}
		"--notips" = {
			set_if = "$interfacetable_notips$"
			description = "Disable the tips in the generated html tables"
		}
		"--default-table-sorting" = {
			value = "$interfacetable_defaulttablesorting$"
			description = "Default table sorting"
		}
		"--table-split" = {
			set_if = "$interfacetable_tablesplit$"
			description = "Generate multiple interface tables, one per interface type"
		}
		"--notype" = {
			set_if = "$interfacetable_notype$"
			description = "Remove the interface type for each interface"
		}
	}

	vars.interfacetable_hostquery = "$address$"
	vars.interfacetable_hostdisplay = "$host.display_name$"
	vars.interfacetable_perfdataservicedesc = "$service.name$"
	vars.interfacetable_regex = false
	vars.interfacetable_outputshort = false
	vars.interfacetable_aliasmatching = false
	vars.interfacetable_pkt = false
	vars.interfacetable_trafficwithpkt = false
	vars.interfacetable_snmpv2 = false
	vars.interfacetable_64bits = false
	vars.interfacetable_unixsnmp = false
	vars.interfacetable_enableperfdata = false
	vars.interfacetable_duplex = false
	vars.interfacetable_stp = false
	vars.interfacetable_vlan = false
	vars.interfacetable_noipinfo = false
	vars.interfacetable_noifloadgradient = false
	vars.interfacetable_nohuman = false
	vars.interfacetable_snapshot = false
	vars.interfacetable_noconfigtable = false
	vars.interfacetable_notips = false
	vars.interfacetable_notype = false
}

object CheckCommand "iftraffic" {
	import "ipv4-or-ipv6"

	command = [ PluginContribDir + "/check_iftraffic.pl"]

	arguments = {
		"-H" = {
			value = "$iftraffic_address$"
			description = "Check interface on the indicated host."
			required = true
		}
		"-C" = {
			value = "$iftraffic_community$"
			description = "SNMP community. Defaults to 'public' if omitted."
		}
		"-V" = {
			value = "$iftraffic_version$"
			description = "SNMP version. Defaults to '1' if omitted."
		}
		"-i" = {
			value = "$iftraffic_interface$"
			description = "Interface name."
			required = true
		}
		"-b" = {
			value = "$iftraffic_bandwidth$"
			description = "Interface maximum speed in kilo/mega/giga/bits per second."
			required = true
		}
		"-u" = {
			value = "$iftraffic_units$"
			description = "g=gigabits/s,m=megabits/s,k=kilobits/s,b=bits/s."
		}
		"-w" = {
			value = "$iftraffic_warn$"
			description = "% of bandwidth usage necessary to result in warning status (default: 85)"
		}
		"-c" = {
			value = "$iftraffic_crit$"
			description = "% of bandwidth usage necessary to result in critical status (default: 98)"
		}
		"-M" = {
			value = "$iftraffic_max_counter$"
			description = "Max counter value of net devices in kilo/mega/giga/bytes."
		}
	}

	vars.iftraffic_address = "$check_address$"
	vars.iftraffic_warn = "85"
	vars.iftraffic_crit = "98"
}

object CheckCommand "iftraffic64" {
	import "ipv4-or-ipv6"

	command = [ PluginContribDir + "/check_iftraffic64.pl"]

	arguments = {
		"-H" = {
			value = "$iftraffic64_address$"
			description = "Check interface on the indicated host."
			required = true
		}
		"-C" = {
			value = "$iftraffic64_community$"
			description = "SNMP community. Defaults to 'public' if omitted."
		}
		"-i" = {
			value = "$iftraffic64_interface$"
			description = "Interface name."
			required = true
		}
		"-b" = {
			value = "$iftraffic64_bandwidth$"
			description = "Interface maximum speed in kilo/mega/giga/bits per second."
			required = true
		}
		"-u" = {
			value = "$iftraffic64_units$"
			description = "g=gigabits/s,m=megabits/s,k=kilobits/s,b=bits/s."
		}
		"-w" = {
			value = "$iftraffic64_warn$"
			description = "% of bandwidth usage necessary to result in warning status (default: 85)"
		}
		"-c" = {
			value = "$iftraffic64_crit$"
			description = "% of bandwidth usage necessary to result in critical status (default: 98)"
		}
		"-M" = {
			value = "$iftraffic64_max_counter$"
			description = "Max counter value of net devices in kilo/mega/giga/bytes."
		}
	}

	vars.iftraffic64_address = "$check_address$"
	vars.iftraffic64_warn = "85"
	vars.iftraffic64_crit = "98"
}

object CheckCommand "interfaces" {
	import "ipv4-or-ipv6"

	command = [ PluginContribDir + "/check_interfaces" ]

	arguments = {
		"--hostname" = "$interfaces_address$"
		"--community" = {
			value = "$interfaces_community$"
			description = "The community string (default public)."
		}
		"--regex" = {
			value = "$interfaces_regex$"
			description = "Interface list regexp."
		}
		"--exclude-regex" = {
			value = "$interfaces_exclude_regex$"
			description = "Interface list negative regexp."
		}
		"--errors" = {
			value = "$interfaces_errors$"
			description = "Number of in errors (CRC errors for cisco) to consider a warning (default 50)."
		}
		"--out-errors" = {
			value = "$interface_out_errors$"
			description = "Number of out errors (collisions for cisco) to consider a warning (default same as in errors)."
		}
		"--perfdata" = {
			value = "$interfaces_perfdata$"
		}
		"--prefix" = {
			value = "$interfaces_prefix$"
			description = "Prefix interface names with this label."
		}
		"--lastcheck" = {
			value = "$interfaces_lastcheck$"
			description = "Last checktime (unixtime)."
		}
		"--bandwidth" = {
			value = "$interfaces_bandwidth$"
			description = "Bandwidth warn level in percent."
		}
		"--speed" = {
			value = "$interfaces_speed$"
			description = "Override speed detection with this value (bits per sec)."
		}
		"--trim" = {
			value = "$interfaces_trim$"
			description = "Cut this number of characters from the start of interface descriptions."
		}
		"--mode" = {
			value = "$interfaces_mode$"
			description = "Special operating mode (default,cisco,nonbulk,bintec)."
		}
		"--auth-proto" = {
			value = "$interfaces_auth_proto$"
			description = "SNMPv3 Auth Protocol (SHA|MD5)"
		}
		"--auth-phrase" = {
			value = "$interfaces_auth_phrase$"
			description = "SNMPv3 Auth Phrase"
		}
		"--priv-proto" = {
			value = "$interfaces_priv_proto$"
			description = "SNMPv3 Privacy Protocol (AES|DES)"
		}
		"--priv-phrase" = {
			value = "$interfaces_priv_phrase$"
			description = "SNMPv3 Privacy Phrase"
		}
		"--user" = {
			value = "$interfaces_user$"
			description = "SNMPv3 User"
		}
		"--down-is-ok" = {
			set_if = "$interfaces_down_is_ok$"
			description = "Disables critical alerts for down interfaces."
		}
		"--aliases" = {
			set_if = "$interfaces_aliases$"
			description = "Retrieves the interface description."
		}
		"--match-aliases" = {
			set_if = "$interfaces_match_aliases$"
			description = "Also match against aliases (Option --aliases automatically enabled)."
		}
		"--timeout" = {
			value = "$interfaces_timeout$"
			description = "Sets the SNMP timeout (in ms)."
		}
		"--sleep" = {
			value = "$interfaces_sleep$"
			description = "Sleep between every SNMP query (in ms)."
		}
                "--if-names" = {
                        set_if = "$interfaces_names$"
                        description = "Use ifName instead of ifDescr."
                }
	}

	vars.interfaces_address = "$check_address$"
	vars.interfaces_down_is_ok = false
	vars.interfaces_aliases = false
	vars.interfaces_match_aliases = false
}

object CheckCommand "linux_netdev" {
	command = [ PluginContribDir + "/check_linux_netdev" ]

	arguments = {
		"-d" = {
			value = "$linux_netdev_duration$"
			description = "For how long to run. E.g. '10s' or '2m'. Default: '1m'"
		}
		"-e" = {
			value = "$linux_netdev_exclude$"
			description = "Which NICs to exclude. E.g. 'eth0' or 'eth?*', may be an array. Default: none"
		}
		"INTERFACE:METRIC:THRESHOLD=RANGE" = {
			order = 1
			skip_key = true
			value = "$linux_netdev_thresholds$"
			description = "Warning and critical thresholds. E.g. 'eth?*:tx:bytes:persec:w=1000000000' (see https://github.com/Al2Klimov/check_linux_netdev#usage), may be an array. Default: none"
		}
	}
}

object CheckCommand "nwc_health" {
	import "ipv4-or-ipv6"

	command = [ PluginContribDir + "/check_nwc_health" ]

	arguments = {
		"--timeout" = {
			value = "$nwc_health_timeout$"
			description = "Seconds before plugin times out (default: 15)"
		}
		"--blacklist" = {
			value = "$nwc_health_blacklist$"
			description = "Blacklist some (missing/failed) components"
		}
		"--hostname" = {
			value = "$nwc_health_hostname$"
			description = "Hostname or IP-address of the switch or router"
		}
		"--port" = {
			value = "$nwc_health_port$"
			description = "The SNMP port to use (default: 161)"
		}
		"--domain" = {
			value = "$nwc_health_domain$"
			description = "The transport domain to use (default: udp/ipv4, other possible values: udp6, udp/ipv6, tcp, tcp4, tcp/ipv4, tcp6, tcp/ipv6)"
		}
		"--protocol" = {
			value = "$nwc_health_protocol$"
			description = "The SNMP protocol to use (default: 2c, other possibilities: 1,3)"
		}
		"--community" = {
			value = "$nwc_health_community$"
			description = "SNMP community of the server (SNMP v1/2 only)"
		}
		"--username" = {
			value = "$nwc_health_username$"
			description = "The securityName for the USM security model (SNMPv3 only)"
			set_if = {{ string(macro("$nwc_health_protocol$")) == "3" }}
		}
		"--authpassword" = {
			value = "$nwc_health_authpassword$"
			description = "The authentication password for SNMPv3"
			set_if = {{ string(macro("$nwc_health_protocol$")) == "3" }}
		}
		"--authprotocol" = {
			value = "$nwc_health_authprotocol$"
			description = "The authentication protocol for SNMPv3 (md5|sha)"
			set_if = {{ string(macro("$nwc_health_protocol$")) == "3" }}
		}
		"--privpassword" = {
			value = "$nwc_health_privpassword$"
			description = "The password for authPriv security level"
			set_if = {{ string(macro("$nwc_health_protocol$")) == "3" }}
		}
		"--privprotocol" = {
			value = "$nwc_health_privprotocol$"
			description = "The private protocol for SNMPv3 (des|aes|aes128|3des|3desde)"
			set_if = {{ string(macro("$nwc_health_protocol$")) == "3" }}
		}
		"--contextengineid" = {
			value = "$nwc_health_contextengineid$"
			description = "The context engine id for SNMPv3 (10 to 64 hex characters)"
		}
		"--contextname" = {
			value = "$nwc_health_contextname$"
			description = "The context name for SNMPv3 (empty represents the default context)"
		}
		"--community2" = {
			value = "$nwc_health_community2$"
			description = "SNMP community which can be used to switch the context during runtime"
		}
		"--mode" = {
			value = "$nwc_health_mode$"
			description = "Which mode should be executed. A list of all available modes can be found in the plugin documentation"
		}
		"--name" = {
			value = "$nwc_health_name$"
			description = "The name of an interface (ifDescr)"
		}
		"--drecksptkdb" = {
			value = "$nwc_health_drecksptkdb$"
			description = "This parameter must be used instead of --name, because Devel::ptkdb is stealing the latter from the command line"
		}
		"--alias" = {
			value = "$nwc_health_alias$"
			description = "The alias name of a 64bit-interface (ifAlias)"
		}
		"--regexp" = {
			set_if = "$nwc_health_regexp$"
			description = "A flag indicating that --name is a regular expression"
		}
		"--ifspeedin" = {
			value = "$nwc_health_ifspeedin$"
			description = "Override the ifspeed oid of an interface (only inbound)"
		}
		"--ifspeedout" = {
			value = "$nwc_health_ifspeedout$"
			description = "Override the ifspeed oid of an interface (only outbound)"
		}
		"--ifspeed" = {
			value = "$nwc_health_ifspeed$"
			description = "Override the ifspeed oid of an interface"
		}
		"--units" = {
			value = "$nwc_health_units$"
			description = "One of %, B, KB, MB, GB, Bit, KBi, MBi, GBi. (used for e.g. mode interface-usage)"
		}
		"--name2" = {
			value = "$nwc_health_name2$"
			description = "The secondary name of a component"
		}
		"--name3" = {
			value = "$nwc_health_name3$"
			description = "The tertiary name of a component"
		}
		"--role" = {
			value = "$nwc_health_role$"
			description = "The role of this device in a hsrp group (active/standby/listen)"
		}
		"--report" = {
			value = "$nwc_health_report$"
			description = "Can be used to shorten the output. Possible values are: 'long' (default), 'short' (to shorten if available), or 'html' (to produce some html outputs if available)"
		}
		"--lookback" = {
			value = "$nwc_health_lookback$"
			description = "The amount of time you want to look back when calculating average rates. Use it for mode interface-errors or interface-usage. Without --lookback the time between two runs of check_nwc_health is the base for calculations. If you want your checkresult to be based for example on the past hour, use --lookback 3600." 
		}
		"--critical" = {
			value = "$nwc_health_critical$"
			description = "The critical threshold"
		}
		"--warning" = {
			value = "$nwc_health_warning$"
			description = "The warning threshold"
		}
		"--warningx" = {
			value = "$nwc_health_warningx$"
			repeat_key = true
			description = "The extended warning thresholds"
		}
		"--criticalx" = {
			value = "$nwc_health_criticalx$"
			repeat_key = true
			description = "The extended critical thresholds"
		}
		"--mitigation" = {
			value = "$nwc_health_mitigation$"
			description = "The parameter allows you to change a critical error to a warning."
		}
		"--selectedperfdata" = {
			value = "$nwc_health_selectedperfdata$"
			description = "The parameter allows you to limit the list of performance data. It's a perl regexp. Only matching perfdata show up in the output."
		}
		"--morphperfdata" = {
			value = "$nwc_health_morphperfdata$"
			description = "The parameter allows you to change performance data labels. It's a perl regexp and a substitution. --morphperfdata '(.*)ISATAP(.*)'='$1patasi$2'"
		}
		"--negate" = {
			value = "$nwc_health_negate$"
			description = "The parameter allows you to map exit levels, such as warning=critical"
		}
		"--with-mymodules-dyn-dir" = {
			value = "$nwc_health_mymodules-dyn-dir$"
			description = "A directory where own extensions can be found"
		}
		"--servertype" = {
			value = "$nwc_health_servertype$"
			description = "The type of the network device: cisco (default). Use it if auto-detection is not possible"
		}
		"--statefilesdir" = {
			value = "$nwc_health_statefilesdir$"
			description = "An alternate directory where the plugin can save files"
		}
		"--oids" = {
			value = "$nwc_health_oids$"
			description = "A list of oids which are downloaded and written to a cache file. Use it together with --mode oidcache"
		}
		"--offline" = {
			value = "$nwc_health_offline$"
			description = "The maximum number of seconds since the last update of cache file before it is considered too old"
		}
		"--multiline" = {
			set_if = "$nwc_health_multiline$"
			description = "Multiline output"
		}
	}

	vars.nwc_health_hostname = "$check_address$"
	vars.nwc_health_mode = "hardware-health"
}

object CheckCommand "printer_health" {
	import "ipv4-or-ipv6"

	command = [ PluginContribDir + "/check_printer_health" ]

	arguments = {
		"--timeout" = {
			value = "$printer_health_timeout$"
			description = "Seconds before plugin times out (default: 15)"
		}
		"--blacklist" = {
			value = "$printer_health_blacklist$"
			description = "Blacklist some (missing/failed) components"
		}
		"--hostname" = {
			value = "$printer_health_hostname$"
			description = "Hostname or IP-address of the switch or router"
		}
		"--port" = {
			value = "$printer_health_port$"
			description = "The SNMP port to use (default: 161)"
		}
		"--domain" = {
			value = "$printer_health_domain$"
			description = "The transport domain to use (default: udp/ipv4, other possible values: udp6, udp/ipv6, tcp, tcp4, tcp/ipv4, tcp6, tcp/ipv6)"
		}
		"--protocol" = {
			value = "$printer_health_protocol$"
			description = "The SNMP protocol to use (default: 2c, other possibilities: 1,3)"
		}
		"--community" = {
			value = "$printer_health_community$"
			description = "SNMP community of the server (SNMP v1/2 only)"
		}
		"--username" = {
			value = "$printer_health_username$"
			description = "The securityName for the USM security model (SNMPv3 only)"
		}
		"--authpassword" = {
			value = "$printer_health_authpassword$"
			description = "The authentication password for SNMPv3"
		}
		"--authprotocol" = {
			value = "$printer_health_authprotocol$"
			description = "The authentication protocol for SNMPv3 (md5|sha)"
		}
		"--privpassword" = {
			value = "$printer_health_privpassword$"
			description = "The password for authPriv security level"
		}
		"--privprotocol" = {
			value = "$printer_health_privprotocol$"
			description = "The private protocol for SNMPv3 (des|aes|aes128|3des|3desde)"
		}
		"--contextengineid" = {
			value = "$printer_health_contextengineid$"
			description = "The context engine id for SNMPv3 (10 to 64 hex characters)"
		}
		"--contextname" = {
			value = "$printer_health_contextname$"
			description = "The context name for SNMPv3 (empty represents the default context)"
		}
		"--community2" = {
			value = "$printer_health_community2$"
			description = "SNMP community which can be used to switch the context during runtime"
		}
		"--mode" = {
			value = "$printer_health_mode$"
			description = "Which mode should be executed. Available modes: hardware-health, supplies-status and uptime."
		}
		"--name" = {
			value = "$printer_health_name$"
			description = "The name of an interface (ifDescr)"
		}
		"--regexp" = {
			set_if = "$printer_health_regexp$"
			description = "A flag indicating that --name is a regular expression"
		}
		"--units" = {
			value = "$printer_health_units$"
			description = "One of %, B, KB, MB, GB, Bit, KBi, MBi, GBi. (used for e.g. mode interface-usage)"
		}
		"--name2" = {
			value = "$printer_health_name2$"
			description = "The secondary name of a component"
		}
		"--name3" = {
			value = "$printer_health_name3$"
			description = "The teritary name of a component"
		}
		"--report" = {
			value = "$printer_health_report$"
			description = "Can be used to shorten the output."
		}
		"--lookback" = {
			value = "$printer_health_lookback$"
			description = "The amount of time you want to look back when calculating average rates. Use it for mode interface-errors or interface-usage. Without --lookback the time between two runs of check_printer_health is the base for calculations. If you want your checkresult to be based for example on the past hour, use --lookback 3600." 
		}
		"--critical" = {
			value = "$printer_health_critical$"
			description = "The critical threshold"
		}
		"--warning" = {
			value = "$printer_health_warning$"
			description = "The warning threshold"
		}
		"--warningx" = {
			value = "$printer_health_warningx$"
			description = "The extended warning thresholds"
		}
		"--criticalx" = {
			value = "$printer_health_criticalx$"
			description = "The extended critical thresholds"
		}
		"--mitigation" = {
			value = "$printer_health_mitigation$"
			description = "The parameter allows you to change a critical error to a warning."
		}
		"--selectedperfdata" = {
			value = "$printer_health_selectedperfdata$"
			description = "The parameter allows you to limit the list of performance data. It's a perl regexp. Only matching perfdata show up in the output."
		}
		"--morphperfdata" = {
			value = "$printer_health_morphperfdata$"
			description = "The parameter allows you to change performance data labels. It's a perl regexp and a substitution. --morphperfdata '(.*)ISATAP(.*)'='$1patasi$2'"
		}
		"--negate" = {
			value = "$printer_health_negate$"
			description = "The parameter allows you to map exit levels, such as warning=critical"
		}
		"--with-mymodules-dyn-dir" = {
			value = "$printer_health_mymodules-dyn-dir$"
			description = "A directory where own extensions can be found"
		}
		"--servertype" = {
			value = "$printer_health_servertype$"
			description = "The type of the network device: cisco (default). Use it if auto-detection is not possible"
		}
		"--statefilesdir" = {
			value = "$printer_health_statefilesdir$"
			description = "An alternate directory where the plugin can save files"
		}
		"--oids" = {
			value = "$printer_health_oids$"
			description = "A list of oids which are downloaded and written to a cache file. Use it together with --mode oidcache"
		}
		"--offline" = {
			value = "$printer_health_offline$"
			description = "The maximum number of seconds since the last update of cache file before it is considered too old"
		}
		"--multiline" = {
			set_if = "$printer_health_multiline$"
			description = "Multiline output"
		}
	}

	vars.printer_health_hostname = "$check_address$"
	vars.printer_health_mode = "supplies-status"
}

template CheckCommand "generic-thola-check-command" {
	command = [ PluginContribDir + "/thola-client", "check" ]

	arguments = {
		"--target-api" = {
			required = true
			value = "$thola_api_address$"
			description = "Address of the thola API"
		}
	}
}

template CheckCommand "generic-thola-device-check-command" {
	import "generic-thola-check-command"
	import "ipv4-or-ipv6"

	arguments += {
		"thola_device_address" = {
			order = 0
			required = true
			skip_key = true
			value = "$thola_device_address$"
			description = "IP address of target device"
		}
		"--snmp-community" = {
			value = "$thola_device_snmp_community$"
			description = "SNMP Community of target device"
		}
		"--snmp-version" = {
			value = "$thola_device_snmp_protocol$"
			description = "SNMP Version of target device"
		}
	}

	vars.thola_device_address = "$check_address$"
}

object CheckCommand "thola-cpu-load" {
	import "generic-thola-device-check-command"

	command += [ "cpu-load" ]

	arguments += {
		"--critical" = {
			value = "$thola_cpu_load_critical$"
			description = "Critical threshold for the CPU load in %"
		}
		"--warning" = {
			value = "$thola_cpu_load_warning$"
			description = "Warning threshold for the CPU load in %"
		}
	}
}

object CheckCommand "thola-interface-metrics" {
	import "generic-thola-device-check-command"

	command += [ "interface-metrics" ]
}

object CheckCommand "thola-hardware-health" {
	import "generic-thola-device-check-command"

	command += [ "hardware-health" ]
}

object CheckCommand "thola-identify" {
	import "generic-thola-device-check-command"

	command += [ "identify" ]

	arguments += {
		"--model" = {
			value = "$thola_identify_model$"
			description = "Model that is compared to the actual model of the device"
		}
		"--os-version" = {
			value = "$thola_identify_os_version$"
			description = "OS-version that is compared to the actual OS-version of the device"
		}
		"--vendor" = {
			value = "$thola_identify_vendor$"
			description = "Vendor that is compared to the actual vendor of the device"
		}
		"--serial-number" = {
			value = "$thola_identify_serial_number$"
			description = "Serial number that is compared to the actual serial number of the device"
		}
		"--snmp-discover-retries" = {
			value = "$thola_identify_discover_retries$"
			description = "Number of discover retries"
		}
		"--snmp-discover-timeout" = {
			value = "$thola_identify_discover_timeouts$"
			description = "Number of discover timeouts"
		}
	}
}

object CheckCommand "thola-memory-usage" {
	import "generic-thola-device-check-command"

	command += [ "memory-usage" ]

	arguments += {
		"--critical" = {
			value = "$thola_memory_usage_critical$"
			description = "Critical threshold for the memory usage in %"
		}
		"--warning" = {
			value = "$thola_memory_usage_warning$"
			description = "Warning threshold for the memory usage in %"
		}
	}
}

object CheckCommand "thola-sbc" {
	import "generic-thola-device-check-command"

	command += [ "sbc" ]

	arguments += {
		"--system-health-score-critical" = {
			value = "$thola_sbc_system_health_score_critical$"
			description = "Critical threshold for the health score in %"
		}
		"--system-health-score-warning" = {
			value = "$thola_sbc_system_health_score_warning$"
			description = "Warning threshold for the health score in %"
		}
	}
}

object CheckCommand "thola-thola-server" {
	import "generic-thola-check-command"

	command += [ "thola-server" ]
}

object CheckCommand "thola-ups" {
	import "generic-thola-device-check-command"

	command += [ "ups" ]

	arguments += {
		"--batt-current-critical-max" = {
			value = "$thola_ups_batt_current_critical_max$"
			description = "High critical threshold for the battery current in Volt"
		}
		"--batt-current-critical-min" = {
			value = "$thola_ups_batt_current_critical_min$"
			description = "Low critical threshold for the battery current in Volt"
		}
		"--batt-current-warning-max" = {
			value = "$thola_ups_batt_current_warning_max$"
			description = "High warning threshold for the battery current in Volt"
		}
		"--batt-current-warning-min" = {
			value = "$thola_ups_batt_current_warning_min$"
			description = "Low warning threshold for the battery current in Volt"
		}
		"--batt-temperature-critical-max" = {
			value = "$thola_ups_batt_temperature_critical_max$"
			description = "High critical threshold for the battery temperature in degree celsius"
		}
		"--batt-temperature-critical-min" = {
			value = "$thola_ups_batt_temperature_critical_min$"
			description = "Low critical threshold for the battery temperature in degree celsius"
		}
		"--batt-temperature-warning-max" = {
			value = "$thola_ups_batt_temperature_warning_max$"
			description = "High warning threshold for the battery temperature in degree celsius"
		}
		"--batt-temperature-warning-min" = {
			value = "$thola_ups_batt_temperature_warning_min$"
			description = "Low warning threshold for the battery temperature in degree celsius"
		}
		"--current-load-critical-max" = {
			value = "$thola_ups_current_load_critical_max$"
			description = "High critical threshold for the current load in %"
		}
		"--current-load-critical-min" = {
			value = "$thola_ups_current_load_critical_min$"
 			description = "Low critical threshold for the current load in %"
		}
		"--current-load-warning-max" = {
			value = "$thola_ups_current_load_warning_max$"
			description = "High warning threshold for the current load in %"
		}
		"--current-load-warning-min" = {
			value = "$thola_ups_current_load_warning_min$"
			description = "Low warning threshold for the current load in %"
		}
		"--rectifier-current-critical-max" = {
			value = "$thola_ups_rectifier_current_critical_max$"
			description = "High critical threshold for the current rectifier in Volt"
		}
		"--rectifier-current-critical-min" = {
			value = "$thola_ups_rectifier_current_critical_min$"
			description = "Low critical threshold for the current rectifier in Volt"
		}
		"--rectifier-current-warning-max" = {
			value = "$thola_ups_rectifier_current_warning_max$"
			description = "High warning threshold for the current rectifier in Volt"
		}
		"--rectifier-current-warning-min" = {
			value = "$thola_ups_rectifier_current_warning_min$"
			description = "Low warning threshold for the current rectifier in Volt"
		}
		"--system-voltage-critical-max" = {
			value = "$thola_ups_system_voltage_critical_max$"
			description = "High critical threshold for the system voltage in Volt"
		}
		"--system-voltage-critical-min" = {
			value = "$thola_ups_system_voltage_critical_min$"
			description = "Low critical threshold for the system voltage in Volt"
		}
		"--system-voltage-warning-max" = {
			value = "$thola_ups_system_voltage_warning_max$"
			description = "High warning threshold for the system voltage in Volt"
		}
		"--system-voltage-warning-min" = {
			value = "$thola_ups_system_voltage_warning_min$"
			description = "Low warning threshold for the system voltage in Volt"
		}
	}
}
