* [email protected] <[email protected]> [2013-12-03 13:12:55 +0000]:
> Status: Accepted > Owner: [email protected] > Labels: Type-Defect Priority-High Milestone-Release2.8 Component-instances > > New issue 633 by [email protected]: Migration of ext type > instances fail due to physical_id missing > http://code.google.com/p/ganeti/issues/detail?id=633 > > What steps will reproduce the problem? > 1. Add a second disk in a test instance with ext disk template > 2. Migrate the instance > 3. Accept instance fails > > Target node's noded-daemon log: > > 2013-12-03 14:25:02,853: ganeti-noded pid=1799 ERROR Error in RPC call > Traceback (most recent call last): > File "/usr/share/ganeti/ganeti/server/noded.py", line 181, in > HandleRequest > result = (True, method(serializer.LoadJson(req.request_body))) > File "/usr/share/ganeti/ganeti/server/noded.py", line 645, in > perspective_accept_instance > return backend.AcceptInstance(instance, info, target) > File "/usr/share/ganeti/ganeti/backend.py", line 1537, in AcceptInstance > _GatherAndLinkBlockDevs(instance) > File "/usr/share/ganeti/ganeti/backend.py", line 1315, in > _GatherAndLinkBlockDevs > device = _RecursiveFindBD(disk) > File "/usr/share/ganeti/ganeti/backend.py", line 2112, in _RecursiveFindBD > return bdev.FindDevice(disk, children) > File "/usr/share/ganeti/ganeti/bdev.py", line 3419, in FindDevice > disk.params) > File "/usr/share/ganeti/ganeti/bdev.py", line 2994, in __init__ > raise ValueError("Invalid configuration data %s" % str(unique_id)) > ValueError: Invalid configuration data None > 2013-12-03 14:25:02,863: ganeti-noded pid=1799 INFO > 192.168.2.2:51978 POST /accept_instance HTTP/1.1 200 > > > > What is the expected output? What do you see instead? > > This happens because when adding a disk in 2.8, SetDiskID() does not get > invoked. As a result disk entries inside config.data have no physical_id. > In case of EXT, before accepting the instance we invoke > _GatherAndLinkBlockDevices(). This takes `instance` as an argument > which includes disks without physical_id and thus FindDevice() > fails. > > As far as I know physical_id is meant to be deprecated right? In > future releases it will be removed from the file. So I propose > the following fix: > > --- a/lib/cmdlib/instance_migration.py > +++ b/lib/cmdlib/instance_migration.py > @@ -709,6 +709,8 @@ class TLMigrateInstance(Tasklet): > self._WaitUntilSync() > > self.feedback_fn("* preparing %s to accept the instance" % target_node) > + for disk in instance.disks: > + self.cfg.SetDiskID(disk, target_node) > result = self.rpc.call_accept_instance(target_node, > instance, > migration_info, > > > Any comments on that? > > Any news on that? > -- > You received this message because this project is configured to send > all issue notifications to this address. > You may adjust your notification preferences at: > https://code.google.com/hosting/settings
signature.asc
Description: Digital signature
