Newer
Older
from orchestrator.db import (
ProductTable,
ResourceTypeTable,
SubscriptionInstanceTable,
SubscriptionInstanceValueTable,
SubscriptionTable,
)
from gso.products.product_types.site import Site
def get_site_by_name(site_name: str) -> Site:
"""Get a site by its name.
Args:
----
site_name (str): The name of the site.
"""
subscription = (
SubscriptionTable.query.join(
ProductTable, SubscriptionInstanceTable, SubscriptionInstanceValueTable, ResourceTypeTable
)
.filter(SubscriptionInstanceValueTable.value == site_name)
.filter(ResourceTypeTable.resource_type == "site_name")
.filter(SubscriptionTable.status == "active")
.first()
)
if not subscription:
raise ValueError(f"Site with name {site_name} not found.")
return Site.from_subscription(subscription.subscription_id)