'Creates a group from source.
:param context: the context of the caller.
:param group: the Group object to be created.
:param volumes: a list of Volume objects in the group.
:param group_snapshot: the GroupSnapshot object as source.
:param snapshots: a list of snapshot objects in group_snapshot.
:param source_group: the Group object as source.
:param source_vols: a list of volume objects in the source_group.
:returns: model_update, volumes_model_update'

def create_group_from_src(self, context, group, volumes, group_snapshot=None, snapshots=None, source_group=None, source_vols=None):

    if (not volume_utils.is_group_a_cg_snapshot_type(group)):
        raise NotImplementedError()
    get_scaleio_snapshot_params = (lambda src_volume, trg_volume: {'volumeId': src_volume['provider_id'], 'snapshotName': self._id_to_base64(trg_volume['id'])})
    if (group_snapshot and snapshots):
        snapshot_defs = map(get_scaleio_snapshot_params, snapshots, volumes)
    else:
        snapshot_defs = map(get_scaleio_snapshot_params, source_vols, volumes)
    (r, response) = self._snapshot_volume_group(list(snapshot_defs))
    if ((r.status_code != http_client.OK) and ('errorCode' in response)):
        msg = (_('Failed    creating    snapshot    for    group:    %(response)s.') % {'response': response['message']})
        LOG.error(msg)
        raise exception.VolumeBackendAPIException(data=msg)
    volumes_model_update = []
    for (volume, scaleio_id) in zip(volumes, response['volumeIdList']):
        update_item = {'id': volume['id'], 'status': 'available', 'provider_id': scaleio_id}
        volumes_model_update.append(update_item)
    model_update = {'status': fields.GroupStatus.AVAILABLE}
    return (model_update, volumes_model_update)
