You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltacloud.apache.org by lu...@apache.org on 2010/07/09 01:15:08 UTC

svn commit: r961988 - in /incubator/deltacloud/trunk/framework: app/controllers/ app/models/ app/views/images/ app/views/instances/ app/views/storage_snapshots/ app/views/storage_volumes/ config/ lib/drivers/ public/stylesheets/ public/stylesheets/sass/

Author: lutter
Date: Thu Jul  8 23:15:07 2010
New Revision: 961988

URL: http://svn.apache.org/viewvc?rev=961988&view=rev
Log:
Start working on storage volumes and snapshots.

Added:
    incubator/deltacloud/trunk/framework/app/controllers/storage_snapshots_controller.rb
    incubator/deltacloud/trunk/framework/app/controllers/storage_volumes_controller.rb
    incubator/deltacloud/trunk/framework/app/views/storage_snapshots/
    incubator/deltacloud/trunk/framework/app/views/storage_snapshots/index.html.erb
    incubator/deltacloud/trunk/framework/app/views/storage_snapshots/show.html.erb
    incubator/deltacloud/trunk/framework/app/views/storage_volumes/
    incubator/deltacloud/trunk/framework/app/views/storage_volumes/index.html.erb
    incubator/deltacloud/trunk/framework/app/views/storage_volumes/show.html.erb
Removed:
    incubator/deltacloud/trunk/framework/app/controllers/accounts_controller.rb
    incubator/deltacloud/trunk/framework/app/models/account.rb
    incubator/deltacloud/trunk/framework/app/models/base.rb
Modified:
    incubator/deltacloud/trunk/framework/app/controllers/instances_controller.rb
    incubator/deltacloud/trunk/framework/app/views/images/index.html.erb
    incubator/deltacloud/trunk/framework/app/views/images/show.html.erb
    incubator/deltacloud/trunk/framework/app/views/instances/index.html.erb
    incubator/deltacloud/trunk/framework/app/views/instances/show.html.erb
    incubator/deltacloud/trunk/framework/config/routes.rb
    incubator/deltacloud/trunk/framework/lib/drivers/ec2.rb
    incubator/deltacloud/trunk/framework/public/stylesheets/application.css
    incubator/deltacloud/trunk/framework/public/stylesheets/sass/application.sass

Modified: incubator/deltacloud/trunk/framework/app/controllers/instances_controller.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/framework/app/controllers/instances_controller.rb?rev=961988&r1=961987&r2=961988&view=diff
==============================================================================
--- incubator/deltacloud/trunk/framework/app/controllers/instances_controller.rb (original)
+++ incubator/deltacloud/trunk/framework/app/controllers/instances_controller.rb Thu Jul  8 23:15:07 2010
@@ -25,10 +25,14 @@ class InstancesController < ApplicationC
   def show
     @instance = driver.instance( credentials, params[:id] )
 
+
     respond_to do |format|
-      format.html
+      format.html {
+        render :text=>'resource not found', :status=>404 and return unless @instance
+      }
       format.json
       format.xml { 
+        render :nothing=>true, :status=>404 and return unless @instance
         render :xml=>convert_to_xml( :instance, @instance )
       }
     end

Added: incubator/deltacloud/trunk/framework/app/controllers/storage_snapshots_controller.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/framework/app/controllers/storage_snapshots_controller.rb?rev=961988&view=auto
==============================================================================
--- incubator/deltacloud/trunk/framework/app/controllers/storage_snapshots_controller.rb (added)
+++ incubator/deltacloud/trunk/framework/app/controllers/storage_snapshots_controller.rb Thu Jul  8 23:15:07 2010
@@ -0,0 +1,27 @@
+load 'drivers/ec2.rb'
+
+class StorageSnapshotsController < ApplicationController
+
+  include DriverHelper
+  include ConversionHelper
+
+  around_filter :catch_auth
+
+  def index
+    @snapshots = driver.snapshots( credentials )
+    respond_to do |format|
+      format.html
+    end
+  end
+
+  def show
+    @snapshot = driver.snapshot( credentials, params[:id] )
+    respond_to do |format|
+      format.html
+      format.json
+      format.xml {
+      }
+    end
+  end
+
+end

Added: incubator/deltacloud/trunk/framework/app/controllers/storage_volumes_controller.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/framework/app/controllers/storage_volumes_controller.rb?rev=961988&view=auto
==============================================================================
--- incubator/deltacloud/trunk/framework/app/controllers/storage_volumes_controller.rb (added)
+++ incubator/deltacloud/trunk/framework/app/controllers/storage_volumes_controller.rb Thu Jul  8 23:15:07 2010
@@ -0,0 +1,28 @@
+load 'drivers/ec2.rb'
+
+class StorageVolumesController < ApplicationController
+
+  include DriverHelper
+  include ConversionHelper
+
+  around_filter :catch_auth
+
+  def index
+    @volumes = driver.volumes( credentials )
+    puts @volumes.inspect
+    respond_to do |format|
+      format.html
+    end
+  end
+
+  def show
+    @volume = driver.volume( credentials, params[:id] )
+    respond_to do |format|
+      format.html
+      format.json
+      format.xml {
+      }
+    end
+  end
+
+end

