blob: d9b2db32e7a463f81d480db31c63117554c4d67e [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one or more contributor
# license agreements; and to You under the Apache License, Version 2.0.
---
# Remove invoker containers.
- name: remove invoker
docker_container:
name: "invoker{{ groups['invokers'].index(inventory_hostname) }}"
image: "{{ docker_registry }}{{ docker.image.prefix }}/invoker:{{ docker.image.tag }}"
state: absent
stop_timeout: 60
timeout: 120
ignore_errors: True
# In case the invoker could not clean up completely in time.
- name: pause/resume at runc-level to restore docker consistency
shell: |
DOCKER_PAUSED=$(docker ps --filter status=paused --filter name=wsk{{ groups['invokers'].index(inventory_hostname) }} -q --no-trunc)
for C in $DOCKER_PAUSED; do docker-runc pause $C; done
DOCKER_RUNNING=$(docker ps --filter status=running --filter name=wsk{{ groups['invokers'].index(inventory_hostname) }} -q --no-trunc)
for C2 in $DOCKER_RUNNING; do docker-runc resume $C2; done
TOTAL=$(($(echo $DOCKER_PAUSED | wc -w)+$(echo $DOCKER_RUNNING | wc -w)))
echo "Handled $TOTAL remaining actions."
register: runc_output
ignore_errors: True
become: "{{ invoker.docker.become }}"
- debug: msg="{{ runc_output.stdout }}"
- name: unpause remaining actions
shell: "docker unpause $(docker ps -aq --filter status=paused --filter name=wsk{{ groups['invokers'].index(inventory_hostname) }})"
failed_when: False
- name: remove remaining actions
shell: "docker rm -f $(docker ps -aq --filter name=wsk{{ groups['invokers'].index(inventory_hostname) }})"
failed_when: False
- name: remove invoker log directory
file:
path: "{{ whisk_logs_dir }}/invoker{{ groups['invokers'].index(inventory_hostname) }}"
state: absent
become: "{{ logs.dir.become }}"
- name: remove invoker conf directory
file:
path: "{{ invoker.confdir }}/invoker{{ groups['invokers'].index(inventory_hostname) }}"
state: absent
become: "{{ invoker.dir.become }}"
# Workaround for orphaned ifstate.veth* files on Ubuntu 14.04
# See https://github.com/moby/moby/issues/22513
# Remove inactive files older than 60 minutes
- name: "Clean orphaned ifstate.veth* files on Ubuntu 14.04"
shell: |
ACTIVE_VETH_IFACES=$(ip -oneline link show | grep --only-matching --extended-regexp 'veth[0-9a-f]+' | tr '\n' '|' | sed -e 's/.$//')
EXCLUDE_REGEX=$(if [ -z ${ACTIVE_VETH_IFACES} ]; then echo 'No active veth interfaces found' >&2; else printf '( -not -regex /run/network/ifstate\.(%s) ) -and ' ${ACTIVE_VETH_IFACES}; fi)
find /run/network -regextype posix-egrep ${EXCLUDE_REGEX} -name 'ifstate.veth*' -and -mmin +60 -delete
become: True
ignore_errors: True
when: ansible_distribution == 'Ubuntu' and ansible_distribution_version == '14.04'