#!/bin/bash if [[ $(pgrep qemu) ]]; then echo "Some qemu processes were detected." echo "Docker will not be able to stop the nova_libvirt container with those running." echo "Please clean them up before rerunning this script." exit 1 fi if [ -n "$1" ]; then containers_to_kill=($(docker ps | grep -E "$1" | awk '{print $1}')) volumes_to_remove=($(docker volume ls | grep -E "$1" | awk '{print $1}')) else containers_to_kill=( bootstrap_{ceph_mon,cinder,glance,heat,ironic,ironic_pxe,keystone,magnum,mistral,mongodb,murano,neutron,nova,nova_compute} \ cinder_{volume,scheduler,backup,api} \ glance_{api,registry} \ haproxy \ heat_{api{,_cfn},engine} \ horizon \ ironic_{discoverd,conductor,api,pxe} \ keepalived \ keystone \ kolla_toolbox \ magnum_{api,conductor} \ manila_{api,share,scheduler} \ mariadb \ memcached \ mistral_{api,engine,executor} \ murano_{api,engine} \ neutron_{server,dhcp_agent,l3_agent,linuxbridge_agent,metadata_agent,openvswitch_agent} \ nova_{scheduler,novncproxy,consoleauth,conductor,api,compute,libvirt,spicehtml5proxy,compute_ironic} \ openvswitch_{vswitchd,db} \ rabbitmq{,_bootstrap} \ rsyslog \ heka \ swift_{account_{auditor,reaper,replicator,server},container_{auditor,replicator,server,updater},object_{auditor,expirer,replicator,server,updater},proxy_server,rsyncd} ) ceph_osd_bootstrap=$(docker ps -a --filter "name=bootstrap_osd_*" --format "{{.Names}}") containers_to_kill="${containers_to_kill} ${ceph_osd_bootstrap}" volumes_to_remove=( glance \ ironic_pxe \ mariadb \ openvswitch_db \ neutron_metadata_socket \ nova_{compute,libvirt} \ ceph_mon{,_config} \ rabbitmq \ mongodb \ rsyslog{,_socket} \ haproxy_socket ) fi echo "Stopping containers..." (docker stop -t 2 ${containers_to_kill[@]} 2>&1) > /dev/null echo "Removing containers..." (docker rm -v -f ${containers_to_kill[@]} 2>&1) > /dev/null echo "Removing volumes..." (docker volume rm ${volumes_to_remove[@]} 2>&1) > /dev/null echo "All cleaned up!"