Also, in case it matters, both datastores are iSCSI based.

> On Mar 23, 2017, at 11:52 AM, Tutkowski, Mike <mike.tutkow...@netapp.com> 
> wrote:
> 
> My version is 5.5 in both clusters.
> 
>> On Mar 23, 2017, at 9:48 AM, Sateesh Chodapuneedi 
>> <sateesh.chodapune...@accelerite.com> wrote:
>> 
>> 
>>>> On 23/03/17, 7:21 PM, "Tutkowski, Mike" <mike.tutkow...@netapp.com> wrote:
>> 
>>>> However, perhaps someone can clear this up for me:   
>>>> With XenServer, we are able to migrate a VM and its volumes from a host 
>>>> using a shared SR in one cluster to a host using a shared SR in another 
>>>> cluster even though the source host can’t see the target SR.
>>>> Is the same thing possible with VMware or does the source host have to be 
>>>> able to see the target datastore? If so, does that mean the target 
>>>> datastore has to be zone-wide primary storage when using VMware to make 
>>>> this work?
>> Yes, Mike. But that’s the case with versions less than 5.1 only. In vSphere 
>> 5.1 and later, vMotion does not require environments with shared storage. 
>> This is useful for performing cross-cluster migrations, when the target 
>> cluster machines might not have access to the source cluster's storage.
>> BTW, what is the version of ESXi hosts in this setup? 
>> 
>> Regards,
>> Sateesh,
>> CloudStack development,
>> Accelerite, CA-95054
>> 
>>   On 3/23/17, 7:47 AM, "Tutkowski, Mike" <mike.tutkow...@netapp.com> wrote:
>> 
>>       This looks a little suspicious to me (in VmwareResource before we call 
>> VirtualMachineMO.changeDatastore):
>> 
>>                       morDsAtTarget = 
>> HypervisorHostHelper.findDatastoreWithBackwardsCompatibility(tgtHyperHost, 
>> filerTo.getUuid());
>>                       morDsAtSource = 
>> HypervisorHostHelper.findDatastoreWithBackwardsCompatibility(srcHyperHost, 
>> filerTo.getUuid());
>>                       if (morDsAtTarget == null) {
>>                           String msg = "Unable to find the target datastore: 
>> " + filerTo.getUuid() + " on target host: " + 
>> tgtHyperHost.getHyperHostName() + " to execute MigrateWithStorageCommand";
>>                           s_logger.error(msg);
>>                           throw new Exception(msg);
>>                       }
>> 
>>       We use filerTo.getUuid() when trying to get a pointer to both the 
>> target and source datastores. Since filerTo.getUuid() has the UUID for the 
>> target datastore, that works for morDsAtTarget, but morDsAtSource ends up 
>> being null.
>> 
>>       For some reason, we only check if morDsAtTarget is null (I’m not sure 
>> why we don’t check if morDsAtSource is null, too).
>> 
>>       On 3/23/17, 7:31 AM, "Tutkowski, Mike" <mike.tutkow...@netapp.com> 
>> wrote:
>> 
>>           Hi,
>> 
>>           The CloudStack API that the GUI is invoking is 
>> migrateVirtualMachineWithVolume (which is expected since I’m asking to 
>> migrate a VM from a host in one cluster to a host in another cluster).
>> 
>>           A MigrateWithStorageCommand is sent to VmwareResource, which 
>> eventually calls VirtualMachineMO.changeDatastore.
>> 
>>               public boolean changeDatastore(VirtualMachineRelocateSpec 
>> relocateSpec) throws Exception {
>>                   ManagedObjectReference morTask = 
>> _context.getVimClient().getService().relocateVMTask(_mor, relocateSpec, 
>> VirtualMachineMovePriority.DEFAULT_PRIORITY);
>>                   boolean result = 
>> _context.getVimClient().waitForTask(morTask);
>>                   if (result) {
>>                       _context.waitForTaskProgressDone(morTask);
>>                       return true;
>>                   } else {
>>                       s_logger.error("VMware RelocateVM_Task to change 
>> datastore failed due to " + TaskMO.getTaskFailureInfo(_context, morTask));
>>                   }
>>                   return false;
>>               }
>> 
>>           The parameter, VirtualMachineRelocateSpec, looks like this:
>> 
>>           http://imgur.com/a/vtKcq (datastore-66 is the target datastore)
>> 
>>           The following error message is returned:
>> 
>>           Required property datastore is missing from data object of type 
>> VirtualMachineRelocateSpecDiskLocator
>> 
>>           while parsing serialized DataObject of type 
>> vim.vm.RelocateSpec.DiskLocator
>>           at line 1, column 327
>> 
>>           while parsing property "disk" of static type 
>> ArrayOfVirtualMachineRelocateSpecDiskLocator
>> 
>>           while parsing serialized DataObject of type vim.vm.RelocateSpec
>>           at line 1, column 187
>> 
>>           while parsing call information for method RelocateVM_Task
>>           at line 1, column 110
>> 
>>           while parsing SOAP body
>>           at line 1, column 102
>> 
>>           while parsing SOAP envelope
>>           at line 1, column 38
>> 
>>           while parsing HTTP request for method relocate
>>           on object of type vim.VirtualMachine
>>           at line 1, column 0
>> 
>>           Thoughts?
>> 
>>           Thanks!
>>           Mike
>> 
>>           On 3/22/17, 11:50 PM, "Sergey Levitskiy" 
>> <sergey.levits...@autodesk.com> wrote:
>> 
>> 
>>               Can you trace which API call being used and what parameters 
>> were specified? migrateVirtualMachineWithVolumeAttempts vs 
>> migrateVirtualMachine
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> DISCLAIMER
>> ==========
>> This e-mail may contain privileged and confidential information which is the 
>> property of Accelerite, a Persistent Systems business. It is intended only 
>> for the use of the individual or entity to which it is addressed. If you are 
>> not the intended recipient, you are not authorized to read, retain, copy, 
>> print, distribute or use this message. If you have received this 
>> communication in error, please notify the sender and delete all copies of 
>> this message. Accelerite, a Persistent Systems business does not accept any 
>> liability for virus infected mails.

Reply via email to