From 1906c927f16a15cb8843bfbaac589b983d58005c Mon Sep 17 00:00:00 2001 From: Jonathan Adami Date: Sun, 26 Apr 2020 18:32:29 +1000 Subject: [PATCH] Make sure that I don't duplicate servers or upstream, if their arguments come in different order they are considered different --- mergeswarm.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/mergeswarm.py b/mergeswarm.py index e122952..8ff8584 100644 --- a/mergeswarm.py +++ b/mergeswarm.py @@ -19,8 +19,28 @@ nodes = [f['parsed'] for f in swarm_config[1:-1]] for node in nodes: for statement in node: - if statement not in nginx_config: - nginx_config.append(statement) + if statement in nginx_config: + continue + if statement['directive'] == 'upstream': + all_upstream = [ + s['args'][0] + for s in nginx_config if s['directive'] == 'upstream' + ] + if statement['args'][0] in all_upstream: + continue + if statement['directive'] == 'server': + server_name = [ + s['args'][0] + for s in statement['block'] if s['directive'] == 'server_name' + ][0] + all_server_names = [ + sl['args'][0] + for s in nginx_config if s['directive'] == 'server' + for sl in s['block'] if sl['directive'] == 'server_name' + ] + if server_name in all_server_names: + continue + nginx_config.append(statement) with open(NGINX_OUTPUT, 'w') as f: f.write(build(nginx_config))