class ZAWS::Services::AI::Query
Public Class Methods
new(shellout, ai)
click to toggle source
# File lib/zaws/services/ai/query.rb, line 8 def initialize(shellout, ai) @shellout=shellout @ai=ai end
Public Instance Methods
all(home, verbose=false, value)
click to toggle source
# File lib/zaws/services/ai/query.rb, line 22 def all(home, verbose=false, value) out=ZAWS::Helper::Verbose.output(verbose) results = {} value_array=[] value_array.concat(value) query_aws(value_array, out, results) query_nessus(home, results, value_array, out) query_sumo(home, results, value_array, out) query_newrelic(home, results, value_array, out) results=ZAWS::Helper::ProcessHash.keep(results,value_array) results.to_yaml end
kilo(n)
click to toggle source
# File lib/zaws/services/ai/query.rb, line 13 def kilo(n) count = 0 while n >= 1024 and count < 4 n /= 1024.0 count += 1 end format("%.2f", n) + %w(B KB MB GB TB)[count] end
query_aws(value, verbose, results)
click to toggle source
# File lib/zaws/services/ai/query.rb, line 68 def query_aws(value, verbose, results) profile_creds=ZAWS::AWSCLI::Credentials.new("#{@ai.awscli.home}/.aws/credentials") item = [] profile_creds.profiles.each do |profile| @ai.awscli.main_regions.each do |region| filters= {} @ai.awscli.command_ec2.describeInstances.execute(region, 'json', filters, nil, verbose, profile) res = @ai.awscli.data_ec2.instance.view('hash') res['profile']=profile item << res end end results['awscli']= [] item.each do |reservations| reservations['Reservations'].each do |reservation| reservation['Instances'].each do |instance| found=false found=true if instance['InstanceId'] and instance['InstanceId'].include?(value[0]) found=true if instance['PrivateIpAddress'] and instance['PrivateIpAddress'].include?(value[0]) if instance['Tags'] instance['Tags'].each do |tag| if tag['Value'] and tag['Value'].include?(value[0]) found=true end end end if found instance['profile']=reservations['profile'] results['awscli'] << instance value << instance['InstanceId'] if instance['PrivateIpAddress'] value << instance['PrivateIpAddress'] unless instance['PrivateIpAddress'].include?(value[0]) value << instance['PrivateIpAddress'].gsub('.', '-') unless instance['PrivateIpAddress'].gsub('.', '-').include?(value[0]) end if instance['Tags'] instance['Tags'].each do |tag| if tag['Key'].equal?('Name') value << tag['Value'] unless tag['Value'].include?(value[0]) end end end end end end end end
query_nessus(home, results, value_array, verbose)
click to toggle source
# File lib/zaws/services/ai/query.rb, line 35 def query_nessus(home, results, value_array, verbose) @ai.nessusapi.home=home nessusapi_details = @ai.nessusapi.data_agents.view(1, verbose) results['nessus']= [] nessusapi_details['agents'].each do |x| value_array.each do |value| if x['ip'].include?(value) || x['name'].include?(value) if x['last_scanned'] x['last_scanned']= x['last_scanned'] + " <--- #{DateTime.strptime(x['last_scanned'], '%s')}" end results['nessus'] << x break end end end end
query_newrelic(home, results, value_array, verbose)
click to toggle source
# File lib/zaws/services/ai/query.rb, line 115 def query_newrelic(home, results, value_array, verbose) @ai.newrelicapi.home=home newrelicapi_details = @ai.newrelicapi.data_servers.view(verbose) results['newrelic'] =[] newrelicapi_details['servers'].each do |x| value_array.each do |value| if x['name'].include?(value) if x['summary'] and x['summary']['memory_used'] x['summary']['memory_used']="#{x['summary']['memory_used']}"+" <--- #{kilo(x['summary']['memory_used'])}" end results['newrelic'] << x break end end end end
query_sumo(home, results, value_array, verbose)
click to toggle source
# File lib/zaws/services/ai/query.rb, line 52 def query_sumo(home, results, value_array, verbose) @ai.sumoapi.home=home sumoapi_details = @ai.sumoapi.data_collectors.view(verbose) results['sumo']= [] sumoapi_details['collectors'].each do |x| value_array.each do |value| if x['name'].include?(value) sumoapi_sources=@ai.sumoapi.data_sources.view(verbose, x['id']) x['sources']=sumoapi_sources results['sumo'] << x break end end end end