Modified: incubator/deltacloud/trunk/framework/app/views/images/index.html.erb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/framework/app/views/images/index.html.erb?rev=961988&r1=961987&r2=961988&view=diff
==============================================================================
--- incubator/deltacloud/trunk/framework/app/views/images/index.html.erb (original)
+++ incubator/deltacloud/trunk/framework/app/views/images/index.html.erb Thu Jul  8 23:15:07 2010
@@ -19,7 +19,7 @@
         <%= link_to image[:id], image_url( image[:id] ) %>
       </td>
       <td>
-        <%= link_to image[:owner_id], account_url( image[:owner_id] ) %>
+        <%= link_to image[:owner_id], images_url( :owner=>image[:owner_id] ) %>
       </td>
       <td>
         <%= image[:description] %>

Modified: incubator/deltacloud/trunk/framework/app/views/images/show.html.erb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/framework/app/views/images/show.html.erb?rev=961988&r1=961987&r2=961988&view=diff
==============================================================================
--- incubator/deltacloud/trunk/framework/app/views/images/show.html.erb (original)
+++ incubator/deltacloud/trunk/framework/app/views/images/show.html.erb Thu Jul  8 23:15:07 2010
@@ -8,7 +8,7 @@
       Owner
     </dt>
     <dd>
-      <%= link_to @image[:owner_id], account_url( @image[:owner_id] ) %>
+      <%= link_to @image[:owner_id], images_url( :owner=>@image[:owner_id] ) %>
     </dd>
   </di>
   <di>

Modified: incubator/deltacloud/trunk/framework/app/views/instances/index.html.erb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/framework/app/views/instances/index.html.erb?rev=961988&r1=961987&r2=961988&view=diff
==============================================================================
--- incubator/deltacloud/trunk/framework/app/views/instances/index.html.erb (original)
+++ incubator/deltacloud/trunk/framework/app/views/instances/index.html.erb Thu Jul  8 23:15:07 2010
@@ -24,7 +24,7 @@
         <%= link_to instance[:id], instance_url( instance[:id] ) %>
       </td>
       <td>
-        <%= link_to instance[:owner_id], account_url( instance[:owner_id] ) %>
+        <%= link_to instance[:owner_id], images_url( :owner=>instance[:owner_id] ) %>
       </td>
       <td>
         <%= link_to instance[:image_id], image_url( instance[:image_id] ) %>

Modified: incubator/deltacloud/trunk/framework/app/views/instances/show.html.erb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/framework/app/views/instances/show.html.erb?rev=961988&r1=961987&r2=961988&view=diff
==============================================================================
--- incubator/deltacloud/trunk/framework/app/views/instances/show.html.erb (original)
+++ incubator/deltacloud/trunk/framework/app/views/instances/show.html.erb Thu Jul  8 23:15:07 2010
@@ -15,7 +15,7 @@
       Owner
     </dt>
     <dd>
-      <%= link_to @instance[:owner_id], account_url( @instance[:owner_id] ) %>
+      <%= @instance[:owner_id] %>
     </dd>
   </di>
   <di>

Added: incubator/deltacloud/trunk/framework/app/views/storage_snapshots/index.html.erb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/framework/app/views/storage_snapshots/index.html.erb?rev=961988&view=auto
==============================================================================
--- incubator/deltacloud/trunk/framework/app/views/storage_snapshots/index.html.erb (added)
+++ incubator/deltacloud/trunk/framework/app/views/storage_snapshots/index.html.erb Thu Jul  8 23:15:07 2010
@@ -0,0 +1,17 @@
+
+<h1>Storage Snapshots</h1>
+
+<table>
+  <tr>
+    <th>
+      ID
+    </th>
+  </tr>
+  <% for snapshot in @snapshots %>
+    <tr>
+      <td>
+        <%= link_to snapshot[:id], storage_snapshot_url( snapshot[:id] ) %>
+      </td>
+    </tr>
+  <% end %>
+</table>

