I am using the Server.findAllForType("vCloud:VM") function and able to return all VMs but its not exactly what I need.
I was hoping there was a more efficient way to get the vm object for a single VM based on one of the parameters of the VM (the artificialId field).
maybe something like this:
Server.findAllForType("vCloud:VM:artificalid=sfw@System@https://cloud.example.com/api/Vapp/vm-234234-234-23423-423-4234-23") ?
or based on href url?
otherwise I end up having to loop through and search this all the time and likely place unecessary stress on the system.
Dion
Try using xpath as discussed here:
http://communities.vmware.com/message/1892584#1892591
instead of name, use artificialId -- see if that works I haven't tried but think this may be the way to go..
It doesnt seem to work as well as I would expect. I have tried variations like this:
var vms = Server.findAllForType("vCloud:VM","xpath:name='VM-RHEL6'");
And get no items returned (and I know there are many VMs returned with the name= to this)
I also tried the variations we discussed:
var vmName = 'sfw@System@https://cloud.boo.ca/api/vApp/vm-6e4e0da2-524b-44fd-9dc4-343706eb7ff9';
var vms = Server.findAllForType("VC:VirtualMachine","xpath:artificialId='"+vmName+"'");
which also didnt return anything.
I also tried
var vmName = 'https://cloud.boo.ca/api/vApp/vm-6e4e0da2-524b-44fd-9dc4-343706eb7ff9';
var vms = Server.findAllForType("VC:VirtualMachine","xpath:href='"+vmName+"'");
also no good.
the href and artificialId were all properties available when I did
var vms = Server.findAllForType("vCloud:VM");
for each (var vm in vms) {
for(var propertyName in vm) {
try {
System.log( " vm var: " + propertyName + " = " + vm[propertyName] );
} catch( e ) {
}
}
Dion