Skip to content

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

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)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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