diff options
author | bdemers <bdemers@apache.org> | 2015-08-07 23:54:35 -0400 |
---|---|---|
committer | bdemers <bdemers@apache.org> | 2015-10-19 10:32:20 -0400 |
commit | 455cabdee3158e7b2181c96e6d3b791f812c7fee (patch) | |
tree | 469a8886c5a44c4e0f20111017d57daf163f3164 /os_net_config/utils.py | |
parent | a7d9cc1129370f543ab05935bcff17896d09be70 (diff) |
Added natural sort for interfaces in utils.ordered_active_nics()
This way device eth10 is after eth9, and not directly after eth1
Change-Id: I81eba97cccf6c4f314f9037d16ee1f244dbade02
Closes-Bug: #1482818
Diffstat (limited to 'os_net_config/utils.py')
-rw-r--r-- | os_net_config/utils.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/os_net_config/utils.py b/os_net_config/utils.py index f0ab307..ab7f3b3 100644 --- a/os_net_config/utils.py +++ b/os_net_config/utils.py @@ -17,6 +17,7 @@ import glob import logging import os +import re logger = logging.getLogger(__name__) @@ -75,6 +76,12 @@ def _is_active_nic(interface_name): return False +def _natural_sort_key(s): + nsre = re.compile('([0-9]+)') + return [int(text) if text.isdigit() else text + for text in re.split(nsre, s)] + + def ordered_active_nics(): embedded_nics = [] nics = [] @@ -86,7 +93,11 @@ def ordered_active_nics(): embedded_nics.append(nic) else: nics.append(nic) - return sorted(embedded_nics) + sorted(nics) + # NOTE: we could just natural sort all active devices, + # but this ensures em, eno, and eth are ordered first + # (more backwards compatible) + return (sorted(embedded_nics, key=_natural_sort_key) + + sorted(nics, key=_natural_sort_key)) def diff(filename, data): |