Specifying Untyped Arguments in Scheduled Tasks and Callbacks
Because of the way vSphere SDK for Perl maps the vSphere API into Perl, you have to specify arguments to callback methods differently from the way you specify arguments to other methods.
You can use
PrimType
to specify untyped arguments in scheduled tasks
and callbacks.
- You must specify the arguments positionally, in the order defined in the bindings for other languages like Java.
- You must indicate the type of each argument
using the
PrimType
constructor.
For example, consider a scheduled task that
periodically creates a snapshot. The
CreateSnapshot()
method takes four arguments,
name
,
description
,
memory
, and
quiesce
.
You must define the arguments before you use them by creating four MethodActionArgument objects with PrimType values.
my $name = MethodActionArgument->new( value => PrimType->new('Sample snapshot task', 'string') ); my $description = MethodActionArgument->new( value => PrimType->new('Created from a sample script', 'string') ); my $memory = MethodActionArgument->new( value => PrimType->new(0, 'boolean') ); my $quiesce = MethodActionArgument->new( value => PrimType->new(0, 'boolean') );
You use the MethodActionArgument
objects in the order
defined in the positional API, not with the usual name => $value
syntax. You can then supply the four values defined above as arguments to
CreateSnapshot()
.
my $snapshot_action = MethodAction->new( name => "CreateSnapshot", argument => [ $name, $description, $memory, $quiesce ] );
The complete example is in /samples/scheduled_task/vm_snapshot_schedule.pl (Linux) and in VMware vSphere CLI\Perl\samples\scheduled_task\vm_snapshot_schedule.pl (Windows).