From: martyntaylor <[email protected]>
---
src/app/controllers/pool_controller.rb | 7 +++
src/app/views/pool/quota.html.erb | 55 +++++++++++++++++++++++++++
src/app/views/pool/show.html.erb | 1 +
src/features/pool.feature | 27 +++++++++++++
src/features/step_definitions/pool_steps.rb | 10 +++++
src/spec/factories/quota.rb | 2 +-
6 files changed, 101 insertions(+), 1 deletions(-)
create mode 100644 src/app/views/pool/quota.html.erb
diff --git a/src/app/controllers/pool_controller.rb
b/src/app/controllers/pool_controller.rb
index d557d57..d5fc8af 100644
--- a/src/app/controllers/pool_controller.rb
+++ b/src/app/controllers/pool_controller.rb
@@ -140,4 +140,11 @@ class PoolController < ApplicationController
end
redirect_to :action => 'show', :id => @pool.id
end
+
+ def quota
+ @pool = Pool.find(params[:id])
+ puts @pool.id
+ @quota = Quota.find(:first, :conditions => { :pool_id => @pool })
+ end
+
end
diff --git a/src/app/views/pool/quota.html.erb
b/src/app/views/pool/quota.html.erb
new file mode 100644
index 0000000..edd4463
--- /dev/null
+++ b/src/app/views/pool/quota.html.erb
@@ -0,0 +1,55 @@
+<% if @quota == nil %>
+<h1>There is no quota associated with this pool</h1>
+<% else %>
+ <table>
+ <thead>
+ <tr>
+ <th scope="col">Resource</th>
+ <th scope="col">Max Capacity</th>
+ <th scope="col">Used Capacity</th>
+ <th scope="col">Free Capacity</th>
+ <th scope="col">% Used</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Running Instances</td>
+ <td><%= @quota.maximum_running_instances %></td>
+ <td><%= @quota.running_instances %></td>
+ <td><%= @quota.maximum_running_instances - @quota.running_instances
%></td>
+ <td><%= percentage = (100.to_f /
@quota.maximum_running_instances) * @quota.running_instances
+ sprintf("%.2f", percentage) %></td>
+ </tr>
+ <tr>
+ <td>Running Memory</td>
+ <td><%= @quota.maximum_running_memory %></td>
+ <td><%= @quota.running_memory %></td>
+ <td><%= @quota.maximum_running_memory - @quota.running_memory
%></td>
+ <td><%= percentage = (100.to_f /
@quota.maximum_running_memory) * @quota.running_memory
+ sprintf("%.2f", percentage) %></td>
+ <td></td>
+ </tr>
+ <tr>
+ <td>Running CPUs</td>
+ <td><%= @quota.maximum_running_cpus %></td>
+ <td><%= @quota.running_cpus %></td>
+ <td><%= @quota.maximum_running_cpus - @quota.running_cpus
%></td>
+ <td><%= sprintf("%.2f", (100.to_f / @quota.maximum_running_cpus) *
@quota.running_cpus) %></td>
+ </tr>
+ <tr>
+ <td>Total Instances</td>
+ <td><%= @quota.maximum_total_instances %></td>
+ <td><%= @quota.total_instances %></td>
+ <td><%= @quota.maximum_total_instances -
@quota.total_instances %></td>
+ <td><%= sprintf("%.2f", (100.to_f / @quota.maximum_total_instances)
* @quota.total_instances) %></td>
+ </tr>
+ <tr>
+ <td>Total Storage</td>
+ <td><%= @quota.maximum_total_storage %></td>
+ <td><%= @quota.total_storage %></td>
+ <td><%= @quota.maximum_total_storage - @quota.total_storage
%></td>
+ <td><%= sprintf("%.2f", (100.to_f / @quota.maximum_total_storage) *
@quota.total_storage) %></td>
+ </tr>
+ </tbody>
+ </table>
+<% end %>
\ No newline at end of file
diff --git a/src/app/views/pool/show.html.erb b/src/app/views/pool/show.html.erb
index 1230c64..2b46781 100644
--- a/src/app/views/pool/show.html.erb
+++ b/src/app/views/pool/show.html.erb
@@ -39,3 +39,4 @@
<%= link_to "User access", {:controller => "permissions", :action => "list",
:pool_id => @pool.id}, :class=>"actionlink" if has_view_perms? %>
<%= link_to "Hardware Profiles", {:action => "hardware_profiles", :id =>
@pool.id}, :class=>"actionlink"%>
<%= link_to "Realms", {:action => "realms", :id => @pool.id},
:class=>"actionlink"%>
+<%= link_to "Quota", {:action => "quota", :id => @pool},
:class=>"actionlink"%>
diff --git a/src/features/pool.feature b/src/features/pool.feature
index 5d8f219..7308dd4 100644
--- a/src/features/pool.feature
+++ b/src/features/pool.feature
@@ -45,3 +45,30 @@ Feature: Manage Pools
When I follow "Realms"
Then I should see "Europe"
And I should see "United States"
+
+ @tag
+ Scenario: View Pool's Quota Usage
+ Given I own a pool named "mockpool"
+ And the Pool has a quota with following capacities:
+ | resource | capacity |
+ | maximum_running_instances | 10 |
+ | maximum_running_memory | 10240 |
+ | maximum_running_cpus | 20 |
+ | maximum_total_instances | 15 |
+ | maximum_total_storage | 8500 |
+ | running_instances | 8 |
+ | running_memory | 9240 |
+ | running_cpus | 16 |
+ | total_instances | 15 |
+ | total_storage | 8400 |
+ And I am on the homepage
+ When I follow "mockpool"
+ Then I should be on the show pool page
+ When I follow "Quota"
+ Then I should see the following:
+ | Resource | Max Capacity | Used Capacity | Free Capacity | %
Used |
+ | Running Instances | 10 | 8 | 2 | 80.00
|
+ | Running Memory | 10240 | 9240 | 1000 | 90.23
|
+ | Running CPUs | 20 | 16 | 4 | 80.00
|
+ | Total Instances | 15 | 15 | 0 |
100.00 |
+ | Total Storage | 8500 | 8400 | 100 | 98.82
|
\ No newline at end of file
diff --git a/src/features/step_definitions/pool_steps.rb
b/src/features/step_definitions/pool_steps.rb
index 3d97da6..3be5808 100644
--- a/src/features/step_definitions/pool_steps.rb
+++ b/src/features/step_definitions/pool_steps.rb
@@ -48,3 +48,13 @@ Then /^I should see the following:$/ do |table|
end
end
end
+
+Given /^the Pool has a quota with following capacities:$/ do |table|
+ quota_hash = { "pool_id" => @pool, "pool" => @pool}
+ table.hashes.each do |hash|
+ quota_hash[hash["resource"]] = hash["capacity"]
+ end
+
+ @quota = Factory(:quota, quota_hash)
+ puts @quota.pool_id
+end
\ No newline at end of file
diff --git a/src/spec/factories/quota.rb b/src/spec/factories/quota.rb
index fd0f514..ce29b9f 100644
--- a/src/spec/factories/quota.rb
+++ b/src/spec/factories/quota.rb
@@ -1,7 +1,7 @@
Factory.define :quota do |f|
f.association :pool
f.maximum_running_instances 10
- f.maximum_running_memory 102400
+ f.maximum_running_memory 10240
f.maximum_running_cpus 20
f.maximum_total_instances 15
f.maximum_total_storage 8500
--
1.6.6.1
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel