You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@deltacloud.apache.org by mf...@redhat.com on 2011/07/19 16:19:38 UTC
[PATCH core 3/4] Added information about current API provider to layout (near driver)
From: Michal Fojtik <mf...@redhat.com>
Signed-off-by: Michal fojtik <mf...@redhat.com>
---
.../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
Re: [PATCH core 3/4] Added information about current API provider to
layout (near driver)
Posted by Francesco Vollero <fv...@redhat.com>.
Ackd, the TODO's messages are removed on 4th patch, that is a subsequent update of this patch.
Cheers,
Francesco
On Tue, Jul 19, 2011 at 04:19:38PM +0200, mfojtik@redhat.com wrote:
> From: Michal Fojtik <mf...@redhat.com>
>
>
> Signed-off-by: Michal fojtik <mf...@redhat.com>
> ---
> .../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
>