* WIP: alarms service
* fix(alarms): remove rule entity since it is not stored here
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* test(alarms): add tests cases for invalid alarms
* feat(alarms): add authorization
* feat(alarms): add docker deployment files
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* fix: update go mod file
* feat(alarms): support filtering by resolved_by, updated_by and severity
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* style: fix linter errors
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* fix(alarms): provide correct otel naming for create alarm
Fixes https://github.com/absmach/magistrala/pull/106#discussion_r2030151971
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* fix(alarms): group routes appropriately
Resolves https://github.com/absmach/magistrala/pull/106#discussion_r2030160891
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* fix(alarms): extract alarm id from url path rather than query params
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* fix(alarms): add all status to help in decoding
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* style(alarms): maintain consistent import as naming for supermq api package
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* refactor(alarms): update supermq dependecy to the latest
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* fix(alarms): Add domains gRPC service config to alarms service
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* test(alarms): all CRUD operations from the service
Return empty results instead of nil
This standardizes error responses across alarm endpoints to return empty
result structs rather than nil. Also renames entityReq to alarmReq and
adds HTTP status codes for created/deleted alarms.
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* test(alarms): fix failing tests due to introduction of context on sdk
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* fix(alarms): remove channel id
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* fix(alarms): standardize error handling across CRUD operations
Updated error responses to use specific repository errors for consistency
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* feat(alarms): add assignment fields to Alarm model and database
Introduced AssignedAt and AssignedBy fields to the Alarm struct and updated the database schema accordingly. Enhanced the UpdateAlarm function to handle these new fields, ensuring proper assignment tracking in the alarms system.
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* feat(alarms): enhance Alarm model with measurement attributes
Updated the Alarm struct to include Measurement, Value, Unit, and Cause fields. Modified the validation logic to ensure these fields are present. Adjusted logging and tracing middleware to reflect the new attributes. Updated database schema and related functions to accommodate these changes, ensuring comprehensive alarm data management.
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* feat(alarms): consume events from pubsub for creation of alarms
Removed session dependencies from CreateAlarm method and enhanced alarm validation to ensure all required fields are present
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* style(alarms): add newline at the end of docker compose
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* fix(alarms): Add assignee id and metadata fields when consuming messages
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* feat(alarms): add acknowledged field
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* feat(alarms): Add threshold value for the specific measurement
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* feat(alarms): Add channel, thing, and subtopic fields to Alarm model
This change adds required fields for tracking alarm sources and reorganizes
alarm-related fields for better grouping. Alarms now track the channel,
thing, and subtopic that triggered them, along with domain and rule info.
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* test(alarms): add service layer tests
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* fix(alarms): consume created at from message rather than creating it
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* feat(alarms): ready alarm as a gob encoded object
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* fix(alarms): read alarms from alarms queue and remove transformer
g
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* feat(alarms): update version of supermq
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* feat(alarms): add gob transformer
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* fix(alarms): rename thing id to client id
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* fix(alarms): create alarms stream
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* fix(alarms): check on logic to create new alarm
create new alarm if severity, status, subtopic changes
enhance logging with additional details for alarms management
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* remove conusmer and use pubsub
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* fix(alarms): use build tags for rabbitmq and nats
* fix(alarms): add health and metrics endpoint
* fix(magistrala): use supermq as build flags to see version and commit
* fix(alarms): use js config
* fix(alarms): remove validation when updating an alarm
fix authorization too
---------
Signed-off-by: Rodney Osodo <socials@rodneyosodo.com>
* chore(license): update copyright notices
Add CI check for non go files to check that the files contain a license
Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com>
* fix(ci): log failed files
When the CI fails during check for license header, log the failed file to console so that someone can check on the actual file. Also simplify the grep check to make it more human readable and understandable
Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com>
---------
Signed-off-by: Rodney Osodo <28790446+rodneyosodo@users.noreply.github.com>