It looks like this is because the instance 'name' is used as the instance hostname, which is then passed to update the neutron port's dns_name and then that call fails because it is not a valid FQDN. The top-level domain name cannot be all numeric.
When we set instance.hostname, we run it through utils.sanitize_hostname() first to ensure the resulting hostname conforms to the RFC-952 and RFC-1123 specs. So it looks like utils.sanitize_hostname() needs to be enhanced to handle this *or* we need to check the resulting hostname for RFC conformance and fail earlier, before the RPC cast to conductor. That way the user will receive a 400 from the API instead of getting an instance in ERROR state.
It looks like this is because the instance 'name' is used as the instance hostname, which is then passed to update the neutron port's dns_name and then that call fails because it is not a valid FQDN. The top-level domain name cannot be all numeric.
When we set instance.hostname, we run it through utils.sanitize_ hostname( ) first to ensure the resulting hostname conforms to the RFC-952 and RFC-1123 specs. So it looks like utils.sanitize_ hostname( ) needs to be enhanced to handle this *or* we need to check the resulting hostname for RFC conformance and fail earlier, before the RPC cast to conductor. That way the user will receive a 400 from the API instead of getting an instance in ERROR state.