6.0
Table Of Contents
- vSphere SDK for Perl Programming Guide
- Contents
- Getting Started with vSphere SDK for Perl
- Writing vSphere SDK for Perl Scripts
- Refining vSphere SDK for Perl Scripts
- Creating and Using Filters
- Filtering Views Selectively Using Properties
- Retrieving the ServiceInstance Object on a vSphere Host
- Saving and Using Sessions
- Using Multiple Sessions
- Learning About Object Structure Using Data::Dumper
- Specifying Untyped Arguments in Scheduled Tasks and Callbacks
- Using Advanced Subroutines
- vSphere SDK for Perl Subroutine Reference
- Web Services for Management Perl Library
- Credential Store Perl Library
vSphere SDK for Perl Programming Guide
30 VMware, Inc.
);
Creating Data Objects with Properties
Youcreatedataobjectswithconstructorsthathavenamescorrespondingtotheclassesofthedataobjectsin
thevSphereAPI.TheconstructorsyntaxfollowscommonPerlconventions.Theargumentssuppliedtothe
constructorarekey‐valuepairs,whereeachkeyisthenameofanobjectproperty,andthecorresponding
value
isthevaluewithwhichthepropertyisinitialized.
Forexample,creatingavirtualmachinerequiresthecreationofadatastructurethatincludesanumberof
nesteddataobjects.OneofthoseobjectsisaVirtualMachineFieldInfodataobject,whichcanbe
constructedasfollows:
my $files = VirtualMachineFileInfo->new
(
logDirectory => undef,
snapshotDirectory => undef,
suspendDirectory => undef,
vmPathName => $ds_path
);
TheVirtualMachineFileInfoobjectisthencontainedwithinaVirtualMachineConfigSpecobject:
my $vm_config_spec = VirtualMachineConfigSpec->new(
name => $args{vmname},
memoryMB => $args{memory},
files => $files, # <-- here
numCPUs => $args{num_cpus},
guestId => $args{guestid},
deviceChange => \@vm_devices
);
Thiscodeistakenfromtheapps/vm/vmcreate.plutilityapplication.Seethescriptsintheappsandsamples
directoriesforexamplesofsimpleandcomplexusesofdataobjects.
Tosetthevalueofapropertythatisdefinedasanenumeration,youmustpassthenewvaluetothedataobject
asfollows:
$<ref> = new <enum_type> ('<val>');
Forexample,youcanchangethepowerstateasfollows:
$power_state = new VirtualMachinePowerState ('poweredOff');
Understanding Operations and Methods
ThevSphereSDKforPerlruntimemapsserver‐sideoperationstoclient‐sidePerlviewobjectmethods.For
eachoperationdefinedonaservermanagedobject,thevSphereSDKforPerlcreatesacorrespondingview
methodwhenitcreatestheviewobject.
Non-Blocking and Blocking Methods
Allserver‐sideoperationsavailableinthevSphereAPIarenon‐blockingoperationslistedinthevSphereAPI
ReferenceGuide.ThevSphereSDKforPerlprovidesanon‐blockingmethodcorrespondingtotheserver‐side
operation,andalsoprovidesablocking(synchronous)method(<opname>()method).
Non‐blockingmethods–Asynchronousmethodsthatreturncontroltotheclientimmediatelyafter
invocationandreturnataskobjecttothecallingprogram.Non‐blockingmethodsallowyoutomonitor
progress(ofthe*_Taskobject)outsidethemainprocessinglogicofthescript.Thismonitoringcanbe
usefulduringlong
‐runningoperations.Thesemethodsalsoallowyoutointerleavelocal(client‐side)
processingandserver‐sideprocessing.
Blockingmethods–Synchronousmethodsthatfullyprocesstheoperationbeforereturningcontroltothe
clientscript.Doesnotreturnareferencetoataskobject.Ifyouuseablockingmethod,youdonothaveto
handleataskobjectwithadditionalcode.