Browse Source

setup views

Chris Mague 7 years ago
parent
commit
d169fda04e
5 changed files with 79 additions and 1 deletions
  1. 4 0
      config.ru
  2. 11 0
      lib/neoinfra/aws.rb
  3. 34 0
      web/controllers/views.rb
  4. 2 1
      web/views/base_layout.html.erb
  5. 28 0
      web/views/view_buckets.html.erb

+ 4 - 0
config.ru

@@ -15,3 +15,7 @@ end
 map '/load' do
   run Dataloader
 end
+
+map '/view' do
+  run Views
+end

+ 11 - 0
lib/neoinfra/aws.rb

@@ -68,6 +68,17 @@ module NeoInfra
       end
     end
 
+    def list_buckets
+      buckets = []
+      Bucket.all.order('n.size DESC').each do |b|
+        buckets <<  {'name' => b.name,
+                     'size' => b.size,
+                     'region' => b.region.region,
+                     'owner' => b.owner.name}
+      end
+      return buckets
+    end
+
     def load_buckets
       cw = NeoInfra::Cloudwatch.new
       @cfg.accounts.each do |account|

+ 34 - 0
web/controllers/views.rb

@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+lib_dir = File.join(File.dirname(File.expand_path(__FILE__)), '..', '..', 'lib')
+$LOAD_PATH.unshift(lib_dir) unless
+  $LOAD_PATH.include?(lib_dir) || $LOAD_PATH.include?(lib_dir)
+
+require 'json'
+require 'neoinfra'
+require 'sinatra'
+require 'sinatra/base'
+require 'sinatra/respond_to'
+
+# Handle loading data into the graph db
+class Views < Sinatra::Base
+  register Sinatra::RespondTo
+  set :views, File.join(File.dirname(__FILE__), '..', '/views')
+
+  get '/vpcs' do
+    status 200
+    puts Vpc
+  end
+
+  get '/buckets' do
+    j = NeoInfra::Aws.new
+    respond_to do |wants|
+      wants.html {
+        erb :view_buckets,
+        :layout => :base_layout,
+        :locals => {:buckets => j.list_buckets}
+      }
+    end
+  end
+
+end

+ 2 - 1
web/views/base_layout.html.erb

@@ -22,7 +22,6 @@
       <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
         <span class="navbar-toggler-icon"></span>
       </button>
-      <a class="navbar-brand" href="#">Navbar</a>
 
       <div class="collapse navbar-collapse" id="navbarsExampleDefault">
         <ul class="navbar-nav mr-auto">
@@ -32,6 +31,8 @@
           <li class="nav-item dropdown">
             <a class="nav-link dropdown-toggle" id="dropdown01" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Views</a>
             <div class="dropdown-menu" aria-labelledby="dropdown01">
+              <a class="dropdown-item" href="/view/vpcs">VPCs</a>
+              <a class="dropdown-item" href="/view/buckets">S3 Buckets</a>
               <a class="dropdown-item" href="/audit/tags">Tag Audit</a>
               <a class="dropdown-item" href="/load/all">Load Data</a>
             </div>

+ 28 - 0
web/views/view_buckets.html.erb

@@ -0,0 +1,28 @@
+<h2 class="title"><br><br><center>S3 Buckets</center></h2>
+
+<div class="container">
+  <table class="table table-hover">
+    <thead>
+      <tr>
+        <th>Name</th>
+        <th>Size</th>
+        <th>Region</th>
+        <th>Owner</th>
+      </tr>
+    </thead>
+    <tbody>
+<% buckets.each do |bucket| %>
+<tr>
+<td><%= bucket['name'] %></td>
+<% if bucket['size'] < 0 %>
+<td>Unknown</td>
+<% else %>
+<td><%= (bucket['size']/1000000000).round(2) %> Gb</td>
+<% end %>
+<td><%= bucket['region']%></td>
+<td><%= bucket['owner'] %></td>
+</tr>
+<% end %>
+    </tbody>
+  </table>
+</div>