Skip to content

Commit 791fbd1

Browse files
committed
feat:AlarmApiExample
1 parent a76628e commit 791fbd1

File tree

3 files changed

+92
-1
lines changed

3 files changed

+92
-1
lines changed

examples/alarm/alarm.py

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
import uuid
2+
from datetime import datetime, timezone
3+
4+
from nisystemlink.clients.alarm import AlarmClient
5+
from nisystemlink.clients.alarm.models import (
6+
AcknowledgeByInstanceIdRequest,
7+
CreateOrUpdateAlarmRequest,
8+
DeleteByInstanceIdRequest,
9+
QueryWithFilterRequest,
10+
)
11+
from nisystemlink.clients.alarm.models._alarm import AlarmTransitionType
12+
from nisystemlink.clients.alarm.models._create_or_update_alarm_request import (
13+
CreateAlarmTransition,
14+
)
15+
from nisystemlink.clients.alarm.models._query_alarms_request import (
16+
AlarmOrderBy,
17+
TransitionInclusionOption,
18+
)
19+
from nisystemlink.clients.core import HttpConfiguration
20+
21+
# Setup the server configuration to point to your instance of SystemLink Enterprise
22+
server_configuration = HttpConfiguration(
23+
server_uri="https://yourserver.yourcompany.com",
24+
api_key="YourAPIKeyGeneratedFromSystemLink",
25+
)
26+
client = AlarmClient(configuration=server_configuration)
27+
28+
# Create a unique alarm ID for this example
29+
alarm_id = f"example_alarm_{uuid.uuid1().hex}"
30+
31+
# Create an alarm with a SET transition
32+
create_request = CreateOrUpdateAlarmRequest(
33+
alarm_id=alarm_id,
34+
transition=CreateAlarmTransition(
35+
transition_type=AlarmTransitionType.SET,
36+
occurred_at=datetime.now(timezone.utc),
37+
severity_level=3,
38+
condition="Temperature exceeded threshold",
39+
message="Temperature sensor reading: 85°C",
40+
),
41+
)
42+
create_response = client.create_or_update_alarm(create_request)
43+
instance_id = create_response.instance_id
44+
45+
# Get the alarm by instance ID
46+
alarm = client.get_alarm(instance_id)
47+
48+
# Update the alarm with a higher severity
49+
update_request = CreateOrUpdateAlarmRequest(
50+
alarm_id=alarm_id,
51+
transition=CreateAlarmTransition(
52+
transition_type=AlarmTransitionType.SET,
53+
occurred_at=datetime.now(timezone.utc),
54+
severity_level=5,
55+
condition="Temperature critically high",
56+
message="Temperature sensor reading: 95°C",
57+
),
58+
)
59+
update_response = client.create_or_update_alarm(update_request)
60+
61+
# Query alarms with a filter
62+
query_request = QueryWithFilterRequest(
63+
filter=f'alarmId="{alarm_id}"',
64+
transition_inclusion_option=TransitionInclusionOption.ALL,
65+
order_by=AlarmOrderBy.UPDATED_AT,
66+
order_by_descending=True,
67+
return_count=True,
68+
)
69+
query_response = client.query_alarms(query_request)
70+
71+
# Acknowledge the alarm
72+
ack_request = AcknowledgeByInstanceIdRequest(instance_ids=[instance_id])
73+
ack_response = client.acknowledge_instances_by_instance_id(ack_request)
74+
75+
# Clear the alarm
76+
clear_request = CreateOrUpdateAlarmRequest(
77+
alarm_id=alarm_id,
78+
transition=CreateAlarmTransition(
79+
transition_type=AlarmTransitionType.CLEAR,
80+
occurred_at=datetime.now(timezone.utc),
81+
severity_level=0,
82+
condition="Temperature returned to normal",
83+
),
84+
)
85+
clear_response = client.create_or_update_alarm(clear_request)
86+
87+
# Delete the alarm by instance ID
88+
client.delete_alarm(instance_id)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from nisystemlink.clients.alarm._alarm_client import AlarmClient
2+
3+
# flake8: noqa

tests/integration/alarm/test_alarm_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from typing import List
44

55
import pytest
6-
from nisystemlink.clients.alarm._alarm_client import AlarmClient
6+
from nisystemlink.clients.alarm import AlarmClient
77
from nisystemlink.clients.alarm.models import (
88
AcknowledgeByInstanceIdRequest,
99
AcknowledgeByInstanceIdResponse,

0 commit comments

Comments
 (0)