Merge branch 'feature/SIENTIAPDE-1972-gateway-write-read' into feature/SIENTIAPDE-1972-gateway-wiring

This commit is contained in:
PedroHMCosme
2026-09-22 11:42:37 -03:00
5 changed files with 20 additions and 5 deletions

View File

@@ -53,7 +53,7 @@ class GrpcServer:
self.logger = logger self.logger = logger
self.port = port self.port = port
self.slot_lookup = slot_lookup self.slot_lookup = slot_lookup
self.server = None self.server: grpc.aio.Server | None = None
async def start(self) -> None: async def start(self) -> None:
self.server = grpc.aio.server() self.server = grpc.aio.server()

View File

@@ -9,6 +9,8 @@ here. No reconnect logic — nats-py handles reconnection internally.
import json import json
import nats import nats
from nats.aio.client import Client
from nats.aio.subscription import Subscription
from sientia_do.observability.logger import Logger from sientia_do.observability.logger import Logger
from ingestor.engines.write import WriteEngine from ingestor.engines.write import WriteEngine
@@ -28,8 +30,8 @@ class NatsWriteConsumer:
self.logger = logger self.logger = logger
self.subject = subject self.subject = subject
self.queue = queue self.queue = queue
self.nc = None self.nc: Client | None = None
self.sub = None self.sub: Subscription | None = None
async def start(self) -> None: async def start(self) -> None:
self.nc = await nats.connect(servers=self.nats_url) self.nc = await nats.connect(servers=self.nats_url)

View File

@@ -75,7 +75,9 @@ class OpcConnectionPool(SientiaMonitoring):
async def _connect(self, server_cfg: dict) -> Client: async def _connect(self, server_cfg: dict) -> Client:
client = Client(server_cfg['url'], timeout=10) client = Client(server_cfg['url'], timeout=10)
client.application_uri = server_cfg.get('server_uri') server_uri = server_cfg.get('server_uri')
if server_uri:
client.application_uri = server_uri
if server_cfg.get('use_security'): if server_cfg.get('use_security'):
cert, key = await self.cert_provider.fetch() cert, key = await self.cert_provider.fetch()
await apply_security(client, server_cfg.get('server_uri'), cert, key, None) await apply_security(client, server_cfg.get('server_uri'), cert, key, None)

View File

@@ -75,7 +75,7 @@ class ActiveReadEngine(SientiaMonitoring):
await self._record_read_lag(source_ts, tags) await self._record_read_lag(source_ts, tags)
source_str = self._format_ts(source_ts) source_str = self._format_ts(source_ts)
persisted = bool(names) persisted = bool(names)
if persisted: if names:
await self.sink.publish_reading( await self.sink.publish_reading(
tag=addr, value=value, timestamp=source_str, names=names tag=addr, value=value, timestamp=source_str, names=names
) )

View File

@@ -81,6 +81,9 @@ warn_unused_ignores = false
warn_no_return = true warn_no_return = true
strict_equality = true strict_equality = true
ignore_missing_imports = true ignore_missing_imports = true
# Generated protoc/grpcio-tools output - not a checking target, dynamic attrs
# mypy can't see (message classes built at runtime from DESCRIPTOR).
exclude = ["^ingestor/proto/"]
# Ignore missing imports for external packages # Ignore missing imports for external packages
[[tool.mypy.overrides]] [[tool.mypy.overrides]]
@@ -107,6 +110,14 @@ ignore_missing_imports = true
module = "pandas.*" module = "pandas.*"
ignore_missing_imports = true ignore_missing_imports = true
# Generated protoc/grpcio-tools output - not hand-maintained, dynamic attrs
# mypy can't see (message classes built at runtime from DESCRIPTOR). Skip
# following it entirely so importers see Any instead of false attr-defined errors.
[[tool.mypy.overrides]]
module = "ingestor.proto.*"
ignore_errors = true
follow_imports = "skip"
[tool.pytest.ini_options] [tool.pytest.ini_options]
testpaths = ["tests"] testpaths = ["tests"]
python_files = ["test_*.py"] python_files = ["test_*.py"]