'Creates a generic volume group snapshot.
:param context: the context
:param group_snapshot: the group snapshot to be created
:param snapshots: snapshots
:returns: dict -- modelUpdate
:returns: list -- list of snapshots
:raises: VolumeBackendAPIException, NotImplementedError'

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

    grp_id = group_snapshot.group_id
    source_group = group_snapshot.get('group')
    if (not volume_utils.is_group_a_cg_snapshot_type(source_group)):
        raise NotImplementedError()
    snapshots_model_update = []
    LOG.info('Create    snapshot    for    %(grpId)s    group    Snapshot    ID:    %(group_snapshot)s.', {'group_snapshot': group_snapshot.id, 'grpId': grp_id})
    try:
        snap_name = self.utils.truncate_string(group_snapshot.id, 19)
        self._create_group_replica(source_group, snap_name)
    except Exception as e:
        exception_message = (_('Failed    to    create    snapshot    for    group:    %(volGrpName)s.    Exception    received:    %(e)s') % {'volGrpName': grp_id, 'e': six.text_type(e)})
        LOG.exception(exception_message)
        raise exception.VolumeBackendAPIException(data=exception_message)
    for snapshot in snapshots:
        snapshots_model_update.append({'id': snapshot.id, 'status': fields.SnapshotStatus.AVAILABLE})
    model_update = {'status': fields.GroupStatus.AVAILABLE}
    return (model_update, snapshots_model_update)
