#!/usr/bin/env python
# vim: expandtab:tabstop=4:shiftwidth=4

''' The purpose of this module is to contain small utility functions.
'''

import re

def normalize_dnsname(name, padding=10):
    ''' The purpose of this function is to return a dns name with zero padding,
        so that it sorts properly (as a human would expect).

        Example: name=ex-lrg-node10.prod.rhcloud.com
        Returns: ex-lrg-node0000000010.prod.rhcloud.com

        Example Usage:
            sorted(['a3.example.com', 'a10.example.com', 'a1.example.com'],
                   key=normalize_dnsname)

        Returns: ['a1.example.com', 'a3.example.com', 'a10.example.com']
    '''
    parts = re.split(r'(\d+)', name)
    retval = []
    for part in parts:
        if re.match(r'^\d+$', part):
            retval.append(part.zfill(padding))
        else:
            retval.append(part)

    return ''.join(retval)