feat(static): adds new static origins feature
This commit is contained in:
parent
6a29d68985
commit
15a85b1efe
20 changed files with 843 additions and 7 deletions
77
app/brm/static.py
Normal file
77
app/brm/static.py
Normal file
|
@ -0,0 +1,77 @@
|
|||
from typing import Optional, Union
|
||||
|
||||
from werkzeug.datastructures import FileStorage
|
||||
|
||||
from app.extensions import db
|
||||
from app.models.base import Group
|
||||
from app.models.cloud import CloudAccount
|
||||
from app.models.mirrors import StaticOrigin
|
||||
|
||||
|
||||
def create_static_origin(
|
||||
description: str,
|
||||
group_id: int,
|
||||
storage_cloud_account_id: int,
|
||||
source_cloud_account_id: int,
|
||||
source_project: str,
|
||||
auto_rotate: bool,
|
||||
matrix_homeserver: Optional[str],
|
||||
keanu_convene_path: Optional[str],
|
||||
keanu_convene_logo: Optional[FileStorage],
|
||||
keanu_convene_color: Optional[str],
|
||||
clean_insights_backend: Optional[Union[str, bool]],
|
||||
db_session_commit: bool = False,
|
||||
) -> StaticOrigin:
|
||||
"""
|
||||
Create a new static origin.
|
||||
|
||||
:param description: The description of the new static origin.
|
||||
:param group_id: The ID for the origin group to add this new static origin to.
|
||||
:param storage_cloud_account_id: The ID for the cloud account to deploy this new static origin to.
|
||||
:param source_cloud_account_id: The ID for the cloud account used to interact with the web sources.
|
||||
:param source_project: The path for the source project, e.g. the GitLab project path.
|
||||
:param auto_rotate: Whether to automatically rotate this domain when it is detected to be blocked.
|
||||
:param matrix_homeserver: The domain name for the Matrix homeserver to proxy to.
|
||||
:param keanu_convene_path: The path to serve the Keanu Convene application from.
|
||||
:param clean_insights_backend: The domain name for the Clean Insights backend to proxy to.
|
||||
:param db_session_commit: Whether to add the new StaticOrigin to the database session and commit it.
|
||||
:returns: StaticOrigin -- the newly created StaticOrigin
|
||||
:raises: ValueError, sqlalchemy.exc.SQLAlchemyError
|
||||
"""
|
||||
static_origin = StaticOrigin()
|
||||
if isinstance(group_id, int):
|
||||
group = Group.query.filter(Group.id == group_id).first()
|
||||
if group is None:
|
||||
raise ValueError("group_id must match an existing group")
|
||||
static_origin.group_id = group_id
|
||||
else:
|
||||
raise ValueError("group_id must be an int")
|
||||
if isinstance(storage_cloud_account_id, int):
|
||||
cloud_account = CloudAccount.query.filter(CloudAccount.id == storage_cloud_account_id).first()
|
||||
if cloud_account is None:
|
||||
raise ValueError("storage_cloud_account_id must match an existing provider")
|
||||
static_origin.storage_cloud_account_id = storage_cloud_account_id
|
||||
else:
|
||||
raise ValueError("storage_cloud_account_id must be an int")
|
||||
if isinstance(source_cloud_account_id, int):
|
||||
cloud_account = CloudAccount.query.filter(CloudAccount.id == source_cloud_account_id).first()
|
||||
if cloud_account is None:
|
||||
raise ValueError("source_cloud_account_id must match an existing provider")
|
||||
static_origin.source_cloud_account_id = source_cloud_account_id
|
||||
else:
|
||||
raise ValueError("source_cloud_account_id must be an int")
|
||||
static_origin.update(
|
||||
source_project,
|
||||
description,
|
||||
auto_rotate,
|
||||
matrix_homeserver,
|
||||
keanu_convene_path,
|
||||
keanu_convene_logo,
|
||||
keanu_convene_color,
|
||||
clean_insights_backend,
|
||||
False
|
||||
)
|
||||
if db_session_commit:
|
||||
db.session.add(static_origin)
|
||||
db.session.commit()
|
||||
return static_origin
|
Loading…
Add table
Add a link
Reference in a new issue