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