'Creates a Cinder group snapshot object.
The Cinder group snapshot object is created by making use of an
ephemeral ONTAP consistency group snapshot in order to provide
write-order consistency for a set of flexvol snapshots. First, a list
of the flexvols backing the given Cinder group must be gathered. An
ONTAP group-snapshot of these flexvols will create a snapshot copy of
all the Cinder volumes in the generic volume group. For each Cinder
volume in the group, it is then necessary to clone its backing LUN from
the ONTAP cg-snapshot. The naming convention used for the clones is
what indicates the clone\'s role as a Cinder snapshot and its inclusion
in a Cinder group. The ONTAP cg-snapshot of the flexvols is no longer
required after having cloned the LUNs backing the Cinder volumes in
the Cinder group.
:returns: An implicit update for group snapshot and snapshots models
that is interpreted by the manager to set their models to
available.'

def create_group_snapshot(self, group_snapshot, snapshots):

    try:
        if volume_utils.is_group_a_cg_snapshot_type(group_snapshot):
            self._create_consistent_group_snapshot(group_snapshot, snapshots)
        else:
            for snapshot in snapshots:
                self._create_snapshot(snapshot)
    except Exception as ex:
        err_msg = (_('Create    group    snapshot    failed    (%s).') % ex)
        LOG.exception(err_msg, resource=group_snapshot)
        raise exception.NetAppDriverException(err_msg)
    return (None, None)
