X-Git-Url: https://gerrit.fd.io/r/gitweb?p=csit.git;a=blobdiff_plain;f=resources%2Ftools%2Fscripts%2Ftopo_cleanup.py;fp=resources%2Ftools%2Fscripts%2Ftopo_cleanup.py;h=0000000000000000000000000000000000000000;hp=89055944c54ccfa1c8ce0f88408c1b3f23a01263;hb=a31a47b1b497efffbcbb92004d32885a84f4ff4f;hpb=9d72674a76dc8e81a89fab1bf7ae255bdf4faea4 diff --git a/resources/tools/scripts/topo_cleanup.py b/resources/tools/scripts/topo_cleanup.py deleted file mode 100755 index 89055944c5..0000000000 --- a/resources/tools/scripts/topo_cleanup.py +++ /dev/null @@ -1,137 +0,0 @@ -#!/usr/bin/env python - -# Copyright (c) 2019 Cisco and/or its affiliates. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at: -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -"""This script provides cleanup routines on all DUTs.""" - -import argparse -import sys -from platform import dist -from yaml import load - -from resources.libraries.python.ssh import SSH - - -def execute_command_ssh(ssh, cmd, sudo=False): - """Execute a command over ssh channel, and print outputs. - - :param ssh: SSH() object connected to a node. - :param cmd: Command line to execute on remote node. - :param sudo: Run command with sudo privilege level.. - :type ssh: SSH() object - :type cmd: str - :type sudo: bool - :returns return_code, stdout, stderr - :rtype: tuple(int, str, str) - """ - if sudo: - ret, stdout, stderr = ssh.exec_command_sudo(cmd, timeout=60) - else: - ret, stdout, stderr = ssh.exec_command(cmd, timeout=60) - - print 'Executing: {cmd}'.format(cmd=cmd) - print '({ret}) {stdout} {stderr}'.format(ret=ret, stdout=stdout, - stderr=stderr) - - return ret, stdout, stdout - - -def uninstall_package(ssh, package): - """If there are packages installed, clean them up. - - :param ssh: SSH() object connected to a node. - :param package: Package name. - :type ssh: SSH() object - :type package: str - """ - if dist()[0] == 'Ubuntu': - ret, _, _ = ssh.exec_command("dpkg -l | grep {package}".format( - package=package)) - if ret == 0: - # Try to fix interrupted installations first. - execute_command_ssh(ssh, 'dpkg --configure -a', sudo=True) - # Try to remove installed packages - execute_command_ssh(ssh, 'apt-get purge -y "*{package}*"'.format( - package=package), sudo=True) - - -def kill_process(ssh, process): - """If there are running processes, kill them. - - :param ssh: SSH() object connected to a node. - :param process: Process name. - :type ssh: SSH() object - :type process: str - """ - execute_command_ssh(ssh, 'killall -v -s 9 {process}'.format( - process=process), sudo=True) - - -def main(): - """Testbed cleanup.""" - - parser = argparse.ArgumentParser() - parser.add_argument("-t", "--topo", required=True, help="Topology file") - - args = parser.parse_args() - topology_file = args.topo - - topology = load(open(topology_file).read())['nodes'] - - ssh = SSH() - for node in topology: - if topology[node]['type'] == "DUT": - print "###TI host: {}".format(topology[node]['host']) - ssh.connect(topology[node]) - - # Kill processes. - kill_process(ssh, 'qemu') - kill_process(ssh, 'l3fwd') - kill_process(ssh, 'testpmd') - - # Uninstall packages - uninstall_package(ssh, 'vpp') - uninstall_package(ssh, 'honeycomb') - - # Remove HC logs. - execute_command_ssh( - ssh, 'rm -rf /var/log/honeycomb', sudo=True) - - # Kill all containers. - execute_command_ssh( - ssh, 'docker rm --force $(sudo docker ps -q)', sudo=True) - - # Destroy kubernetes. - execute_command_ssh( - ssh, 'kubeadm reset --force', sudo=True) - - # Remove corefiles leftovers. - execute_command_ssh( - ssh, 'rm -f /tmp/*tar.lzo.lrz.xz*', sudo=True) - - # Remove corefiles leftovers. - execute_command_ssh( - ssh, 'rm -f /tmp/*core*', sudo=True) - - # Set interfaces in topology down. - for interface in topology[node]['interfaces']: - pci = topology[node]['interfaces'][interface]['pci_address'] - execute_command_ssh( - ssh, "[[ -d {path}/{pci}/net ]] && " - "sudo ip link set $(basename {path}/{pci}/net/*) down". - format(pci=pci, path='/sys/bus/pci/devices')) - - -if __name__ == "__main__": - sys.exit(main())