Skip to content

Commit

Permalink
Take image virtual size into account when creating Volumes
Browse files Browse the repository at this point in the history
This is a followup to #1104

When creating new volumes on the Volume screen in Harvester, the
default size is empty, i.e. it's not pre-filled with anything at
all.  If the source is set to "VM image" we can now take the image
virtual size and use that as the default size for the volume.
Unlike when creating VMs (which always set the volume to a minimum
of 10GiB regardless of virtual size, for consistency with earlier
harvester versions), on this screen we just use the virtual size
as-is.  If the user wants to make it bigger, they can.

Related issue: harvester/harvester#4905

Signed-off-by: Tim Serong <tserong@suse.com>
Co-authored-by: Volker Theile <vtheile@suse.com>
(cherry picked from commit 3778552)
  • Loading branch information
tserong authored and a110605 committed Sep 16, 2024
1 parent 0d908c9 commit 576fc86
Showing 1 changed file with 14 additions and 4 deletions.
18 changes: 14 additions & 4 deletions pkg/harvester/edit/harvesterhci.io.volume.vue
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ export default {
const hash = await allHash(_hash);
this.snapshots = hash.snapshots;
this.images = hash.images;
const defaultStorage = this.$store.getters[`harvester/all`](STORAGE_CLASS).find( O => O.isDefault);
Expand All @@ -77,6 +78,7 @@ export default {
storage,
imageId,
snapshots: [],
images: [],
};
},
Expand Down Expand Up @@ -108,10 +110,8 @@ export default {
},
imageOption() {
const choices = this.$store.getters['harvester/all'](HCI.IMAGE);
return sortBy(
choices
this.images
.filter(obj => obj.isReady)
.map((obj) => {
return {
Expand Down Expand Up @@ -249,7 +249,17 @@ export default {
this.$set(this.value, 'spec', spec);
},
updateImage() {
if (this.isVMImage && this.imageId) {
const imageResource = this.images?.find(image => this.imageId === image.id);
const imageSize = Math.max(imageResource?.status?.size, imageResource?.status?.virtualSize);
if (imageSize) {
this.storage = `${ Math.ceil(imageSize / 1024 / 1024 / 1024) }Gi`;
}
}
this.update();
},
generateYaml() {
const out = saferDump(this.value);
Expand Down Expand Up @@ -300,7 +310,7 @@ export default {
required
:mode="mode"
class="mb-20"
@input="update"
@input="updateImage"
/>
<LabeledSelect
Expand Down

0 comments on commit 576fc86

Please sign in to comment.