예제 #1
0
    def test_load_meta(self):
        """Test sucking metadata from uploader and configuring it in a dictionary suitable to blob to meta ingest."""
        tar = open_tar('test_data/good.tar')

        meta = MetaParser()
        meta.load_meta(tar, 1)
        self.assertTrue(meta)
예제 #2
0
    def test_post_metadata(self):
        """Test sucking metadata from uploader and configuring it in a dictionary suitable to blob to meta ingest."""
        tar = open_tar('test_data/baby.tar')

        meta = MetaParser()
        meta.load_meta(tar)
        success = meta.post_metadata()

        assert(success)
예제 #3
0
def ingest_metadata_parser(job_id, tar):
    """Ingest the metadata and set the state appropriately."""
    update_state(job_id, 'OK', 'load metadata', 0)
    meta = MetaParser()
    try:
        meta.load_meta(tar, job_id)
    # pylint: disable=broad-except
    except Exception as ex:
        update_state(job_id, 'FAILED', 'load metadata', 0, str(ex))
        raise IngestException()
    update_state(job_id, 'OK', 'load metadata', 100)
    return meta
예제 #4
0
    def test_down_metadata(self):
        """Test a failed upload of the metadata."""
        tar = open_tar('test_data/good.tar')
        meta = MetaParser()

        def bad_put(*args, **kwargs):  # pylint: disable=unused-argument
            """bad put to the metadata server."""
            raise requests.HTTPError()
        meta.session.put = bad_put
        meta.load_meta(tar, 1)
        success, exception = meta.post_metadata()
        self.assertFalse(success)
        self.assertTrue(exception)
예제 #5
0
    def test_ingest_tar(self):
        """Test moving individual files to the archive files are validated inline with the upload."""
        tar = open_tar('test_data/baby.tar')
        meta = MetaParser()
        meta.load_meta(tar)

        ingest = TarIngester(tar, meta)
        # validate archive process

        # if not valid:
        #     rollback()
        # success = MetaUpload()
        ingest.ingest()
예제 #6
0
    def test_ingest_tar(self):
        """Test moving individual files to the archive files are validated inline with the upload."""
        tar = open_tar('test_data/good.tar')
        meta = MetaParser()
        meta.load_meta(tar, 1)

        tingest = TarIngester(tar, meta)
        # validate archive process

        # if not valid:
        #     rollback()
        # success = MetaUpload()
        tingest.ingest()
        self.assertTrue(tingest)
예제 #7
0
 def test_post_metadata(self):
     """Test sucking metadata from uploader and configuring it in a dictionary suitable to blob to meta ingest."""
     tar = open_tar('test_data/good.tar')
     meta = MetaParser()
     meta.load_meta(tar, 1)
     success, exception = meta.post_metadata()
     self.assertTrue(success)
     self.assertFalse(exception)
     tar = open_tar('test_data/bad-mimetype.tar')
     meta = MetaParser()
     meta.load_meta(tar, 2)
     success, exception = meta.post_metadata()
     self.assertFalse(success)
     self.assertTrue(exception)
예제 #8
0
def ingest(job_id, filepath):
    """Ingest a tar bundle into the archive."""

    update_state(job_id, 'OK', 'Open tar', 0)
    tar = open_tar(filepath)
    update_state(job_id, 'OK', 'Open tar', 100)

    update_state(job_id, 'OK', 'load metadata', 0)
    meta = MetaParser()
    meta.load_meta(tar)
    update_state(job_id, 'OK', 'load metadata', 100)

    ingest = TarIngester(tar, meta)

    # validate policy
    success = validate_meta (meta.meta_str)
    if not success:
        update_state(job_id, 'FAILED', 'Policy Validation', 0)
        return
    update_state(job_id, 'OK', 'Policy Validation', 100)

    update_state(job_id, 'OK', 'ingest files', 0)
    success = ingest.ingest()
    if not success:
        #rollback files
        update_state(job_id, 'FAILED', 'ingest files', 0)
        return
    update_state(job_id, 'OK', 'ingest files', 100)

    update_state(job_id, 'OK', 'ingest metadata', 0)
    success = meta.post_metadata()
    if not success:
        #rollback files
        update_state(job_id, 'FAILED', 'ingest metadata', 0)
        return
    update_state(job_id, 'OK', 'ingest metadata', 100)