'Creates a group from a group snapshot or a group of cinder vols.
:returns: An implicit update for the volumes model that is
interpreted by the manager as a successful operation.'

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

    LOG.debug('VOLUMES    %s    ', ',    '.join([vol['id'] for vol in volumes]))
    volume_model_updates = []
    if group_snapshot:
        vols = zip(volumes, snapshots)
        for (volume, snapshot) in vols:
            source = {'name': snapshot['name'], 'size': snapshot['volume_size']}
            volume_model_update = self._clone_source_to_destination(source, volume)
            if (volume_model_update is not None):
                volume_model_update['id'] = volume['id']
                volume_model_updates.append(volume_model_update)
    else:
        vols = zip(volumes, source_vols)
        for (volume, old_src_vref) in vols:
            src_lun = self._get_lun_from_table(old_src_vref['name'])
            source = {'name': src_lun.name, 'size': old_src_vref['size']}
            volume_model_update = self._clone_source_to_destination(source, volume)
            if (volume_model_update is not None):
                volume_model_update['id'] = volume['id']
                volume_model_updates.append(volume_model_update)
    return (None, volume_model_updates)
