mirror of
https://github.com/thegeeklab/docker-tidy.git
synced 2024-11-22 04:00:40 +00:00
Fix error on missing labels
It seems a container can have "null" Labels so we need to handle that case.
This commit is contained in:
parent
e66fb295f4
commit
0d48a757ef
@ -76,21 +76,25 @@ def filter_excluded_containers(containers, exclude_container_labels):
|
||||
|
||||
|
||||
def should_exclude_container_with_labels(container, exclude_container_labels):
|
||||
for exclude_label in exclude_container_labels:
|
||||
if exclude_label.value:
|
||||
matching_keys = fnmatch.filter(
|
||||
container['Labels'].keys(),
|
||||
exclude_label.key,
|
||||
)
|
||||
label_values_to_check = [
|
||||
container['Labels'][matching_key]
|
||||
for matching_key in matching_keys
|
||||
]
|
||||
if fnmatch.filter(label_values_to_check, exclude_label.value):
|
||||
return True
|
||||
else:
|
||||
if fnmatch.filter(container['Labels'].keys(), exclude_label.key):
|
||||
return True
|
||||
if container['Labels']:
|
||||
for exclude_label in exclude_container_labels:
|
||||
if exclude_label.value:
|
||||
matching_keys = fnmatch.filter(
|
||||
container['Labels'].keys(),
|
||||
exclude_label.key,
|
||||
)
|
||||
label_values_to_check = [
|
||||
container['Labels'][matching_key]
|
||||
for matching_key in matching_keys
|
||||
]
|
||||
if fnmatch.filter(label_values_to_check, exclude_label.value):
|
||||
return True
|
||||
else:
|
||||
if fnmatch.filter(
|
||||
container['Labels'].keys(),
|
||||
exclude_label.key
|
||||
):
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
|
@ -75,6 +75,7 @@ def test_filter_excluded_containers():
|
||||
{'Labels': {'too': 'lol'}},
|
||||
{'Labels': {'toots': 'lol'}},
|
||||
{'Labels': {'foo': 'bar'}},
|
||||
{'Labels': None},
|
||||
]
|
||||
result = docker_gc.filter_excluded_containers(mock_containers, None)
|
||||
assert mock_containers == list(result)
|
||||
@ -86,7 +87,11 @@ def test_filter_excluded_containers():
|
||||
mock_containers,
|
||||
exclude_labels,
|
||||
)
|
||||
assert [mock_containers[0], mock_containers[2]] == list(result)
|
||||
assert [
|
||||
mock_containers[0],
|
||||
mock_containers[2],
|
||||
mock_containers[4]
|
||||
] == list(result)
|
||||
exclude_labels = [
|
||||
docker_gc.ExcludeLabel(key='too*', value='lol'),
|
||||
]
|
||||
@ -94,7 +99,11 @@ def test_filter_excluded_containers():
|
||||
mock_containers,
|
||||
exclude_labels,
|
||||
)
|
||||
assert [mock_containers[0], mock_containers[3]] == list(result)
|
||||
assert [
|
||||
mock_containers[0],
|
||||
mock_containers[3],
|
||||
mock_containers[4]
|
||||
] == list(result)
|
||||
|
||||
|
||||
def test_cleanup_images(mock_client, now):
|
||||
|
Loading…
Reference in New Issue
Block a user