From fcae11bf96affef383749a4fa051a8a5aad592f1 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Mon, 6 Nov 2017 14:57:15 -0500 Subject: [PATCH] Do natural sort on expression expansion This creates more logical behavior from nodeshell and noderun when dealing with many nodes, particularly when crossing the concurrency limit. --- .../confluent/plugins/configuration/attributes.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/confluent_server/confluent/plugins/configuration/attributes.py b/confluent_server/confluent/plugins/configuration/attributes.py index 1139f3f5..06e061c0 100644 --- a/confluent_server/confluent/plugins/configuration/attributes.py +++ b/confluent_server/confluent/plugins/configuration/attributes.py @@ -16,6 +16,7 @@ import confluent.exceptions as exc import confluent.messages as msg import confluent.config.attributes as allattributes +import confluent.util as util def retrieve(nodes, element, configmanager, inputdata): @@ -175,8 +176,11 @@ def _expand_expression(nodes, configmanager, inputdata): expression = expression['expression'] if type(expression) is dict: expression = expression['expression'] + pernodeexpressions = {} for expanded in configmanager.expand_attrib_expression(nodes, expression): - yield msg.KeyValueData({'value': expanded[1]}, expanded[0]) + pernodeexpressions[expanded[0]] = expanded[1] + for node in util.natural_sort(pernodeexpressions): + yield msg.KeyValueData({'value': pernodeexpressions[node]}, node) def create(nodes, element, configmanager, inputdata):