'Create volume and add some base type.
Base type is the service type which doesn\'t conflict with the other.'

def _create_base_type_volume(self, opts, volume, volume_type):

    lun_params = self._get_lun_params(volume, opts)
    (lun_info, model_update) = self._create_volume(lun_params)
    lun_id = lun_info['ID']
    try:
        qos = smartx.SmartQos.get_qos_by_volume_type(volume_type)
        if qos:
            if (not self.support_func.get('QoS_support')):
                msg = _("Can't    support    qos    on    the    array")
                LOG.error(msg)
                raise exception.VolumeBackendAPIException(data=msg)
            else:
                smart_qos = smartx.SmartQos(self.client)
                smart_qos.add(qos, lun_id)
        smartpartition = smartx.SmartPartition(self.client)
        smartpartition.add(opts, lun_id)
        smartcache = smartx.SmartCache(self.client)
        smartcache.add(opts, lun_id)
    except Exception as err:
        self._delete_lun_with_check(lun_id)
        msg = (_('Create    volume    error.    Because    %s.') % six.text_type(err))
        raise exception.VolumeBackendAPIException(data=msg)
    return (lun_params, lun_info, model_update)
