Oleksii Zhurba | 1580fc5 | 2017-11-14 15:20:44 -0600 | [diff] [blame] | 1 | #!/bin/bash |
Oleksii Zhurba | 1580fc5 | 2017-11-14 15:20:44 -0600 | [diff] [blame] | 2 | export OS_INTERFACE='admin' |
Oleksandr Savatieiev | 0a1db22 | 2019-01-29 10:31:19 +0100 | [diff] [blame] | 3 | mask='s_rally\|rally_\|tempest_\|tempest-' |
Oleksandr Savatieiev | c1bbead | 2018-10-18 14:39:25 +0200 | [diff] [blame] | 4 | dry_run=false |
| 5 | clean_projects=false |
Oleksandr Savatieiev | 41df4eb | 2018-11-08 16:22:30 +0100 | [diff] [blame] | 6 | make_servers_active=false |
Oleksii Zhurba | 0b736c7 | 2019-04-29 17:13:47 -0500 | [diff] [blame^] | 7 | serial=false |
Alex Savatieiev | 788193b | 2019-03-12 11:39:08 -0500 | [diff] [blame] | 8 | batch_size=10 |
Oleksandr Savatieiev | 722396b | 2019-01-29 12:53:21 +0100 | [diff] [blame] | 9 | # granularity values: days,hours,minutes,seconds |
| 10 | stack_granularity=days |
| 11 | stack_granularity_value=1 |
| 12 | |
Oleksandr Savatieiev | c1bbead | 2018-10-18 14:39:25 +0200 | [diff] [blame] | 13 | function show_help { |
Oleksandr Savatieiev | 722396b | 2019-01-29 12:53:21 +0100 | [diff] [blame] | 14 | printf "Resource cleaning script\nMask is: %s\n\t-h, -?\tShow this help\n" ${mask} |
| 15 | printf "\t-t\tDry run mode, no cleaning done\n" |
| 16 | printf "\t-P\tForce cleaning of projects\n" |
Alex Savatieiev | 788193b | 2019-03-12 11:39:08 -0500 | [diff] [blame] | 17 | printf "\t-s\tUse single thread of 'openstack' client for cleanup\n" |
Oleksandr Savatieiev | 722396b | 2019-01-29 12:53:21 +0100 | [diff] [blame] | 18 | printf "\t-S\tSet servers to ACTIVE before deletion (bare metal reqiured)\n" |
Alex Savatieiev | 788193b | 2019-03-12 11:39:08 -0500 | [diff] [blame] | 19 | printf "\t-F\tForce purge deleted stacks. Batch size: %s, >%s %s\n" ${batch_size} ${stack_granularity_value} ${stack_granularity} |
Oleksandr Savatieiev | c1bbead | 2018-10-18 14:39:25 +0200 | [diff] [blame] | 20 | } |
| 21 | |
| 22 | OPTIND=1 # Reset in case getopts has been used previously in the shell. |
Alex Savatieiev | 788193b | 2019-03-12 11:39:08 -0500 | [diff] [blame] | 23 | while getopts "h?:tsSPF" opt; do |
Oleksandr Savatieiev | c1bbead | 2018-10-18 14:39:25 +0200 | [diff] [blame] | 24 | case "$opt" in |
| 25 | h|\?) |
| 26 | show_help |
| 27 | exit 0 |
| 28 | ;; |
| 29 | t) dry_run=true |
| 30 | printf "Running in dry-run mode\n" |
| 31 | ;; |
Alex Savatieiev | 788193b | 2019-03-12 11:39:08 -0500 | [diff] [blame] | 32 | s) serial=true |
| 33 | printf "Single threaded mode enabled\n" |
| 34 | ;; |
Oleksandr Savatieiev | 41df4eb | 2018-11-08 16:22:30 +0100 | [diff] [blame] | 35 | S) make_servers_active=true |
| 36 | printf "Servers will be set to ACTIVE before deletion\n" |
| 37 | ;; |
Oleksandr Savatieiev | c1bbead | 2018-10-18 14:39:25 +0200 | [diff] [blame] | 38 | P) clean_projects=true |
| 39 | printf "Project cleanning enabled\n" |
| 40 | ;; |
Oleksandr Savatieiev | 722396b | 2019-01-29 12:53:21 +0100 | [diff] [blame] | 41 | F) purge_deleted_stacks=true |
| 42 | printf "Purging stacks deleted >$stack_granularity_value $stack_granularity ago enabled, batch size %s\n" $stack_batch_size |
| 43 | ;; |
Oleksandr Savatieiev | c1bbead | 2018-10-18 14:39:25 +0200 | [diff] [blame] | 44 | esac |
| 45 | done |
| 46 | |
| 47 | shift $((OPTIND-1)) |
| 48 | [ "${1:-}" = "--" ] && shift |
Oleksii Zhurba | 0aa4670 | 2018-02-07 16:17:39 -0600 | [diff] [blame] | 49 | |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 50 | ### Execute collected commands and flush the temp file |
| 51 | function _clean_and_flush { |
Oleksandr Savatieiev | c1bbead | 2018-10-18 14:39:25 +0200 | [diff] [blame] | 52 | if [ "$dry_run" = true ] ; then |
| 53 | return 0 |
| 54 | fi |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 55 | if [ -s ${cmds} ]; then |
Oleksii Zhurba | 0b736c7 | 2019-04-29 17:13:47 -0500 | [diff] [blame^] | 56 | if [ "${serial}" = false ] ; then |
Alex Savatieiev | 788193b | 2019-03-12 11:39:08 -0500 | [diff] [blame] | 57 | echo "... processing $(cat ${cmds} | wc -l) commands, worker threads ${batch_size}" |
Oleksii Zhurba | 0b736c7 | 2019-04-29 17:13:47 -0500 | [diff] [blame^] | 58 | cat ${cmds} | tr '\n' '\0' | xargs -P 1 -n 1 -0 openstack |
Alex Savatieiev | 788193b | 2019-03-12 11:39:08 -0500 | [diff] [blame] | 59 | #cat ${cmds} | openstack |
| 60 | truncate -s 0 ${cmds} |
| 61 | else |
| 62 | echo "... processing $(cat ${cmds} | wc -l) commands" |
Oleksii Zhurba | 0b736c7 | 2019-04-29 17:13:47 -0500 | [diff] [blame^] | 63 | cat ${cmds} | tr '\n' '\0' | xargs -P ${batch_size} -n 1 -0 openstack |
| 64 | truncate -s 0 ${cmds} |
| 65 | fi |
| 66 | fi |
| 67 | } |
| 68 | |
| 69 | function _clean_and_flush_cinder { |
| 70 | if [ "$dry_run" = true ] ; then |
| 71 | return 0 |
| 72 | fi |
| 73 | if [ -s ${cmds} ]; then |
| 74 | if [ "${serial}" = false ] ; then |
| 75 | echo "... processing $(cat ${cmds} | wc -l) commands, worker threads ${batch_size}" |
| 76 | cat ${cmds} | tr '\n' '\0' | xargs -I{} -P ${batch_size} -n 1 -0 /bin/bash -c 'cinder --os-volume-api-version 3.43 {}' |
| 77 | #cat ${cmds} | cinder --os-volume-api-version 3.43 |
| 78 | truncate -s 0 ${cmds} |
| 79 | else |
| 80 | echo "... processing $(cat ${cmds} | wc -l) commands" |
| 81 | cat ${cmds} | tr '\n' '\0' | xargs -I{} -P 1 -n 1 -0 /bin/bash -c 'cinder --os-volume-api-version 3.43 {}' |
Alex Savatieiev | 788193b | 2019-03-12 11:39:08 -0500 | [diff] [blame] | 82 | truncate -s 0 ${cmds} |
| 83 | fi |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 84 | fi |
| 85 | } |
Oleksii Zhurba | 0aa4670 | 2018-02-07 16:17:39 -0600 | [diff] [blame] | 86 | |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 87 | ### Users |
| 88 | function _clean_users { |
| 89 | users=( $(openstack user list -c ID -c Name -f value | grep ${mask} | cut -d' ' -f1) ) |
| 90 | echo "-> ${#users[@]} users containing '${mask}' found" |
| 91 | printf "%s\n" ${users[@]} | xargs -I{} echo user delete {} >>${cmds} |
| 92 | _clean_and_flush |
| 93 | } |
Oleksii Zhurba | 0aa4670 | 2018-02-07 16:17:39 -0600 | [diff] [blame] | 94 | |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 95 | ### Roles |
| 96 | function _clean_roles { |
| 97 | roles=( $(openstack role list -c ID -c Name -f value | grep ${mask} | cut -d' ' -f1) ) |
| 98 | echo "-> ${#roles[@]} roles containing '${mask}' found" |
| 99 | printf "%s\n" ${roles[@]} | xargs -I{} echo role delete {} >>${cmds} |
| 100 | _clean_and_flush |
| 101 | } |
Oleksii Zhurba | 0aa4670 | 2018-02-07 16:17:39 -0600 | [diff] [blame] | 102 | |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 103 | ### Projects |
| 104 | function _clean_projects { |
| 105 | projects=( $(openstack project list -c ID -c Name -f value | grep ${mask} | cut -d' ' -f1) ) |
| 106 | echo "-> ${#projects[@]} projects containing '${mask}' found" |
| 107 | printf "%s\n" ${projects[@]} | xargs -I{} echo project delete {} >>${cmds} |
| 108 | _clean_and_flush |
| 109 | } |
Valentyn Khalin | bdf3ba9 | 2018-07-13 18:14:20 +0300 | [diff] [blame] | 110 | |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 111 | ### Servers |
| 112 | function _clean_servers { |
Oleksandr Savatieiev | 0a1db22 | 2019-01-29 10:31:19 +0100 | [diff] [blame] | 113 | servers=( $(openstack server list -c ID -c Name -f value --all | grep "${mask}" | cut -d' ' -f1) ) |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 114 | echo "-> ${#servers[@]} servers containing '${mask}' found" |
Oleksandr Savatieiev | 41df4eb | 2018-11-08 16:22:30 +0100 | [diff] [blame] | 115 | if [ "$make_servers_active" = true ]; then |
| 116 | printf "%s\n" ${servers[@]} | xargs -I{} echo server set --state active {} >>${cmds} |
| 117 | fi |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 118 | printf "%s\n" ${servers[@]} | xargs -I{} echo server delete {} >>${cmds} |
| 119 | _clean_and_flush |
| 120 | } |
Oleksii Zhurba | 0aa4670 | 2018-02-07 16:17:39 -0600 | [diff] [blame] | 121 | |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 122 | ### Reset snapshot state and delete |
| 123 | function _clean_snapshots { |
| 124 | snapshots=( $(openstack volume snapshot list --all -c ID -c Name -f value | grep ${mask} | cut -d' ' -f1) ) |
| 125 | echo "-> ${#snapshots[@]} snapshots containing '${mask}' found" |
Oleksandr Savatieiev | c1bbead | 2018-10-18 14:39:25 +0200 | [diff] [blame] | 126 | printf "%s\n" ${snapshots[@]} | xargs -I{} echo volume snapshot set --state available {} >>${cmds} |
| 127 | printf "%s\n" ${snapshots[@]} | xargs -I{} echo volume snapshot delete {} >>${cmds} |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 128 | _clean_and_flush |
| 129 | } |
Oleksii Zhurba | 0aa4670 | 2018-02-07 16:17:39 -0600 | [diff] [blame] | 130 | |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 131 | function _clean_volumes { |
| 132 | volumes=( $(openstack volume list --all -c ID -c Name -c Type -f value | grep ${mask} | cut -d' ' -f1) ) |
| 133 | echo "-> ${#volumes[@]} volumes containing '${mask}' found" |
| 134 | printf "%s\n" ${volumes[@]} | xargs -I{} echo volume set --state available {} >>${cmds} |
| 135 | printf "%s\n" ${volumes[@]} | xargs -I{} echo volume delete {} >>${cmds} |
| 136 | _clean_and_flush |
| 137 | } |
Oleksii Zhurba | 0aa4670 | 2018-02-07 16:17:39 -0600 | [diff] [blame] | 138 | |
Oleksii Zhurba | 0b736c7 | 2019-04-29 17:13:47 -0500 | [diff] [blame^] | 139 | function _clean_volume_groups { |
| 140 | groups=( $(cinder --os-volume-api-version 3.43 group-list --all-tenants 1 | grep ${mask} | awk '{print $2}') ) |
| 141 | echo "-> ${#groups[@]} groups containing '${mask}' found" |
| 142 | printf "%s\n" ${groups[@]} | xargs -I{} echo group-delete {} >>${cmds} |
| 143 | _clean_and_flush_cinder |
| 144 | } |
| 145 | |
| 146 | function _clean_volume_group_types { |
| 147 | group_types=( $(cinder --os-volume-api-version 3.43 group-type-list | grep ${mask} | awk '{print $2}') ) |
| 148 | echo "-> ${#group_types[@]} group types containing '${mask}' found" |
| 149 | printf "%s\n" ${group_types[@]} | xargs -I{} echo group-type-delete {} >>${cmds} |
| 150 | _clean_and_flush_cinder |
| 151 | } |
| 152 | |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 153 | ### Volume types |
| 154 | function _clean_volume_types { |
| 155 | vtypes=( $(openstack volume type list -c ID -c Name -f value | grep ${mask} | cut -d' ' -f1) ) |
| 156 | echo "-> ${#vtypes[@]} volume types containing '${mask}' found" |
| 157 | printf "%s\n" ${vtypes[@]} | xargs -I{} echo volume type delete {} >>${cmds} |
| 158 | _clean_and_flush |
| 159 | } |
Oleksii Zhurba | 0aa4670 | 2018-02-07 16:17:39 -0600 | [diff] [blame] | 160 | |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 161 | ### Images |
| 162 | function _clean_images { |
Oleksandr Savatieiev | c1bbead | 2018-10-18 14:39:25 +0200 | [diff] [blame] | 163 | images=( $(openstack image list -c ID -c Name -f value | grep ${mask} | cut -d' ' -f1) ) |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 164 | echo "-> ${#images[@]} images containing '${mask}' found" |
| 165 | printf "%s\n" ${images[@]} | xargs -I{} echo image delete {} >>${cmds} |
| 166 | _clean_and_flush |
| 167 | } |
Oleksii Zhurba | 0aa4670 | 2018-02-07 16:17:39 -0600 | [diff] [blame] | 168 | |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 169 | ### Sec groups |
| 170 | function _clean_sec_groups { |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 171 | projects=( $(openstack project list -c ID -c Name -f value | grep ${mask} | cut -d' ' -f1) ) |
| 172 | sgroups=( $(printf "%s\n" ${projects[@]} | xargs -I{} /bin/bash -c "openstack security group list -c ID -c Project -f value | grep {} | cut -d' ' -f1") ) |
| 173 | echo "-> ${#sgroups[@]} security groups for project containing '${mask}' found" |
| 174 | printf "%s\n" ${sgroups[@]} | xargs -I{} echo security group delete {} >>${cmds} |
| 175 | _clean_and_flush |
Alex Savatieiev | 788193b | 2019-03-12 11:39:08 -0500 | [diff] [blame] | 176 | |
| 177 | # Additional step to cleanup 'hanged' groups |
| 178 | sgroups_raw=( $(openstack security group list -c ID -c Name -f value | grep ${mask} | cut -d' ' -f1) ) |
| 179 | echo "-> ${#sgroups_raw[@]} security groups for '${mask}' found" |
| 180 | printf "%s\n" ${sgroups_raw[@]} | xargs -I{} echo security group delete {} >>${cmds} |
| 181 | _clean_and_flush |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 182 | } |
Oleksii Zhurba | 0aa4670 | 2018-02-07 16:17:39 -0600 | [diff] [blame] | 183 | |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 184 | ### Keypairs |
| 185 | function _clean_keypairs { |
| 186 | keypairs=( $(openstack keypair list -c Name -f value | grep ${mask}) ) |
| 187 | echo "-> ${#keypairs[@]} keypairs containing '${mask}' found" |
| 188 | printf "%s\n" ${keypairs[@]} | xargs -I{} echo keypair delete {} >>${cmds} |
| 189 | _clean_and_flush |
| 190 | } |
Oleksii Zhurba | 0aa4670 | 2018-02-07 16:17:39 -0600 | [diff] [blame] | 191 | |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 192 | ### Routers and Networks |
| 193 | function _clean_routers_and_networks { |
| 194 | routers=( $(openstack router list -c ID -c Name -f value | grep ${mask} | cut -d ' ' -f1) ) |
| 195 | if [ ${#routers[@]} -eq 0 ]; then |
| 196 | echo "-> No routers containing '${mask}' found" |
| 197 | else |
| 198 | echo "-> ${#routers[@]} routers containing '${mask}' found" |
Alex Savatieiev | 788193b | 2019-03-12 11:39:08 -0500 | [diff] [blame] | 199 | echo "... unsetting gateways" |
| 200 | printf "%s\n" ${routers[@]} | xargs -I{} echo router unset --external-gateway {} >>${cmds} |
| 201 | _clean_and_flush |
| 202 | |
| 203 | echo "... removing ports" |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 204 | for router in ${routers[@]}; do |
| 205 | r_ports=( $(openstack port list --router ${router} -f value -c ID) ) |
| 206 | if [ ${#r_ports[@]} -eq 0 ]; then |
Alex Savatieiev | 788193b | 2019-03-12 11:39:08 -0500 | [diff] [blame] | 207 | echo "... no ports to unplug for ${router}" |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 208 | else |
| 209 | for r_port in ${r_ports[@]}; do |
Alex Savatieiev | 788193b | 2019-03-12 11:39:08 -0500 | [diff] [blame] | 210 | echo "... queued removal of port '${r_port}' from router '${router}'" |
| 211 | echo "router remove port ${router} ${r_port}" >>${cmds} |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 212 | done |
| 213 | fi |
| 214 | done |
Alex Savatieiev | 788193b | 2019-03-12 11:39:08 -0500 | [diff] [blame] | 215 | _clean_and_flush |
| 216 | |
| 217 | echo "... deleting routers" |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 218 | printf "%s\n" ${routers[@]} | xargs -I{} echo router delete {} >>${cmds} |
Alex Savatieiev | 788193b | 2019-03-12 11:39:08 -0500 | [diff] [blame] | 219 | _clean_and_flush |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 220 | fi |
Oleksii Zhurba | 0aa4670 | 2018-02-07 16:17:39 -0600 | [diff] [blame] | 221 | |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 222 | networks=( $(openstack network list | grep "${mask}" | cut -d' ' -f2) ) |
| 223 | if [ ${#networks[@]} -eq 0 ]; then |
| 224 | echo "-> No networks containing '${mask}' found" |
| 225 | else |
| 226 | ports=() |
| 227 | subnets=() |
| 228 | for((idx=0;idx<${#networks[@]};idx++)) do |
| 229 | ports+=( $(openstack port list --network ${networks[idx]} -c ID -f value) ) |
| 230 | subnets+=( $(openstack subnet list --network ${networks[idx]} -c ID -f value) ) |
| 231 | echo "-> $((${idx}+1)) of ${#networks[@]}, total ${#ports[@]} ports, ${#subnets[@]} subnets" |
| 232 | done |
| 233 | printf "%s\n" ${ports[@]} | xargs -I{} echo port delete {} >>${cmds} |
| 234 | printf "%s\n" ${subnets[@]} | xargs -I{} echo subnet delete {} >>${cmds} |
| 235 | echo network delete ${networks[@]} >>${cmds} |
| 236 | echo "-> ${#routers[@]} routers, ${#ports[@]} ports, ${#subnets[@]} subnets, ${#networks[@]} networks" |
| 237 | fi |
| 238 | _clean_and_flush |
| 239 | } |
Oleksii Zhurba | 0aa4670 | 2018-02-07 16:17:39 -0600 | [diff] [blame] | 240 | |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 241 | ### Regions |
| 242 | function _clean_regions { |
| 243 | regions=( $(openstack region list -c Region -f value | grep ${mask}) ) |
| 244 | echo "-> ${#regions[@]} regions containing '${mask}' found" |
| 245 | printf "%s\n" ${regions[@]} | xargs -I{} echo region delete {} >>${cmds} |
| 246 | _clean_and_flush |
| 247 | } |
Oleksii Zhurba | 0aa4670 | 2018-02-07 16:17:39 -0600 | [diff] [blame] | 248 | |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 249 | ### Stacks |
| 250 | function _clean_stacks { |
| 251 | # By default openstack denies use of global_index for everyone. |
| 252 | # In case you want to have handy cleanup, consider updating policy.json here: |
| 253 | # root@ctl0x:~# cat -n /etc/heat/policy.json | grep global_index |
| 254 | # 48 "stacks:global_index": "rule:deny_everybody", |
| 255 | # 73 "software_configs:global_index": "rule:deny_everybody", |
| 256 | # After this you will be able to use --all option |
Oleksii Zhurba | 0aa4670 | 2018-02-07 16:17:39 -0600 | [diff] [blame] | 257 | |
Oleksandr Savatieiev | 722396b | 2019-01-29 12:53:21 +0100 | [diff] [blame] | 258 | stacks=( $(openstack stack list --nested --hidden -c ID -c "Stack Name" -f value | grep ${mask} | cut -d' ' -f1) ) |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 259 | echo "-> ${#stacks[@]} stacks containing '${mask}' found" |
| 260 | printf "%s\n" ${stacks[@]} | xargs -I{} echo stack check {} >>${cmds} |
| 261 | printf "%s\n" ${stacks[@]} | xargs -I{} echo stack delete -y {} >>${cmds} |
| 262 | _clean_and_flush |
Oleksandr Savatieiev | 722396b | 2019-01-29 12:53:21 +0100 | [diff] [blame] | 263 | if [ "$purge_deleted_stacks" = true ]; then |
Alex Savatieiev | 788193b | 2019-03-12 11:39:08 -0500 | [diff] [blame] | 264 | heat-manage purge_deleted -g ${stack_granularity} -b ${batch_size} ${stack_granularity_value} | wc -l | xargs -I{} echo "-> Purged {} stacks" |
Oleksandr Savatieiev | 722396b | 2019-01-29 12:53:21 +0100 | [diff] [blame] | 265 | fi |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 266 | } |
Oleksii Zhurba | 0aa4670 | 2018-02-07 16:17:39 -0600 | [diff] [blame] | 267 | |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 268 | ### Containers |
| 269 | function _clean_containers { |
| 270 | containers=( $(openstack container list --all -c ID -c Name -f value | grep ${mask}) ) |
| 271 | echo "-> ${#containers[@]} containers containing '${mask}' found" |
| 272 | printf "%s\n" ${containers[@]} | xargs -I{} echo container delete {} >>${cmds} |
| 273 | _clean_and_flush |
| 274 | } |
Oleksii Zhurba | 0aa4670 | 2018-02-07 16:17:39 -0600 | [diff] [blame] | 275 | |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 276 | ################### |
| 277 | ### Main |
| 278 | ################### |
| 279 | # temp file for commands |
| 280 | cmds=$(mktemp) |
Oleksandr Savatieiev | c1bbead | 2018-10-18 14:39:25 +0200 | [diff] [blame] | 281 | trap "rm -f ${cmds}" EXIT |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 282 | echo "Using tempfile: '${cmds}'" |
Oleksii Zhurba | 0aa4670 | 2018-02-07 16:17:39 -0600 | [diff] [blame] | 283 | |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 284 | # Consider cleaning contrail resources carefully |
| 285 | # ...and only after that - clean projects |
Oleksii Zhurba | 0aa4670 | 2018-02-07 16:17:39 -0600 | [diff] [blame] | 286 | |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 287 | _clean_stacks |
| 288 | _clean_servers |
| 289 | |
| 290 | _clean_users |
| 291 | _clean_roles |
| 292 | _clean_snapshots |
| 293 | _clean_volumes |
Oleksii Zhurba | 0b736c7 | 2019-04-29 17:13:47 -0500 | [diff] [blame^] | 294 | _clean_volume_groups |
| 295 | _clean_volume_group_types |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 296 | _clean_volume_types |
| 297 | _clean_images |
| 298 | _clean_sec_groups |
| 299 | _clean_keypairs |
| 300 | _clean_routers_and_networks |
| 301 | _clean_regions |
| 302 | _clean_containers |
| 303 | |
| 304 | # project cleaning disabled by default |
| 305 | # Coz cleaning Contrail with no projects is a hard task |
Oleksandr Savatieiev | c1bbead | 2018-10-18 14:39:25 +0200 | [diff] [blame] | 306 | if [ "$clean_projects" = true ]; then |
| 307 | _clean_projects |
| 308 | fi |
Oleksandr Savatieiev | 91355c8 | 2018-09-07 12:14:34 +0200 | [diff] [blame] | 309 | |
| 310 | # remove temp file |
| 311 | rm ${cmds} |