| 
					
				 | 
			
			
				@@ -16,14 +16,13 @@ require 'neoinfra/cloudwatch' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 RFC_1918 = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   IPAddr.new('10.0.0.0/8'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   IPAddr.new('172.16.0.0/12'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  IPAddr.new('192.168.0.0/16'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  IPAddr.new('192.168.0.0/16') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ].freeze 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # NeoInfra Account information 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 module NeoInfra 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   # Provide informations about the accounts available 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   class Aws 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def initialize 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       @cfg = NeoInfra::Config.new 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       neo4j_url = "http://#{@cfg.neo4j[:host]}:#{@cfg.neo4j[:port]}" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -84,7 +83,7 @@ module NeoInfra 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def list_buckets 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       buckets = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       Bucket.all.order('n.size DESC').each do |b| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        buckets <<  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buckets << { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           'name'       => b.name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           'size'       => b.size, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           'versioning' => b.versioning, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -93,7 +92,7 @@ module NeoInfra 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           'owner'      => b.owner.name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return buckets 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      buckets 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def load_buckets 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -109,10 +108,10 @@ module NeoInfra 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           next unless Bucket.where(name: bucket.key).empty? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             vers = bucket.versioning?.to_s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            crea =  bucket.creation_date.to_s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          rescue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            vers = "unknown" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            crea = "unknown" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            crea = bucket.creation_date.to_s 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          rescue StandardError 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            vers = 'unknown' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            crea = 'unknown' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           b = Bucket.new( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             name: bucket.key, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -134,11 +133,11 @@ module NeoInfra 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           aws_access_key_id: account[:key], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           aws_secret_access_key: account[:secret] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        self.regions.each do |region| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        regions.each do |region| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           region_conf = { region: region } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             conn = Fog::Compute.new(region_conf.merge(base_conf)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          rescue 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          rescue StandardError 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             puts "Error loading security groups for region #{region}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             next 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           end 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -147,58 +146,56 @@ module NeoInfra 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               g = SecurityGroup.new( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 sg_id: grp.group_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 name: grp.name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                description: grp.description, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                description: grp.description 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               g.save 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              SecurityGroupOwner.create(from_node: g, to_node:  AwsAccount.where(account_id: grp.owner_id).first) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              SecurityGroupVpc.create(from_node: g, to_node:  Vpc.where(vpc_id: grp.vpc_id).first) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              SecurityGroupOwner.create(from_node: g, to_node: AwsAccount.where(account_id: grp.owner_id).first) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              SecurityGroupVpc.create(from_node: g, to_node: Vpc.where(vpc_id: grp.vpc_id).first) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             grp.ip_permissions.each do |iprule| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  if iprule['ipProtocol'] != "-1" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  iprule['ipRanges'].each do |r| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if iprule['toPort'] == -1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      to_port = 65535 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      to_port = iprule['toPort'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if iprule['fromPort'] == -1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      from_port = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      from_port = iprule['fromPort'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if IpRules.where( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      cidr_block: r['cidrIp'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      direction: 'ingress', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      proto: iprule['ipProtocol'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      to_port: to_port, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      from_port: from_port, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ).empty? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      rl = IpRules.new( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        cidr_block: r['cidrIp'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        direction: 'ingress', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        proto: iprule['ipProtocol'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        to_port: to_port, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        from_port: from_port, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        private: RFC_1918.any? { |rfc| rfc.include?(IPAddr.new(r['cidrIp']))} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      rl.save 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    # TODO: remove duplicate Relationships 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    SecurityGroupsIpRules.create( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      from_node: SecurityGroup.where(sg_id: grp.group_id).first, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      to_node: IpRules.where( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        cidr_block: r['cidrIp'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        direction: 'ingress', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        proto: iprule['ipProtocol'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        to_port: to_port, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        from_port: from_port, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        private: RFC_1918.any? { |rfc| rfc.include?(IPAddr.new(r['cidrIp']))} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                      ).first 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              next unless iprule['ipProtocol'] != '-1' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              iprule['ipRanges'].each do |r| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                to_port = if iprule['toPort'] == -1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            65_535 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            iprule['toPort'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                          end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                from_port = if iprule['fromPort'] == -1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                              iprule['fromPort'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if IpRules.where( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  cidr_block: r['cidrIp'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  direction: 'ingress', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  proto: iprule['ipProtocol'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  to_port: to_port, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  from_port: from_port 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ).empty? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  rl = IpRules.new( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cidr_block: r['cidrIp'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    direction: 'ingress', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    proto: iprule['ipProtocol'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    to_port: to_port, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    from_port: from_port, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    private: RFC_1918.any? { |rfc| rfc.include?(IPAddr.new(r['cidrIp'])) } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  rl.save 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                # TODO: remove duplicate Relationships 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                SecurityGroupsIpRules.create( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  from_node: SecurityGroup.where(sg_id: grp.group_id).first, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  to_node: IpRules.where( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    cidr_block: r['cidrIp'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    direction: 'ingress', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    proto: iprule['ipProtocol'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    to_port: to_port, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    from_port: from_port, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    private: RFC_1918.any? { |rfc| rfc.include?(IPAddr.new(r['cidrIp'])) } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  ).first 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-              # 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       end 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -207,7 +204,7 @@ module NeoInfra 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def list_lambdas 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       lambdas = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       Lambda.all.each do |l| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        lambdas <<  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        lambdas << { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           'name'           => l.name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           'runtime'        => l.runtime, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           'handler'        => l.handler, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -218,7 +215,26 @@ module NeoInfra 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           'owner'          => l.owner.name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return lambdas 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      lambdas 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def list_rds 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      rds = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      Rds.all.each do |r| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        rds << { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'name'              => r.name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'size'              => r.size, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'engine'            => r.engine, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'engine_version'    => r.engine_version, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'multi_az'          => r.multi_az, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'endpoint'          => r.endpoint, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'port'              => r.port, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'allocated_storage' => r.allocated_storage, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'owner'             => r.owner.name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          'az'                => r.az.az, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      rds 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def load_lambda 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -227,21 +243,21 @@ module NeoInfra 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           aws_access_key_id: account[:key], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           aws_secret_access_key: account[:secret] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        self.regions.each do |region| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        regions.each do |region| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           region_conf = { region: region } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             lambdas = Fog::AWS::Lambda.new(region_conf.merge(base_conf)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             lambdas.list_functions.data[:body]['Functions'].each do |f| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               next unless Lambda.where(name: f['FunctionArn']).empty? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               l = Lambda.new( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  name:             f['FunctionName'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  runtime:          f['Runtime'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  lambda_timeout:   f['Timeout'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  handler:          f['Handler'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  memorysize:       f['MemorySize'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  arn:              f['FunctionArn'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  codesize:         f['CodeSize'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  last_modified:    f['LastModified'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                name:             f['FunctionName'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                runtime:          f['Runtime'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                lambda_timeout:   f['Timeout'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                handler:          f['Handler'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                memorysize:       f['MemorySize'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                arn:              f['FunctionArn'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                codesize:         f['CodeSize'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                last_modified:    f['LastModified'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               l.save 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               LambdaAccount.create(from_node: l, to_node: AwsAccount.where(name: account[:name]).first) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -258,7 +274,7 @@ module NeoInfra 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def list_dynamos 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       dynamos = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       Dynamo.all.order('n.sizebytes DESC').each do |d| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        dynamos <<  { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dynamos << { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           'name'       => d.name, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           'size'       => d.sizebytes, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           'itemcount'  => d.itemcount, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -268,7 +284,7 @@ module NeoInfra 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           'owner'      => d.owner.name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return dynamos 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      dynamos 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def load_dynamo 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -277,24 +293,24 @@ module NeoInfra 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           aws_access_key_id: account[:key], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           aws_secret_access_key: account[:secret] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        self.regions.each do |region| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        regions.each do |region| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           region_conf = { region: region } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             dyns = Fog::AWS::DynamoDB.new(region_conf.merge(base_conf)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            dyns.list_tables.data[:body]["TableNames"].each do |table| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            dyns.list_tables.data[:body]['TableNames'].each do |table| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               tb = dyns.describe_table(table).data[:body]['Table'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               next unless Dynamo.where(name: table['TableId']).empty? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               d = Dynamo.new( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  tableid: 	tb['TableId'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  name: 	tb['TableName'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  creation: Time.at(tb['CreationDateTime']).to_datetime.strftime("%F %H:%M:%S %Z"), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  arn: 		tb['TableArn'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  itemcount: 	tb['ItemCount'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  sizebytes: 	tb['TableSizeBytes'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  status: 	tb['TableStatus'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  readcap: 	tb['ProvisionedThroughput']['ReadCapacityUnits'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  writecap: 	tb['ProvisionedThroughput']['WriteCapacityUnits'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  capdecreases: tb['ProvisionedThroughput']['NumberOfDecreasesToday'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                tableid:   tb['TableId'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                name:   tb['TableName'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                creation: Time.at(tb['CreationDateTime']).to_datetime.strftime('%F %H:%M:%S %Z'), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                arn:     tb['TableArn'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                itemcount:   tb['ItemCount'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                sizebytes:   tb['TableSizeBytes'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                status:   tb['TableStatus'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                readcap:   tb['ProvisionedThroughput']['ReadCapacityUnits'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                writecap:   tb['ProvisionedThroughput']['WriteCapacityUnits'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                capdecreases: tb['ProvisionedThroughput']['NumberOfDecreasesToday'] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               d.save 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               DynamoAccount.create(from_node: d, to_node: AwsAccount.where(name: account[:name]).first) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -305,9 +321,9 @@ module NeoInfra 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             next 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        #dyns.list_tables.each do |table| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # dyns.list_tables.each do |table| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         #  p table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        #end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        # end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -317,22 +333,25 @@ module NeoInfra 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           aws_access_key_id: account[:key], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           aws_secret_access_key: account[:secret] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        s = Fog::AWS::RDS.new(base_conf) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        s.servers.each do |rds| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          next unless Rds.where(name: rds.id).empty? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          r = Rds.new( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            name: rds.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            size: rds.flavor_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            engine: rds.engine, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            engine_version: rds.engine_version, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            multi_az: rds.multi_az.to_s, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            endpoint: rds.endpoint['Address'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            port: rds.endpoint['Port'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            allocated_storage: rds.allocated_storage, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          r.save 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          RdsAz.create(from_node: r, to_node: Az.where(az: rds.availability_zone).first) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          RdsAccount.create(from_node: r, to_node: AwsAccount.where(name: account[:name]).first) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        regions.each do |region| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          region_conf = { region: region } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          s = Fog::AWS::RDS.new(region_conf.merge(base_conf)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          s.servers.each do |rds| 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            next unless Rds.where(name: rds.id).empty? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            r = Rds.new( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              name: rds.id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              size: rds.flavor_id, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              engine: rds.engine, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              engine_version: rds.engine_version, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              multi_az: rds.multi_az.to_s, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              endpoint: rds.endpoint['Address'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              port: rds.endpoint['Port'], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              allocated_storage: rds.allocated_storage 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            r.save 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            RdsAz.create(from_node: r, to_node: Az.where(az: rds.availability_zone).first) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            RdsAccount.create(from_node: r, to_node: AwsAccount.where(name: account[:name]).first) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     end 
			 |