Ver código fonte

setup rds views

Christian Mague 7 anos atrás
pai
commit
c6310c97c5
3 arquivos alterados com 79 adições e 16 exclusões
  1. 38 16
      lib/neoinfra/aws.rb
  2. 11 0
      web/controllers/views.rb
  3. 30 0
      web/views/view_rds.erb

+ 38 - 16
lib/neoinfra/aws.rb

@@ -218,6 +218,25 @@ module NeoInfra
       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
       @cfg.accounts.each do |account|
         base_conf = {
@@ -314,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

+ 11 - 0
web/controllers/views.rb

@@ -58,4 +58,15 @@ class Views < Sinatra::Base
       end
     end
   end
+
+  get '/rds' do
+    j = NeoInfra::Aws.new
+    respond_to do |wants|
+      wants.html do
+        erb :view_rds,
+            layout: :base_layout,
+            locals: { rds: j.list_rds }
+      end
+    end
+  end
 end

+ 30 - 0
web/views/view_rds.erb

@@ -0,0 +1,30 @@
+<h2 class="title"><br><br><center>RDS Intances</center></h2>
+
+<div class="container">
+  <table class="table table-hover">
+    <thead>
+      <tr>
+        <th>Name</th>
+        <th>Owner</th>
+        <th>AZ</th>
+        <th>Engine</th>
+        <th>Engine Version</th>
+        <th>Endpoint</th>
+        <th>Port</th>
+      </tr>
+    </thead>
+    <tbody>
+<% rds.each do |r| %>
+<tr>
+<td><%= r['name'] %></td>
+<td><%= r['owner'] %></td>
+<td><%= r['az'] %></td>
+<td><%= r['engine'] %></td>
+<td><%= r['engine_version'] %></td>
+<td><%= r['endpoint'] %></td>
+<td><%= r['port'] %></td>
+</tr>
+<% end %>
+    </tbody>
+  </table>
+</div>