aboutsummaryrefslogtreecommitdiffstats
path: root/resources/tools/scripts/topo_cleanup.py
diff options
context:
space:
mode:
Diffstat (limited to 'resources/tools/scripts/topo_cleanup.py')
-rwxr-xr-xresources/tools/scripts/topo_cleanup.py137
1 files changed, 0 insertions, 137 deletions
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())