From 873d195ddd8aa4874d892763adc5f8ade8210043 Mon Sep 17 00:00:00 2001 From: rsalm Date: Wed, 18 Sep 2013 20:59:35 +0300 Subject: [PATCH 1/2] [vcloud_director] Fix listing catalog items when only a single item exists. --- lib/fog/vcloud_director/models/compute/catalog_items.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/fog/vcloud_director/models/compute/catalog_items.rb b/lib/fog/vcloud_director/models/compute/catalog_items.rb index cb6f33564..2ea18c42f 100644 --- a/lib/fog/vcloud_director/models/compute/catalog_items.rb +++ b/lib/fog/vcloud_director/models/compute/catalog_items.rb @@ -12,9 +12,13 @@ module Fog private + def ensure_list(items) + items.is_a?(Hash) ? [items] : items + end + def item_list data = service.get_catalog(catalog.id).body - items = data[:CatalogItems][:CatalogItem].select { |link| link[:type] == "application/vnd.vmware.vcloud.catalogItem+xml" } + items = ensure_list(data[:CatalogItems][:CatalogItem]).select { |link| link[:type] == "application/vnd.vmware.vcloud.catalogItem+xml" } items.each{|item| service.add_id_from_href!(item) } items end From 3dddaf386315a32a7f4e4e59b5bf753ebe515f93 Mon Sep 17 00:00:00 2001 From: rsalm Date: Fri, 20 Sep 2013 17:29:46 +0300 Subject: [PATCH 2/2] [vcloud_director] Move ensure_list to VCloudDirector::Collection. Replace inline wrap implementations in Tasks and Organizations with ensure_list. --- lib/fog/vcloud_director/compute.rb | 4 ++++ lib/fog/vcloud_director/models/compute/catalog_items.rb | 4 ---- lib/fog/vcloud_director/models/compute/organizations.rb | 2 +- lib/fog/vcloud_director/models/compute/tasks.rb | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/fog/vcloud_director/compute.rb b/lib/fog/vcloud_director/compute.rb index 7d7eb123a..a962cf112 100644 --- a/lib/fog/vcloud_director/compute.rb +++ b/lib/fog/vcloud_director/compute.rb @@ -172,6 +172,10 @@ module Fog items = item_list.map {|item| get_by_id(item[:id])} load(items) end + + def ensure_list(items) + items.is_a?(Hash) ? [items] : items + end end class Real diff --git a/lib/fog/vcloud_director/models/compute/catalog_items.rb b/lib/fog/vcloud_director/models/compute/catalog_items.rb index 2ea18c42f..751212ec8 100644 --- a/lib/fog/vcloud_director/models/compute/catalog_items.rb +++ b/lib/fog/vcloud_director/models/compute/catalog_items.rb @@ -12,10 +12,6 @@ module Fog private - def ensure_list(items) - items.is_a?(Hash) ? [items] : items - end - def item_list data = service.get_catalog(catalog.id).body items = ensure_list(data[:CatalogItems][:CatalogItem]).select { |link| link[:type] == "application/vnd.vmware.vcloud.catalogItem+xml" } diff --git a/lib/fog/vcloud_director/models/compute/organizations.rb b/lib/fog/vcloud_director/models/compute/organizations.rb index a7b37e8fb..8798617fa 100644 --- a/lib/fog/vcloud_director/models/compute/organizations.rb +++ b/lib/fog/vcloud_director/models/compute/organizations.rb @@ -19,7 +19,7 @@ module Fog def item_list data = service.get_organizations.body - orgs = data[:Org].is_a?(Hash) ? [data[:Org]] : data[:Org] + orgs = ensure_list(data[:Org]) orgs.each {|org| service.add_id_from_href!(org)} orgs end diff --git a/lib/fog/vcloud_director/models/compute/tasks.rb b/lib/fog/vcloud_director/models/compute/tasks.rb index 49230b38d..1c69a9f80 100644 --- a/lib/fog/vcloud_director/models/compute/tasks.rb +++ b/lib/fog/vcloud_director/models/compute/tasks.rb @@ -21,7 +21,7 @@ module Fog def item_list data = service.get_tasks_list(organization.id).body - tasks = data[:Task].is_a?(Array) ? data[:Task] : [data[:Task]] + tasks = ensure_list(data[:Task]) tasks.each {|task| service.add_id_from_href!(task)} end