docs: def _copy_vm(template=None, name=None, session=None, sr=None):
      '''
      Create VM by copy
  
      This is slower and should be used if source and target are
      NOT in the same storage repository
  
      template = object reference
      name = string name of new VM
      session = object reference
      sr = object reference
      '''
      if session is None:
          session = _get_session()
      log.debug('Creating VM %s by copying %s', name, template)
      source = _get_vm(template, session)
      task = session.xenapi.Async.VM.copy(source, name, sr)
      _run_async_task(task, session)