Description
So we currently have a hack in core/src/main/resources/functions/configure_hostnames.sh to reset the instance hostname on Rackspace to a-b-c-d.static.cloud-ips.com, since the hostname on the instance that Rackspace uses either isn't resolvable at all or isn't resolvable externally (not 100% sure which is the case there - I think they're just not resolvable). This logic should be generalized, since there are other providers where this is the case, and it's also an issue with, say, something like a private Cloudstack install.
What seems to make sense is to add a property - something like whirr.ip-hostname-domain - and to add a check if we can actually resolve the instance's hostname from anywhere but that particular instance (since the very fact of it being in /etc/hostname means it'll be resolvable locally). If not, set the hostname to a-b-c-d.${whirr.ip-hostname-domain}, with logic in Java somewhere to have a mapping of known provider->ip hostname domains for cases like Rackspace, so that whirr.ip-hostname-domain doesn't need to be set explicitly in those cases.