From: David Lutterkort lutter@redhat.com
--- server/server.rb | 12 +++++++++--- server/views/hardware_profiles/index.xml.haml | 4 ++++ server/views/hardware_profiles/show.xml.haml | 17 +++++++++++++++++ 3 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 server/views/hardware_profiles/index.xml.haml create mode 100644 server/views/hardware_profiles/show.xml.haml
diff --git a/server/server.rb b/server/server.rb index 67590d0..187aa07 100644 --- a/server/server.rb +++ b/server/server.rb @@ -278,15 +278,21 @@ collection :instances do end
collection :hardware_profiles do - description "Hardware profiles" + description <<END + A hardware profile represents a configuration of resources upon which a + machine may be deployed. It defines aspects such as local disk storage, + available RAM, and architecture. Each provider is free to define as many + (or as few) hardware profiles as desired. +END
operation :index do description "List of available hardware profiles" param :id, :string + param :architecture, :string, :optional, [ 'i386', 'x86_64' ] control do - @profiles = driver.hardware_profiles + @profiles = driver.hardware_profiles(credentials, params) respond_to do |format| - format.xml { convert_to_xml(:hardware_profiles, @profiles) } + format.xml { haml :'hardware_profiles/index' } format.html { haml :'hardware_profiles/index' } end end diff --git a/server/views/hardware_profiles/index.xml.haml b/server/views/hardware_profiles/index.xml.haml new file mode 100644 index 0000000..52f91a4 --- /dev/null +++ b/server/views/hardware_profiles/index.xml.haml @@ -0,0 +1,4 @@ +!!! XML +%hardware-profiles + - @profiles.each do |prof| + = haml :'hardware_profiles/show', :locals => { :@profile => prof, :partial => true } diff --git a/server/views/hardware_profiles/show.xml.haml b/server/views/hardware_profiles/show.xml.haml new file mode 100644 index 0000000..4a289a1 --- /dev/null +++ b/server/views/hardware_profiles/show.xml.haml @@ -0,0 +1,17 @@ +- unless defined?(partial) + !!! XML +%hardware-profile{ :href => hardware_profile_url(@profile.name) } + %id= @profile.name + - @profile.each_property do |prop| + - attr = { :name => prop.name, :kind => prop.kind, :unit => prop.unit } + - if prop.kind == :fixed + %property{ attr, :value => prop.value }/ + - else + %property{ attr, :value => prop.default } + %param{ :operation => "create", :href => instances_url, :method => "post", :name => prop.param } + - if prop.kind == :range + %range{ :first => prop.first, :last => prop.last }/ + - elsif prop.kind == :enum + %enum + - prop.values.each do |v| + %entry{ :value => v }/