class ZabbixServer

Attributes

connected[R]

attr_accessor :server_url, :username, :password

connection[R]

attr_accessor :server_url, :username, :password

version[R]

attr_accessor :server_url, :username, :password

Public Class Methods

new() click to toggle source
# File libs/zabbix_server.rb, line 66
def initialize
  @credentials={}
  #@server_url=nil
  #@username=nil
  #@password=nil
  @connected=false
  @version=nil
  @connection=nil
end

Public Instance Methods

addelementtosysmap(parameters) click to toggle source
# File libs/zabbix_server.rb, line 305
def addelementtosysmap(parameters)
  debug(6,:var=>parameters)
  result=@connection.sysmap.addelement(parameters)
  {:class=>:map, :result=>result}
end
addlinktrigger(parameters) click to toggle source
# File libs/zabbix_server.rb, line 317
def addlinktrigger(parameters)
  debug(6,:var=>parameters)
  result=@connection.sysmap.addlinktrigger(parameters)
  {:class=>:map, :result=>result}
end
addsysmap(parameters) click to toggle source
# File libs/zabbix_server.rb, line 299
def addsysmap(parameters)
  debug(6,:var=>parameters)
  result=@connection.sysmap.create(parameters)
  {:class=>:map, :result=>result}
end
addusermedia(parameters) click to toggle source
# File libs/zabbix_server.rb, line 211
def addusermedia(parameters)
  debug(6,:var=>parameters)
  valid_parameters=["userid", "mediatypeid", "sendto", "severity", "active", "period"]

  if parameters.nil? then
    puts "add usermedia requires arguments, valid fields are:"
    puts "userid, mediatypeid, sendto, severity, active, period"
    puts "example:  add usermedia userid=<id> mediatypeid=1 sendto=myemail@address.com severity=63 active=1 period=\"\""
  else

    p_keys = parameters.keys

    valid_parameters.each {|key| p_keys.delete(key)}
    if !p_keys.empty? then
      puts "Invalid items"
      p p_keys
      return false
    elsif parameters["userid"].nil?
      puts "Missing required userid statement."
    end
    begin
      @connection.user.addmedia(parameters)
    rescue ZbxAPI_ParameterError => e
      puts e.message
    end
  end

end
connected?() click to toggle source

TODO come back and finish the class to have automated timeout of the connection, and improve the usability of this function which should tell you if you have a valid connection or not, which includes timeout and login.

# File libs/zabbix_server.rb, line 199
def connected?
  @connected
end
getappid(parameters) click to toggle source

def getapp(parameters)

debug(6,parameters)

result=@connection.application.get(parameters)
{:class=>:application, :result=>result}

end

def addapp(parameters)

debug(6,parameters)
result=@connection.application.create(parameters)
{:class=>:application, :result=>result}

end

# File libs/zabbix_server.rb, line 272
def getappid(parameters)
  debug(6,:var=>parameters)
  result=@connection.application.getid(parameters)
  {:class=>:application, :result=>result}
end
gethostgroupid(parameters) click to toggle source

def gethostgroup(parameters)

debug(6,parameters)

result=@connection.hostgroup.get(parameters)
{:class=>:hostgroup, :result=>result}

end

# File libs/zabbix_server.rb, line 253
def gethostgroupid(parameters)
  debug(6,:var=>parameters)
  result = @connection.hostgroup.getObjects(parameters)
  {:class=>:hostgroupid, :result=>result}
end
getseid(parameters) click to toggle source
# File libs/zabbix_server.rb, line 311
def getseid(parameters)
  debug(6,:var=>parameters)
  result=@connection.sysmap.getseid(parameters)
  {:class=>:map, :result=>result}
end
gettrigger(parameters) click to toggle source
# File libs/zabbix_server.rb, line 278
def gettrigger(parameters)
  debug(6,:var=>parameters)
  result=@connection.trigger.get(parameters)
  {:class=>:trigger, :result=>result}
end
loggedin?() click to toggle source
# File libs/zabbix_server.rb, line 191
def loggedin?
  @connected
end
login(server={}) click to toggle source

login

Perform the actual login to the Zabbix server
If the object variables url, username, and password have not been
set previously, an attempt will be made to use the global environment
variables.  If that does not work an exception will be raised.
# File libs/zabbix_server.rb, line 105
def login(server={})
  @credentials.merge!(server)

  error_msg=[]
  error_msg<<"Url not set" if !@credentials["server"]
  error_msg<<"Username not set" if !@credentials["username"]
  error_msg<<"Password not set" if !@credentials["password"]

  raise ConnectionProblem.new(error_msg.join(", ")) if !error_msg.empty?

  @connection = ZabbixServer_overload.new(@credentials["server"],env["debug"])
  if @credentials["proxy_server"]
    @connection.set_proxy(@credentials["proxy_server"],@credentials["proxy_port"],
          @credentials["proxy_user"],@credentials["proxy_password"])
  end
  @connection.login(@credentials["username"],@credentials["password"])
  @connected=true
  ServerCredentials.instance[@credentials["name"]]["auth"]=
      @connection.auth
  @version=@connection.API_version
  puts "#{@server_url} connected"  if env["echo"]
  puts "API Version: #{@version}"  if env["echo"]

  save_auth

end
logout() click to toggle source
# File libs/zabbix_server.rb, line 132
def logout
  begin
    @connection.logout
  rescue ZbxAPI_GeneralError => e
    #if it's -32400, it's probably because the function does not exist.
    raise e if e.message["code"]!=-32400
  ensure
    @connection=nil
    @connected=false
    @version=nil

    if @credentials["name"]
      ServerCredentials.instance[@credentials["name"]].delete("auth")
    end
    GlobalVars.instance.delete("auth")
    save_auth
    puts "Logout complete from #{server_url}" if env["echo"]
  end
end
password() click to toggle source
# File libs/zabbix_server.rb, line 92
def password
  @credentials["password"]
end
password=(password) click to toggle source
# File libs/zabbix_server.rb, line 96
def password=(password)
  @credentials["password"]=password
end
reconnect() click to toggle source
# File libs/zabbix_server.rb, line 207
def reconnect
  @connection.login(@user,@password)
end
save_auth() click to toggle source
# File libs/zabbix_server.rb, line 152
def save_auth
  if env["session_file"] && !env["session_file"].empty?
    path=File.expand_path(env["session_file"])
    creds={}
    ServerCredentials.instance.each {|name,values|
      creds[name]=values["auth"] if values["auth"]
    }
    File.open(path,"w") do |f|
      f.write({"auth"=>creds}.to_yaml)
    end
    #Enforce that the auth cache file isn't world readable
    File.chmod(0600,path)
  end

end
server_url() click to toggle source
# File libs/zabbix_server.rb, line 76
def server_url
  @credentials["server"]
end
server_url=(server) click to toggle source
# File libs/zabbix_server.rb, line 80
def server_url=(server)
  @credentials["server"]=server
end
use_auth(server) click to toggle source
# File libs/zabbix_server.rb, line 168
  def use_auth(server)
    debug(6,:msg=>"Server",:var=>server)
    @credentials.merge!(server)
    debug(6,:msg=>"credentials",:var=>@credentials)

#    @server_url = server["server"] || @server_url

    @connection = ZabbixServer_overload.new(server_url,env["debug"])
    @connection.auth=@credentials["auth"]
    if @credentials["proxy_server"]
      @connection.set_proxy(@credentials["proxy_server"],@credentials["proxy_port"],
            @credentials["proxy_user"],@credentials["proxy_password"])
    end

    major,minor=@connection.do_request(@connection.json_obj('APIInfo.version',{}))['result'].split('.')
    @connection.major=major.to_i
    @connection.minor=minor.to_i
    @version=@connection.API_version
    @connected=true

    true
  end
username() click to toggle source
# File libs/zabbix_server.rb, line 84
def username
  @credentials["username"]
end
username=(username) click to toggle source
# File libs/zabbix_server.rb, line 88
def username=(username)
  @credentials["username"]=username
end