Esempio n. 1
0
    def _process_experiment(self, exp):
        if self.dryRun:
            self.stdout.write('Would have archived experiment %s\n' % exp.id)
            return
        tmp_file = None
        try:
            if self.directory:
                pathname = os.path.join(self.directory, 
                                        '%s-archive.tar.gz' % exp.id)
            else:
                tmp_file = NamedTemporaryFile(prefix='mytardis_tmp_ar',
                                              suffix='.tar.gz',
                                              delete=False)
                create_experiment_archive(exp, tmp_file)
            if not self.directory:
                archive_url = self.location.provider.put_archive(
                    tmp_file.name, exp)
                create_archive_record(exp, archive_url)
                if self.verbosity > 0:
                    self.stdout.write('Archived experiment %s to %s\n' %
                                      (exp.id, archive_url))
            else:
                archive_url = None
                if self.verbosity > 0:
                    self.stdout.write('Archived experiment %s to %s\n' %
                                      (exp.id, pathname))
                    
            self.transfer_count += 1
            if self.remove_all:
                remove_experiment(exp)
            elif self.remove_data:
                remove_experiment_data(exp, archive_url, location)

        except ArchivingError as e:          
            self.stderr.write(
                'archiving failed for experiment %s : %s\n' % \
                    (exp.id, e.args[0]))
            self.error_count += 1
        except TransferError as e:
            self.stderr.write(
                'archive export failed experiment %s : %s\n' % \
                    (exp.id, e.args[0]))
            self.error_count += 1
        finally:
            if tmp_file:
                os.unlink(tmp_file.name)
Esempio n. 2
0
 def testCreateExperimentArchive(self):
     datafile, replica = generate_datafile(None, self.dataset, "Hi mum")
     try:
         tmp = NamedTemporaryFile(delete=False)
         create_experiment_archive(self.experiment, tmp)
         self.assertTrue(os.path.exists(tmp.name))
         self.assertTrue(os.path.getsize(tmp.name) > 0)
         try:
             tf = tarfile.open(name=tmp.name, mode='r')
             members = tf.getmembers()
             self.assertEqual(len(members), 2) # manifest + one data file.
             self.assertEqual(members[0].name, 
                              '%s/Manifest' % self.experiment.id)
             self.assertTrue(members[0].size > 0)
             self.assertEqual(members[1].name, 
                              '%s/%s/%s' % (self.experiment.id,
                                            self.dataset.id,
                                            datafile.filename))
             self.assertEqual(members[1].size, int(datafile.size))
         finally:
             tf.close()
         
     finally:
         os.unlink(tmp.name)