'Links a group snap and breaks the relationship.
:param array: the array serial
:param source_group_name: the source group name
:param target_group_name: the target group name
:param snap_name: the snapshot name
:param extra_specs: extra specifications
:param delete_snapshot: delete snapshot flag'

def link_and_break_replica(self, array, source_group_name, target_group_name, snap_name, extra_specs, delete_snapshot=False):

    LOG.debug('Linking    Snap    Vx    snapshot:    source    group:    %(srcGroup)s    targetGroup:    %(tgtGroup)s.', {'srcGroup': source_group_name, 'tgtGroup': target_group_name})
    self.rest.modify_storagegroup_snap(array, source_group_name, target_group_name, snap_name, extra_specs, link=True)
    LOG.debug('Unlinking    Snap    Vx    snapshot:    source    group:    %(srcGroup)s    targetGroup:    %(tgtGroup)s.', {'srcGroup': source_group_name, 'tgtGroup': target_group_name})
    self._unlink_group(array, source_group_name, target_group_name, snap_name, extra_specs)
    if delete_snapshot:
        LOG.debug('Deleting    Snap    Vx    snapshot:    source    group:    %(srcGroup)s    snapshot:    %(snap_name)s.', {'srcGroup': source_group_name, 'snap_name': snap_name})
        self.rest.delete_storagegroup_snap(array, snap_name, source_group_name)
