'Creates a group snapshot.
:param context: the context of the caller.
:param group_snapshot: the GroupSnapshot object to be created.
:param snapshots: a list of Snapshot objects in the group_snapshot.
:returns: model_update, snapshots_model_update'

def create_group_snapshot(self, context, group_snapshot, snapshots):

    if (not volume_utils.is_group_a_cg_snapshot_type(group_snapshot)):
        raise NotImplementedError()
    get_scaleio_snapshot_params = (lambda snapshot: {'volumeId': snapshot.volume['provider_id'], 'snapshotName': self._id_to_base64(snapshot['id'])})
    snapshot_defs = list(map(get_scaleio_snapshot_params, snapshots))
    (r, response) = self._snapshot_volume_group(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)
    snapshot_model_update = []
    for (snapshot, scaleio_id) in zip(snapshots, response['volumeIdList']):
        update_item = {'id': snapshot['id'], 'status': fields.SnapshotStatus.AVAILABLE, 'provider_id': scaleio_id}
        snapshot_model_update.append(update_item)
    model_update = {'status': fields.GroupStatus.AVAILABLE}
    return (model_update, snapshot_model_update)
