Return-Path: X-Original-To: apmail-incubator-deltacloud-dev-archive@minotaur.apache.org Delivered-To: apmail-incubator-deltacloud-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5E9089CCD for ; Fri, 18 Nov 2011 10:49:19 +0000 (UTC) Received: (qmail 95977 invoked by uid 500); 18 Nov 2011 10:49:19 -0000 Delivered-To: apmail-incubator-deltacloud-dev-archive@incubator.apache.org Received: (qmail 95964 invoked by uid 500); 18 Nov 2011 10:49:19 -0000 Mailing-List: contact deltacloud-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: deltacloud-dev@incubator.apache.org Delivered-To: mailing list deltacloud-dev@incubator.apache.org Received: (qmail 95956 invoked by uid 99); 18 Nov 2011 10:49:19 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 18 Nov 2011 10:49:19 +0000 X-ASF-Spam-Status: No, hits=-2001.2 required=5.0 tests=ALL_TRUSTED,RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.116] (HELO hel.zones.apache.org) (140.211.11.116) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 18 Nov 2011 10:49:12 +0000 Received: from hel.zones.apache.org (hel.zones.apache.org [140.211.11.116]) by hel.zones.apache.org (Postfix) with ESMTP id C52CF8D8BC for ; Fri, 18 Nov 2011 10:48:51 +0000 (UTC) Date: Fri, 18 Nov 2011 10:48:51 +0000 (UTC) From: "Alfredo Moralejo (Commented) (JIRA)" To: deltacloud-dev@incubator.apache.org Message-ID: <660459055.42909.1321613331809.JavaMail.tomcat@hel.zones.apache.org> In-Reply-To: <1327446790.21096.1321019331577.JavaMail.tomcat@hel.zones.apache.org> Subject: [jira] [Commented] (DTACLOUD-103) vSphere driver does not work when objects are grouped into folders MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/DTACLOUD-103?page=3Dcom.atlassi= an.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=3D13= 152773#comment-13152773 ]=20 Alfredo Moralejo commented on DTACLOUD-103: ------------------------------------------- Hi, I applied following patch and it seems to be working fine: --- /usr/share/deltacloud-core/lib/deltacloud/drivers/vsphere/vsphere_drive= r.rb=092011-11-09 15:19:33.000000000 +0000 +++ /usr/share/deltacloud-core-tiws/lib/deltacloud/drivers/vsphere/vsphere_= driver.rb=092011-11-18 10:21:59.275333873 +0000 @@ -384,12 +384,16 @@ end =20 def convert_realm(datastore) - Realm::new( - :id =3D> datastore.name, - :name =3D> datastore.name, - :limit =3D> datastore.summary.freeSpace, - :state =3D> datastore.summary.accessible ? 'AVAILABLE' : 'UNAVAILA= BLE' - ) + if datastore.class.to_s =3D=3D 'Folder' + datastore.childEntity.collect { |datastorenew| convert_realm(datas= torenew) } + else + Realm::new( + :id =3D> datastore.name, + :name =3D> datastore.name, + :limit =3D> datastore.summary.freeSpace, + :state =3D> datastore.summary.accessible ? 'AVAILABLE' : 'UNAVAI= LABLE' + ) + end end =20 def convert_state(object, state) --- /usr/share/deltacloud-core/lib/deltacloud/drivers/vsphere/vsphere_clien= t.rb=092011-11-09 15:19:33.000000000 +0000 +++ /usr/share/deltacloud-core-tiws/lib/deltacloud/drivers/vsphere/vsphere_= client.rb=092011-11-18 10:34:36.698334455 +0000 @@ -32,7 +32,8 @@ rootFolder =3D vsphere.serviceInstance.content.rootFolder vm =3D {} rootFolder.childEntity.grep(RbVmomi::VIM::Datacenter).each do |dc| - dc.datastoreFolder.childEntity.collect do |datastore| + dslist =3D list_datastores(dc.datastoreFolder) +=09 dslist.each do |datastore| vm[:instance] =3D datastore.vm.find { |x| x.name =3D=3D name } if vm[:instance] vm[:datastore] =3D datastore.name @@ -63,6 +64,7 @@ dc =3D rootFolder.childEntity.grep(RbVmomi::VIM::Datacenter).selec= t do |dc| dc.datastoreFolder.childEntity.find { |d| d.name =3D=3D name }.n= il? =3D=3D false end.flatten.compact.first + dc =3D rootFolder.childEntity.grep(RbVmomi::VIM::Datacenter).first dc.hostFolder.childEntity.collect.first.resourcePool end end @@ -77,8 +79,12 @@ safely do rootFolder =3D vsphere.serviceInstance.content.rootFolder rootFolder.childEntity.grep(RbVmomi::VIM::Datacenter).collect do |= dc| - dc.datastoreFolder.childEntity.find { |d| d.name =3D=3D name } - end.flatten.compact.first + list_datastores(dc.datastoreFolder).each do |d|=20 + if d.name =3D=3D name + return d + end + end + end end end =20 @@ -90,7 +96,7 @@ vms =3D [] rootFolder =3D vsphere.serviceInstance.content.rootFolder rootFolder.childEntity.grep(RbVmomi::VIM::Datacenter).each do |dc| - dc.datastoreFolder.childEntity.each do |datastore| + list_datastores(dc.datastoreFolder).each do |datastore| vms +=3D datastore.vm.collect { |vm| { :instance =3D> vm, :datas= tore =3D> datastore.name } unless vm.nil? } stored_tasks(datastore, vsphere) do |task| if task.info.entity.class =3D=3D RbVmomi::VIM::VirtualMachine @@ -102,6 +108,21 @@ vms.flatten.compact end =20 + # This helper will traverse across all datacenters and folders and gat= her + # all datastores available on vSphere + #=20 + def list_datastores(df) + datastores =3D [] + df.childEntity.each do |object| =20 + if object.class.to_s =3D=3D 'Folder' + datastores +=3D list_datastores(object) + else + datastores << object + end + end + datastores + end + # Map given instance to task. Task name is used as a filename. # def map_task_to_instance(datastore, task_key, new_instance) Regards, Alfredo =20 > vSphere driver does not work when objects are grouped into folders > ------------------------------------------------------------------ > > Key: DTACLOUD-103 > URL: https://issues.apache.org/jira/browse/DTACLOUD-103 > Project: DeltaCloud > Issue Type: Bug > Components: Server > Environment: DeltaCloud 0.4.1-5 (included with Aeolus 0.5.0) > Aeolus 0.5.0 on RHEL 6.1 > vSphere 4.1 > Reporter: Javier Pe=C3=B1a > Assignee: Michal Fojtik > Labels: vsphere > > We are trying to setup an Aeolus environment with vSphere as the virtuali= zation backend. Our environment groups datastores and VMs into folders, and= this is causing DeltaCloud errors when it is trying to find them. The vSph= ere hierarchy looks as follows (ASCII art): > Datacenters > |-datacenter-21 > |-group-s24 (Datastores) > | |-group-s2583 (Folder) > | | |-datastore-2335 > | | |-datastore-2336 > |-group-d23 (Hosts) > | |-domain-c2310 (ComputeResource) > | | |-host-2326 > | | |-host-2327 > |-group-v22 (vms) > | |-group-v316 (Folder) > | | |-group-v23042 (Folder) > | | | |-vm-23452 > | | | |-vm-23453 > Some of the methods that failed in vsphere_client.rb are find_datastore()= and list_virtual_machines(). For vsphere_driver.rb, convert_realm() fails = as well. > Please feel free to contact me if you need any additional information. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrato= rs: https://issues.apache.org/jira/secure/ContactAdministrators!default.jsp= a For more information on JIRA, see: http://www.atlassian.com/software/jira