Follow hostname RFCs

Updated hostname sanitization method to more closely follow RFC-952
and RFC-1123. Also moved it to nova.utils, where it seems to fit
better.

Fixes bug 885374

(Patch Set 1) Updated hostname sanitization with more efficient and
              [opinion] more readable implementation.

Change-Id: I60d7ee89867c05950bec1fd53b072a1c6247ebea
This commit is contained in:
Brian Lamar 2011-11-09 18:16:24 -05:00
parent 997829ea93
commit 8686eb6963

View File

@ -1061,3 +1061,16 @@ def total_seconds(td):
else:
return ((td.days * 86400 + td.seconds) * 10 ** 6 +
td.microseconds) / 10.0 ** 6
def sanitize_hostname(hostname):
"""Return a hostname which conforms to RFC-952 and RFC-1123 specs."""
if isinstance(hostname, unicode):
hostname = hostname.encode('latin-1', 'ignore')
hostname = re.sub('[ _]', '-', hostname)
hostname = re.sub('[^\w.-]+', '', hostname)
hostname = hostname.lower()
hostname = hostname.strip('.-')
return hostname