[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