This makes purge iterate over all cells if requested. This also makes our post_test_hook.sh use the --all-cells variant with just the base config file. Related to blueprint purge-db Change-Id: I7eb5ed05224838cdba18e96724162cc930f4422e
		
			
				
	
	
		
			76 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/bash -x
 | 
						|
 | 
						|
MANAGE="/usr/local/bin/nova-manage"
 | 
						|
 | 
						|
function archive_deleted_rows {
 | 
						|
    # NOTE(danms): Run this a few times to make sure that we end
 | 
						|
    # up with nothing more to archive
 | 
						|
    for i in `seq 30`; do
 | 
						|
        $MANAGE $* db archive_deleted_rows --verbose --max_rows 1000
 | 
						|
        RET=$?
 | 
						|
        if [[ $RET -gt 1 ]]; then
 | 
						|
            echo Archiving failed with result $RET
 | 
						|
            return $RET
 | 
						|
        elif [[ $RET -eq 0 ]]; then
 | 
						|
            echo Archiving Complete
 | 
						|
            break;
 | 
						|
        fi
 | 
						|
    done
 | 
						|
}
 | 
						|
 | 
						|
function purge_db {
 | 
						|
    $MANAGE db purge --all --verbose --all-cells
 | 
						|
    RET=$?
 | 
						|
    if [[ $RET -eq 0 ]]; then
 | 
						|
        echo Purge successful
 | 
						|
    else
 | 
						|
        echo Purge failed with result $RET
 | 
						|
        return $RET
 | 
						|
    fi
 | 
						|
}
 | 
						|
 | 
						|
BASE=${BASE:-/opt/stack}
 | 
						|
source ${BASE}/new/devstack/functions-common
 | 
						|
source ${BASE}/new/devstack/lib/nova
 | 
						|
cell_conf=$(conductor_conf 1)
 | 
						|
# NOTE(danms): We need to pass the main config to get the api db
 | 
						|
# bits, and then also the cell config for the cell1 db (instead of
 | 
						|
# the cell0 config that is in the main config file). Later files
 | 
						|
# take precedence.
 | 
						|
conf="--config-file $NOVA_CONF --config-file $cell_conf"
 | 
						|
 | 
						|
archive_deleted_rows $conf
 | 
						|
purge_db
 | 
						|
 | 
						|
set -e
 | 
						|
# We need to get the admin credentials to run the OSC CLIs for Placement.
 | 
						|
set +x
 | 
						|
source $BASE/new/devstack/openrc admin
 | 
						|
set -x
 | 
						|
 | 
						|
# TODO(mriedem): Consider checking for instances in ERROR state because
 | 
						|
# if there are any, we would expect them to retain allocations in Placement
 | 
						|
# and therefore we don't really need to check for leaked allocations.
 | 
						|
 | 
						|
# Check for orphaned instance allocations in Placement which could mean
 | 
						|
# something failed during a test run and isn't getting cleaned up properly.
 | 
						|
echo "Looking for leaked resource provider allocations in Placement"
 | 
						|
LEAKED_ALLOCATIONS=0
 | 
						|
for provider in $(openstack resource provider list -c uuid -f value); do
 | 
						|
    echo "Looking for allocations for provider $provider"
 | 
						|
    allocations=$(openstack resource provider show --allocations $provider \
 | 
						|
                  -c allocations -f value)
 | 
						|
    if [[ "$allocations" != "{}" ]]; then
 | 
						|
        echo "Resource provider has allocations:"
 | 
						|
        openstack resource provider show --allocations $provider
 | 
						|
        LEAKED_ALLOCATIONS=1
 | 
						|
    fi
 | 
						|
done
 | 
						|
 | 
						|
# Fail if there were any leaked allocations.
 | 
						|
if [[ $LEAKED_ALLOCATIONS -eq 1 ]]; then
 | 
						|
    echo "There were leaked allocations; failing."
 | 
						|
    exit 1
 | 
						|
fi
 | 
						|
echo "Resource provider allocations were cleaned up properly."
 |