From d230e9f563e3b1e5016d02c7fea4940903bcbdb9 Mon Sep 17 00:00:00 2001 From: Jill Rouleau Date: Tue, 2 Oct 2018 16:00:55 -0700 Subject: [PATCH] Handle missing keys in service_names Fixes a bug where a service map entry had to have both a systemd_unit and a container_name defined for any service. Both are possible to provide support for baremetal and containerized clouds, but should not be required. Change-Id: I1f48290ed04444c5e829272d965951c209a9fe58 --- library/service_map_facts.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/library/service_map_facts.py b/library/service_map_facts.py index efa2c4e..576273a 100644 --- a/library/service_map_facts.py +++ b/library/service_map_facts.py @@ -85,10 +85,23 @@ def run_module(): services_to_restart = {i: service_map[i] for i in service_names} - container_list = [j for i in service_names - for j in services_to_restart[i]['container_name']] - service_unit_list = [j for i in service_names - for j in services_to_restart[i]['systemd_unit']] + container_list = [] + for name in service_names: + try: + for item in services_to_restart[name]['container_name']: + container_list.append(item) + except KeyError: + # be tolerant if only a systemd unit is defined for the service + pass + + service_unit_list = [] + for svc_name in service_names: + try: + for i in services_to_restart[svc_name]['systemd_unit']: + service_unit_list.append(i) + except KeyError: + # be tolerant if only a container name is defined for the service + pass result = dict( ansible_facts=dict(