Repository navigation
UI: allow memory setting in flex compute offering in GiB with unit selector (#14082) - #14413
saurabhkushwaha438 wants to merge 1 commit into
Conversation
| this.updateComputeCpuNumber(this.preFillContent.cpunumber || this.cpuNumberInputValue) | ||
| this.updateComputeCpuSpeed(this.preFillContent.cpuspeed || this.cpuSpeedInputValue) | ||
| this.updateComputeMemory(this.preFillContent.memory || this.memoryInputValue) | ||
| this.updateComputeMemory(this.memoryDisplayValue) |
There was a problem hiding this comment.
what happens when the memory isnt a round GiB value? an imported vm with 1500 MB shows as 1.46 GiB and gets sent back as 1495 without the user touching it
There was a problem hiding this comment.
nice catch , now i am confuse and would be great to get suggestion from you and others
There was a problem hiding this comment.
np. maybe, we can open it in MiB when the value isnt a whole number of GiB? then 1500 stays 1500. on load and on a unit switch, send the saved MiB value as is and only convert when the user changes the number.
There was a problem hiding this comment.
another option could be use GIB for display only because MIB is only state and single source of truth so in backend we will use actual MIB value
There was a problem hiding this comment.
that only works if the saved MiB is what gets sent.
There was a problem hiding this comment.
bandicam.2026-10-17.21-08-51-749.mp4
how about this , is this better direction
There was a problem hiding this comment.
@saurabhkushwaha438 This looks better. But IMHO I think that having a slider for GiB that goes in increments of 0.01 is not a very interesting design. I think both the GiB and MiB increments should be of 1 (of their respective unit of mesurement).
If you want to have a VM with 1.6 GiB for some reason, you can just use the MiB slider. I believe most users will use whole GiB numbers, not fractions.
There was a problem hiding this comment.
ok i will this "GiB and MiB increments should be of 1"
There was a problem hiding this comment.
bandicam.2026-10-17.21-08-51-749.mp4
how about this , is this better direction
and i havent commited those change yet
There was a problem hiding this comment.
@saurabhkushwaha438 yes this is a better direction, 1500 stays 1500 now unless the user changes it. any reason for 0.25 GiB steps? you agreed with joao on steps of 1 for GiB and MiB.
Codecov Report✅ All modified and coverable lines are covered by tests.
Additional details and impacted files@@ Coverage Diff @@
## main #14413 +/- ##
=============================================
- Coverage 19.91% 3.87% -16.04%
=============================================
Files 6373 493 -5880
Lines 577230 42613 -534617
Branches 70696 8087 -62609
=============================================
- Hits 114936 1653 -113283
+ Misses 449736 40729 -409007
+ Partials 12558 231 -12327
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
@nvazquez a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress. |
|
UI build: ✔️ |
db7c8a0 to
2c7e3a6
Compare
…B step (apache#14082) - Add compact unit selector dropdown (GiB/MiB) for flex compute offerings - Use fixed 0.25 GiB steps in GiB mode (binary-exact to 256 MiB intervals, zero rounding errors) - Maintain integer MiB as authoritative internal state to prevent lossy conversion on load - Default to GiB for 256 MiB multiples and MiB for arbitrary sizes (e.g. 1500 MiB) - Add hover tooltip to display exact converted values
2c7e3a6 to
c401af2
Compare
| updateComputeMemory (displayValue) { | ||
| if (displayValue === null || displayValue === undefined) { | ||
| this.memoryDisplayValue = 0 | ||
| displayValue = 0 |
There was a problem hiding this comment.
@saurabhkushwaha438 can we keep the required error when the box is cleared? on an offering with no limits this now sends 0 instead.
|
@Damans227 a Jenkins job has been kicked to build UI QA env. I'll keep you posted as I make progress. |
Description
Fixes #14082
1. Conversion from MiB to GiB (Display & Rounding)
1 GiB = 1024 MiB).0.01(or smaller for sub-GiB offerings) with precision2.1with integer precision0.2. Conversion from GiB to MiB (Backend Value Emission)
minMemory/maxMemory), selecting the exact minimum or maximum bound in GiB directly maps to the exact integerminMemoryormaxMemoryin MiB to eliminate any potential off-by-one rounding discrepancies.💬 Feedback Needed: Fractional GiB to Integer MiB Rounding
1.51 GiB × 1024 = 1546.24 MiB).1546 MiB), which is then emitted in the API payload and consumed by backend hypervisor managers.Math.round) is acceptable, or if we should apply ceiling (Math.ceil) to guarantee the VM always receives at least the requested GiB amount.bandicam.2026-10-16.10-21-12-210.mp4