| 
					
				 | 
			
			
				@@ -1,7 +1,9 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # frozen_string_literal: true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 require 'accounts' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+require 'regions' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 require 'fog' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+require 'neo4j' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 require 'neoinfra/config' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # NeoInfra Account information 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -16,9 +18,41 @@ module NeoInfra 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         aws_access_key_id: account[:key], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         aws_secret_access_key: account[:secret] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       conn = Fog::Compute.new(base_conf) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       conn.describe_regions.data[:body]['regionInfo'].collect { |x| x['regionName'] } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def azs(region) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @cfg = NeoInfra::Config.new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      account = @cfg.accounts.first 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      base_conf = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        provider: 'AWS', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        aws_access_key_id: account[:key], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        aws_secret_access_key: account[:secret], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        region: region 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      conn = Fog::Compute.new(base_conf) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      conn.describe_availability_zones.data[:body]['availabilityZoneInfo'].collect { |x| x['zoneName'] } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def load_regions 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @cfg = NeoInfra::Config.new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      neo4j_url = "http://#{@cfg.neo4j[:host]}:#{@cfg.neo4j[:port]}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Neo4j::Session.open(:server_db, neo4j_url) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self.regions.each do |region| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        next unless Region.where(region: region).empty? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        r = Region.new( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          region: region 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        r.save 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.azs(region).each do |az| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          next unless Az.where(az: az).empty? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          a = Az.new(az: az) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          a.save 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          AzRegion.create(from_node: a, to_node: Region.where(region: region).first ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 end 
			 |