Merge pull request #2 from Aignosi/SIENTIAPDE-1095-realizar-testes-basicos-no-cluster-suse-linux

Sientiapde 1095 realizar testes basicos no cluster suse linux
This commit is contained in:
Matheus Demoner
2025-06-12 08:58:31 -03:00
committed by GitHub
6 changed files with 80 additions and 13 deletions

View File

@@ -67,7 +67,15 @@ class SlotManager(Redis):
self.logger.debug("Active ingestors: \n %s", active_ingestors) self.logger.debug("Active ingestors: \n %s", active_ingestors)
return [ingestor.decode('utf-8') for ingestor in active_ingestors] ingestors = []
for ingestor in active_ingestors:
if isinstance(ingestor, bytes):
ingestors.append(ingestor.decode('utf-8'))
else:
ingestors.append(ingestor)
return ingestors
@activity.defn(name="update_slots") @activity.defn(name="update_slots")
async def update_slots(self, input_data: dict[str, Any]) -> dict[str, Any]: async def update_slots(self, input_data: dict[str, Any]) -> dict[str, Any]:

View File

@@ -65,18 +65,18 @@ def process_path_priority(path_priority: list[str]):
def predictions_batch(config: dict[str, Any]): def predictions_batch(config: dict[str, Any]):
tags = {} tags = {}
for tag in config['write_tags']: for tag in config['write_tags']:
if tag['server_name'] not in tags: if tag['server_id'] not in tags:
tags[tag['server_name']] = {} tags[tag['server_id']] = {}
tag_type = tag['type'] tag_type = tag['type']
if tag_type == 'prediction' or tag_type == 'confidence': if tag_type == 'prediction' or tag_type == 'confidence':
tag_type_str = f"{tag_type}_tags" tag_type_str = f"{tag_type}_tags"
if tag_type_str not in tags[tag['server_name']]: if tag_type_str not in tags[tag['server_id']]:
tags[tag['server_name']][tag_type_str] = {} tags[tag['server_id']][tag_type_str] = {}
tags[tag['server_name']][tag_type_str][tag['addr']] = { tags[tag['server_id']][tag_type_str][tag['addr']] = {
"data_type": tag.get('data_type', 'float'), "data_type": tag.get('data_type', 'float'),
} }
@@ -128,7 +128,7 @@ def gather_read_tags(pipelines: list[dict[str, Any]]) -> dict[str, Any]:
# Get all read tags from pipelines # Get all read tags from pipelines
for pipeline in pipelines: for pipeline in pipelines:
for tag in pipeline['read_tags']: for tag in pipeline.get('read_tags', []):
tag_string = f"{tag['server_id']}:{tag['tag_address']}" tag_string = f"{tag['server_id']}:{tag['tag_address']}"
if tag_string not in tags: if tag_string not in tags:
tags[tag_string] = { tags[tag_string] = {

View File

@@ -57,6 +57,65 @@
} }
], ],
"tag_retention_minutes": 60 "tag_retention_minutes": 60
},
"2": {
"schedule_name": "laborious-orchestrated-pipeline",
"model_id": "1",
"workflow_type": "predictions_batch",
"frequency": "30s",
"max_retry_policy": 1,
"query": "select * from sientia_data.laborious_data order by \"timestamp\" desc limit 30;",
"retention_time": 60,
"write_tags": [
{
"server_id": "1",
"type": "prediction",
"addr": "ns=2;i=2",
"data_type": "float"
},
{
"server_id": "1",
"type": "confidence",
"addr": "ns=2;i=2",
"data_type": "float"
}
],
"input_filters": [
{
"filter_name": "EMPTY_DATA",
"policy": "STOP"
},
{
"filter_name": "SPECIFIC_VARIABLES_NULL_VALUES",
"policy": "CONTINUE",
"config": {
"variables": [
"Counter"
]
}
}
],
"mlflow_transform_filters": [
{
"filter_name": "API_ERROR",
"policy": "REPEAT"
},
{
"filter_name": "NAN_VALUES",
"policy": "STOP"
}
],
"mlflow_predict_filters": [
{
"filter_name": "API_ERROR",
"policy": "CONTINUE"
}
],
"path_priority": [
"STOP",
"CONTINUE",
"REPEAT"
]
} }
}, },
"opc-servers": { "opc-servers": {

View File

@@ -76,7 +76,7 @@ async def test_load_opc_slots_no_decode(slot_manager):
@mark.asyncio @mark.asyncio
async def test_load_active_ingestors(slot_manager): async def test_load_active_ingestors(slot_manager):
slot_manager.redis_client.keys.return_value = [ slot_manager.redis_client.keys.return_value = [
b"heartbeat:ingestor:1", b"heartbeat:ingestor:2", b"heartbeat:ingestor:3"] b"heartbeat:ingestor:1", b"heartbeat:ingestor:2", "heartbeat:ingestor:3"]
response = await slot_manager.load_active_ingestors() response = await slot_manager.load_active_ingestors()

View File

@@ -139,12 +139,12 @@ def test_predictions_batch(mock_process_path_priority,
"query": "test_query", "query": "test_query",
"write_tags": [ "write_tags": [
{ {
"server_name": "test_server_name", "server_id": "test_server_id",
"type": "prediction", "type": "prediction",
"addr": "test_addr" "addr": "test_addr"
}, },
{ {
"server_name": "test_server_name", "server_id": "test_server_id",
"type": "confidence", "type": "confidence",
"addr": "test_addr" "addr": "test_addr"
} }
@@ -210,7 +210,7 @@ def test_predictions_batch(mock_process_path_priority,
"table_name": "predictions", "table_name": "predictions",
"retention_time": 60 * 60, "retention_time": 60 * 60,
"opc_output_config": { "opc_output_config": {
"test_server_name": { "test_server_id": {
"prediction_tags": { "prediction_tags": {
"test_addr": { "test_addr": {
"data_type": "float" "data_type": "float"

View File

@@ -123,7 +123,7 @@ env:
- name: GITHUB_REPO_URL - name: GITHUB_REPO_URL
value: "git@github.com:Aignosi/sientia-dataops-orchestrator_temporal.git" value: "git@github.com:Aignosi/sientia-dataops-orchestrator_temporal.git"
- name: GITHUB_BRANCH - name: GITHUB_BRANCH
value: "SIENTIAPDE-1030-implementar-os-workflows-mapeados-utilizando-as-workers-e-activities-apropriadas" value: "main"
- name: PYTHON_APP - name: PYTHON_APP
value: "orchestrator.worker.worker" value: "orchestrator.worker.worker"
@@ -176,4 +176,4 @@ ssh:
# kubectl create secret generic git-ssh-key-sientia-orchestrator-worker \ # kubectl create secret generic git-ssh-key-sientia-orchestrator-worker \
# --namespace sientia \ # --namespace sientia \
# --from-file=ssh-privatekey=git_key \ # --from-file=ssh-privatekey=git_key \
# --type=kubernetes.io/ssh-auth # --type=kubernetes.io/ssh-auth