Esempio n. 1
0
def make_local_copy(replica_id):
    replica = Replica.objects.get(id=replica_id)
    # Check that we still need to verify - it might have been done already
    if replica.is_local():
        return
    # Use a transaction for safety
    with transaction.commit_on_success():
        # Get replica locked for write (to prevent concurrent actions)
        replica = Replica.objects.select_for_update().get(id=replica_id)
        # Second check after lock (concurrency paranoia)
        if not replica.is_local():
            stage_replica(replica)
Esempio n. 2
0
def verify_replica(replica_id, only_local=False, reverify=False):
    '''
    verify task
    allowemtpychecksums is false for auto-verify, hence the parameter
    '''
    from tardis.tardis_portal.models import Replica
    # Use a transaction for safety
    with transaction.commit_on_success():
        # Get replica locked for write (to prevent concurrent actions)
        replica = Replica.objects.select_for_update().get(id=replica_id)
        if replica.stay_remote or replica.is_local():
            # Check after lock (concurrency paranoia)
            if not replica.verified or reverify:
                replica.verify()
                replica.save(update_fields=['verified'])
        else:
            # Check after lock (concurrency paranoia)
            if not replica.is_local() and not only_local:
                stage_replica(replica)
Esempio n. 3
0
def verify_replica(replica_id, only_local=False, reverify=False):
    '''
    verify task
    allowemtpychecksums is false for auto-verify, hence the parameter
    '''
    from tardis.tardis_portal.models import Replica
    # Use a transaction for safety
    with transaction.commit_on_success():
        # Get replica locked for write (to prevent concurrent actions)
        replica = Replica.objects.select_for_update().get(id=replica_id)
        if replica.stay_remote or replica.is_local():
            # Check after lock (concurrency paranoia)
            if not replica.verified or reverify:
                replica.verify()
                replica.save(update_fields=['verified'])
        else:
            # Check after lock (concurrency paranoia)
            if not replica.is_local() and not only_local:
                stage_replica(replica)
Esempio n. 4
0
    def test_stage_replica(self):
        from tardis.tardis_portal import staging

        staging.stage_replica(self.replica)
    def test_stage_replica(self):
        from tardis.tardis_portal import staging

        staging.stage_replica(self.dfo)