Added: incubator/deltacloud/trunk/framework/app/views/storage_snapshots/show.html.erb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/framework/app/views/storage_snapshots/show.html.erb?rev=961988&view=auto
==============================================================================
--- incubator/deltacloud/trunk/framework/app/views/storage_snapshots/show.html.erb (added)
+++ incubator/deltacloud/trunk/framework/app/views/storage_snapshots/show.html.erb Thu Jul  8 23:15:07 2010
@@ -0,0 +1,21 @@
+
+<h1><%= @snapshot[:id] %></h1>
+
+<dl>
+  <di>
+    <dt>
+      State
+    </dt>
+    <dd>
+      <%= @snapshot[:state] %>
+    </dd>
+  </di>
+  <di>
+    <dt>
+      Volume
+    </dt>
+    <dd>
+      <%= @snapshot[:volume_id] %>
+    </dd>
+  </di>
+</dl>

Added: incubator/deltacloud/trunk/framework/app/views/storage_volumes/index.html.erb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/framework/app/views/storage_volumes/index.html.erb?rev=961988&view=auto
==============================================================================
--- incubator/deltacloud/trunk/framework/app/views/storage_volumes/index.html.erb (added)
+++ incubator/deltacloud/trunk/framework/app/views/storage_volumes/index.html.erb Thu Jul  8 23:15:07 2010
@@ -0,0 +1,35 @@
+
+<h1>Storage Volumes</h1>
+
+<table>
+  <tr>
+    <th>
+      ID
+    </th>
+    <th>
+      Created
+    </th>
+    <th>
+      Capacity
+    </th>
+    <th>
+      Status
+    </th>
+  </tr>
+  <% for volume in @volumes %>
+    <tr>
+      <td>
+        <%= link_to volume[:id], storage_volume_url( volume[:id] ) %>
+      </td>
+      <td>
+        <%= volume[:created_at] %>
+      </td>
+      <td>
+        <%= volume[:capacity] %> GB
+      </td>
+      <td>
+        <%= volume[:state] %>
+      </td>
+    </tr>
+  <% end %>
+</table>

Added: incubator/deltacloud/trunk/framework/app/views/storage_volumes/show.html.erb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/framework/app/views/storage_volumes/show.html.erb?rev=961988&view=auto
==============================================================================
--- incubator/deltacloud/trunk/framework/app/views/storage_volumes/show.html.erb (added)
+++ incubator/deltacloud/trunk/framework/app/views/storage_volumes/show.html.erb Thu Jul  8 23:15:07 2010
@@ -0,0 +1,37 @@
+
+<h1><%= @volume[:id] %></h1>
+
+<dl>
+  <di>
+    <dt>
+      Created
+    </dt>
+    <dd>
+      <%= @volume[:created_at] %>
+    </dd>
+  </di>
+  <di>
+    <dt>
+      Capacity
+    </dt>
+    <dd>
+      <%= @volume[:capacity] %> GB
+    </dd>
+  </di>
+  <di>
+    <dt>
+      State
+    </dt>
+    <dd>
+      <%= @volume[:state] %>
+    </dd>
+  </di>
+  <di>
+    <dt>
+      Attached
+    </dt>
+    <dd>
+      <%= @volume[:instance_id] %> <%= @volume[:device] %>
+    </dd>
+  </di>
+</dl>

Modified: incubator/deltacloud/trunk/framework/config/routes.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/framework/config/routes.rb?rev=961988&r1=961987&r2=961988&view=diff
==============================================================================
--- incubator/deltacloud/trunk/framework/config/routes.rb (original)
+++ incubator/deltacloud/trunk/framework/config/routes.rb Thu Jul  8 23:15:07 2010
@@ -12,7 +12,10 @@ ActionController::Routing::Routes.draw d
       :reboot=>:post,
     }
 
-  map.resources :accounts
+  map.resource :storage do |s|
+    s.resources :volumes, :controller=>'StorageVolumes'
+    s.resources :snapshots, :controller=>'StorageSnapshots'
+  end
 
 
   #####

Modified: incubator/deltacloud/trunk/framework/lib/drivers/ec2.rb
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/framework/lib/drivers/ec2.rb?rev=961988&r1=961987&r2=961988&view=diff
==============================================================================
--- incubator/deltacloud/trunk/framework/lib/drivers/ec2.rb (original)
+++ incubator/deltacloud/trunk/framework/lib/drivers/ec2.rb Thu Jul  8 23:15:07 2010
@@ -70,33 +70,6 @@ module Drivers
       convert_instance( ec2_instances.first )
     end
 
