'Relocates backing to the input datastore and resource pool.
The implementation uses moveAllDiskBackingsAndAllowSharing disk move
type.
:param backing: Reference to the backing
:param datastore: Reference to the datastore
:param resource_pool: Reference to the resource pool
:param host: Reference to the host
:param disk_type: destination disk type'

def relocate_backing(self, backing, datastore, resource_pool, host, disk_type=None):

    LOG.debug('Relocating    backing:    %(backing)s    to    datastore:    %(ds)s    and    resource    pool:    %(rp)s    with    destination    disk    type:    %(disk_type)s.', {'backing': backing, 'ds': datastore, 'rp': resource_pool, 'disk_type': disk_type})
    disk_move_type = 'moveAllDiskBackingsAndAllowSharing'
    disk_device = None
    if (disk_type is not None):
        disk_device = self._get_disk_device(backing)
    relocate_spec = self._get_relocate_spec(datastore, resource_pool, host, disk_move_type, disk_type, disk_device)
    task = self._session.invoke_api(self._session.vim, 'RelocateVM_Task', backing, spec=relocate_spec)
    LOG.debug('Initiated    relocation    of    volume    backing:    %s.', backing)
    self._session.wait_for_task(task)
    LOG.info('Successfully    relocated    volume    backing:    %(backing)s    to    datastore:    %(ds)s    and    resource    pool:    %(rp)s.', {'backing': backing, 'ds': datastore, 'rp': resource_pool})
