| 
					
				 | 
			
			
				@@ -0,0 +1,38 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# frozen_string_literal: true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+require 'neoinfra' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+require 'vpc' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+require 'accounts' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+require 'fog-aws' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+require 'neo4j' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# NeoInfra Account information 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+module NeoInfra 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  # Provide informations about the accounts available 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  class Graph 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def initialize 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @cfg = NeoInfra::Config.new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      neo4j_url = "http://#{@cfg.neo4j[:host]}:#{@cfg.neo4j[:port]}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Neo4j::Session.open(:server_db, neo4j_url) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def graph_vpcs 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      nodes = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      rels = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      i = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @cfg = NeoInfra::Config.new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @cfg.accounts.each do |account| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        nodes << {title: account[:name], label: 'account'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        i +=1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Vpc.where(default: "false").each do |vpc| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          if vpc.owned.name == account[:name] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            source = i 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            nodes << {title: vpc.name, label: 'vpc'} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            i +=1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            rels << {source: source, target: i} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return {nodes: nodes, links: rels} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+end 
			 |