-
Notifications
You must be signed in to change notification settings - Fork 364
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
feat: [M3-7114] - Allow user to choose resize migration type when resizing Linode #9677
Conversation
Thanks for fixing this! 🎉 🥇 I'd recently noticed that a few notices were looking weirdly skinny, seemingly randomly, but hadn't tracked it down or made a ticket. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hoping to circle back soon with a proper review, but just swinging in now to thank you for the Cypress test additions!
packages/manager/cypress/e2e/core/linodes/resize-linode.spec.ts
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✅ Observe you now have a radio group to choose warm or cold migrations
✅ Warm is set as default
✅ When pressing Resize Linode you should see a confirmation dialog appear before resize takes effect
✅ During resize we should see resize events as outlined in screenshot and notification (notice) on Linode detail page. Note: The copy for a warm resize has not been updating yet (awaiting API), but you should see the payload with the new migration_type: warm as shown in screenshot.
✅ A cold resize does NOT have any additional confirmation (assuming this means no confirmation dialog)
Something interesting to note: when I clicked 'Continue' in the confirmation popup, if an error appears, the popup stays -- not sure if this is the behavior you want or not:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice! looks great overall.
A couple comments on the UI:
This tooltip should be wider. The copy is a bit lengthy and It's pretty hard to read currently.
The logic for disabling the field if a linode is powered down is implemented, however there's no explanation as to why. Yes, it's logical we can't perform a warm migration on a powered down Linode, but I don't think we should assume a user will immediately figure out (it's a new feature). I think the UX is lacking here and I'd rather see the "Cold" selection enabled with no option to switch to the warm option and some helper text as to why.
Update: I addressed your second concern! Updated description @coliu-akamai The dialog should close on error and scroll to the top still, good catch 👍 |
@abailly-akamai I also want to point out some additional changes for the Linodes Landing page (updated description): |
Will be checking these off as I go through them
|
@jaalah thx for the changes - looks much better 👍 I also noticed there's an issue with persisting state in the resize modal which I think is unrelated to this PR, but which this PR makes more evident. See video below, look at the persisting error banner and new modal across various resizes attempts Screen.Recording.2023-09-28.at.09.52.57.mov |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Feature flag functionality ✅
- Radio button group for selecting warm or cold migration in the Linode Resize modal ✅
- Radio button group disabled if Linode is powered off ✅
- Confirmation modal displayed if “Warm resize” chosen ✅
- Events/Notifications appear as expected ✅
When you click one of the radio buttons, the label gets highlighted:
Screen.Recording.2023-09-28.at.10.21.48.AM.mov
I'm also observing linodes not having their statuses updated properly after resizes in the Linodes landing table (e.g., resize one that was running --> the process completes and the linode shows as "Offline" in the table, although it's actually running; it doesn't update properly until a refresh), but that seems to be an existing issue?
packages/manager/src/features/Linodes/LinodesDetail/LinodeResize/LinodeResize.tsx
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
1dc3d86
to
38604c0
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Leaving my approval here tho it shouldn't count as one of the co-author.
Tested all scenari i could think of with a special focus on the dialog state management.
- Resize modal content and UI behaviour for a powered down Linode ✅
- Resize modal content UI behaviour for a powered Linode ✅
- Copy ✅
337a736
to
222202d
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pushed a quick fix for the one failing resize test! Looking good to me 👍
Description 📝
This work will introduce
warm
migrations which combine the benefits ofcold
andlive
migrations to greatly reduce customer downtime when resizing Linodes.Major Changes 🔄
unifiedMigrations
Resize Flow:
migration_type
POST field for thelinode/instances/.../resize
endpoint that should bewarm
orcold
. Backend defaults tocold
, but in the UI we are defaulting towarm
unless the user chooses otherwise.warm
orcold
migrations in theLinodeResize
flow.cold
migration.Linode Landing:
running
tomigrating
with a green dot iconOther:
<Notice />
and fixed a bug in ourfadeIn
keyframes. Pesky colons!<Notice />
didn't seem right or match<DismissibleBanner />
which seemed to be the intention, so this has been fixed.TODO:
Preview 📷
How to test 🧪
Unified Migrations
feature flag via dev toolswarm
orcold
migrations withwarm
set as the defaultResize Linode
you should see a confirmation dialog appear before resize takes effectwarm
resize has not been updating yet (awaiting API), but you should see the payload with the newmigration_type: warm
as shown in screenshot.cold
resize does NOT have any additional confirmation