Fix kolla-ansible stop with heterogeneous hosts

The 'kolla-ansible stop' command can be used to stop the services
running on hosts. However, if you run this command in an environment
with heterogeneous nodes (most real world scenarios have at least
control/compute), then it fails. This is because it only checks
whether a container is enabled, and not whether the host is in the
correct group. For example, it fails with nova-libvirt:

    No such container: nova_libvirt to stop.

This change fixes the issue by only attempting to stop containers on
hosts to which they are mapped.

Change-Id: Ibecac60d1417269bbe25a280996ca9de6e6d018f
Closes-Bug: #1868596
This commit is contained in:
Mark Goddard 2020-03-23 17:18:56 +00:00
parent 35966c9186
commit 89df07e8ef
3 changed files with 10 additions and 2 deletions

View File

@ -8,6 +8,7 @@ common_run: False
common_services:
fluentd:
container_name: fluentd
group: all
enabled: "{{ enable_fluentd | bool }}"
image: "{{ fluentd_image_full }}"
environment:
@ -16,6 +17,7 @@ common_services:
dimensions: "{{ fluentd_dimensions }}"
kolla-toolbox:
container_name: kolla_toolbox
group: all
enabled: True
image: "{{ kolla_toolbox_image_full }}"
environment:
@ -27,6 +29,7 @@ common_services:
# DUMMY_ENVIRONMENT is needed because empty environment is not supported
cron:
container_name: cron
group: all
enabled: True
image: "{{ cron_image_full }}"
environment:

View File

@ -8,6 +8,5 @@
common_options: "{{ docker_common_options }}"
name: "{{ service.container_name }}"
when:
- service.enabled | bool
- service.container_name not in skip_stop_containers
with_dict: "{{ project_services }}"
with_dict: "{{ project_services | select_services_enabled_and_mapped_to_host }}"

View File

@ -0,0 +1,6 @@
---
fixes:
- |
Fixes an issue with the ``kolla-ansible stop`` command where it may fail
trying to stop non-existent containers. `LP#1868596
<https://bugs.launchpad.net/kolla-ansible/+bug/1868596>`__.