Open rifen opened 4 weeks ago
Yea, certainly agreed, this was on our original design spec, but did not make MVP (along with many other features). Another relevant one was the ability to understand when the changes are the same, e.g. if there was a hash value associated with the change and ideally a filter, to filter out one hash value at a time.
A good example of that: https://aeolun.github.io/react-diff-viewer-continued/ though not working in React in this case :)
hmm, that just looks like a diff viewer, which we already have in bootstrap: https://demo.nautobot.com/plugins/golden-config/golden-config/d200ff18-ef93-449b-b75e-301e948aaf50/compliance/
not sure what you are suggesting we are comparing?
not sure what you are suggesting we are comparing?
I thought by "filter" you meant only show the changes needed. In that diff viewer it had "Expand" showing only the diffed parts to the user. It seems that isn't what you were getting at.
Hey @itdependsnetworks and @jeffkala,
I'd like to contribute this feature, my company has allocated me time to do so :slightly_smiling_face: . I have plenty of Python Experience and I am willing to learn more Django (Outside interacting with the ORM via writing Jobs). I have some JavaScript experience but very little, which I believe is a small requirement in this.
My plans for this feature would go something like this:
Devices > Configuration
. There would be noticeable overhead of course because of the amount of devices potentially. Maybe it could be a setting - where users could set "Backup" or "Running" in Golden Config settings to point to which they want to look at for comparisons. I could enqueue the Backup job for the devices specifically, would be the same I think 🤔 probably same amount of waiting.I can dedicate most of my time to this contribution and hopefully future contributions. If there is anything I didn't touch on in this feature, any changes or any extra tips let me know. If your comfortable assigning me this Issue now or waiting until I have an MVP/PR, that's fine too.
Additional ideas while going through GC code:
I think it makes sense to create a PR for each of the following steps
For your initial 4, this is not something we would do in the near or even medium term future. The idea is to have a control of what you have approved, and this breaks the principle of least astonishment in that it was approved as one configuration and pushed yet another configuration.
To align with your step 1 and limit scope:
On the 'Config Plans' view specifically, we redirect 'Deploy Selected' button to a new page. This page would have collapsible panels view of running vs. intended configurations (or missing vs. extra?) for each selected device.
Workflow would be:
The "Deploy" job button on the Config Plan page would be removed to lower confusion and granting 1 streamlined workflow to deploy plans.
Edits:
Instead of modal, I was just thinking it's own page, I could be convinced otherwise, but given the amount of data on it, I think we will need all of the real estate.
I am not understanding what workflow 2 would provide?
Agreed on the full page.
Well the deploy button was already in the Config Plan page :shrug: so I figured there was a reason. Could just remove it and have the "Merge Selected" button that then takes you to the next page. That consolidates ways you can merge. Makes it 1 streamlined flow.
Updated previous comment: https://github.com/nautobot/nautobot-app-golden-config/issues/825#issuecomment-2450266612 for clarity with discussions.
I think that works, I think you can leave it as Deployed Selected, I don't think anyone will be confused that there is a confirmation.
Environment
I'd like to be able to select a certain amount of devices and see all of their config diffs and if they all have the same diff then they would combine or not. It could be shown in Config Plans as a button with a popup of all the devices in the plan and/or Configuration Overview I could select the devices (probably a bulk action) and get a collapsing diff view of them all.
I want to deploy a bunch of configs to a lot of devices and I want to check what is going on with all the devices. Selecting each device 1 by 1 is not scalable and adds a lot of engineer time.
Figmaed (Figma'd?) a quick example: