Compare commits

..

4 Commits

Author SHA1 Message Date
7045f945c8 Fixed bug in validate schema
All checks were successful
checks-impure / test (pull_request) Successful in 26s
checks / test (pull_request) Successful in 3m17s
2024-01-14 15:57:30 +01:00
44797a0bc3 Get entity by did or name 2024-01-14 15:28:46 +01:00
52987625c8 Added AP get repository 2024-01-14 15:28:46 +01:00
8a3a593cc0 Merge pull request 'backend: Fully working roles field. Added get_entity_by_roles' (#50) from Qubasa-main into main
All checks were successful
checks-impure / test (push) Successful in 25s
checks / test (push) Successful in 1m18s
assets1 / test (push) Successful in 21s
2024-01-14 13:57:43 +01:00
4 changed files with 25 additions and 17 deletions

View File

@@ -0,0 +1,13 @@
from enum import Enum
class Status(Enum):
ONLINE = "online"
OFFLINE = "offline"
UNKNOWN = "unknown"
class Role(Enum):
PROSUMER = "service_prosumer"
AP = "AP"
DLG = "DLG"

View File

@@ -231,6 +231,8 @@ def get_rpc_by_role(db: Session, role: Role, path: str) -> Any:
raise ClanError(f"No {role} found") raise ClanError(f"No {role} found")
if len(matching_entities) > 1: if len(matching_entities) > 1:
raise ClanError(f"More than one {role} found") raise ClanError(f"More than one {role} found")
if len(matching_entities) == 0:
raise ClanError(f"No {role} found")
dlg = matching_entities[0] dlg = matching_entities[0]
url = f"http://{dlg.ip}/{path}" url = f"http://{dlg.ip}/{path}"
@@ -305,7 +307,6 @@ def get_all_eventmessages(
# # # #
############################## ##############################
@router.get("/emulate", response_class=HTMLResponse) @router.get("/emulate", response_class=HTMLResponse)
@router.get("/emu", response_class=HTMLResponse)
def get_emulated_enpoints() -> HTMLResponse: def get_emulated_enpoints() -> HTMLResponse:
from clan_cli.config import ap_url, c1_url, c2_url, dlg_url from clan_cli.config import ap_url, c1_url, c2_url, dlg_url

View File

@@ -1,25 +1,15 @@
import logging import logging
from datetime import datetime from datetime import datetime
from enum import Enum
from typing import List from typing import List
from pydantic import BaseModel, Field, validator from pydantic import BaseModel, Field, validator
from . import sql_models
from .db_types import Role, Status
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
class Status(Enum):
ONLINE = "online"
OFFLINE = "offline"
UNKNOWN = "unknown"
class Role(Enum):
PROSUMER = "service_prosumer"
AP = "AP"
DLG = "DLG"
class Machine(BaseModel): class Machine(BaseModel):
name: str name: str
status: Status status: Status
@@ -72,8 +62,12 @@ class Entity(EntityBase):
# define a custom getter function for roles # define a custom getter function for roles
@validator("roles", pre=True) @validator("roles", pre=True)
def get_roles(cls, v: List[EntityRoles | Role]) -> List[Role]: def get_roles(cls, v: List[sql_models.EntityRoles | Role]) -> List[Role]:
if isinstance(v, list) and len(v) > 0 and isinstance(v[0], EntityRoles): if (
isinstance(v, list)
and len(v) > 0
and isinstance(v[0], sql_models.EntityRoles)
):
return [x.role for x in v] # type: ignore return [x.role for x in v] # type: ignore
else: else:
return v # type: ignore return v # type: ignore

View File

@@ -1,7 +1,7 @@
from sqlalchemy import JSON, Boolean, Column, Enum, ForeignKey, Integer, String, Text from sqlalchemy import JSON, Boolean, Column, Enum, ForeignKey, Integer, String, Text
from sqlalchemy.orm import relationship from sqlalchemy.orm import relationship
from .schemas import Role from .db_types import Role
from .sql_db import Base from .sql_db import Base
# Relationsship example # Relationsship example