class InfobloxClass
Wrapper class to interact with Infoblox
Public Instance Methods
call_infoblox(action:, resource:, ibobj:, body_type: :json, body: nil, servername: nil, username: nil, password: nil, baseurl: 'https://[SERVERNAME]/wapi/v2.3.1/')
click to toggle source
# File lib/miq_utilities/infoblox.rb, line 54 def call_infoblox(action:, resource:, ibobj:, body_type: :json, body: nil, servername: nil, username: nil, password: nil, baseurl: 'https://[SERVERNAME]/wapi/v2.3.1/') @logger = LoggingClass.new("#{self.class}:(#{__method__})") servername ||= $evm.object['infobloxservername'] username ||= $evm.object['infobloxusername'] password ||= $evm.object.decrypt('infobloxpassword') baseurl ||= $evm.object['baseURL'].to_s url = baseurl.sub('[SERVERNAME]', servername.to_s) + resource.to_s refend = '&_return_as_object=1' argsfound = false unless ibobj['args'].nil? args = ibobj['args'] argsfound = true end argextattrs = ibobj['argextattrs'] unless ibobj['argextattrs'].nil? returnfields = ibobj['returnfields'] unless ibobj['returnfields'].nil? url = process_args(args, url) if args url = process_returnfields(url, returnfields, argsfound) if returnfields url = process_extattrs(argextattrs, url, argsfound) if argextattrs url = if argextattrs || returnfields "#{url}#{refend}" else url end @logger.log(level: 'info', message: "URL: \"#{url}\"") params = { method: action, url: url, user: username, password: password, verify_ssl: false, headers: { content_type: body_type, accept: :json } } if body_type == :json params[:payload] = JSON.generate(body) if body @logger.log(level: 'info', message: "Calling -> Infoblox:<#{url}> action:<#{action}> payload:<#{params[:payload]}>") if body elsif body params[:payload] = body end response = RestClient::Request.new(params).execute if response.code == 200 || response.code == 201 @logger.log(level: 'info', message: "Success <- Infoblox Response:<#{response.code}>") else err_msg = "Error calling infoblox. <#{response.inspect}>" @logger.log(level: 'error', message: err_msg, notify: true) end response end
Private Instance Methods
process_args(inargs, inurl)
click to toggle source
# File lib/miq_utilities/infoblox.rb, line 19 def process_args(inargs, inurl) loops = 1 outurl = inurl inargs.each do |key, value| outurl = "#{outurl}#{key}~=#{value}" if loops == inargs.count outurl = "#{outurl}#{key}~=#{value}&" if loops != inargs.count loops += 1 end outurl.to_s end
process_extattrs(inargextattrs, inurl, args)
click to toggle source
# File lib/miq_utilities/infoblox.rb, line 30 def process_extattrs(inargextattrs, inurl, args) loops = 1 outurl = if args "#{inurl}&_return_fields%2B=extattrs&*" else "#{inurl}_return_fields%2B=extattrs&*" end inargextattrs.each do |key, value| outurl = "#{outurl}#{key}%3A=#{value}" if loops == inargextattrs.count outurl = "#{outurl}#{key}%3A=#{value}&" if loops != inargextattrs.count loops += 1 end outurl.to_s end
process_returnfields(inurl, returnfields, inargs = false)
click to toggle source
# File lib/miq_utilities/infoblox.rb, line 45 def process_returnfields(inurl, returnfields, inargs = false) inurl = if inargs "#{inurl}&_return_fields%2B=#{returnfields}" else "#{inurl}_return_fields%2B=#{returnfields}" end inurl end