bridge: convert bridges to resources

This commit is contained in:
Iain Learmonth 2022-05-06 12:28:11 +01:00
parent 8efb7d9186
commit 229c91238b
3 changed files with 28 additions and 17 deletions

View file

@ -7,12 +7,13 @@ import sys
from app import app
from app.extensions import db
from app.models.base import Group, MirrorList
from app.models.bridges import BridgeConf
from app.models.bridges import Bridge, BridgeConf
from app.models.mirrors import Mirror, Origin, Proxy
from app.models.alarms import Alarm, AlarmState
models = {
"bridge": BridgeConf,
"bridge": Bridge,
"bridgeconf": BridgeConf,
"alarm": Alarm,
"group": Group,
"list": MirrorList,

View file

@ -1,5 +1,5 @@
import builtins
from typing import List
from typing import List, Iterable
from pydantic import BaseModel, Field
@ -26,15 +26,18 @@ class Bridgelines(BaseModel):
title = "Bridgelines Version 1"
def bridgelines():
def bridgelines(*, distribution_method: str = None):
bridges: Iterable[Bridge] = Bridge.query.filter(
Bridge.destroyed == None,
Bridge.deprecated == None,
Bridge.bridgeline != None
).all()
if distribution_method is not None:
bridges = [b for b in bridges
if b.conf.distribution_method == distribution_method]
return Bridgelines(
version="1.0",
bridgelines=[
b.bridgeline for b in Bridge.query.filter(
Bridge.destroyed == None,
Bridge.bridgeline != None
)
]
bridgelines=[b.bridgeline for b in bridges]
).dict()

View file

@ -1,19 +1,15 @@
from datetime import datetime
from app import db
from app.models import AbstractResource
from app.models import AbstractConfiguration, AbstractResource
class BridgeConf(db.Model):
id = db.Column(db.Integer, primary_key=True)
class BridgeConf(AbstractConfiguration):
group_id = db.Column(db.Integer, db.ForeignKey("group.id"), nullable=False)
provider = db.Column(db.String(20), nullable=False)
method = db.Column(db.String(20), nullable=False)
description = db.Column(db.String(255))
number = db.Column(db.Integer())
added = db.Column(db.DateTime(), default=datetime.utcnow, nullable=False)
updated = db.Column(db.DateTime(), default=datetime.utcnow, nullable=False)
destroyed = db.Column(db.DateTime(), nullable=True)
group = db.relationship("Group", back_populates="bridgeconfs")
bridges = db.relationship("Bridge", back_populates="conf")
@ -25,7 +21,12 @@ class BridgeConf(db.Model):
if bridge.destroyed is None:
bridge.destroyed = datetime.utcnow()
bridge.updated = datetime.utcnow()
db.session.commit()
@classmethod
def csv_header(cls):
return super().csv_header() + [
"group_id", "provider", "method", "description", "number"
]
class Bridge(AbstractResource):
@ -38,3 +39,9 @@ class Bridge(AbstractResource):
conf = db.relationship("BridgeConf", back_populates="bridges")
alarms = db.relationship("Alarm", back_populates="bridge")
@classmethod
def csv_header(cls):
return super().csv_header() + [
"conf_id", "terraform_updated", "nickname", "fingerprint", "hashed_fingerprint", "bridgeline"
]