-
Notifications
You must be signed in to change notification settings - Fork 66
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Define Node-RED version for Devices not bound to an Instance #2802
Define Node-RED version for Devices not bound to an Instance #2802
Comments
As part of a bigger picture discussion potentially, but my proposal here would be:
|
fyi @MarianRaphael this feels like a big piece to consider |
It should be by default simply the newest Node-RED version (3.1), in a next iteration we can add the possibility to change the stack / Node-RED version for a device. |
Right now, it is latest by default. This issue is to tra k that iteration of enabling selection |
I was also hoping to get #2802 (comment) on your radar, think we should be aiming for this. |
I believe the selection option is important to have, but not during the creation process. This should be straightforward.
As a "final step," yes, I like the idea, but not for now. Requirement: "Snapshots being deployed via a Pipeline" must be as simple / better than the current concept. So step by step.
Yes, this would be the consequence of step 2 |
Devices bound to an Application also do not have a Template to inherit settings from e.g. custom node catalogues or .npmrc files. |
cc @robmarcer @MarianRaphael given the post in Slack today |
@joepavitt @MarianRaphael can the scope of this be clarified please? It is not 100% clear to me. for example, there is talk around "final steps" towards unifying device assignment and MVP and other approaches. As Ben has pointed out earlier, devices do not have all the necessary groundwork to just add some settings to for specifying a node-red version like we can with instance stacks etc. doing this in a way that is a step towards achieving the eventual goal will be a significant change. We could of course add a page in settings for adjusting the NR version (like Ben has done in #3588) however this approach does not integrate with snapshots (i.e. is not actually a step towards the goal) and would be additional technical debt to revert when we eventually do implement application device settings properly. I feel this needs some discussion before commencement. |
Yeah, reading through this, it's definitely missing required details in order to implement @MarianRaphael |
Is it possible to generate a snapshot when creating the device? We can call it |
@joepavitt @Steve-Mcl I edited the description and specified the scope. If there is more groundwork missing, we can push this back, and we can discuss this issue in the next architecture refinement meeting. |
Why? Surely the stack is something that we should be able to define at any point? Why should I have to move 500+ devices into developer mode and update the stack for each? |
Where would these be specified? Devices have no concept of stacks, they install whatever version is specified directly from NPM.
Not sure why this is a specification. The agent explicitly prohibits updates in developer mode meaning any changes would not occur until the user removes the device from developer mode. |
In Fleet Mode this kind of change should happen though a Pipeline, Device Group etc. but not manually. This is also how you would manage 500+ devices |
As devices dont have the same templating as instances this would be additional technical debt as discussed previously. Of course we will do what is required but I want that to be understood before commencing. for example, should the version be stored in the snapshot (as it is in instances). If yes, this would be a workaround and would differ to the implementation of #3588 |
This statement suggests you expect this setting to be part of the snapshot. See previous statement. |
Yes, Devices and Instances should behave increasingly the same way |
Same as for instances. (Also for compatibility reasons between both) |
I feel it is time we took a serious look at how we can get there using the same template approach of instances seeing as that is the end goal (or finding closest point of convergence between both offerings). I dont feel the right solution here is to shoehorn this in as an MVP that would need re-engineering when we eventually attempt to align the instances/devices (there is already a fairly large task to converge and I suspect this would only add to divergence & technical debt as is). I will happily admit if I am wrong but part of this would be to explore the overall concepts and identify the common ground and work towards that - all of which makes this a rather large task. |
I'll push this issue back and invite for a discussion. |
Following discussion we have identified some key aspects and some unknowns around lifecycle and UX It was determined that the device settings pages should have something similar to the "Upgrade Stack" with free text entry for setting the node-red version (bonus points for valid sevmer check). This is MVP and aligns with the current acceptance criteria set out in the OP The NR version value set should be persisted, likely in The Node-RED version should be present in a snapshot in a compatible manor to how a snapshot from an instance deployed to an application assigned device does today. This, in theory, means no device agent changes for when a snapshot is pushed (from a pipeline or the application>devices>device>snapshots page) How/when the NR version update actually occurs on the device and the lifetime of Ideally, the changes would NOT require device agent changes however it was agreed that should the overall UX suffer, this is a viable option) @MarianRaphael please confirm / correct as required. Remove blocked tag if all good. |
@MarianRaphael gentle nudge. |
@MarianRaphael @joepavitt I am going to assume this is unblocked and progress with design and discovery (unless otherwise instructed) |
All good |
ProgressApproach:
Caveats:With this approach, settings hash is updated and device is notified. However, in the current device editor logic, a settings updated does NOT cause the agent to re-request the snapshot (which now has the new version). also, current device agent logic does not cause the agent to run the installation procedure Current state (no modifications to Device agent)When a different snapshot is applied (or event just create a new snapshot and check the "Set as target" option, the user set NR version gets applied to the snapshot object and the device actually updates. This however is not particularly intuitive and would need to careful documentation and/or some logic in the core to determine the current agent version and instruct the user on how to make the agent update the node-red version. SolutionsTo make the device agent react to the NR ver change, we would need to do one of the following
SummaryBoth options 2 & 3 are viable:
|
re-opened until #3766 merged |
Description
Originally found with FlowFuse/device-agent#173
Devices that are not bound to Instance do not have a way of pulling a defined Stack, as such, they default to the
latest
instance of Node-RED.We should be able to configure (not sure where/how?) which version of Node-RED a Device runs.
Have you provided an initial effort estimate for this issue?
I have provided an initial effort estimate
Edited
Background
In the current FlowForge Device setup, devices that are not bound to an Instance automatically use the 'latest' version of Node-RED. This default behavior limits users who may need to run specific versions of Node-RED for development, compatibility, or testing purposes.
User Story
As a FlowFuse User who works with Devices,
I want the ability to specify and change the Node-RED version (stack) for my devices,
So that I can deploy different versions of Node-RED to my development devices, catering to the specific needs of each project.
Acceptance Criteria
Which customers would this be available to
All Starter + Team + Enterprise Tiers (CE)
The text was updated successfully, but these errors were encountered: