Skip to content

Commit

Permalink
fix OVA storage mapping
Browse files Browse the repository at this point in the history
  • Loading branch information
mansam committed Dec 13, 2024
1 parent 9c70863 commit 266950c
Showing 1 changed file with 38 additions and 14 deletions.
52 changes: 38 additions & 14 deletions pkg/controller/plan/adapter/ova/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -160,24 +160,48 @@ func (r *Builder) DataVolumes(vmRef ref.Ref, secret *core.Secret, _ *core.Config
return
}

var defaultMapping *v1beta1.DestinationStorage
mappedDiskIds := make(map[string]bool)
storageMapIn := r.Context.Map.Storage.Spec.Map
for i := range storageMapIn {
mapped := &storageMapIn[i]
ref := mapped.Source
storage := &model.Storage{}
fErr := r.Source.Inventory.Find(storage, ref)
if fErr != nil {
err = fErr
return
}
if storage.ID == DefaultStorageID {
defaultMapping = &mapped.Destination
continue
}
for _, disk := range vm.Disks {
if disk.ID == storage.ID {
var dv *cdi.DataVolume
dv, err = r.mapDataVolume(disk, mapped.Destination, dvTemplate)
if err != nil {
return
}
dvs = append(dvs, *dv)
mappedDiskIds[disk.ID] = true
}
}
}

for _, disk := range vm.Disks {
mapping, found := r.Context.Plan.Referenced.Map.Storage.FindStorage(disk.ID)
if !found {
mapping, found = r.Context.Plan.Referenced.Map.Storage.FindStorage(DefaultStorageID)
if !found {
err = liberr.New(
"Disk does not have individual mapping and could not find default in storage map",
"disk", disk.Name, "id", disk.ID,
)
if !mappedDiskIds[disk.ID] {
if defaultMapping == nil {
err = liberr.New("VM has unmapped disks and no default disk mapping is set.", "vm", vm.ID)
return
}
var dv *cdi.DataVolume
dv, err = r.mapDataVolume(disk, *defaultMapping, dvTemplate)
if err != nil {
return
}
dvs = append(dvs, *dv)
}
var dv *cdi.DataVolume
dv, err = r.mapDataVolume(disk, mapping.Destination, dvTemplate)
if err != nil {
return
}
dvs = append(dvs, *dv)
}

return
Expand Down

0 comments on commit 266950c

Please sign in to comment.