From: Michal Fojtik <[email protected]>
Signed-off-by: Michal fojtik <[email protected]> --- .../deltacloud/drivers/vsphere/vsphere_client.rb | 2 +- .../deltacloud/drivers/vsphere/vsphere_driver.rb | 18 +++++++++++------- server/views/layout.html.haml | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/server/lib/deltacloud/drivers/vsphere/vsphere_client.rb b/server/lib/deltacloud/drivers/vsphere/vsphere_client.rb index f2cc486..7e5cb4a 100644 --- a/server/lib/deltacloud/drivers/vsphere/vsphere_client.rb +++ b/server/lib/deltacloud/drivers/vsphere/vsphere_client.rb @@ -68,7 +68,7 @@ module Deltacloud::Drivers::VSphere rootFolder = vsphere.serviceInstance.content.rootFolder rootFolder.childEntity.grep(RbVmomi::VIM::Datacenter).each do |dc| dc.datastoreFolder.childEntity.collect do |datastore| - vms += datastore.vm.collect { |vm| { :instance => vm, :datastore => datastore.name } } + vms += datastore.vm.collect { |vm| { :instance => vm, :datastore => datastore.name } unless vm.nil? } end end vms.flatten.compact diff --git a/server/lib/deltacloud/drivers/vsphere/vsphere_driver.rb b/server/lib/deltacloud/drivers/vsphere/vsphere_driver.rb index 3a502e0..971bbbb 100644 --- a/server/lib/deltacloud/drivers/vsphere/vsphere_driver.rb +++ b/server/lib/deltacloud/drivers/vsphere/vsphere_driver.rb @@ -27,6 +27,7 @@ module Deltacloud::Drivers::VSphere include Deltacloud::Drivers::VSphere::Helper feature :instances, :user_data + feature :instances, :user_name def hardware_profiles(credentials, opts={}) vsphere = new_client(credentials) @@ -71,7 +72,6 @@ module Deltacloud::Drivers::VSphere else template_vms = list_virtual_machines(credentials).select { |vm| vm[:instance].summary.config[:template] } end - img_arr = template_vms.collect do |image_hash| # Since all calls to vm are threaten as SOAP calls, reduce them using # local variable. @@ -94,7 +94,6 @@ module Deltacloud::Drivers::VSphere ) end end - img_arr = filter_on( img_arr, :architecture, opts ) img_arr.sort_by{|e| [e.owner_id, e.name]} end @@ -145,10 +144,8 @@ module Deltacloud::Drivers::VSphere # Since all calls to vm are threaten as SOAP calls, reduce them using # local variable. vm, realm_id = vm_hash[:instance], vm_hash[:datastore] - next unless vm config = vm.summary.config - next unless config - next unless vm.summary.storage + next if not config template_id = vm.config[:extraConfig].select { |k| k.key == 'template_id' } template_id = template_id.first.value unless template_id.empty? properties = { @@ -209,7 +206,7 @@ module Deltacloud::Drivers::VSphere :memoryMB => opts[:hwp_memory], :numCPUs => opts[:hwp_cpu], :extraConfig => [ - { :key => 'template_id', :value => image_id } + { :key => 'template_id', :value => image_id }, ] } # If user wants to inject data into instance he need to submit a Base64 @@ -220,7 +217,10 @@ module Deltacloud::Drivers::VSphere device = vm[:instance].config.hardware.device.select { |hw| hw.class == RbVmomi::VIM::VirtualCdrom }.first if device # TODO: Upload baked ISO image to the Datastore - device.backing = RbVmomi::VIM.VirtualCdromIsoBackingInfo(:fileName => "[#{opts[:realm_id] || vm[:datastore]}] test.iso") + machine_config[:extraConfig] << { + :key => 'user_data_file', :value => "#{opts[:name]}.iso" + } + device.backing = RbVmomi::VIM.VirtualCdromIsoBackingInfo(:fileName => "[#{opts[:realm_id] || vm[:datastore]}] #{opts[:name].iso}") machine_config.merge!({ :deviceChange => [{ :operation => :edit, @@ -290,6 +290,10 @@ module Deltacloud::Drivers::VSphere status 502 end + on /Failed to inject data/ do + status 502 + end + end def valid_credentials?(credentials) diff --git a/server/views/layout.html.haml b/server/views/layout.html.haml index f6d3010..9deaaf3 100644 --- a/server/views/layout.html.haml +++ b/server/views/layout.html.haml @@ -24,7 +24,7 @@ | =link_to_format(:json) #driver_info - Driver: #{driver_symbol} | API version: #{settings.version} + Driver: #{driver_symbol} | Provider: #{Thread::current[:provider] || ENV['API_PROVIDER']} | API version: #{settings.version} #copyright Copyright 2009-2011 %a{:href => 'http://incubator.apache.org/deltacloud/'} The Apache Software Foundation -- 1.7.4.1
