Skip to content

Trigger notifications should resolve ROS identifiers to manifest entity IDs #305

@bburda

Description

@bburda

Summary

Trigger notifications from ROS-derived sources (faults, logs) use raw ROS identifiers that don't match manifest entity IDs. This means triggers created on manifest entities (e.g., apps/diagnostic-bridge) never fire - they only work on runtime-discovered entities with ROS node names (e.g., apps/diagnostic_bridge).

Affected collections:

  • Faults: TriggerFaultSubscriber extracts entity_id from reporting_sources[0] last path segment (e.g., /bridge/diagnostic_bridge -> diagnostic_bridge)
  • Logs: LogManager::on_rosout() uses normalize_fqn() which strips leading / (e.g., /bridge/diagnostic_bridge -> bridge/diagnostic_bridge)
  • Data: Not affected - entity_id comes from the trigger creation request

Impact: In hybrid discovery mode, users must know to target runtime entities (underscore names) instead of manifest entities (hyphen names). In manifest-only mode, fault/log triggers cannot work at all since the runtime entities don't exist.

Proposed solution (optional)

Add an entity ID resolution step in the notification path (either in each subscriber or in ResourceChangeNotifier::notify()) that maps ROS node FQNs to their linked manifest entity IDs via the entity cache's RosBinding.node_name matching - the same resolution that RuntimeDiscoveryStrategy already does for node linking.

Additional context (optional)

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions