[libvirt] error: internal error canonical hostname pointed to localhost, but this is not allowed

Chris Lalancette clalance at redhat.com
Wed Mar 24 19:41:35 UTC 2010


On 03/24/2010 03:36 PM, Cole Robinson wrote:
> On 03/24/2010 09:36 AM, Chris Lalancette wrote:
>> On 03/23/2010 11:00 AM, Kenneth Nagin wrote:
>>> Changing qemudDomainMigratePrepare2 call  to virGetHostnameLocalhost
>>> from: if ((hostname = virGetHostnameLocalhost(0)) == NULL)
>>> to: if ((hostname = virGetHostnameLocalhost(1)) == NULL)
>>> seems to fix the problem.
>>> But maybe this is only masking a another problem.
>>
>> Yeah, you are masking another problem.  The problem is that this portion
>> of migration is running on the destination of the migration, and generating
>> a string that the source of the migration will use to perform the migration.
>> By passing the 1 flag to virGetHostnameLocalhost, you are allowing it to
>> return "localhost" as the string.  This means that when the source tries
>> to migrate, it will actually try to migrate to "localhost", not the
>> destination, and fail in complicated-to-debug ways.
>>
>> The actual problem you have is that the "hostname" command on your
>> machine is returning a string that resolves to localhost, probably because of
>> a misconfiguration in /etc/hosts.
>>
> 
> In this case, the destination is a host that the user already has a
> valid remote libvirt URI for: maybe if 'hostname' doesn't work, we can
> fallback to use the hostname portion of the remote URI? I can have a
> static mapping in my local /etc/hosts for some remote machine without
> 'hostname' output.

Yeah, that's a pretty good idea.  We still need to make sure that we
don't eventually resolve to "localhost", but at least your suggestion
would fix the situation you describe above.

-- 
Chris Lalancette




More information about the libvir-list mailing list