'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):

    LOG.debug('Enter:    create_group_from_src.')
    if (not utils.is_group_a_cg_snapshot_type(group)):
        raise NotImplementedError()
    if (group_snapshot and snapshots):
        cg_name = ('cg-' + group_snapshot.id)
        sources = snapshots
    elif (source_group and source_vols):
        cg_name = ('cg-' + source_group.id)
        sources = source_vols
    else:
        error_msg = _('create_group_from_src    must    be    creating    from    a    group    snapshot,    or    a    source    group.')
        raise exception.InvalidInput(reason=error_msg)
    LOG.debug('create_group_from_src:    cg_name    %(cg_name)s    %(sources)s', {'cg_name': cg_name, 'sources': sources})
    self._helpers.create_fc_consistgrp(cg_name)
    timeout = self.configuration.storwize_svc_flashcopy_timeout
    (model_update, snapshots_model) = self._helpers.create_cg_from_source(group, cg_name, sources, volumes, self._state, self.configuration, timeout)
    LOG.debug('Leave:    create_group_from_src.')
    return (model_update, snapshots_model)
