def export_sam(csv)
guests_host = {}
server = option_server || HammerCLI::Settings.get(:csv, :host)
username = option_username || HammerCLI::Settings.get(:csv, :username)
password = option_password || HammerCLI::Settings.get(:csv, :password)
url = "#{server}/api/systems?organization_id=satellite-1"
uri = URI(url)
system_ids = Net::HTTP.start(uri.host, uri.port,
:use_ssl => uri.scheme == 'https',
:verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http|
request = Net::HTTP::Get.new uri.request_uri
request.basic_auth(username, password)
response = http.request(request)
JSON.parse(response.body).collect do |system|
system['guests'].each { |guest| guests_host[guest['uuid']] = system['name'] }
system['uuid']
end
end
system_ids.each do |system_id|
url = "#{server}/api/systems/#{system_id}"
uri = URI(url)
system = Net::HTTP.start(uri.host, uri.port,
:use_ssl => uri.scheme == 'https',
:verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http|
request = Net::HTTP::Get.new uri.request_uri
request.basic_auth(username, password)
response = http.request(request)
JSON.parse(response.body)
end
url = "#{server}/api/systems/#{system_id}/subscriptions"
uri = URI(url)
system_subscriptions = Net::HTTP.start(uri.host, uri.port,
:use_ssl => uri.scheme == 'https',
:verify_mode => OpenSSL::SSL::VERIFY_NONE) do |http|
request = Net::HTTP::Get.new uri.request_uri
request.basic_auth(username, password)
response = http.request(request)
JSON.parse(response.body)['entitlements']
end
name = system['name']
count = 1
organization_name = system['owner']['displayName']
environment = system['environment']['name']
contentview = system['content_view']['name']
hostcollections = nil
virtual = system['facts']['virt.is_guest'] == 'true' ? 'Yes' : 'No'
host = guests_host[system['uuid']]
if system['facts']['distribution.name']
operatingsystem = "#{system['facts']['distribution.name']} "
operatingsystem += system['facts']['distribution.version'] if system['facts']['distribution.version']
operatingsystem.strip!
end
architecture = system['facts']['uname.machine']
sockets = system['facts']['cpu.cpu_socket(s)']
ram = system['facts']['memory.memtotal']
cores = system['facts']['cpu.core(s)_per_socket'] || 1
sla = system['serviceLevel']
products = CSV.generate do |column|
column << system['installedProducts'].collect do |product|
"#{product['productId']}|#{product['productName']}"
end
end
products.delete!("\n")
subscriptions = CSV.generate do |column|
column << system_subscriptions.collect do |subscription|
"#{subscription['quantity']}|#{subscription['productId']}|#{subscription['poolName']}"
end
end
subscriptions.delete!("\n")
csv << [name, count, organization_name, environment, contentview, hostcollections, virtual, host,
operatingsystem, architecture, sockets, ram, cores, sla, products, subscriptions]
end
end