'Convert the volume to be of the new type.
Returns True if the retype was successful.
Uses taskflow to revert changes if errors occur.
:param volume: A dictionary describing the volume to retype
:param new_type: A dictionary describing the volume type to convert to
:param diff: A dictionary with the difference between the two types
:param host: A dictionary describing the host, where
host[\'host\'] is its name, and host[\'capabilities\'] is a
dictionary of its reported capabilities.  Host validation
is just skipped if host is None.'

def retype(self, volume, new_type, diff, host):

    LOG.debug('enter:    retype:    id=%(id)s,    new_type=%(new_type)s,diff=%(diff)s,    host=%(host)s', {'id': volume['id'], 'new_type': new_type, 'diff': diff, 'host': host})
    old_volume_settings = self.get_volume_settings_from_type(volume, host)
    return self._retype_from_old_to_new(volume, new_type, old_volume_settings, host)
