graph.rb 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. # frozen_string_literal: true
  2. require 'neoinfra'
  3. require 'vpc'
  4. require 'accounts'
  5. require 'fog-aws'
  6. require 'neo4j'
  7. require 'csv'
  8. require 'sinatra'
  9. # NeoInfra Account information
  10. module NeoInfra
  11. # Provide informations about the accounts available
  12. class Graph
  13. def initialize
  14. @cfg = NeoInfra::Config.new
  15. neo4j_url = "http://#{@cfg.neo4j[:host]}:#{@cfg.neo4j[:port]}"
  16. Neo4j::Session.open(:server_db, neo4j_url)
  17. end
  18. def graph_vpcs
  19. csv_string = CSV.generate(force_quotes: false ) do |csv|
  20. csv << ['id,value']
  21. csv << ['aws,']
  22. @cfg = NeoInfra::Config.new
  23. @cfg.accounts.each do |account|
  24. csv << ["aws.#{account[:name]},"]
  25. Vpc.where(default: "false").select{|x| x.owned.name == account[:name]}.collect{|y| y.region.region}.uniq.each do |region|
  26. csv << ["aws.#{account[:name]}.#{region},"]
  27. end
  28. Vpc.where(default: "false").each do |vpc|
  29. if vpc.owned.name == account[:name]
  30. csv << ["aws.#{account[:name]}.#{vpc.region.region}.#{vpc.name},1"]
  31. end
  32. end
  33. end
  34. end
  35. return csv_string.gsub('"', '')
  36. end
  37. end
  38. end