-
Notifications
You must be signed in to change notification settings - Fork 78
Python SDK for ACLP Alerts #589
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
Conversation
ktnvaish22
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approving with respect to ACLP Alerting API specifications, logic, test cases and integration testing.
Requesting API / Cloud Firewall team to review https://github.com/linode/linode_api4-python/pull/589/files#diff-70a344c4146b66b96b63999ccef7d16b311cceba86cfc2ac987a5edf3cffcdc3R82-R87
Thanks!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds comprehensive Monitor alerting SDK support to the Python API client, including CRUD operations for alert definitions, and improves test infrastructure to support both unit and integration testing scenarios.
- Adds full SDK support for Monitor alert definitions (create/get/update/delete operations)
- Fixes Enum serialization in JSONObject to prevent json.dumps errors
- Enhances test infrastructure with new fixtures and integration test resilience
Reviewed Changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| test/unit/groups/monitor_api_test.py | Adds comprehensive unit tests for alert definition CRUD operations |
| test/unit/base.py | Adds missing mock helper methods (GET, PUT, DELETE) for MonitorClientBaseCase |
| test/integration/models/monitor/test_monitor.py | Adds E2E integration test for alert definition lifecycle |
| test/integration/conftest.py | Makes firewall fixture skippable for local development |
| test/fixtures/*.json | Adds JSON fixtures for alert definition mocking |
| linode_api4/objects/serializable.py | Fixes Enum serialization to prevent JSON encoding errors |
| linode_api4/objects/monitor.py | Adds comprehensive data classes for alert definitions and channels |
| linode_api4/linode_client.py | Exposes MonitorGroup on MonitorClient for alert operations |
| linode_api4/groups/monitor.py | Implements alert definition CRUD methods |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
|
FIxed issues with CI and comments from Copilot AI |
|
To fix the lint issue, you can run |
yec-akamai
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for the contribution! You probably need to make changes around the implementation of AlertDefinition
|
@zliang-akamai @yec-akamai fixed all review comments from you and copilot. unit and integration test done post changes and working as expected. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 8 out of 8 changed files in this pull request and generated 6 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
lgarber-akamai
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM other than @zliang-akamai's feedback. Thank you for the contribution!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 8 out of 8 changed files in this pull request and generated 5 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Fixed json_object parameter issues in AlertDefinition properties - Corrected list type annotations for AlertChannelEnvelope - Updated integration tests with proper status handling for alert definitions - Applied review comments for better code quality - Enhanced type annotations and import organization - Improved error handling in monitor group methods
|
All review comments from @lgarber-akamai @zliang-akamai and copilot as on 12Nov2025 are addressed , unit and integration test working as expected post these changes and changes are committed to the branch and ready for review. |
|
Hi @srbhaakamai, the copilot suggestions were not preferred from my perspective, except the first one. Would you mind to revert those? Also, some CI failures need to be fixed.. |
…test passed after the changes
|
@zliang-akamai copilot suggestion are removed as per your suggestion. other changes are in place. Integration issue fixed. |
|
@srbhaakamai Can you take a look at my proposed changes? |
|
@zliang-akamai your requested changes are also incorporated. |
Refactored integration test, will test end to end.
|
@zliang-akamai srbhaakamai#2 has beeen merged to my branch tested locally, works fine as expected. thanks for the help to refactor the code. |
📝 Description
Add Monitor alerting SDK + fix/harden monitor unit & integration tests
What does this PR do and why is this change necessary?
This change is necessary because:
SDK additions (high level)
Note:
✔️ How to Test
Clone the repository
Prepare environment (zsh / macOS)
✔️create & activate venv (recommended)
python3 -m venv .venv
source .venv/bin/activate
install deps
python -m pip install --upgrade pip
Install runtime dependencies:
pip3 install requests polling deprecated
Install dev/test extras
pip3 install -e '.[dev,test]'
test deps
pip3 install pytest mock httpretty pytest-rerunfailures
✔️How do I run the relevant unit tests?
cd <PROJECT_DIRECTORY>/linode_api4-python
Unit tests: python -m pytest test/unit -q
377 passed, 18 warnings in 0.79s (as on 8Oct2025) new test cases may be added later
Unit test for all monitor: python -m pytest test/unit/groups/monitor_api_test.py -q -s
3 passed, 1 warning in 0.10s
Single unit: python -m pytest test/unit/groups/monitor_api_test.py::MonitorAlertDefinitionsTest -q -s
2 passed, 1 warning in 0.09s
What are the steps to reproduce the issue or verify the changes?
Its a new feature, so end to end integration should suffice
✔️How do I run the relevant integration tests?
Integration tests (E2E):
Note:
#if you have PAT token with write access only to Monitor and read for rest of the services for integration
export SKIP_E2E_FIREWALL=1 # optional: skip firewall autouse fixture
export LINODE_TOKEN="YOUR_REAL_TOKEN" # required for integration
export SKIP_E2E_FIREWALL=1 # optional: skip firewall autouse fixture
python -m pytest test/integration/models/monitor/test_monitor.py::test_integration_create_get_update_delete_alert_definition -q -s