Esempio n. 1
0
def clean_queue(msg: str) -> str:
    db = SessionLocal()
    print("In clear_queue()")
    counter = 0
    timeout = datetime.datetime.utcnow() - datetime.timedelta(minutes=15)
    old_queue = db.query(Queue).filter(Queue.pending == True).\
        filter(Queue.arrival_time <= timeout).filter(Queue.in_progress == False)
    for row in old_queue:
        print(f"Timing out queue entry {row.uuid}")
        stat_queue = Statistics(uuid=row.uuid,
                                arrival_time=row.arrival_time,
                                dequeued_at=row.dequeued_at,
                                deleted_at=datetime.datetime.utcnow(),
                                purged=True)
        db.add(stat_queue)
        counter += 1
        db.delete(row)
    timeout = datetime.datetime.utcnow() - datetime.timedelta(minutes=60 * 24)
    very_old_queue = db.query(Queue).filter(Queue.arrival_time <= timeout)
    for row in very_old_queue:
        print(f"Timing out queue entry {row.uuid}")
        stat_queue = Statistics(uuid=row.uuid,
                                arrival_time=row.arrival_time,
                                dequeued_at=row.dequeued_at,
                                deleted_at=datetime.datetime.utcnow(),
                                purged=True)
        db.add(stat_queue)
        counter += 1
        db.delete(row)
    db.commit()
    return f"Queue cleaned, {counter} entries removed."
Esempio n. 2
0
def forward_rule_status_handler(port_id: int, status_data: dict,
                                update_status: bool):
    if not update_status:
        return status_data
    db = SessionLocal()
    rule = (db.query(PortForwardRule).filter(
        PortForwardRule.port_id == port_id).first())
    if rule:
        if (status_data.get("status", None) == "starting"
                and rule.status == "running"):
            return status_data
        rule.status = status_data.get("status", None)
        db.add(rule)
        db.commit()
    return status_data