docker_swarm_service: fix crash during idempotence check if published_port is not specified (#136)

* Avoid crash during idempotence check if published_port is not specified.

* Add tests.

* Convert lambda to function.
This commit is contained in:
Felix Fontein
2021-05-05 08:00:22 +02:00
committed by GitHub
parent 859bc29f9e
commit 74475d1d9b
3 changed files with 42 additions and 2 deletions
+4 -2
View File
@@ -917,7 +917,6 @@ EXAMPLES = '''
import shlex
import time
import operator
import traceback
from distutils.version import LooseVersion
@@ -1792,7 +1791,10 @@ class DockerService(DockerBaseClass):
old_publish = old_publish or []
if len(self.publish) != len(old_publish):
return True
publish_sorter = operator.itemgetter('published_port', 'target_port', 'protocol')
def publish_sorter(item):
return (item.get('published_port') or 0, item.get('target_port') or 0, item.get('protocol') or '')
publish = sorted(self.publish, key=publish_sorter)
old_publish = sorted(old_publish, key=publish_sorter)
for publish_item, old_publish_item in zip(publish, old_publish):