from .. import db
from ..models import Corpus, Job
import docker


docker_client = docker.from_env()
from . import corpus_utils, job_utils  # noqa


def check_corpora():
    corpora = Corpus.query.all()
    for corpus in filter(lambda corpus: corpus.status == 'submitted', corpora):
        corpus_utils.create_build_corpus_service(corpus)
    for corpus in filter(lambda corpus: corpus.status in ['queued', 'running'], corpora):  # noqa
        corpus_utils.checkout_build_corpus_service(corpus)
    for corpus in filter(lambda corpus: corpus.status == 'start analysis', corpora):  # noqa
        corpus_utils.create_cqpserver_container(corpus)
    for corpus in filter(lambda corpus: corpus.status == 'stop analysis', corpora):  # noqa
        corpus_utils.remove_cqpserver_container(corpus)
    db.session.commit()


def check_jobs():
    jobs = Job.query.all()
    for job in filter(lambda job: job.status == 'submitted', jobs):
        job_utils.create_job_service(job)
    for job in filter(lambda job: job.status in ['queued', 'running'], jobs):
        job_utils.checkout_job_service(job)
    for job in filter(lambda job: job.status == 'canceling', jobs):
        job_utils.remove_job_service(job)
    db.session.commit()