class ZabbixApi class Hosts < Basic # The method name used for interacting with Hosts via Zabbix API # # @return [String] def method_name 'host' end # The id field name used for identifying specific Host objects via Zabbix API # # @return [String] def indentify 'host' end # Dump Host object data by key from Zabbix API # # @param data [Hash] Should include desired object's key and value # @raise [ApiError] Error returned when there is a problem with the Zabbix API call. # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK. # @return [Hash] def dump_by_id(data) log "[DEBUG] Call dump_by_id with parametrs: #{data.inspect}" @client.api_request( method: 'host.get', params: { filter: { key.to_sym => data[key.to_sym] }, output: 'extend', selectGroups: 'shorten' } ) end # The default options used when creating Host objects via Zabbix API # # @return [Hash] def default_options { host: nil, interfaces: [], status: 0, available: 1, groups: [], proxy_hostid: nil } end # Unlink/Remove Templates from Hosts using Zabbix API # # @param data [Hash] Should include hosts_id array and templates_id array # @raise [ApiError] Error returned when there is a problem with the Zabbix API call. # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK. # @return [Boolean] def unlink_templates(data) result = @client.api_request( method: 'host.massRemove', params: { hostids: data[:hosts_id], templates: data[:templates_id] } ) result.empty? ? false : true end # Create or update Host object using Zabbix API # # @param data [Hash] Needs to include host to properly identify Hosts via Zabbix API # @raise [ApiError] Error returned when there is a problem with the Zabbix API call. # @raise [HttpError] Error raised when HTTP status from Zabbix Server response is not a 200 OK. # @return [Integer] Zabbix object id def create_or_update(data) hostid = get_id(host: data[:host]) hostid ? update(data.merge(hostid: hostid)) : create(data) end end end