def canonicalize_hostname(hostname, user='******'): hostname_expr = hostname_expr_templ.format( lab_domain=config.lab_domain.replace('.', '\.')) match = re.match(hostname_expr, hostname) if _is_ipv4(hostname) or _is_ipv6(hostname): return "%s@%s" % (user, hostname) if match: match_d = match.groupdict() shortname = match_d['shortname'] if user is None: user_ = user else: user_ = match_d.get('user') or user else: shortname = host_shortname(hostname) user_ = user user_at = user_.strip('@') + '@' if user_ else '' ret = '{user_at}{short}.{lab_domain}'.format( user_at=user_at, short=shortname, lab_domain=config.lab_domain, ) return ret
def host_shortname(hostname): if _is_ipv4(hostname) or _is_ipv6(hostname): return hostname else: return hostname.split('.', 1)[0]