* [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

Attachment: signature.asc
Description: Digital signature

Reply via email to