Add bashate verification and fix shell errors
[icn.git] / env / ubuntu / bootloader-env / 02_clean_bootloader_package_req.sh
1 #!/usr/bin/env bash
2 set -ex
3
4 source $(dirname $PWD)/../lib/common.sh
5 source $(dirname $PWD)/../lib/logging.sh
6
7 if [[ $EUID -ne 0 ]]; then
8     echo "This script must be run as root"
9     exit 1
10 fi
11
12 if [[ $(lsb_release -d | cut -f2) != $UBUNTU_BIONIC ]]; then
13     echo "Currently Ubuntu 18.04.2 LTS is only supported"
14     exit 1
15 fi
16
17 function clean_essential_packages {
18     apt-get update
19     for package in crudini curl dnsmasq figlet golang nmap patch psmisc \
20         python-pip python-requests python-setuptools vim wget; do
21         apt-get remove $package -y
22     done
23
24     apt-get autoremove -y
25     rm -rf /etc/apt/sources.list.d/*
26 }
27
28 function check_prerequisite {
29     if !(which pip); then
30         apt-get install python-pip -y
31     fi
32
33     if !(which curl); then
34         apt-get install curl -y
35     fi
36
37     if !(which add-apt-repository); then
38         apt-get install software-properties-common -y
39     fi
40 }
41
42 function clean_ironic_packages {
43     for package in jq nodejs python-ironicclient \
44         python-ironic-inspector-client python-lxml python-netaddr \
45         python-openstackclient unzip genisoimage; do
46         apt-get remove $package -y
47     done
48 }
49
50 function clean_docker_packages {
51     curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
52     add-apt-repository \
53         "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
54         $(lsb_release -cs) \
55         stable"
56     apt-get update
57     apt-get remove docker-ce -y
58     for package in apt-transport-https ca-certificates gnupg-agent \
59             software-properties-common; do
60         apt-get remove $package -y
61     done
62
63     apt-get remove -y docker \
64         docker-engine \
65         docker.io \
66         containerd \
67         runc \
68         docker-ce
69
70     apt-get update
71 }
72
73 function clean_podman_packages {
74     apt-get update
75     add-apt-repository -y ppa:projectatomic/ppa
76     apt-get remove podman -y
77 }
78
79 function clean_kubernetes_packages {
80     #Just to make sure kubernetes packages are removed during the download
81     curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
82     bash -c 'cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
83 deb https://apt.kubernetes.io/ kubernetes-xenial main
84 EOF'
85     apt-get update
86     apt-get remove kubelet kubeadm kubectl -y
87 }
88
89 function clean_apt_cache {
90     shopt -s extglob
91     pushd /var/cache/apt/archives
92
93     if [ $(ls -1q . | wc -l ) -ge 3 ]; then
94         $(rm !("lock"|"partial"))
95     fi
96     popd
97
98 }
99
100 function mv_apt_cache {
101     shopt -s extglob
102     pushd /var/cache/apt/archives
103
104     if [ $(ls -1q . | wc -l ) -gt 2 ]; then
105         $(mv !("lock"|"partial") $LOCAL_APT_REPO)
106     fi
107     popd
108 }
109
110 function check_dir {
111     if [ ! -d $1 ]; then
112         mkdir -p $1
113     fi
114 }
115
116 function clean_dir {
117     shopt -s extglob
118     pushd $1
119
120     if [ $(ls -1q . | wc -l ) -ne 0 ]; then
121         $(rm -r ./*)
122     fi
123     popd
124 }
125
126 check_prerequisite
127 clean_apt_cache
128 check_dir $LOCAL_APT_REPO
129 clean_dir $LOCAL_APT_REPO
130 check_dir $PIP_CACHE_DIR
131 clean_dir $PIP_CACHE_DIR
132 check_dir $BUILD_DIR
133 clean_dir $BUILD_DIR
134 check_dir $CONTAINER_IMAGES_DIR
135 clean_dir $CONTAINER_IMAGES_DIR
136 clean_kubernetes_packages
137 clean_podman_packages
138 clean_docker_packages
139 clean_ironic_packages
140 clean_essential_packages
141 rm -rf $LOCAL_APT_REPO
142 rm -rf $PIP_CACHE_DIR
143 rm -rf $BUILD_DIR
144 rm -rf $CONTAINER_IMAGES_DIR