From 2674e115f3436830cf70e878c3d731e8ffca21f3 Mon Sep 17 00:00:00 2001 From: Iain Learmonth Date: Fri, 22 Apr 2022 14:01:16 +0100 Subject: [PATCH] models: big refactor --- app/__init__.py | 3 +- app/alarms.py | 2 +- app/cli/db.py | 5 +- app/mirror_sites.py | 3 +- app/models.py | 250 --------------------------- app/models/__init__.py | 62 +++++++ app/models/alarms.py | 50 ++++++ app/models/base.py | 46 +++++ app/models/bridges.py | 40 +++++ app/models/mirrors.py | 53 ++++++ app/portal/__init__.py | 6 +- app/terraform/block_bridge_github.py | 2 +- app/terraform/block_external.py | 2 +- app/terraform/block_ooni.py | 3 +- app/terraform/bridge/__init__.py | 3 +- app/terraform/eotk.py | 2 +- app/terraform/list/__init__.py | 2 +- app/terraform/proxy/__init__.py | 3 +- app/terraform/proxy/azure_cdn.py | 4 +- app/terraform/proxy/cloudfront.py | 3 +- app/terraform/proxy/fastly.py | 3 +- app/terraform/proxy_check.py | 3 +- 22 files changed, 284 insertions(+), 266 deletions(-) delete mode 100644 app/models.py create mode 100644 app/models/__init__.py create mode 100644 app/models/alarms.py create mode 100644 app/models/base.py create mode 100644 app/models/bridges.py create mode 100644 app/models/mirrors.py diff --git a/app/__init__.py b/app/__init__.py index 2983958..638f147 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -6,7 +6,8 @@ from app.extensions import db from app.extensions import migrate from app.extensions import bootstrap from app.mirror_sites import mirror_sites -from app.models import Group, Origin, Proxy, Mirror +from app.models.mirrors import Origin, Proxy, Mirror +from app.models.base import Group from app.portal import portal app = Flask(__name__) diff --git a/app/alarms.py b/app/alarms.py index ee81b4f..cc15f92 100644 --- a/app/alarms.py +++ b/app/alarms.py @@ -1,7 +1,7 @@ import datetime from app.extensions import db -from app.models import Alarm +from app.models.alarms import Alarm def _get_alarm(target: str, diff --git a/app/cli/db.py b/app/cli/db.py index ed4e573..def809e 100644 --- a/app/cli/db.py +++ b/app/cli/db.py @@ -6,7 +6,10 @@ import sys from app import app from app.extensions import db -from app.models import Group, Origin, Proxy, BridgeConf, Alarm +from app.models.base import Group +from app.models.bridges import BridgeConf +from app.models.mirrors import Origin, Proxy +from app.models.alarms import Alarm models = { "group": Group, diff --git a/app/mirror_sites.py b/app/mirror_sites.py index 309ffe3..9a6faf9 100644 --- a/app/mirror_sites.py +++ b/app/mirror_sites.py @@ -1,6 +1,7 @@ from tldextract import extract -from app.models import Origin, Bridge, Proxy +from app.models.bridges import Bridge +from app.models.mirrors import Origin, Proxy def mirror_sites(): diff --git a/app/models.py b/app/models.py deleted file mode 100644 index 8a3fa7e..0000000 --- a/app/models.py +++ /dev/null @@ -1,250 +0,0 @@ -import enum -from datetime import datetime - -from app.extensions import db - - -class AbstractConfiguration(db.Model): - __abstract__ = True - - id = db.Column(db.Integer, primary_key=True) - description = db.Column(db.String(255), nullable=False) - 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) - - def destroy(self): - self.destroyed = datetime.utcnow() - self.updated = datetime.utcnow() - db.session.commit() - - @classmethod - def csv_header(self): - return [ - "id", "description", "added", "updated", "destroyed" - ] - - def csv_row(self): - return [ - getattr(self, x) for x in self.csv_header() - ] - - -class AbstractResource(db.Model): - __abstract__ = True - - id = db.Column(db.Integer, primary_key=True) - added = db.Column(db.DateTime(), default=datetime.utcnow, nullable=False) - updated = db.Column(db.DateTime(), default=datetime.utcnow, nullable=False) - deprecated = db.Column(db.DateTime(), nullable=True) - destroyed = db.Column(db.DateTime(), nullable=True) - - def deprecate(self): - self.deprecated = datetime.utcnow() - self.updated = datetime.utcnow() - db.session.commit() - - def destroy(self): - if self.deprecated is None: - self.deprecated = datetime.utcnow() - self.destroyed = datetime.utcnow() - self.updated = datetime.utcnow() - db.session.commit() - - @classmethod - def csv_header(self): - return [ - "id", "added", "updated", "deprecated", "destroyed" - ] - - def csv_row(self): - return [ - getattr(self, x) for x in self.csv_header() - ] - - def __repr__(self): - return f"<{self.__class__.__name__} #{self.id}>" - - -class Group(AbstractConfiguration): - group_name = db.Column(db.String(80), unique=True, nullable=False) - eotk = db.Column(db.Boolean()) - - origins = db.relationship("Origin", back_populates="group") - bridgeconfs = db.relationship("BridgeConf", back_populates="group") - alarms = db.relationship("Alarm", back_populates="group") - - @classmethod - def csv_header(self): - return super().csv_header() + [ - "group_name", "eotk" - ] - - def __repr__(self): - return '' % self.group_name - - -class Origin(AbstractConfiguration): - group_id = db.Column(db.Integer, db.ForeignKey("group.id"), nullable=False) - domain_name = db.Column(db.String(255), unique=True, nullable=False) - - group = db.relationship("Group", back_populates="origins") - mirrors = db.relationship("Mirror", back_populates="origin") - proxies = db.relationship("Proxy", back_populates="origin") - alarms = db.relationship("Alarm", back_populates="origin") - - @classmethod - def csv_header(self): - return super().csv_header() + [ - "group_id", "domain_name" - ] - - def destroy(self): - super().destroy() - for proxy in self.proxies: - proxy.destroy() - - def __repr__(self): - return '' % self.domain_name - - -class Proxy(AbstractResource): - origin_id = db.Column(db.Integer, db.ForeignKey("origin.id"), nullable=False) - provider = db.Column(db.String(20), nullable=False) - slug = db.Column(db.String(20), nullable=True) - terraform_updated = db.Column(db.DateTime(), nullable=True) - url = db.Column(db.String(255), nullable=True) - - origin = db.relationship("Origin", back_populates="proxies") - alarms = db.relationship("Alarm", back_populates="proxy") - - @classmethod - def csv_header(self): - return super().csv_header() + [ - "origin_id", "provider", "slug", "terraform_updated", "url" - ] - - -class Mirror(AbstractResource): - origin_id = db.Column(db.Integer, db.ForeignKey("origin.id"), nullable=False) - url = db.Column(db.String(255), unique=True, nullable=False) - - origin = db.relationship("Origin", back_populates="mirrors") - - @classmethod - def csv_header(self): - return super().csv_header() + [ - "origin_id", "url" - ] - - def __repr__(self): - return '' % (self.origin.domain_name, self.id) - - -class AlarmState(enum.Enum): - UNKNOWN = 0 - OK = 1 - WARNING = 2 - CRITICAL = 3 - - -class Alarm(db.Model): - id = db.Column(db.Integer, primary_key=True) - target = db.Column(db.String(60), nullable=False) - group_id = db.Column(db.Integer, db.ForeignKey("group.id")) - origin_id = db.Column(db.Integer, db.ForeignKey("origin.id")) - proxy_id = db.Column(db.Integer, db.ForeignKey("proxy.id")) - bridge_id = db.Column(db.Integer, db.ForeignKey("bridge.id")) - alarm_type = db.Column(db.String(255), nullable=False) - alarm_state = db.Column(db.Enum(AlarmState), default=AlarmState.UNKNOWN, nullable=False) - state_changed = db.Column(db.DateTime(), nullable=False) - last_updated = db.Column(db.DateTime()) - text = db.Column(db.String(255)) - - group = db.relationship("Group", back_populates="alarms") - origin = db.relationship("Origin", back_populates="alarms") - proxy = db.relationship("Proxy", back_populates="alarms") - bridge = db.relationship("Bridge", back_populates="alarms") - - @classmethod - def csv_header(cls): - return [ - "id", "target", "group_id", "origin_id", "proxy_id", "bridge_id", "alarm_type", - "alarm_state", "state_changed", "last_updated", "text" - ] - - def csv_row(self): - return [ - self[x] for x in self.csv_header() - ] - - def update_state(self, state: AlarmState, text: str): - if self.alarm_state != state or self.state_changed is None: - self.state_changed = datetime.utcnow() - self.alarm_state = state - self.text = text - self.last_updated = datetime.utcnow() - db.session.commit() - - -class BridgeConf(db.Model): - id = db.Column(db.Integer, primary_key=True) - 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") - - def destroy(self): - self.destroyed = datetime.utcnow() - self.updated = datetime.utcnow() - for bridge in self.bridges: - if bridge.destroyed is None: - bridge.destroyed = datetime.utcnow() - bridge.updated = datetime.utcnow() - db.session.commit() - - -class Bridge(AbstractResource): - conf_id = db.Column(db.Integer, db.ForeignKey("bridge_conf.id"), nullable=False) - terraform_updated = db.Column(db.DateTime(), nullable=True) - nickname = db.Column(db.String(255), nullable=True) - fingerprint = db.Column(db.String(255), nullable=True) - hashed_fingerprint = db.Column(db.String(255), nullable=True) - bridgeline = db.Column(db.String(255), nullable=True) - - conf = db.relationship("BridgeConf", back_populates="bridges") - alarms = db.relationship("Alarm", back_populates="bridge") - - -class MirrorList(db.Model): - id = db.Column(db.Integer, primary_key=True) - provider = db.Column(db.String(255), nullable=False) - description = db.Column(db.String(255), nullable=False) - format = db.Column(db.String(20), nullable=False) - container = db.Column(db.String(255), nullable=False) - branch = db.Column(db.String(255), nullable=False) - filename = db.Column(db.String(255), nullable=False) - added = db.Column(db.DateTime(), default=datetime.utcnow, nullable=False) - updated = db.Column(db.DateTime(), default=datetime.utcnow, nullable=False) - deprecated = db.Column(db.DateTime(), nullable=True) - destroyed = db.Column(db.DateTime(), nullable=True) - - def destroy(self): - self.destroyed = datetime.utcnow() - self.updated = datetime.utcnow() - db.session.commit() - - def url(self): - if self.provider == "gitlab": - return f"https://gitlab.com/{self.container}/-/raw/{self.branch}/{self.filename}" - if self.provider == "github": - return f"https://raw.githubusercontent.com/{self.container}/{self.branch}/{self.filename}" - if self.provider == "s3": - return f"s3://{self.container}/{self.filename}" diff --git a/app/models/__init__.py b/app/models/__init__.py new file mode 100644 index 0000000..360266b --- /dev/null +++ b/app/models/__init__.py @@ -0,0 +1,62 @@ +from datetime import datetime + +from app.extensions import db + + +class AbstractConfiguration(db.Model): + __abstract__ = True + + id = db.Column(db.Integer, primary_key=True) + description = db.Column(db.String(255), nullable=False) + 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) + + def destroy(self): + self.destroyed = datetime.utcnow() + self.updated = datetime.utcnow() + db.session.commit() + + @classmethod + def csv_header(self): + return [ + "id", "description", "added", "updated", "destroyed" + ] + + def csv_row(self): + return [ + getattr(self, x) for x in self.csv_header() + ] + + +class AbstractResource(db.Model): + __abstract__ = True + + id = db.Column(db.Integer, primary_key=True) + added = db.Column(db.DateTime(), default=datetime.utcnow, nullable=False) + updated = db.Column(db.DateTime(), default=datetime.utcnow, nullable=False) + deprecated = db.Column(db.DateTime(), nullable=True) + destroyed = db.Column(db.DateTime(), nullable=True) + + def deprecate(self): + self.deprecated = datetime.utcnow() + self.updated = datetime.utcnow() + db.session.commit() + + def destroy(self): + if self.deprecated is None: + self.deprecated = datetime.utcnow() + self.destroyed = datetime.utcnow() + self.updated = datetime.utcnow() + db.session.commit() + + @classmethod + def csv_header(self): + return [ + "id", "added", "updated", "deprecated", "destroyed" + ] + + def csv_row(self): + return [ + getattr(self, x) for x in self.csv_header() + ] diff --git a/app/models/alarms.py b/app/models/alarms.py new file mode 100644 index 0000000..bd84387 --- /dev/null +++ b/app/models/alarms.py @@ -0,0 +1,50 @@ +import enum +from datetime import datetime + +from app import db + + +class AlarmState(enum.Enum): + UNKNOWN = 0 + OK = 1 + WARNING = 2 + CRITICAL = 3 + + +class Alarm(db.Model): + id = db.Column(db.Integer, primary_key=True) + target = db.Column(db.String(60), nullable=False) + group_id = db.Column(db.Integer, db.ForeignKey("group.id")) + origin_id = db.Column(db.Integer, db.ForeignKey("origin.id")) + proxy_id = db.Column(db.Integer, db.ForeignKey("proxy.id")) + bridge_id = db.Column(db.Integer, db.ForeignKey("bridge.id")) + alarm_type = db.Column(db.String(255), nullable=False) + alarm_state = db.Column(db.Enum(AlarmState), default=AlarmState.UNKNOWN, nullable=False) + state_changed = db.Column(db.DateTime(), nullable=False) + last_updated = db.Column(db.DateTime()) + text = db.Column(db.String(255)) + + group = db.relationship("Group", back_populates="alarms") + origin = db.relationship("Origin", back_populates="alarms") + proxy = db.relationship("Proxy", back_populates="alarms") + bridge = db.relationship("Bridge", back_populates="alarms") + + @classmethod + def csv_header(cls): + return [ + "id", "target", "group_id", "origin_id", "proxy_id", "bridge_id", "alarm_type", + "alarm_state", "state_changed", "last_updated", "text" + ] + + def csv_row(self): + return [ + self[x] for x in self.csv_header() + ] + + def update_state(self, state: AlarmState, text: str): + if self.alarm_state != state or self.state_changed is None: + self.state_changed = datetime.utcnow() + self.alarm_state = state + self.text = text + self.last_updated = datetime.utcnow() + db.session.commit() diff --git a/app/models/base.py b/app/models/base.py new file mode 100644 index 0000000..2e95f93 --- /dev/null +++ b/app/models/base.py @@ -0,0 +1,46 @@ +from datetime import datetime + +from app import db +from app.models import AbstractConfiguration + + +class Group(AbstractConfiguration): + group_name = db.Column(db.String(80), unique=True, nullable=False) + eotk = db.Column(db.Boolean()) + + origins = db.relationship("Origin", back_populates="group") + bridgeconfs = db.relationship("BridgeConf", back_populates="group") + alarms = db.relationship("Alarm", back_populates="group") + + @classmethod + def csv_header(self): + return super().csv_header() + [ + "group_name", "eotk" + ] + + +class MirrorList(AbstractConfiguration): + provider = db.Column(db.String(255), nullable=False) + format = db.Column(db.String(20), nullable=False) + container = db.Column(db.String(255), nullable=False) + branch = db.Column(db.String(255), nullable=False) + filename = db.Column(db.String(255), nullable=False) + + def destroy(self): + self.destroyed = datetime.utcnow() + self.updated = datetime.utcnow() + db.session.commit() + + def url(self): + if self.provider == "gitlab": + return f"https://gitlab.com/{self.container}/-/raw/{self.branch}/{self.filename}" + if self.provider == "github": + return f"https://raw.githubusercontent.com/{self.container}/{self.branch}/{self.filename}" + if self.provider == "s3": + return f"s3://{self.container}/{self.filename}" + + @classmethod + def csv_header(self): + return super().csv_header() + [ + "provider", "format", "container", "branch", "filename" + ] diff --git a/app/models/bridges.py b/app/models/bridges.py new file mode 100644 index 0000000..aff7f24 --- /dev/null +++ b/app/models/bridges.py @@ -0,0 +1,40 @@ +from datetime import datetime + +from app import db +from app.models import AbstractResource + + +class BridgeConf(db.Model): + id = db.Column(db.Integer, primary_key=True) + 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") + + def destroy(self): + self.destroyed = datetime.utcnow() + self.updated = datetime.utcnow() + for bridge in self.bridges: + if bridge.destroyed is None: + bridge.destroyed = datetime.utcnow() + bridge.updated = datetime.utcnow() + db.session.commit() + + +class Bridge(AbstractResource): + conf_id = db.Column(db.Integer, db.ForeignKey("bridge_conf.id"), nullable=False) + terraform_updated = db.Column(db.DateTime(), nullable=True) + nickname = db.Column(db.String(255), nullable=True) + fingerprint = db.Column(db.String(255), nullable=True) + hashed_fingerprint = db.Column(db.String(255), nullable=True) + bridgeline = db.Column(db.String(255), nullable=True) + + conf = db.relationship("BridgeConf", back_populates="bridges") + alarms = db.relationship("Alarm", back_populates="bridge") diff --git a/app/models/mirrors.py b/app/models/mirrors.py new file mode 100644 index 0000000..62b7f34 --- /dev/null +++ b/app/models/mirrors.py @@ -0,0 +1,53 @@ +from app import db +from app.models import AbstractConfiguration, AbstractResource + + +class Origin(AbstractConfiguration): + group_id = db.Column(db.Integer, db.ForeignKey("group.id"), nullable=False) + domain_name = db.Column(db.String(255), unique=True, nullable=False) + + group = db.relationship("Group", back_populates="origins") + mirrors = db.relationship("Mirror", back_populates="origin") + proxies = db.relationship("Proxy", back_populates="origin") + alarms = db.relationship("Alarm", back_populates="origin") + + @classmethod + def csv_header(self): + return super().csv_header() + [ + "group_id", "domain_name" + ] + + def destroy(self): + super().destroy() + for proxy in self.proxies: + proxy.destroy() + + +class Proxy(AbstractResource): + origin_id = db.Column(db.Integer, db.ForeignKey("origin.id"), nullable=False) + provider = db.Column(db.String(20), nullable=False) + slug = db.Column(db.String(20), nullable=True) + terraform_updated = db.Column(db.DateTime(), nullable=True) + url = db.Column(db.String(255), nullable=True) + + origin = db.relationship("Origin", back_populates="proxies") + alarms = db.relationship("Alarm", back_populates="proxy") + + @classmethod + def csv_header(self): + return super().csv_header() + [ + "origin_id", "provider", "slug", "terraform_updated", "url" + ] + + +class Mirror(AbstractResource): + origin_id = db.Column(db.Integer, db.ForeignKey("origin.id"), nullable=False) + url = db.Column(db.String(255), unique=True, nullable=False) + + origin = db.relationship("Origin", back_populates="mirrors") + + @classmethod + def csv_header(self): + return super().csv_header() + [ + "origin_id", "url" + ] diff --git a/app/portal/__init__.py b/app/portal/__init__.py index 2937924..ad50ea8 100644 --- a/app/portal/__init__.py +++ b/app/portal/__init__.py @@ -4,7 +4,11 @@ from flask import Blueprint, render_template, Response, flash, redirect, url_for from sqlalchemy import exc, desc, or_ from app.extensions import db -from app.models import Group, Origin, Proxy, Alarm, BridgeConf, Bridge, MirrorList, AbstractResource +from app.models import AbstractResource +from app.models.bridges import BridgeConf, Bridge +from app.models.alarms import Alarm +from app import Origin, Proxy +from app.models.base import Group, MirrorList from app.portal.forms import EditGroupForm, NewGroupForm, NewOriginForm, EditOriginForm, LifecycleForm, \ NewBridgeConfForm, EditBridgeConfForm, NewMirrorListForm diff --git a/app/terraform/block_bridge_github.py b/app/terraform/block_bridge_github.py index c2fd8ed..a9bc98d 100644 --- a/app/terraform/block_bridge_github.py +++ b/app/terraform/block_bridge_github.py @@ -4,7 +4,7 @@ from dateutil.parser import isoparse from github import Github from app import app -from app.models import Bridge +from app.models.bridges import Bridge def check_blocks(): diff --git a/app/terraform/block_external.py b/app/terraform/block_external.py index b94d857..26aa3aa 100644 --- a/app/terraform/block_external.py +++ b/app/terraform/block_external.py @@ -2,7 +2,7 @@ from bs4 import BeautifulSoup import requests from app import app -from app.models import Proxy +from app.models.mirrors import Proxy def check_blocks(): diff --git a/app/terraform/block_ooni.py b/app/terraform/block_ooni.py index b1d3834..7beacea 100644 --- a/app/terraform/block_ooni.py +++ b/app/terraform/block_ooni.py @@ -7,7 +7,8 @@ import requests from app import app from app.extensions import db -from app.models import Origin, AlarmState, Alarm +from app.models.alarms import Alarm, AlarmState +from app.models.mirrors import Proxy def check_origin(domain_name: str): diff --git a/app/terraform/bridge/__init__.py b/app/terraform/bridge/__init__.py index 5c15de5..6d579cf 100644 --- a/app/terraform/bridge/__init__.py +++ b/app/terraform/bridge/__init__.py @@ -2,7 +2,8 @@ import datetime from app import app from app.extensions import db -from app.models import BridgeConf, Bridge, Group +from app.models.bridges import BridgeConf, Bridge +from app.models.base import Group from app.terraform import BaseAutomation diff --git a/app/terraform/eotk.py b/app/terraform/eotk.py index afd676c..63d15ce 100644 --- a/app/terraform/eotk.py +++ b/app/terraform/eotk.py @@ -1,5 +1,5 @@ from app import app -from app.models import Group +from app.models.base import Group from app.terraform import BaseAutomation diff --git a/app/terraform/list/__init__.py b/app/terraform/list/__init__.py index d465cee..f6950a8 100644 --- a/app/terraform/list/__init__.py +++ b/app/terraform/list/__init__.py @@ -2,7 +2,7 @@ import json from app import app from app.mirror_sites import bridgelines, mirror_sites, mirror_mapping -from app.models import MirrorList +from app.models.base import MirrorList from app.terraform import BaseAutomation diff --git a/app/terraform/proxy/__init__.py b/app/terraform/proxy/__init__.py index a072815..a26ab6c 100644 --- a/app/terraform/proxy/__init__.py +++ b/app/terraform/proxy/__init__.py @@ -2,7 +2,8 @@ import datetime from app import app from app.extensions import db -from app.models import Group, Origin, Proxy +from app.models.base import Group +from app.models.mirrors import Origin, Proxy from app.terraform import BaseAutomation diff --git a/app/terraform/proxy/azure_cdn.py b/app/terraform/proxy/azure_cdn.py index 52ea805..06308bd 100644 --- a/app/terraform/proxy/azure_cdn.py +++ b/app/terraform/proxy/azure_cdn.py @@ -9,7 +9,9 @@ import tldextract from app import app from app.alarms import get_proxy_alarm from app.extensions import db -from app.models import Group, Proxy, Alarm, AlarmState +from app.models.base import Group +from app.models.mirrors import Proxy +from app.models.alarms import AlarmState from app.terraform.proxy import ProxyAutomation diff --git a/app/terraform/proxy/cloudfront.py b/app/terraform/proxy/cloudfront.py index 401d8b2..704e853 100644 --- a/app/terraform/proxy/cloudfront.py +++ b/app/terraform/proxy/cloudfront.py @@ -8,7 +8,8 @@ import boto3 from app import app from app.alarms import get_proxy_alarm from app.extensions import db -from app.models import Proxy, Alarm, AlarmState +from app.models.alarms import Alarm, AlarmState +from app.models.mirrors import Proxy from app.terraform.proxy import ProxyAutomation diff --git a/app/terraform/proxy/fastly.py b/app/terraform/proxy/fastly.py index 0437b0f..91cecb9 100644 --- a/app/terraform/proxy/fastly.py +++ b/app/terraform/proxy/fastly.py @@ -8,7 +8,8 @@ import tldextract from app import app from app.extensions import db -from app.models import Group, Origin, Proxy +from app.models.base import Group +from app.models.mirrors import Origin, Proxy TEMPLATE = """ terraform { diff --git a/app/terraform/proxy_check.py b/app/terraform/proxy_check.py index d3b788b..e72b1ae 100644 --- a/app/terraform/proxy_check.py +++ b/app/terraform/proxy_check.py @@ -2,7 +2,8 @@ import requests from app import app from app.extensions import db -from app.models import AlarmState, Alarm, Proxy +from app.models.alarms import Alarm, AlarmState +from app.models.mirrors import Proxy def set_http_alarm(proxy_id: int, state: AlarmState, text: str):