From 8686eb69639da77fcff4f8a306931b92dcb09d73 Mon Sep 17 00:00:00 2001 From: Brian Lamar Date: Wed, 9 Nov 2011 18:16:24 -0500 Subject: [PATCH] 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 --- nova/utils.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/nova/utils.py b/nova/utils.py index 7723837c9..ec5de7aab 100644 --- a/nova/utils.py +++ b/nova/utils.py @@ -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