Sha256: f2c80a46de239c5ae3559d298ec3af23a3d1e0a5da6511fbde7d67a08686b272

Contents?: true

Size: 1.84 KB

Versions: 2

Compression:

Stored size: 1.84 KB

Contents

class ZabbixApi
  class HostGroups

    def initialize(client)
      @client = client
    end

    def create(data)
      result = @client.api_request(:method => "hostgroup.create", :params => [data])
      result.empty? ? nil : result['groupids'][0].to_i
    end

    def add(data)
      create(data)
    end

    def delete(data)
      result = @client.api_request(:method => "hostgroup.delete", :params => [:groupid => data])
      result.empty? ? nil : result['groupids'][0].to_i
    end

    def destroy(data)
      delete(data)
    end

    def create_or_update(data)
      userid = get_id(:name => data[:name])
      userid ? update(data.merge(:groupid => userid)) : create(data)
    end

    def update(data)
      result = @client.api_request(:method => "hostgroup.update", :params => data)
      result ? result['groupids'][0].to_i : nil
    end

    def get_or_create(data)
      unless hostgroupid = get_id(data)
        hostgroupid = create(data)
      end
      hostgroupid
    end

    def get_full_data(data)
      case @client.api_version 
        when "1.2"
          @client.api_request(:method => "hostgroup.get", :params => {:filter => data, :output => "extend"})
        else
          @client.api_request(:method => "hostgroup.get", :params => {:filter => data, :output => "extend"})
      end
    end

    # Return all hostgroups
    # 
    # * *Returns* :
    #   - Hash with {"Hostgroup1" => "id1", "Hostgroup2" => "id2"}
    def all
      result = {}
      @client.api_request(:method => "hostgroup.get", :params => {:output => "extend"}).each do |hostgrp|
        result[hostgrp['name']] = hostgrp['groupid']
      end
      result
    end

    def get_id(data)
      result = get_full_data(data)
      hostgroupid = nil
      result.each { |hgroup| hostgroupid = hgroup['groupid'].to_i if hgroup['name'] == data[:name] }
      hostgroupid
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
zabbixapi-0.5.0 lib/zabbixapi/hostgroups.rb
zabbixapi-0.5.0b6 lib/zabbixapi/hostgroups.rb