-    def accounts(credentials, *ids)
-      ec2 = new_client( credentials )
-      accounts = {}
-      safely do
-        ec2.describe_images(*ids).each do |ec2_image|
-          if ( ec2_image[:aws_id] =~ /^ami-/ )
-            unless ( accounts[ec2_image[:aws_owner]] ) 
-              accounts[ec2_image[:aws_owner]] = { :id=>ec2_image[:aws_owner] }
-            end
-          end
-        end
-      end
-      accounts.values.sort!{|l,r| l[:id] <=> r[:id]}
-    end
-
-    def account(credentials, id)
-      ec2 = new_client( credentials )
-      image_ids = []
-      ec2.describe_images_by_owner(id).each do |ec2_image|
-        image_ids << ec2_image[:aws_id]
-      end
-      {
-        :id=>id,
-        :image_ids=>image_ids,
-      } 
-    end
-
     def create_instance(credentials, image_id)
       ec2 = new_client( credentials )
       ec2_instances = ec2.run_instances( 
@@ -124,6 +97,37 @@ module Drivers
       ec2.terminate_instances( id )
     end
 
+    def volumes(credentials, ids=nil)
+      ec2 = new_client( credentials ) 
+      volumes = []
+      ec2.describe_volumes(ids).each do |ec2_volume|
+        volumes << convert_volume( ec2_volume )
+      end
+      volumes
+    end
+
+    def volume(credentials, id)
+      volumes = volumes( credentials, [ id] )
+      return volumes.first unless volumes.empty?
+      nil
+    end
+
+    def snapshots(credentials, ids=nil)
+      ec2 = new_client( credentials ) 
+      snapshots = []
+      ec2.describe_snapshots(ids).each do |ec2_snapshot|
+        snapshots << convert_snapshot( ec2_snapshot )
+      end
+      snapshots
+    end
+
+    def snapshot(credentials, id)
+      snapshots = snapshots( credentials, [ id ] )
+      return snapshots.first unless snapshots.empty?
+      nil
+    end
+
+
     private
 
     def new_client(credentials)
@@ -153,6 +157,25 @@ module Drivers
       } 
     end
 
+    def convert_volume(ec2_volume)
+      {
+        :id=>ec2_volume[:aws_id],
+        :created_at=>ec2_volume[:aws_created_at],
+        :state=>ec2_volume[:aws_status].upcase,
+        :capacity=>ec2_volume[:aws_size],
+        :instance_id=>ec2_volume[:aws_instance_id],
+        :device=>ec2_volume[:aws_device],
+      }
+    end
+
+    def convert_snapshot(ec2_snapshot)
+      { 
+        :id=>ec2_snapshot[:aws_id],
+        :state=>ec2_snapshot[:aws_status].upcase,
+        :volume_id=>ec2_snapshot[:aws_volume_id],
+      }
+    end
+
   end
 
 end

Modified: incubator/deltacloud/trunk/framework/public/stylesheets/application.css
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/framework/public/stylesheets/application.css?rev=961988&r1=961987&r2=961988&view=diff
==============================================================================
--- incubator/deltacloud/trunk/framework/public/stylesheets/application.css (original)
+++ incubator/deltacloud/trunk/framework/public/stylesheets/application.css Thu Jul  8 23:15:07 2010
@@ -23,19 +23,25 @@ body {
   font-size: 120%;
   margin-bottom: 1ex; }
 #bd dl {
+  font-size: 90%;
   margin-bottom: 1em; }
   #bd dl di {
     display: block;
     margin-bottom: 1em; }
+    #bd dl di dt, #bd dl di dd {
+      padding: .5ex; }
     #bd dl di dt {
-      font-weight: bold; }
+      font-weight: bold;
+      background-color: #cccccc; }
     #bd dl di dd {
-      margin-left: 1em; }
+      padding-left: 1em;
+      background-color: #eeeeee; }
 
 table {
   width: 100%; }
   table th, table td {
-    padding: .5ex; }
+    padding: .5ex;
+    font-size: 90%; }
   table th {
     font-weight: bold;
     background-color: #cccccc; }

Modified: incubator/deltacloud/trunk/framework/public/stylesheets/sass/application.sass
URL: http://svn.apache.org/viewvc/incubator/deltacloud/trunk/framework/public/stylesheets/sass/application.sass?rev=961988&r1=961987&r2=961988&view=diff
==============================================================================
--- incubator/deltacloud/trunk/framework/public/stylesheets/sass/application.sass (original)
+++ incubator/deltacloud/trunk/framework/public/stylesheets/sass/application.sass Thu Jul  8 23:15:07 2010
@@ -30,20 +30,26 @@ body
     :font-size     120%
     :margin-bottom 1ex
   dl
+    :font-size 90%
     :margin-bottom 1em
     di
       :display block
       :margin-bottom 1em
+      dt, dd
+        :padding .5ex
       dt
         :font-weight bold
+        :background-color = !th_bg
       dd
-        :margin-left 1em
+        :padding-left 1em
+        :background-color = !td_bg
 
 
 table
   :width 100%
   th, td
     :padding .5ex
+    :font-size 90%
   th
     :font-weight bold
     :background-color = !th_bg