| 
					
				 | 
			
			
				@@ -5,6 +5,7 @@ require 'regions' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 require 'mime-types' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 require 'fog-aws' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 require 's3' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+require 'sqs' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 require 'date' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 require 'ipaddr' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 require 'neo4j' 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -101,6 +102,7 @@ module NeoInfra 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def load_buckets 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      aws = NeoInfra::Aws.new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cw = NeoInfra::Cloudwatch.new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       @cfg.accounts.each do |account| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         base_conf = { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -108,29 +110,28 @@ module NeoInfra 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           aws_access_key_id: account[:key], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           aws_secret_access_key: account[:secret] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        s = Fog::Storage.new(base_conf) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        s.directories.each do |bucket| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          next unless Bucket.where(name: bucket.key).empty? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        aws.regions.each do |region| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          region_conf = { region: region } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          s = Fog::Storage.new(region_conf.merge(base_conf)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          s.directories.each do |bucket| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            next unless bucket.location == region 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            next unless Bucket.where(name: bucket.key).empty? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             vers = bucket.versioning?.to_s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             crea = bucket.creation_date.to_s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          rescue StandardError 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            vers = 'unknown' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            crea = 'unknown' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            b = Bucket.new( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              name: bucket.key, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              versioning: vers, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              creation: crea, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              size: cw.get_bucket_size(account[:key], account[:secret], bucket.location, bucket.key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            b.save 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BucketRegion.create(from_node: b, to_node: Region.where(region: bucket.location).first) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            BucketAccount.create(from_node: b, to_node: AwsAccount.where(name: account[:name]).first) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          b = Bucket.new( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            name: bucket.key, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            versioning: vers, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            creation: crea, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            size: cw.get_bucket_size(account[:key], account[:secret], bucket.location, bucket.key) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          b.save 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          BucketRegion.create(from_node: b, to_node: Region.where(region: bucket.location).first) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          BucketAccount.create(from_node: b, to_node: AwsAccount.where(name: account[:name]).first) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+#### 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def load_security_groups 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       @cfg.accounts.each do |account| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         base_conf = { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -339,6 +340,53 @@ module NeoInfra 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def list_queues 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      queues = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      SQSQueue.all.order('n.name DESC').each do |d| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        queues << { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'name'      => d.name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'modified'  => d.modified, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'creation'  => d.creation, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'retention' => d.retention, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'maxsize'   => d.maxsize, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'region'    => d.region.region, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'owner'     => d.owner.name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      queues 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def load_queues 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      aws = NeoInfra::Aws.new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      cw = NeoInfra::Cloudwatch.new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @cfg.accounts.each do |account| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        base_conf = { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          aws_access_key_id: account[:key], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          aws_secret_access_key: account[:secret] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        aws.regions.each do |region| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          region_conf = { region: region } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          q = Fog::AWS::SQS.new(region_conf.merge(base_conf)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          q.list_queues.data[:body]['QueueUrls'].each do |x| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            next unless SQSQueue.where(url: x).empty? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            theAttrs = q.get_queue_attributes(x, "All").data[:body]['Attributes'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            z = SQSQueue.new( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              url: x, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              name: x.split('/')[-1], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              modified: theAttrs['LastModifiedTimestamp'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              creation: theAttrs['CreatedTimestamp'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              retention: theAttrs['MessageRetentionPeriod'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              maxsize: theAttrs['MaximumMessageSize'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            z.save 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            SQSQueueRegion.create(from_node: z, to_node: Region.where(region: region).first) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            SQSQueueAccount.create(from_node: z, to_node: AwsAccount.where(name: account[:name]).first) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    end    
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def load_rds 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       @cfg.accounts.each do |account| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         base_conf = { 
			 |