From: Michal Fojtik <[email protected]>
Signed-off-by: Michal fojtik <[email protected]> --- clients/cimi/lib/cimi_frontend_helper.rb | 23 ++++++++++++++++++++++ clients/cimi/views/machines/show.haml | 31 +++++++++++++++++++++++++++++- server/lib/cimi/model/machine.rb | 27 +++++++++++++++++++++---- 3 files changed, 75 insertions(+), 6 deletions(-) diff --git a/clients/cimi/lib/cimi_frontend_helper.rb b/clients/cimi/lib/cimi_frontend_helper.rb index 80ae9ed..540acb9 100644 --- a/clients/cimi/lib/cimi_frontend_helper.rb +++ b/clients/cimi/lib/cimi_frontend_helper.rb @@ -17,6 +17,8 @@ module CIMI module Frontend module Helper + require 'uri' + def href_to_id(href) href.split('/').last end @@ -63,6 +65,27 @@ module CIMI end end + def relativize_url(absolute_url) + URI.parse(absolute_url).path + end + + def convert_urls(value) + value.gsub( %r{http(s?)://[^\s<]+} ) { |url| "<a href='#{relativize_url(url)}'>#{href_to_id(url)}</a>" } + end + + def not_implemented(collection_name) + return unless ['machine_templates', 'volume_templates'].include?(collection_name) + capture_haml do + haml_tag :span, :class => [ :label, :warning ] do + haml_concat 'pending' + end + end + end + + def struct_to_name(struct_name) + struct_name.class.name.split('_').last + end + end end end diff --git a/clients/cimi/views/machines/show.haml b/clients/cimi/views/machines/show.haml index a5b7638..d35a850 100644 --- a/clients/cimi/views/machines/show.haml +++ b/clients/cimi/views/machines/show.haml @@ -51,7 +51,7 @@ - if @machine.memory.quantity.nil? %span.label Not specified - else - =[@memory.quantity, @memory.units].join(" ") + =[@machine.memory.quantity, @machine.memory.units].join(" ") %dt Meters %dd - if @machine.meters.empty? @@ -60,6 +60,19 @@ - @machine.meters.each do |meters| %dd=meters.ref +%h3 Properties + +%table.bordered-table + %thead + %tr + %th Name + %th Value + %tbody + - @machine.property.each do |property| + %tr + %td=property.name + %td=convert_urls property.value + %h3 Network Interfaces %table.bordered-table @@ -75,6 +88,11 @@ %td %span.label.success=interface.state %td=interface.protocol + - if @machine.network_interfaces.empty? + %tr + %td{ :colspan => 3 } + %strong + There are no network interfaces defined for this Machine. %h3 Volumes @@ -91,6 +109,12 @@ %a{:href => "/cimi/volumes/#{href_to_id(volume.href)}" }=href_to_id(volume.href) %td=volume.attachment_point %td=volume.protocol + - if @machine.volumes.empty? + %tr + %td{ :colspan => 3 } + %strong + There are no Volume entities defined for this Machine. + %h3 Disks @@ -106,3 +130,8 @@ %td=[boolean_span_for(disk.capacity.quantity), disk.capacity.units].join(" ") %td=boolean_span_for disk.format %td=boolean_span_for disk.attachment_point + - if @machine.disks.empty? + %tr + %td{ :colspan => 3 } + %strong + There are no disks defined for this Machine. diff --git a/server/lib/cimi/model/machine.rb b/server/lib/cimi/model/machine.rb index 4aef558..4f28ea8 100644 --- a/server/lib/cimi/model/machine.rb +++ b/server/lib/cimi/model/machine.rb @@ -78,9 +78,16 @@ class CIMI::Model::Machine < CIMI::Model::Base def self.create_from_xml(body, context) xml = XmlSimple.xml_in(body) - hardware_profile_id = xml['MachineTemplate'][0]['MachineConfig'][0]["href"].split('/').last - image_id = xml['MachineTemplate'][0]['MachineImage'][0]["href"].split('/').last - instance = context.driver.create_instance(context.credentials, image_id, { :hwp_id => hardware_profile_id }) + machine_template = xml['MachineTemplate'][0] + hardware_profile_id = machine_template['MachineConfig'][0]["href"].split('/').last + image_id = machine_template['MachineImage'][0]["href"].split('/').last + additional_params = {} + if machine_template.has_key? 'MachineAdmin' + additional_params[:keyname] = machine_template['MachineAdmin'][0]["href"].split('/').last + end + instance = context.driver.create_instance(context.credentials, image_id, { + :hwp_id => hardware_profile_id + }.merge(additional_params)) from_instance(instance, context) end @@ -106,14 +113,15 @@ class CIMI::Model::Machine < CIMI::Model::Base self.new( :name => instance.id, :description => instance.name, - :created => Time.now, + :created => instance.launch_time, :uri => context.machine_url(instance.id), :state => convert_instance_state(instance.state), :cpu => convert_instance_cpu(instance.instance_profile, context), :memory => convert_instance_memory(instance.instance_profile, context), :disks => convert_instance_storage(instance.instance_profile, context), :network_interfaces => convert_instance_addresses(instance), - :operations => convert_instance_actions(instance, context) + :operations => convert_instance_actions(instance, context), + :property => convert_instance_properties(instance, context) ) end @@ -124,6 +132,15 @@ class CIMI::Model::Machine < CIMI::Model::Base ('RUNNING' == state) ? 'STARTED' : state end + def self.convert_instance_properties(instance, context) + properties = [] + properties << { :name => :machine_image, :value => context.machine_image_url(instance.image_id) } + if instance.respond_to? :keyname + properties << { :name => :machine_admin, :value => context.machine_admin_url(instance.keyname) } + end + properties + end + def self.convert_instance_cpu(profile, context) cpu_override = profile.overrides.find { |p, v| p == :cpu } if cpu_override.nil? -- 1.7.4.4
