From: Martyn Taylor <[email protected]>
---
.../admin/hardware_profiles_controller.rb | 79 +++++++++++++++++++-
src/app/models/hardware_profile_property.rb | 13 +++
.../views/admin/hardware_profiles/_history.haml | 1 +
src/app/views/admin/hardware_profiles/_list.haml | 28 +++++++
.../_matching_provider_hardware_profiles.haml | 18 +++++
.../views/admin/hardware_profiles/_properties.haml | 20 +++++
src/app/views/admin/hardware_profiles/index.haml | 3 +-
src/app/views/admin/hardware_profiles/show.haml | 5 +
src/features/support/paths.rb | 3 +
9 files changed, 167 insertions(+), 3 deletions(-)
create mode 100644 src/app/views/admin/hardware_profiles/_history.haml
create mode 100644 src/app/views/admin/hardware_profiles/_list.haml
create mode 100644
src/app/views/admin/hardware_profiles/_matching_provider_hardware_profiles.haml
create mode 100644 src/app/views/admin/hardware_profiles/_properties.haml
create mode 100644 src/app/views/admin/hardware_profiles/show.haml
diff --git a/src/app/controllers/admin/hardware_profiles_controller.rb
b/src/app/controllers/admin/hardware_profiles_controller.rb
index e0d2a0e..67c655d 100644
--- a/src/app/controllers/admin/hardware_profiles_controller.rb
+++ b/src/app/controllers/admin/hardware_profiles_controller.rb
@@ -1,6 +1,81 @@
class Admin::HardwareProfilesController < ApplicationController
before_filter :require_user
-
+ before_filter :load_hardware_profiles, :only => [:index, :show]
+ before_filter :load_hardware_profile, :only => [:show]
def index
end
-end
+
+ def show
+ @tab_captions = ['Properties', 'History', 'Matching Provider Hardware
Profiles']
+ @details_tab = params[:details_tab].blank? ? 'properties' :
params[:details_tab]
+ case @details_tab
+ when 'properties'
+ properties
+ when 'matching_provider_hardware_profiles'
+ matching_provider_hardware_profiles
+ end
+ respond_to do |format|
+ format.js do
+ if @url_params.delete :details_pane
+ render :partial => 'layouts/details_pane' and return
+ end
+ render :partial => @details_tab and return
+ end
+ format.html { render :action => 'show'}
+ end
+ end
+
+ def new
+ end
+
+ def create
+ end
+
+ def delete
+ end
+
+ private
+ def properties
+ @properties_header = [
+ { :name => "Name", :sort_attr => :name},
+ { :name => "Kind", :sort_attr => :kind },
+ { :name => "Range First", :sort_attr => :range_first},
+ { :name => "Range Last", :sort_attr => :range_last },
+ { :name => "Enum Entries", :sort_attr => :false },
+ { :name => "Default Value", :sort_attr => :value},
+ { :name => "Unit", :sort_attr => :unit}
+ ]
+ @hwp_properties = [...@hardware_profile.memory, @hardware_profile.cpu,
@hardware_profile.storage, @hardware_profile.architecture]
+ end
+
+ #TODO Update this method when moving to new HWP Model
+ def matching_provider_hardware_profiles
+ @provider_hwps_header = [
+ { :name => "Provider Name", :sort_attr => "provider.name" },
+ { :name => "Hardware Profile Name", :sort_attr => :name },
+ { :name => "Architecture", :sort_attr => :architecture },
+ { :name => "Memory", :sort_attr => :memory},
+ { :name => "Storage", :sort_attr => :storage },
+ { :name => "Virtual CPU", :sort_attr => :cpus}
+ ]
+ @matching_hwps = HardwareProfile.all(:include =>
"aggregator_hardware_profiles",
+ :conditions => {:hardware_profile_map
=> { :aggregator_hardware_profile_id => params[:id] }})
+ end
+
+ def load_hardware_profiles
+ @hardware_profiles = HardwareProfile.all(:conditions => 'provider_id IS
NULL')
+ @url_params = params
+ @header = [
+ { :name => "Hardware Profile Name", :sort_attr => :name },
+ { :name => "Architecture", :sort_attr => :architecture },
+ { :name => "Memory", :sort_attr => :memory},
+ { :name => "Storage", :sort_attr => :storage },
+ { :name => "Virtual CPU", :sort_attr => :cpus}
+ ]
+ end
+
+ def load_hardware_profile
+ @hardware_profile = HardwareProfile.find((params[:id] || []).first)
+ end
+
+end
\ No newline at end of file
diff --git a/src/app/models/hardware_profile_property.rb
b/src/app/models/hardware_profile_property.rb
index 1291122..46e4b8e 100644
--- a/src/app/models/hardware_profile_property.rb
+++ b/src/app/models/hardware_profile_property.rb
@@ -97,5 +97,18 @@ class HardwareProfileProperty < ActiveRecord::Base
end
end
end
+
+ def to_s
+ case kind
+ when FIXED
+ value
+ when RANGE
+ range_first.to_s + " - " + range_last.to_s
+ when ENUM
+ (property_enum_entries.collect { |enum| enum.value }).join(", ")
+ else
+ "undefined"
+ end
+ end
end
diff --git a/src/app/views/admin/hardware_profiles/_history.haml
b/src/app/views/admin/hardware_profiles/_history.haml
new file mode 100644
index 0000000..894e9cd
--- /dev/null
+++ b/src/app/views/admin/hardware_profiles/_history.haml
@@ -0,0 +1 @@
+%h3 History
diff --git a/src/app/views/admin/hardware_profiles/_list.haml
b/src/app/views/admin/hardware_profiles/_list.haml
new file mode 100644
index 0000000..7fa2c2b
--- /dev/null
+++ b/src/app/views/admin/hardware_profiles/_list.haml
@@ -0,0 +1,28 @@
+- form_tag do |f|
+ #object-actions
+ = restful_submit_tag "Create", "create", admin_hardware_profiles_path,
"PUT"
+ = restful_submit_tag "Delete", "delete", admin_hardware_profiles_path,
"DELETE"
+
+ #selections
+ %p
+ Select:
+ = link_to "All", @url_params.merge(:select => 'all')
+ %span> ,
+ = link_to "None", @url_params.merge(:select => 'none')
+
+%table
+ = sortable_table_header @header
+ - @hardware_profiles.each do |hwp|
+ %tr
+ %td
+ - selected = @url_params[:select] == 'all'
+ = check_box(:pool, "selected[#{hwp.id}]", :checked => selected)
+ = link_to hwp.name, admin_hardware_profile_path(hwp)
+ %td
+ =hwp.architecture.to_s
+ %td
+ =hwp.memory.to_s
+ %td
+ =hwp.storage.to_s
+ %td
+ =hwp.cpu.to_s
\ No newline at end of file
diff --git
a/src/app/views/admin/hardware_profiles/_matching_provider_hardware_profiles.haml
b/src/app/views/admin/hardware_profiles/_matching_provider_hardware_profiles.haml
new file mode 100644
index 0000000..cfbb856
--- /dev/null
+++
b/src/app/views/admin/hardware_profiles/_matching_provider_hardware_profiles.haml
@@ -0,0 +1,18 @@
+%h3
+ = @hardware_profile.name
+%table
+ = sortable_table_header @provider_hwps_header
+ - @matching_hwps.each do |hwp|
+ %tr
+ %td
+ = link_to hwp.provider.name, admin_provider_path(hwp.provider)
+ %td
+ = link_to hwp.name, admin_hardware_profile_path(hwp)
+ %td
+ =hwp.architecture.to_s
+ %td
+ =hwp.memory.to_s
+ %td
+ =hwp.storage.to_s
+ %td
+ =hwp.cpu.to_s
\ No newline at end of file
diff --git a/src/app/views/admin/hardware_profiles/_properties.haml
b/src/app/views/admin/hardware_profiles/_properties.haml
new file mode 100644
index 0000000..590edc5
--- /dev/null
+++ b/src/app/views/admin/hardware_profiles/_properties.haml
@@ -0,0 +1,20 @@
+%h3
+ = @hardware_profile.name + "(" + (@hardware_profile.provider_id.nil? ?
"Front End" : "Provider" ) + ")"
+%table
+ = sortable_table_header @properties_header
+ - @hwp_properties.each do |hwpp|
+ %tr
+ %td
+ =hwpp.name.nil? ? "n/a" : hwpp.name
+ %td
+ =hwpp.kind.nil? ? "n/a" : hwpp.kind
+ %td
+ =hwpp.range_first.nil? ? "n/a" : hwpp.range_first
+ %td
+ =hwpp.range_last.nil? ? "n/a" : hwpp.range_last
+ %td
+ =hwpp.property_enum_entries.empty? ? "n/a" :
(hwpp.property_enum_entries.collect { |enum| enum.value.to_s }).join(", ")
+ %td
+ =hwpp.value.nil? ? "n/a" : hwpp.value
+ %td
+ =hwpp.unit.nil? ? "n/a" : hwpp.unit
diff --git a/src/app/views/admin/hardware_profiles/index.haml
b/src/app/views/admin/hardware_profiles/index.haml
index dd779f7..62ccbc6 100644
--- a/src/app/views/admin/hardware_profiles/index.haml
+++ b/src/app/views/admin/hardware_profiles/index.haml
@@ -1 +1,2 @@
-admin/hardware_profiles/index.haml
+- content_for :list do
+ = render :partial => 'list'
diff --git a/src/app/views/admin/hardware_profiles/show.haml
b/src/app/views/admin/hardware_profiles/show.haml
new file mode 100644
index 0000000..a5a777d
--- /dev/null
+++ b/src/app/views/admin/hardware_profiles/show.haml
@@ -0,0 +1,5 @@
+- content_for :list do
+ = render :partial => 'list'
+
+- content_for :details do
+ = render :partial => 'layouts/details_pane'
\ No newline at end of file
diff --git a/src/features/support/paths.rb b/src/features/support/paths.rb
index c3309fe..ceeba17 100644
--- a/src/features/support/paths.rb
+++ b/src/features/support/paths.rb
@@ -92,6 +92,9 @@ module NavigationHelpers
when /the settings update page/
url_for :action => 'update', :controller => 'settings', :only_path =>
true
+ when /the hardware profiles page/
+ url_for admin_hardware_profiles_path
+
# Add more mappings here.
# Here is an example that pulls values out of the Regexp:
#
--
1.7.2.3
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel