From dad421c863006f9774f2fed9fc32f3de8f871af6 Mon Sep 17 00:00:00 2001
From: Thomas Wiest <twiest@redhat.com>
Date: Fri, 1 May 2015 16:58:41 -0400
Subject: Added utils.py that contains a normalize_dnsname function good for
 sorting dns names to a human readable list.

---
 bin/openshift_ansible/utils.py | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)
 create mode 100644 bin/openshift_ansible/utils.py

(limited to 'bin/openshift_ansible')

diff --git a/bin/openshift_ansible/utils.py b/bin/openshift_ansible/utils.py
new file mode 100644
index 000000000..e6243aa5a
--- /dev/null
+++ b/bin/openshift_ansible/utils.py
@@ -0,0 +1,30 @@
+#!/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)
-- 
cgit v1.2.3