Change buildlogsarchiver to use a data interface

This commit is contained in:
Joseph Schorr 2017-07-11 15:33:28 +03:00
parent b7a2a4390b
commit 8ba71f7a45
4 changed files with 76 additions and 12 deletions

View file

@ -1,13 +1,13 @@
import logging
from tempfile import SpooledTemporaryFile
from gzip import GzipFile
from tempfile import SpooledTemporaryFile
from data import model
from app import build_logs, log_archive, app
from data.archivedlogs import JSON_MIMETYPE
from data.database import CloseForLongOperation
from app import build_logs, log_archive, app
from util.streamingjsonencoder import StreamingJSONEncoder
from workers.buildlogsarchiver.models_pre_oci import pre_oci_model as model
from workers.worker import Worker
POLL_PERIOD_SECONDS = 30
@ -25,7 +25,7 @@ class ArchiveBuildLogsWorker(Worker):
""" Archive a single build, choosing a candidate at random. This process must be idempotent to
avoid needing two-phase commit. """
# Get a random build to archive
to_archive = model.build.get_archivable_build()
to_archive = model.get_archivable_build()
if to_archive is None:
logger.debug('No more builds to archive')
return
@ -50,7 +50,7 @@ class ArchiveBuildLogsWorker(Worker):
log_archive.store_file(tempfile, JSON_MIMETYPE, content_encoding='gzip',
file_id=to_archive.uuid)
we_updated = model.build.mark_build_archived(to_archive.uuid)
we_updated = model.mark_build_archived(to_archive.uuid)
if we_updated:
build_logs.expire_status(to_archive.uuid)
build_logs.delete_log_entries(to_archive.uuid)