Bläddra i källkod

graph sqs queues

Chris Mague 6 år sedan
förälder
incheckning
ca1700528e

+ 17 - 0
lib/neoinfra/aws.rb

@@ -340,6 +340,23 @@ 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

+ 23 - 1
lib/neoinfra/graph.rb

@@ -65,7 +65,29 @@ module NeoInfra
       end
       return csv_string.gsub('"', '')
     end
-       ##
+  
+    def graph_queues
+      csv_string = CSV.generate(force_quotes: false ) do |csv|
+        csv << ['id,value']
+        csv << ['aws,']
+        @cfg = NeoInfra::Config.new
+        @cfg.accounts.each do |account|
+          csv << ["aws.#{account[:name]},"]
+
+          SQSQueue.all.select{|x| x.owner.name == account[:name]}.collect{|y| y.region.region}.uniq.each do |region|
+            csv << ["aws.#{account[:name]}.#{region},"]
+          end
+
+          SQSQueue.all.each do |q|
+            if q.owner.name == account[:name]
+              csv << ["aws.#{account[:name]}.#{q.region.region}.#{q.name},1"]
+            end
+          end
+
+        end
+      end
+      return csv_string.gsub('"', '')
+    end 
 
   end
 end

+ 6 - 0
web/controllers/graph.rb

@@ -27,4 +27,10 @@ class Graph < Sinatra::Base
     g.graph_buckets
   end
 
+  get '/queues' do
+    headers('Content-Type' => "text/csv")
+    g = NeoInfra::Graph.new
+    g.graph_queues
+  end
+
 end

+ 11 - 0
web/controllers/views.rb

@@ -70,6 +70,17 @@ class Views < Sinatra::Base
     end
   end
 
+  get '/queues' do
+    j = NeoInfra::Aws.new
+    respond_to do |wants|
+      wants.html do
+        erb :view_queues,
+            layout: :base_layout,
+            locals: { queues: j.list_queues }
+      end
+    end
+  end
+
   get '/graph/:graph_type' do
     respond_to do |wants|
       wants.html do

+ 2 - 0
web/views/base_layout.erb

@@ -38,6 +38,7 @@
               <a class="dropdown-item" href="/view/rds">RDS</a>
               <a class="dropdown-item" href="/view/dynamos">Dyanmos</a>
               <a class="dropdown-item" href="/view/lambdas">Labmda Functions</a>
+              <a class="dropdown-item" href="/view/queues">SQS</a>
               <a class="dropdown-item" href="/audit/tags">Tag Audit</a>
               <a class="dropdown-item" href="/load/all">Load Data</a>
             </div>
@@ -47,6 +48,7 @@
             <div class="dropdown-menu" aria-labelledby="dropdown02">
               <a class="dropdown-item" href="/view/graph/vpcs">VPCs</a>
               <a class="dropdown-item" href="/view/graph/buckets">S3 Buckets</a>
+              <a class="dropdown-item" href="/view/graph/queues">SQS</a>
             </div>
           </li>
         </ul>

+ 28 - 0
web/views/view_queues.erb

@@ -0,0 +1,28 @@
+<h2 class="title"><br><br><center>SQS Queues</center></h2>
+
+<div class="container">
+  <table class="table table-hover">
+    <thead>
+      <tr>
+        <th>Name</th>
+        <th>Owner</th>
+        <th>Region</th>
+        <th>Creation</th>
+        <th>Modified</th>
+        <th>Max Size</th>
+      </tr>
+    </thead>
+    <tbody>
+<% queues.each do |queue| %>
+<tr>
+<td><%= queue['name'] %></td>
+<td><%= queue['owner'] %></td>
+<td><%= queue['region'] %></td>
+<td><%= queue['creation'] %></td>
+<td><%= queue['modified'] %></td>
+<td><%= queue['maxsize'] %></td>
+</tr>
+<% end %>
+    </tbody>
+  </table>
+</div>