Commit ae880199 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

NBI component - SSE Telemetry:

- Renamed old classes
- Added sampling interval to parameters of subscriptions
parent 9406c370
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -143,6 +143,7 @@ class CreateSubscription(Resource):
                identifier=r.identifier,
                uri=r.uri,
                xpath=xpath_filter,
                sampling_interval=sampling_interval,
                main_subscription=False,
                main_subscription_id=request_identifier,
            )
@@ -157,6 +158,7 @@ class CreateSubscription(Resource):
            xpath=request_data['ietf-subscribed-notifications:input'][
                'ietf-yang-push:datastore-xpath-filter'
            ],
            sampling_interval=sampling_interval,
            main_subscription=True,
            main_subscription_id=None,
        )
+2 −2
Original line number Diff line number Diff line
@@ -17,8 +17,8 @@


from nbi.service.NbiApplication import NbiApplication
from .create_subscription import CreateSubscription
from .delete_subscription import DeleteSubscription
from .CreateSubscription import CreateSubscription
from .DeleteSubscription import DeleteSubscription


def register_telemetry_subscription(nbi_app: NbiApplication):
+9 −4
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ class SSESubsciprionDict(TypedDict):
    identifier: str
    uri: str
    xpath: str
    sampling_interval : float
    main_subscription: bool
    main_subscription_id: Optional[str]

@@ -44,6 +45,7 @@ def set_subscription(db_engine: Engine, request: SSESubsciprionDict) -> None:
                identifier=stmt.excluded.identifier,
                uri=stmt.excluded.uri,
                xpath=stmt.excluded.xpath,
                sampling_interval=stmt.excluded.sampling_interval,
                main_subscription=stmt.excluded.main_subscription,
                main_subscription_id=stmt.excluded.main_subscription_id,
            ),
@@ -67,11 +69,11 @@ def delete_subscription(db_engine: Engine, request: str, main_subscription: bool
    _ = run_transaction(sessionmaker(bind=db_engine), callback)


def get_main_subscription(db_engine: Engine, request: str) -> Optional[SSESubsciprionDict]:
def get_main_subscription(db_engine: Engine, subscription_id: str) -> Optional[SSESubsciprionDict]:
    def callback(session: Session) -> Optional[SSESubsciprionDict]:
        obj: Optional[SSESubscriptionModel] = (
            session.query(SSESubscriptionModel)
            .filter_by(identifier=request, main_subscription=True)
            .filter_by(identifier=subscription_id, main_subscription=True)
            .one_or_none()
        )
        return (
@@ -82,6 +84,7 @@ def get_main_subscription(db_engine: Engine, request: str) -> Optional[SSESubsci
                identifier=obj.identifier,
                uri=obj.uri,
                xpath=obj.xpath,
                sampling_interval=obj.sampling_interval,
                main_subscription=obj.main_subscription,
                main_subscription_id=obj.main_subscription_id,
            )
@@ -90,11 +93,11 @@ def get_main_subscription(db_engine: Engine, request: str) -> Optional[SSESubsci
    return run_transaction(sessionmaker(bind=db_engine), callback)


def get_sub_subscription(db_engine: Engine, request: str) -> List[SSESubsciprionDict]:
def get_sub_subscription(db_engine: Engine, subscription_id: str) -> List[SSESubsciprionDict]:
    def callback(session: Session) -> List[SSESubsciprionDict]:
        obj: List[SSESubscriptionModel] = (
            session.query(SSESubscriptionModel)
            .filter_by(main_subscription_id=request, main_subscription=False)
            .filter_by(main_subscription_id=subscription_id, main_subscription=False)
            .all()
        )
        return [
@@ -103,6 +106,7 @@ def get_sub_subscription(db_engine: Engine, request: str) -> List[SSESubsciprion
                identifier=o.identifier,
                uri=o.uri,
                xpath=o.xpath,
                sampling_interval=obj.sampling_interval,
                main_subscription=o.main_subscription,
                main_subscription_id=o.main_subscription_id,
            )
@@ -121,6 +125,7 @@ def get_subscriptions(db_engine: Engine) -> List[SSESubsciprionDict]:
                identifier=obj.identifier,
                uri=obj.uri,
                xpath=obj.xpath,
                sampling_interval=obj.sampling_interval,
                main_subscription=obj.main_subscription,
                main_subscription_id=obj.main_subscription_id,
            )
+2 −1
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@


import sqlalchemy
from sqlalchemy import Column, Integer, String, JSON, Boolean
from sqlalchemy import Column, Float, Integer, String, JSON, Boolean
from sqlalchemy.dialects.postgresql import UUID


@@ -32,6 +32,7 @@ class SSESubscriptionModel(_Base):
    identifier = Column(String, nullable=False, unique=False)
    uri = Column(String, nullable=False, unique=False)
    xpath = Column(String, nullable=False, unique=False)
    sampling_interval = Column(Float, nullable=True)
    main_subscription = Column(Boolean, default=False)
    main_subscription_id = Column(String, nullable=True)