diff --git a/pkgs/clan-cli/clan_cli/webui/routers/sql_connect.py b/pkgs/clan-cli/clan_cli/webui/routers/sql_connect.py index 05da969..df4cdda 100644 --- a/pkgs/clan-cli/clan_cli/webui/routers/sql_connect.py +++ b/pkgs/clan-cli/clan_cli/webui/routers/sql_connect.py @@ -9,16 +9,16 @@ from sqlalchemy.orm import Session from ...errors import ClanError from .. import sql_crud, sql_db, sql_models from ..schemas import ( - Consumer, - ConsumerCreate, + Client, + ClientCreate, Entity, EntityCreate, - Producer, - ProducerCreate, Repository, RepositoryCreate, Resolution, ResolutionCreate, + Service, + ServiceCreate, ) from ..tags import Tags @@ -29,92 +29,82 @@ log = logging.getLogger(__name__) ######################### # # -# Producer # +# Service # # # ######################### -@router.post("/api/v1/create_producer", response_model=Producer, tags=[Tags.producers]) -def create_producer( - producer: ProducerCreate, db: Session = Depends(sql_db.get_db) -) -> Producer: +@router.post("/api/v1/create_service", response_model=Service, tags=[Tags.services]) +def create_service( + service: ServiceCreate, db: Session = Depends(sql_db.get_db) +) -> Service: # todo checken ob schon da ... - return sql_crud.create_producer(db=db, producer=producer) + return sql_crud.create_service(db=db, service=service) -@router.get( - "/api/v1/get_producers", response_model=List[Producer], tags=[Tags.producers] -) -def get_producers( +@router.get("/api/v1/get_services", response_model=List[Service], tags=[Tags.services]) +def get_services( skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db) -) -> List[sql_models.Producer]: - producers = sql_crud.get_producers(db, skip=skip, limit=limit) - return producers +) -> List[sql_models.Service]: + services = sql_crud.get_services(db, skip=skip, limit=limit) + return services -@router.get( - "/api/v1/get_producer", response_model=List[Producer], tags=[Tags.producers] -) -def get_producer( +@router.get("/api/v1/get_service", response_model=List[Service], tags=[Tags.services]) +def get_service( entity_did: str = "did:sov:test:1234", skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db), -) -> List[sql_models.Producer]: - producer = sql_crud.get_producers_by_entity_did(db, entity_did=entity_did) - return producer +) -> List[sql_models.Service]: + service = sql_crud.get_services_by_entity_did(db, entity_did=entity_did) + return service -@router.delete("/api/v1/delete_producer", tags=[Tags.producers]) -def delete_producer( +@router.delete("/api/v1/delete_service", tags=[Tags.services]) +def delete_service( entity_did: str = "did:sov:test:1234", db: Session = Depends(sql_db.get_db), ) -> dict[str, str]: - sql_crud.delete_producer_by_entity_did(db, entity_did) - return {"message": "Producer deleted"} + sql_crud.delete_service_by_entity_did(db, entity_did) + return {"message": "service deleted"} ######################### # # -# Consumer # +# Client # # # ######################### -@router.post("/api/v1/create_consumer", response_model=Consumer, tags=[Tags.consumers]) -def create_consumer( - consumer: ConsumerCreate, db: Session = Depends(sql_db.get_db) -) -> Consumer: +@router.post("/api/v1/create_client", response_model=Client, tags=[Tags.clients]) +def create_client(client: ClientCreate, db: Session = Depends(sql_db.get_db)) -> Client: # todo checken ob schon da ... - return sql_crud.create_consumer(db=db, consumer=consumer) + return sql_crud.create_client(db=db, client=client) -@router.get( - "/api/v1/get_consumers", response_model=List[Consumer], tags=[Tags.consumers] -) -def get_consumers( +@router.get("/api/v1/get_clients", response_model=List[Client], tags=[Tags.clients]) +def get_clients( skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db) -) -> List[sql_models.Consumer]: - consumers = sql_crud.get_consumers(db, skip=skip, limit=limit) - return consumers +) -> List[sql_models.Client]: + clients = sql_crud.get_clients(db, skip=skip, limit=limit) + return clients -@router.get( - "/api/v1/get_consumer", response_model=List[Consumer], tags=[Tags.consumers] -) -def get_consumer( +@router.get("/api/v1/get_client", response_model=List[Client], tags=[Tags.clients]) +def get_client( entity_did: str = "did:sov:test:1234", skip: int = 0, limit: int = 100, db: Session = Depends(sql_db.get_db), -) -> List[sql_models.Consumer]: - consumer = sql_crud.get_consumers_by_entity_did(db, entity_did=entity_did) - return consumer +) -> List[sql_models.Client]: + client = sql_crud.get_client_by_entity_did(db, entity_did=entity_did) + return client -@router.delete("/api/v1/delete_consumer", tags=[Tags.consumers]) -def delete_consumer( +@router.delete("/api/v1/delete_client", tags=[Tags.clients]) +def delete_client( entity_did: str = "did:sov:test:1234", db: Session = Depends(sql_db.get_db), ) -> dict[str, str]: - sql_crud.delete_consumer_by_entity_did(db, entity_did) - return {"message": "Consumer deleted"} + sql_crud.delete_client_by_entity_did(db, entity_did) + return {"message": "client deleted"} ######################### diff --git a/pkgs/clan-cli/clan_cli/webui/schemas.py b/pkgs/clan-cli/clan_cli/webui/schemas.py index 303e0f7..edf02b2 100644 --- a/pkgs/clan-cli/clan_cli/webui/schemas.py +++ b/pkgs/clan-cli/clan_cli/webui/schemas.py @@ -18,10 +18,10 @@ class Machine(BaseModel): ######################### # # -# Producer # +# Service # # # ######################### -class ProducerBase(BaseModel): +class ServiceBase(BaseModel): uuid: str = "8e285c0c-4e40-430a-a477-26b3b81e30df" service_name: str = "Carlo's Printing" service_type: str = "3D Printing" @@ -30,11 +30,11 @@ class ProducerBase(BaseModel): other: dict = {"action": ["register", "deregister", "delete", "create"]} -class ProducerCreate(ProducerBase): +class ServiceCreate(ServiceBase): entity_did: str = "did:sov:test:1234" -class Producer(ProducerCreate): +class Service(ServiceCreate): class Config: orm_mode = True @@ -44,17 +44,17 @@ class Producer(ProducerCreate): # Consumer # # # ######################### -class ConsumerBase(BaseModel): +class ClientBase(BaseModel): entity_did: str = "did:sov:test:1234" - producer_uuid: str = "8e285c0c-4e40-430a-a477-26b3b81e30df" + service_uuid: str = "8e285c0c-4e40-430a-a477-26b3b81e30df" other: dict = {"test": "test"} -class ConsumerCreate(ConsumerBase): +class ClientCreate(ClientBase): pass -class Consumer(ConsumerCreate): +class Client(ClientCreate): id: int class Config: @@ -66,7 +66,7 @@ class Consumer(ConsumerCreate): # REPOSITORY # # # ######################### -class RepositoryBase(ProducerBase): +class RepositoryBase(ServiceBase): pass @@ -103,8 +103,8 @@ class EntityCreate(EntityBase): class Entity(EntityCreate): - producers: List[Producer] = [] - consumers: List[Consumer] = [] + services: List[Service] = [] + clients: List[Client] = [] repository: List[Repository] = [] class Config: diff --git a/pkgs/clan-cli/clan_cli/webui/sql_crud.py b/pkgs/clan-cli/clan_cli/webui/sql_crud.py index cf03c41..93b6141 100644 --- a/pkgs/clan-cli/clan_cli/webui/sql_crud.py +++ b/pkgs/clan-cli/clan_cli/webui/sql_crud.py @@ -8,84 +8,80 @@ from . import schemas, sql_models ######################### # # -# Producer # +# service # # # ######################### -def create_producer( - db: Session, producer: schemas.ProducerCreate -) -> sql_models.Producer: - db_producer = sql_models.Producer(**producer.dict()) - db.add(db_producer) +def create_service(db: Session, service: schemas.ServiceCreate) -> sql_models.Service: + db_service = sql_models.Service(**service.dict()) + db.add(db_service) db.commit() - db.refresh(db_producer) - return db_producer + db.refresh(db_service) + return db_service -def get_producers( +def get_services( db: Session, skip: int = 0, limit: int = 100 -) -> List[sql_models.Producer]: - return db.query(sql_models.Producer).offset(skip).limit(limit).all() +) -> List[sql_models.Service]: + return db.query(sql_models.Service).offset(skip).limit(limit).all() -def get_producers_by_entity_did( +def get_services_by_entity_did( db: Session, entity_did: str, skip: int = 0, limit: int = 100 -) -> List[sql_models.Producer]: +) -> List[sql_models.Service]: return ( - db.query(sql_models.Producer) - .filter(sql_models.Producer.entity_did == entity_did) + db.query(sql_models.Service) + .filter(sql_models.Service.entity_did == entity_did) .offset(skip) .limit(limit) .all() ) -def delete_producer_by_entity_did(db: Session, entity_did: str) -> None: - db.query(sql_models.Producer).filter( - sql_models.Producer.entity_did == entity_did +def delete_service_by_entity_did(db: Session, entity_did: str) -> None: + db.query(sql_models.Service).filter( + sql_models.Service.entity_did == entity_did ).delete() db.commit() ######################### # # -# Consumer # +# client # # # ######################### -def create_consumer( - db: Session, consumer: schemas.ConsumerCreate -) -> sql_models.Consumer: - db_consumer = sql_models.Consumer(**consumer.dict()) - db.add(db_consumer) +def create_client(db: Session, client: schemas.ClientCreate) -> sql_models.Client: + db_client = sql_models.Client(**client.dict()) + db.add(db_client) db.commit() - db.refresh(db_consumer) - return db_consumer + db.refresh(db_client) + return db_client -def get_consumers( +def get_clients( db: Session, skip: int = 0, limit: int = 100 -) -> List[sql_models.Consumer]: - return db.query(sql_models.Consumer).offset(skip).limit(limit).all() +) -> List[sql_models.Client]: + return db.query(sql_models.Client).offset(skip).limit(limit).all() -def get_consumers_by_entity_did( +def get_client_by_entity_did( db: Session, entity_did: str, skip: int = 0, limit: int = 100 -) -> List[sql_models.Consumer]: +) -> List[sql_models.Client]: return ( - db.query(sql_models.Consumer) - .filter(sql_models.Consumer.entity_did == entity_did) + db.query(sql_models.Client) + .filter(sql_models.Client.entity_did == entity_did) .offset(skip) .limit(limit) .all() ) -def delete_consumer_by_entity_did(db: Session, entity_did: str) -> None: - db.query(sql_models.Consumer).filter( - sql_models.Consumer.entity_did == entity_did +def delete_client_by_entity_did(db: Session, entity_did: str) -> None: + db.query(sql_models.Client).filter( + sql_models.Client.entity_did == entity_did ).delete() db.commit() @@ -198,8 +194,8 @@ def delete_entity_by_did(db: Session, did: str) -> None: def delete_entity_by_did_recursive(db: Session, did: str) -> None: - delete_producer_by_entity_did(db, did) - delete_consumer_by_entity_did(db, did) + delete_service_by_entity_did(db, did) + delete_client_by_entity_did(db, did) delete_repository_by_entity_did(db, did) delete_entity_by_did(db, did) diff --git a/pkgs/clan-cli/clan_cli/webui/sql_models.py b/pkgs/clan-cli/clan_cli/webui/sql_models.py index c606b9f..2523451 100644 --- a/pkgs/clan-cli/clan_cli/webui/sql_models.py +++ b/pkgs/clan-cli/clan_cli/webui/sql_models.py @@ -33,13 +33,13 @@ class Entity(Base): other = Column(JSON) ## Relations ## - producers = relationship("Producer", back_populates="entity") - consumers = relationship("Consumer", back_populates="entity") + services = relationship("Service", back_populates="entity") + clients = relationship("Client", back_populates="entity") repository = relationship("Repository", back_populates="entity") # TODO maby refactor to repositories -class ProducerAbstract(Base): +class ServiceAbstract(Base): __abstract__ = True # Queryable body @@ -54,22 +54,22 @@ class ProducerAbstract(Base): other = Column(JSON) -class Producer(ProducerAbstract): - __tablename__ = "producers" +class Service(ServiceAbstract): + __tablename__ = "services" - # Usage is the consumers column + # Usage is the clients column ## Relations ## - # One entity can have many producers - entity = relationship("Entity", back_populates="producers") + # One entity can have many services + entity = relationship("Entity", back_populates="services") entity_did = Column(String, ForeignKey("entities.did")) - # One producer has many consumers - consumers = relationship("Consumer", back_populates="producer") + # One service has many clients + clients = relationship("Client", back_populates="service") -class Consumer(Base): - __tablename__ = "consumers" +class Client(Base): + __tablename__ = "clients" ## Queryable body ## id = Column(Integer, primary_key=True, index=True) @@ -78,18 +78,18 @@ class Consumer(Base): other = Column(JSON) ## Relations ## - # one entity can have many consumers - entity = relationship("Entity", back_populates="consumers") + # one entity can have many clients + entity = relationship("Entity", back_populates="clients") entity_did = Column(String, ForeignKey("entities.did")) - # one consumer has one producer - producer = relationship("Producer", back_populates="consumers") - producer_uuid = Column(String, ForeignKey("producers.uuid")) + # one client has one service + service = relationship("Service", back_populates="clients") + service_uuid = Column(String, ForeignKey("services.uuid")) - __table_args__ = (UniqueConstraint("producer_uuid", "entity_did"),) + __table_args__ = (UniqueConstraint("service_uuid", "entity_did"),) -class Repository(ProducerAbstract): +class Repository(ServiceAbstract): __tablename__ = "repositories" time_created = Column(DateTime(timezone=True), server_default=func.now()) diff --git a/pkgs/clan-cli/clan_cli/webui/tags.py b/pkgs/clan-cli/clan_cli/webui/tags.py index 7f11e48..034beb7 100644 --- a/pkgs/clan-cli/clan_cli/webui/tags.py +++ b/pkgs/clan-cli/clan_cli/webui/tags.py @@ -3,8 +3,8 @@ from typing import Any, Dict, List class Tags(Enum): - producers = "producers" - consumers = "consumers" + services = "services" + clients = "clients" entities = "entities" repositories = "repositories" resolutions = "resolution" @@ -15,12 +15,12 @@ class Tags(Enum): tags_metadata: List[Dict[str, Any]] = [ { - "name": str(Tags.producers), - "description": "Operations on a producer.", + "name": str(Tags.services), + "description": "Operations on a service.", }, { - "name": str(Tags.consumers), - "description": "Operations on a consumer.", + "name": str(Tags.clients), + "description": "Operations on a client.", }, { "name": str(Tags.entities), diff --git a/pkgs/clan-cli/emulate_entity.sh b/pkgs/clan-cli/emulate_entity.sh new file mode 100755 index 0000000..da91b78 --- /dev/null +++ b/pkgs/clan-cli/emulate_entity.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +while true ; do printf 'HTTP/1.1 200 OK\r\n\r\ncool, thanks' | nc -l -N 127.0.0.1 5555 ; done diff --git a/pkgs/clan-cli/tests/test_db_api.py b/pkgs/clan-cli/tests/test_db_api.py index cf393bf..b1693ca 100644 --- a/pkgs/clan-cli/tests/test_db_api.py +++ b/pkgs/clan-cli/tests/test_db_api.py @@ -43,11 +43,11 @@ def make_test_post_and_get( assert_extra_info(["time_created"], request_body, response.json()) elif paramter == "resolution": assert_extra_info(["timestamp", "id"], request_body, response.json()) - elif paramter == "consumer": + elif paramter == "client": assert_extra_info(["id"], request_body, response.json()) elif paramter == "entity": assert_extra_info( - ["consumers", "producers", "repository"], request_body, response.json() + ["clients", "services", "repository"], request_body, response.json() ) else: assert response.json() == request_body @@ -60,11 +60,11 @@ def make_test_post_and_get( assert_extra_info(["time_created"], request_body, response.json()[0]) elif paramter == "resolution": assert_extra_info(["timestamp", "id"], request_body, response.json()[0]) - elif paramter == "consumer": + elif paramter == "client": assert_extra_info(["id"], request_body, response.json()[0]) elif paramter == "entity": assert_extra_info( - ["consumers", "producers", "repository"], request_body, response.json() + ["clients", "services", "repository"], request_body, response.json() ) else: assert response.json() == [request_body] @@ -72,10 +72,10 @@ def make_test_post_and_get( ######################### # # -# Producer # +# service # # # ######################### -def test_producer(api: TestClient) -> None: +def test_service(api: TestClient) -> None: request_body = { "uuid": "8e285c0c-4e40-430a-a477-26b3b81e30df", "service_name": "Carlo'''s Printing", @@ -85,12 +85,12 @@ def test_producer(api: TestClient) -> None: "other": {"action": ["register", "deregister", "delete", "create"]}, "entity_did": default_entity_did, } - paramter = "producer" + paramter = "service" # get_request = "entity_did=did%3Asov%3Atest%3A1234" make_test_post_and_get(api, request_body, paramter) -def test_producer2(api: TestClient) -> None: +def test_service2(api: TestClient) -> None: request_body = { "uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d1", "service_name": "Luis'''s Fax", @@ -100,12 +100,12 @@ def test_producer2(api: TestClient) -> None: "other": {"action": ["register", "deregister", "delete", "create"]}, "entity_did": default_entity_did2, } - paramter = "producer" + paramter = "service" get_request = "entity_did=" + url.quote(default_entity_did2) make_test_post_and_get(api, request_body, paramter, get_request) -def test_producer3(api: TestClient) -> None: +def test_service3(api: TestClient) -> None: request_body = { "uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d2", "service_name": "Erdem'''s VR-Stream", @@ -115,12 +115,12 @@ def test_producer3(api: TestClient) -> None: "other": {"action": ["register", "deregister", "delete", "create"]}, "entity_did": default_entity_did3, } - paramter = "producer" + paramter = "service" get_request = "entity_did=" + url.quote(default_entity_did3) make_test_post_and_get(api, request_body, paramter, get_request) -def test_producer4(api: TestClient) -> None: +def test_service4(api: TestClient) -> None: request_body = { "uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d3", "service_name": "Onur'''s gallary", @@ -130,12 +130,12 @@ def test_producer4(api: TestClient) -> None: "other": {"action": ["register", "deregister", "delete", "create"]}, "entity_did": default_entity_did4, } - paramter = "producer" + paramter = "service" get_request = "entity_did=" + url.quote(default_entity_did4) make_test_post_and_get(api, request_body, paramter, get_request) -def test_producer5(api: TestClient) -> None: +def test_service5(api: TestClient) -> None: request_body = { "uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d4", "service_name": "Sara'''s Game-Shop", @@ -145,34 +145,34 @@ def test_producer5(api: TestClient) -> None: "other": {"action": ["register", "deregister", "delete", "create"]}, "entity_did": default_entity_did5, } - paramter = "producer" + paramter = "service" get_request = "entity_did=" + url.quote(default_entity_did5) make_test_post_and_get(api, request_body, paramter, get_request) ######################### # # -# Consumer # +# client # # # ######################### -def test_consumer(api: TestClient) -> None: +def test_client(api: TestClient) -> None: request_body = { "entity_did": default_entity_did, - "producer_uuid": "8e285c0c-4e40-430a-a477-26b3b81e30df", + "service_uuid": "8e285c0c-4e40-430a-a477-26b3b81e30df", "other": {"test": "test"}, } - paramter = "consumer" + paramter = "client" # get_request = "entity_did=did%3Asov%3Atest%3A1234" make_test_post_and_get(api, request_body, paramter) -def test_consumer2(api: TestClient) -> None: +def test_client2(api: TestClient) -> None: request_body = { "entity_did": default_entity_did2, - "producer_uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d4", + "service_uuid": "8e285c0c-4e40-430a-a477-26b3b81e30d4", "other": {"war": "games"}, } - paramter = "consumer" + paramter = "client" get_request = "entity_did=" + url.quote(default_entity_did2) make_test_post_and_get(api, request_body, paramter, get_request) @@ -271,7 +271,7 @@ def test_entity(api: TestClient) -> None: "visible": True, "other": { "network": "Carlo1's Home Network", - "roles": ["service repository", "service consumer"], + "roles": ["service repository", "service client"], }, } paramter = "entity" diff --git a/pkgs/ui/README.md b/pkgs/ui/README.md index ee3cff7..4a81fd9 100644 --- a/pkgs/ui/README.md +++ b/pkgs/ui/README.md @@ -25,3 +25,4 @@ Than run this command: ``` GITEA_TOKEN= nix run .#update-ui-assets ``` +. diff --git a/pkgs/ui/nix/ui-assets.nix b/pkgs/ui/nix/ui-assets.nix index af775c8..196aeee 100644 --- a/pkgs/ui/nix/ui-assets.nix +++ b/pkgs/ui/nix/ui-assets.nix @@ -1,5 +1,5 @@ { fetchzip }: fetchzip { url = "https://gitea.gchq.icu/api/packages/IoSL/generic/IoSL-service-aware-frontend/15d2rn12jhrwry2ipvjhn62dgl7vvdrkc1zkp02xfvaz8ijf18s8/assets.tar.gz"; - sha256 = "15d2rn12jhrwry2ipvjhn62dgl7vvdrkc1zkp02xfvaz8ijf18s8"; + sha256 = "sha256-SKPgZERfbdcFuPMHNnPb+9DXhLFQ7huFzzxDKYLNopU="; }