I am using vix api and vmware workstation. My scripts in perl and C++ can power on a guest operating system in my computer (localhost). However, I cannot power on a remote VM in another computer on my network. The scripts give the following errors:
C++ script:
The virtual machine cannot be found
Perl Script:
VMopen() failed, 4000 The virtual machine cannot be found
Here is part of my code:
C++:
VixHandle hostHandle = VIX_INVALID_HANDLE;
VixHandle jobHandle = VIX_INVALID_HANDLE;
VixHandle vmHandle = VIX_INVALID_HANDLE;
VixError err;
char vmxFilePath[] = "c:
home
My Virtual Machines
Windows Server 2003 Enterprise Edition
Windows Server 2003 Enterprise Edition.vmx";
jobHandle = VixHost_Connect(1,
VIX_SERVICEPROVIDER_VMWARE_WORKSTATION,
"10.55.10.100", // hostName
902, // hostPort
"xxxxxx", // userName
"yyyyyyy", // password
0, // options
VIX_INVALID_HANDLE, // propertyListHandle
NULL, // callbackProc
NULL); // clientData
// Wait for completion of operation.
err = VixJob_Wait(jobHandle,
VIX_PROPERTY_JOB_RESULT_HANDLE,
&hostHandle,
VIX_PROPERTY_NONE);
if (VIX_OK != err) {
goto abort;
} else {
printf ("connect success\n");
}
Vix_ReleaseHandle(jobHandle);
// Use VixVM_Open with the hostHandle and the vmxFilePath to open your virtual machine.
jobHandle = VixVM_Open(hostHandle,
vmxFilePath,
NULL, // callbackProc
NULL); // clientData
err = VixJob_Wait(jobHandle,
VIX_PROPERTY_JOB_RESULT_HANDLE,
&vmHandle,
VIX_PROPERTY_NONE);
if (VIX_OK != err) {
goto abort;
} else {
printf ("%s: open success\n",vmxFilePath);
}
// Use VixVM_PowerOn to power on your VM.
jobHandle = VixVM_PowerOn(vmHandle,
VIX_VMPOWEROP_NORMAL, // options
VIX_INVALID_HANDLE, // propertyListHandle
NULL, // *callbackProc,
NULL); // *clientData
err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);
if (VIX_OK != err) {
goto abort;
} else {
printf ( "%s: power on success\n",vmxFilePath);
}
Vix_ReleaseHandle(jobHandle);
Perl Code:
use VMware::Vix::Simple;
use VMware::Vix::API::Constants;
my $err = VIX_OK;
my $hostHandle = VIX_INVALID_HANDLE;
my $vmHandle = VIX_INVALID_HANDLE;
($err, $hostHandle) = HostConnect(1,
VIX_SERVICEPROVIDER_VMWARE_WORKSTATION,
"10.55.10.100", # hostName
902, # hostPort
"xxxxxx", # userName
"yyyyyyy", # password
0, # options
VIX_INVALID_HANDLE); # propertyListHandle
die "HostConnect() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK;
($err, $vmHandle) = VMOpen($hostHandle,
"c:
home
My Virtual Machines
Windows Server 2003 Enterprise Edition
Windows Server 2003 Enterprise Edition.vmx");
die "VMOpen() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK;
$err = VMPowerOn($vmHandle,
VIX_VMPOWEROP_LAUNCH_GUI, # powerOnOptions
VIX_INVALID_HANDLE); # propertyListHandle
die "VMPowerOn() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK;
$err = VMWaitForToolsInGuest($vmHandle,
300); # timeoutInSeconds
die "VMWaitForToolsInGuest() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK;
$err = VMLoginInGuest($vmHandle,
"administrator", # userName
"C*vmuser$$", # password
0); # options
die "VMLoginInGuest() failed, $err ", GetErrorText($err), "\n" if $err != VIX_OK;
Help please. Both work well with the localhost when I change the hostname and port to NULL and 0.
Thanks