kolla-ansible/ansible/roles/neutron/tasks/rolling_upgrade.yml
Radosław Piliszek 6a737b1968 Fix handling of docker restart policy
Docker has no restart policy named 'never'. It has 'no'.
This has bitten us already (see [1]) and might bite us again whenever
we want to change the restart policy to 'no'.

This patch makes our docker integration honor all valid restart policies
and only valid restart policies.
All relevant docker restart policy usages are patched as well.

I added some FIXMEs around which are relevant to kolla-ansible docker
integration. They are not fixed in here to not alter behavior.

[1] https://review.opendev.org/667363

Change-Id: I1c9764fb9bbda08a71186091aced67433ad4e3d6
Signed-off-by: Radosław Piliszek <radoslaw.piliszek@gmail.com>
2019-07-18 13:39:06 +00:00

90 lines
2.9 KiB
YAML

---
- include_tasks: config.yml
- include_tasks: config-neutron-fake.yml
when:
- inventory_hostname in groups['compute']
- enable_nova_fake | bool
- name: Running Neutron database expand container
vars:
neutron_server: "{{ neutron_services['neutron-server'] }}"
become: true
kolla_docker:
action: "start_container"
common_options: "{{ docker_common_options }}"
detach: False
environment:
KOLLA_UPGRADE:
NEUTRON_DB_EXPAND:
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
NEUTRON_ROLLING_UPGRADE_SERVICES: "{{ neutron_rolling_upgrade_services | join(' ') }}"
image: "{{ neutron_server.image }}"
labels:
UPGRADE:
name: "bootstrap_neutron"
restart_policy: no
volumes: "{{ neutron_server.volumes }}"
run_once: True
delegate_to: "{{ groups['neutron-server'][0] }}"
- include_tasks: bootstrap_service.yml
vars:
neutron_server: "{{ neutron_services['neutron-server'] }}"
when: (enable_neutron_sfc | bool and neutron_server.enabled | bool)
- name: Flush Handlers
meta: flush_handlers
- name: Checking neutron pending contract scripts
become: true
command: "docker exec -t neutron_server neutron-db-manage --subproject {{ item }} has_offline_migrations"
register: neutron_check_contract_db_stdout
ignore_errors: yes
with_items: "{{ neutron_rolling_upgrade_services }}"
when: inventory_hostname == groups['neutron-server'][0]
- name: Stopping all neutron-server for contract db
vars:
neutron_server: "{{ neutron_services['neutron-server'] }}"
first_neutron_server_host: "{{ groups[neutron_server.group][0] }}"
results_of_check_pending_contract_scripts: "{{ hostvars[first_neutron_server_host]['neutron_check_contract_db_stdout'] }}"
filter_rc: "results[?rc!=`0`]"
is_stop_neutron_server: "{{ results_of_check_pending_contract_scripts | json_query(filter_rc) }}"
become: true
kolla_docker:
action: "stop_container"
common_options: "{{ docker_common_options }}"
name: "{{ neutron_server.container_name }}"
when:
- is_stop_neutron_server|length > 0
- neutron_server.host_in_groups | bool
notify:
- "Restart neutron-server container"
- name: Running Neutron database contract container
vars:
neutron_server: "{{ neutron_services['neutron-server'] }}"
become: true
kolla_docker:
action: "start_container"
common_options: "{{ docker_common_options }}"
detach: False
environment:
KOLLA_UPGRADE:
NEUTRON_DB_CONTRACT:
KOLLA_CONFIG_STRATEGY: "{{ config_strategy }}"
NEUTRON_ROLLING_UPGRADE_SERVICES: "{{ neutron_rolling_upgrade_services | join(' ') }}"
image: "{{ neutron_server.image }}"
labels:
UPGRADE:
name: "bootstrap_neutron"
restart_policy: no
volumes: "{{ neutron_server.volumes }}"
run_once: True
delegate_to: "{{ groups['neutron-server'][0] }}"
# Flush handlers here to ensure neutron-server containers are started
- name: Flush Handlers
meta: flush_handlers