On 22/04/13 19:46, mar...@redhat.com wrote: > On 22/04/13 18:10, di...@fast.au.fujitsu.com wrote: >> From: Dies Koper <di...@fast.au.fujitsu.com> >> >> --- >> .../drivers/fgcp/fgcp_driver_cimi_methods.rb | 32 >> ++++++++++++---------- >> 1 file changed, 18 insertions(+), 14 deletions(-) >> >> diff --git a/server/lib/deltacloud/drivers/fgcp/fgcp_driver_cimi_methods.rb >> b/server/lib/deltacloud/drivers/fgcp/fgcp_driver_cimi_methods.rb >> index fe1f424..477e856 100644 >> --- a/server/lib/deltacloud/drivers/fgcp/fgcp_driver_cimi_methods.rb >> +++ b/server/lib/deltacloud/drivers/fgcp/fgcp_driver_cimi_methods.rb >> @@ -17,6 +17,8 @@ >> #Definition of CIMI methods for the Fgcp driver - separation from deltacloud >> #API Fgcp driver methods >> >> +require 'cgi' >> + > > ACK - btw where are you using 'cgi' (or is it for future use)? >
never mind - seen it now thanks :) (CGI.escape/unescape) > > >> module Deltacloud::Drivers::Fgcp >> >> class FgcpDriver < Deltacloud::BaseDriver >> @@ -37,7 +39,7 @@ module Deltacloud::Drivers::Fgcp >> vsys_id = vsys['vsysId'][0] >> vsys_description_el = vsys['description'] >> CIMI::Model::System.new( >> - :id => vsys_id, >> + :id => context.system_url(vsys_id), >> :name => vsys['vsysName'][0], >> :description => vsys_description_el ? vsys_description_el[0] : >> nil, >> :machines => { :href => context.system_machines_url(vsys_id) >> }, >> @@ -47,25 +49,26 @@ module Deltacloud::Drivers::Fgcp >> :operations => [] >> ) >> end >> - systems = systems.select { |s| opts[:id] == s[:id] } if opts[:id] >> + systems = systems.select { |s| context.system_url(opts[:id]) == >> s[:id] } if opts[:id] >> >> # now add system state and advertise operations >> systems.each do |system| >> - vservers = >> client.list_vservers(system[:id])['vservers'][0]['vserver'] >> + vsys_id = system[:id].split('/').last >> + vservers = client.list_vservers(vsys_id)['vservers'][0]['vserver'] >> if vservers.nil? >> - system[:state] = >> client.get_vsys_status(system[:id])['vsysStatus'][0] == 'DEPLOYING' ? >> 'CREATING' : 'MIXED' >> + system[:state] = >> client.get_vsys_status(vsys_id)['vsysStatus'][0] == 'DEPLOYING' ? 'CREATING' >> : 'MIXED' >> else >> vservers.each do |vserver| >> state = >> @@MACHINE_STATE_MAP[client.get_vserver_status(vserver['vserverId'][0])['vserverStatus'][0]] >> system[:state] ||= state >> - system[:operations] << { :href => >> context.system_url("#{system[:id]}/start"), :rel => >> "http://schemas.dmtf.org/cimi/1/action/start" } if state == 'STOPPED' >> - system[:operations] << { :href => >> context.system_url("#{system[:id]}/stop"), :rel => >> "http://schemas.dmtf.org/cimi/1/action/stop" } if state == 'STARTED' >> + system[:operations] << { :href => >> context.system_url("#{vsys_id}/start"), :rel => >> "http://schemas.dmtf.org/cimi/1/action/start" } if state == 'STOPPED' >> + system[:operations] << { :href => >> context.system_url("#{vsys_id}/stop"), :rel => >> "http://schemas.dmtf.org/cimi/1/action/stop" } if state == 'STARTED' >> if system[:state] != state >> system[:state] = 'MIXED' >> # this case could have been caused by one machine in >> capturing state and one in e.g. creating, >> # but just advertise both operations to cut it short >> - system[:operations] << { :href => >> context.system_url("#{system[:id]}/start"), :rel => >> "http://schemas.dmtf.org/cimi/1/action/start" } >> - system[:operations] << { :href => >> context.system_url("#{system[:id]}/stop"), :rel => >> "http://schemas.dmtf.org/cimi/1/action/stop" } >> + system[:operations] << { :href => >> context.system_url("#{vsys_id}/start"), :rel => >> "http://schemas.dmtf.org/cimi/1/action/start" } >> + system[:operations] << { :href => >> context.system_url("#{vsys_id}/stop"), :rel => >> "http://schemas.dmtf.org/cimi/1/action/stop" } >> break >> end >> end >> @@ -73,8 +76,8 @@ module Deltacloud::Drivers::Fgcp >> end >> # check for special case: in destroy_system the FW is stopped >> before the system is deleted >> system[:state] = 'DELETING' if ((vservers.nil? and system[:state] >> != 'CREATING') or system[:state] == 'STOPPED') and >> - ['STOPPED', 'STOPPING'].include? >> client.get_efm_status("#{system[:id]}-S-0001")['efmStatus'][0] >> - system[:operations] << { :href => >> context.system_url(system[:id]), :rel => "delete" } if system[:state] == >> 'STOPPED' >> + ['STOPPED', 'STOPPING'].include? >> client.get_efm_status("#{vsys_id}-S-0001")['efmStatus'][0] >> + system[:operations] << { :href => context.system_url(vsys_id), >> :rel => "delete" } if system[:state] == 'STOPPED' >> end >> systems >> end >> @@ -85,7 +88,7 @@ module Deltacloud::Drivers::Fgcp >> client = new_client(credentials) >> name = opts[:name] || "system_#{Time.now.to_s}" >> template = opts[:system_template] >> - template_id = template.id || >> template.href.to_s.gsub(/.*\/([^\/]+)$/, '\1') >> + template_id = CGI.unescape(template.id.split('/').last) >> vsys_id = client.create_vsys(template_id, name)['vsysId'][0] >> opts[:id] = vsys_id >> systems(credentials, opts).first >> @@ -284,14 +287,15 @@ module Deltacloud::Drivers::Fgcp >> } >> end >> end >> + description = desc['description'][0].empty? ? "" : >> desc['description'][0] >> CIMI::Model::SystemTemplate.new( >> - :id => desc['vsysdescriptorId'][0], >> + :id => >> context.system_template_url(CGI.escape(desc['vsysdescriptorId'][0])), >> :name => desc['vsysdescriptorName'][0], >> - :description => desc['description'][0], >> + :description => description, >> :component_descriptors => components.compact >> ) >> end >> - templates = templates.select { |t| opts[:id] == t[:id] } if >> opts[:id] >> + templates = templates.select { |t| >> context.system_template_url(CGI.escape(opts[:id])) == t[:id] } if opts[:id] >> templates >> end >> end >> >