Add hawkBit firmware management extension - #34
dominiquekleeven wants to merge 33 commits into
Conversation
|
Would be nice to get this merged fairly quickly as I want to deploy the extension to staging for a custom project. Happy to go through the additions/changes if needed. |
… + method renames.
…t already exists, e.g. overwrite the securityToken on re-provision.
wborn
left a comment
There was a problem hiding this comment.
This PR is being reviewed with AI first.
The overall extension structure and hawkBit integration look good. No definite blocking issues were identified, but there are a few lifecycle, security, and documentation points worth clarifying.
Inline comments contain the details.
…e UI external service)
wborn
left a comment
There was a problem hiding this comment.
The security-token handling and firmwareTarget validation/documentation concerns from the earlier review look resolved.
One lifecycle issue remains in the existing review thread: removing the firmware meta item is documented as non-destructive, while deleting the corresponding OpenRemote asset or attribute should still remove the hawkBit counterpart. The current implementation does not preserve that cleanup behavior after the meta item has already been removed.
The event-ordering concern noted inline is worth considering as well, but it is not treated as blocking without evidence that the race occurs in normal operation.
With the lifecycle issue addressed, the rest of the changes look good.
This review was AI-assisted.
| HawkbitFirmwareService.java Starts the integration, syncs assets and registers API resources | ||
| HawkbitResponseProxy.java Proxies hawkBit client responses for OpenRemote APIs |
There was a problem hiding this comment.
| HawkbitFirmwareService.java Starts the integration, syncs assets and registers API resources | |
| HawkbitResponseProxy.java Proxies hawkBit client responses for OpenRemote APIs | |
| HawkbitFirmwareService.java Starts the integration, syncs assets and registers API resources | |
| HawkbitResponseProxy.java Proxies hawkBit client responses for OpenRemote APIs |
| HawkbitDistributionSetTypesClient.java RESTEasy client proxy for distribution set types | ||
| HawkbitSoftwareModuleTypesClient.java RESTEasy client proxy for software module types |
There was a problem hiding this comment.
| HawkbitDistributionSetTypesClient.java RESTEasy client proxy for distribution set types | |
| HawkbitSoftwareModuleTypesClient.java RESTEasy client proxy for software module types | |
| HawkbitDistributionSetTypesClient.java RESTEasy client proxy for distribution set types | |
| HawkbitSoftwareModuleTypesClient.java RESTEasy client proxy for software module types |
wborn
left a comment
There was a problem hiding this comment.
The demo is useful, but this has grown into a fairly substantial integration environment rather than an example specific to the extension. It includes a complete Compose stack, service-account bootstrapping, device simulation, fleet/rollout scenarios, and even a patched service-hawkbit-ui server.
Would it make sense to move the full demo into a dedicated demo/custom-project repository and keep this repository focused on the extension implementation, tests, and concise configuration/documentation? A separate demo repository could also manage and pin compatible OpenRemote, hawkBit, and UI versions independently.
This review was AI-assisted.
Closes #33
Adds a hawkBit firmware extension that connects OpenRemote Manager to the hawkBit Management API, exposes firmware management endpoints, and syncs selected OpenRemote assets as hawkBit targets.
Core Functionality
controllerIdandsecurityToken.Core Files
HawkbitFirmwareService.java: Starts the integration, configures the hawkBit client, registers API resources, and handles asset/attribute sync.HawkbitResponseProxy.java: Copies hawkBit responses back through OpenRemote while preserving status, body, and media type.manager/hawkbit/*Client.java: RESTEasy clients for hawkBit Management API resources.manager/resource/*ResourceImpl.java: OpenRemote API resource implementations that authorize requests and proxy them to hawkBit.model/resource/*Resource.java: Public OpenRemote firmware endpoint definitions and role requirements.FirmwareMetaItemType.java: DefinesfirmwareTargetandfirmwareMetadatameta items.FirmwareModelProvider.java: Registers firmware meta items with the OpenRemote model.README.md: Documents setup, limitations, API coverage, deployment examples, and proxy configuration.Caveats
HAWKBIT_REALM.Testing
Notes