From 67f14772b10bb41be43e2e1ca3a51b4bf0e15737 Mon Sep 17 00:00:00 2001 From: Piotr Wojciechowski <23406016+WojciechowskiPiotr@users.noreply.github.com> Date: Wed, 20 Feb 2019 22:04:42 +0100 Subject: [PATCH] docker_node: labels operation fails when parameter 'labels' is None (#52662) * docker_node: Fix for situation where labels parameter is None * docker_node: Fix for situation where labels parameter is None and labels are not removed --- lib/ansible/modules/cloud/docker/docker_node.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/ansible/modules/cloud/docker/docker_node.py b/lib/ansible/modules/cloud/docker/docker_node.py index d6fcdb3c86..147f5c4f22 100644 --- a/lib/ansible/modules/cloud/docker/docker_node.py +++ b/lib/ansible/modules/cloud/docker/docker_node.py @@ -229,15 +229,20 @@ class SwarmNodeManager(DockerBaseClass): if self.parameters.labels_to_remove is not None: for key in self.parameters.labels_to_remove: - if not self.parameters.labels.get(key): + if self.parameters.labels is not None: + if not self.parameters.labels.get(key): + if node_spec['Labels'].get(key): + node_spec['Labels'].pop(key) + changed = True + else: + self.client.module.warn( + "Label '%s' listed both in 'labels' and 'labels_to_remove'. " + "Keeping the assigned label value." + % to_native(key)) + else: if node_spec['Labels'].get(key): node_spec['Labels'].pop(key) changed = True - else: - self.client.module.warn( - "Label '%s' listed both in 'labels' and 'labels_to_remove'. " - "Keeping the assigned label value." - % to_native(key)) if changed is True: if not self.check_mode: