Sorry for the chaos, I've found out already, it's few lines, I'm sending them in a while. Martin On 07/09/2013 12:18 PM, Martin Kletzander wrote: > Hi, > > I'm trying to fix one problem in VMM and after several hours, I came to > a conclusion that I'll ask on a list for hints. When creating new > machine, we create a disk without bus/target and thus there is a > conflict in case user adds one more disk with the default bus. The > problem is that the new disk gets generates target like 'vda' (neither > target nor bus are known for the default disk, so the targets that > should be skipped contain only '[None, None]'). > > I managed to "fix" it simply by the following patch (which should be > applied anyway, since it fixes one apparent problem itself), but the > problem with the approach is that the default disk gets generated after > all the other disks ('vdb' if you add one disk). Removing all the > targets is obviously not a choice. > > But when the additional disk gets added, all the data for the default > disk is already visible in the guest XML. So I'm wondering where the > problem is. Either we should be calling redefine_cached() somewhere to > get the data back into structures or something. I can't seem to find > where the disk gets its 'bus' property set. > > Thanks for any hints, > Martin > > The patch mentioned: > > diff --git a/virtinst/Guest.py b/virtinst/Guest.py > index ffcddca..8a3cf3d 100644 > --- a/virtinst/Guest.py > +++ b/virtinst/Guest.py > @@ -1351,6 +1351,7 @@ class Guest(XMLBuilderDomain.XMLBuilderDomain): > > # Generate disk targets, and set preferred disk bus > used_targets = [] > + to_generate = [] > for disk in devlist_func(VirtualDevice.VIRTUAL_DEV_DISK): > if not disk.bus: > if disk.device == disk.DEVICE_FLOPPY: > @@ -1367,7 +1368,10 @@ class Guest(XMLBuilderDomain.XMLBuilderDomain): > if disk.target: > used_targets.append(disk.target) > else: > - used_targets.append(disk.generate_target(used_targets)) > + to_generate.append(disk) > + > + for disk in to_generate: > + used_targets.append(disk.generate_target(used_targets)) > > # Set sound device model > sound_model = self._lookup_device_param(soundtype, "model") > > _______________________________________________ > virt-tools-list mailing list > virt-tools-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/virt-tools-list > _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list