brn: Introduce BRN as a class

This commit is contained in:
Iain Learmonth 2022-06-15 11:50:15 +01:00
parent 8c411e39bc
commit a0da4d4641
8 changed files with 116 additions and 9 deletions

View file

@ -3,6 +3,7 @@ from datetime import datetime
from typing import Union, List, Optional, Any
from app.alarms import alarms_for
from app.brm.brn import BRN
from app.extensions import db
from app.models.alarms import Alarm
@ -73,7 +74,7 @@ class AbstractResource(db.Model): # type: ignore
@property
@abstractmethod
def brn(self) -> str:
def brn(self) -> BRN:
raise NotImplementedError()
def deprecate(self, *, reason: str) -> None:

View file

@ -3,6 +3,7 @@ from typing import Optional, List
from flask import current_app
from tldextract import extract
from app.brm.brn import BRN
from app.extensions import db
from app.models import AbstractConfiguration, AbstractResource
from app.models.onions import Onion
@ -53,8 +54,14 @@ class Proxy(AbstractResource):
origin = db.relationship("Origin", back_populates="proxies")
@property
def brn(self) -> str:
return f"brn:{current_app.config['GLOBAL_NAMESPACE']}:{self.origin.group_id}:mirror:{self.provider}:proxy/{self.id}"
def brn(self) -> BRN:
return BRN(
group_id=self.origin.group_id,
product="mirror",
provider=self.provider,
resource_type="proxy",
resource_id=self.id
)
@classmethod
def csv_header(cls) -> List[str]:
@ -72,5 +79,11 @@ class SmartProxy(AbstractResource):
group = db.relationship("Group", back_populates="smart_proxies")
@property
def brn(self) -> str:
return f"brn:{current_app.config['GLOBAL_NAMESPACE']}:{self.group_id}:mirror:{self.provider}:smart-proxy/1"
def brn(self) -> BRN:
return BRN(
group_id=self.group_id,
product="mirror",
provider=self.provider,
resource_type="smart_proxy",
resource_id=str(1)
)

View file

@ -1,5 +1,4 @@
from flask import current_app
from app.brm.brn import BRN
from app.extensions import db
from app.models import AbstractConfiguration, AbstractResource
@ -21,5 +20,11 @@ class Eotk(AbstractResource):
group = db.relationship("Group", back_populates="eotks")
@property
def brn(self) -> str:
return f"brn:{current_app.config['GLOBAL_NAMESPACE']}:{self.group_id}:eotk:{self.provider}:instance/{self.region}"
def brn(self) -> BRN:
return BRN(
group_id=self.group_id,
provider=self.provider,
product="eotk",
resource_type="instance",
resource_id=self.region
)