feat: 2-way integration support #726

Open
opened 2026-03-28 04:27:52 +00:00 by mfreeman451 · 0 comments
Owner

Imported from GitHub.

Original GitHub issue: #2261
Original author: @mfreeman451
Original URL: https://github.com/carverauto/serviceradar/issues/2261
Original created: 2026-01-12T02:37:36Z


Is your feature request related to a problem?

We need to create the ability to setup 2-way integrations with things like Armis or NetBox. We've already built the 2-way integration with Armis, not sure if that code was cleaned up/removed or not, but the armis updater stuff would be a good place to start.

The 2-way integration should be configurable and an option not a requirement, through the UI under Integration Sources.

  • UI for setting up 2-way integration when adding Armis or NetBox integration
  • UI for editing exiting integration settings and adding/removing 2-way integration
  • Option for 2-way integration to be dependent on preconditions, such as a SweepResult event
  • 2-way integration settings should allow user to configure the scope of devices that are going to be part of the upstream interaction, where we push data to Armis or NetBox
  • Need to use existing UI query builder
  • The scope should be using SRQL, ie the user basically defines an SRQL search and those results get pushed up to Armis
  • User needs to be able to select what they're sending to Armis and where it comes from out of ServiceRadar, for the first pass we are just looking at the is_available field, and then updating a custom tag in Armis
  • We only need to have support for updating custom tags in Armis for now
  • Need to call out to the serviceradar-agent to actually talk to Armis
  • serviceradar-agent needs to be updated to ask agent-gateway->core-elx for new config (already supported), this new config would include the instructions for the updater.
  • Use Ash State machine and GRPC updates received from the Agent to track progress of 2-way integration update jobs

it looks like we've got a lot of the armis_updater.go code still in the pkg/sync library (serviceradar-sync used to be standalone, has been merged into serviceradar-agent, but in the process we lost a lot of the wiring around the functionality, and a lot of it was json config driven (or could be read from KV). We're now making the agent get its config from the core via the agent-gateway, so if the updater is enabled for an integration, we need to generate a good config for that thing, so when the agent requests its config, it picks up the integration updater config/job. We might need to do some work in the serviceradar-agent because we dont really want to be running the integration updater on some interval, we want it to be event-based, which might make this a bit more difficult/convoluted. Maybe we need a new GRPC method to do some of this instead of just trying to always push configs that sort of get turned into jobs, maybe we need to push down config and jobs and be able to push down dynamic jobs. I don't want to overload the core with thousands of agents potentially all asking for jobs way too frequently either..

github.com/carverauto/serviceradar@d5d1015a64/pkg/sync/integrations/armis/armis_updater.go (L4)

Describe the solution you'd like

A clear and concise description of what you want to happen.

Describe alternatives you've considered

A clear and concise description of any alternative solutions or features you've considered.

Additional context

Add any other context or screenshots about the feature request here.

Imported from GitHub. Original GitHub issue: #2261 Original author: @mfreeman451 Original URL: https://github.com/carverauto/serviceradar/issues/2261 Original created: 2026-01-12T02:37:36Z --- **Is your feature request related to a problem?** We need to create the ability to setup 2-way integrations with things like Armis or NetBox. We've already built the 2-way integration with Armis, not sure if that code was cleaned up/removed or not, but the armis updater stuff would be a good place to start. The 2-way integration should be configurable and an option not a requirement, through the UI under Integration Sources. - [ ] UI for setting up 2-way integration when adding Armis or NetBox integration - [ ] UI for editing exiting integration settings and adding/removing 2-way integration - [ ] Option for 2-way integration to be dependent on preconditions, such as a SweepResult event - [ ] 2-way integration settings should allow user to configure the scope of devices that are going to be part of the upstream interaction, where we push data to Armis or NetBox - [ ] Need to use existing UI query builder - [ ] The scope should be using SRQL, ie the user basically defines an SRQL search and those results get pushed up to Armis - [ ] User needs to be able to select what they're sending to Armis and where it comes from out of ServiceRadar, for the first pass we are just looking at the is_available field, and then updating a custom tag in Armis - [ ] We only need to have support for updating custom tags in Armis for now - [ ] Need to call out to the serviceradar-agent to actually talk to Armis - [ ] serviceradar-agent needs to be updated to ask agent-gateway->core-elx for new config (already supported), this new config would include the instructions for the updater. - [ ] Use Ash State machine and GRPC updates received from the Agent to track progress of 2-way integration update jobs it looks like we've got a lot of the armis_updater.go code still in the pkg/sync library (serviceradar-sync used to be standalone, has been merged into serviceradar-agent, but in the process we lost a lot of the wiring around the functionality, and a lot of it was json config driven (or could be read from KV). We're now making the agent get its config from the core via the agent-gateway, so if the updater is enabled for an integration, we need to generate a good config for that thing, so when the agent requests its config, it picks up the integration updater config/job. We might need to do some work in the serviceradar-agent because we dont really want to be running the integration updater on some interval, we want it to be event-based, which might make this a bit more difficult/convoluted. Maybe we need a new GRPC method to do some of this instead of just trying to always push configs that sort of get turned into jobs, maybe we need to push down config and jobs and be able to push down dynamic jobs. I don't want to overload the core with thousands of agents potentially all asking for jobs way too frequently either.. https://github.com/carverauto/serviceradar/blob/d5d1015a64fcf81a0fe6d59909f2f8c14e78f860/pkg/sync/integrations/armis/armis_updater.go#L4 **Describe the solution you'd like** A clear and concise description of what you want to happen. **Describe alternatives you've considered** A clear and concise description of any alternative solutions or features you've considered. **Additional context** Add any other context or screenshots about the feature request here.
mfreeman451 added this to the 1.1.1 milestone 2026-03-28 04:27:52 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
carverauto/serviceradar#726
No description provided.