[Toaster] [review-request][PATCH 1/3] toaster: Always run bldcontrol migrations

Michael Wood michael.g.wood at intel.com
Fri Oct 9 06:35:05 PDT 2015


On 30/09/15 15:54, Elliot Smith wrote:
> The toaster startup script conditionally migrates the database
> tables depending on whether you are in managed mode or not. This
> means that if you are in analysis mode, some of the bldcontrol*
> database tables used by managed mode are not available.
>
> As a consequence, some of the code in toaster which refers to
> those tables can break in analysis mode, as there's no clean
> isolation of the two modes.
>
> To prevent this from happening, always run the migrations for
> managed mode and create the bldcontrol* tables, even if in
> analysis mode.
>
> Also clean up the function which starts up toaster so the
> logic is easier to follow.
>
> [YOCTO #8277]
>
> Signed-off-by: Elliot Smith <elliot.smith at intel.com>
> ---
>   bitbake/bin/toaster | 58 +++++++++++++++++++++++++++++++++++------------------
>   1 file changed, 39 insertions(+), 19 deletions(-)
>
> diff --git a/bitbake/bin/toaster b/bitbake/bin/toaster
> index ac27826..05dabc9 100755
> --- a/bitbake/bin/toaster
> +++ b/bitbake/bin/toaster
> @@ -54,35 +54,55 @@ webserverStartAll()
>       fi
>   
>       retval=0
> -    if [ "$TOASTER_MANAGED" '=' '1' ]; then
> +    if [ "$TOASTER_MANAGED" = '1' ]; then
>           python $BBBASEDIR/lib/toaster/manage.py syncdb || retval=1
>       else
>           python $BBBASEDIR/lib/toaster/manage.py syncdb --noinput || retval=1
>       fi
> -    python $BBBASEDIR/lib/toaster/manage.py migrate orm || retval=2
> +
>       if [ $retval -eq 1 ]; then
> -        echo "Failed db sync, stopping system start" 1>&2
> -    elif [ $retval -eq 2 ]; then
> -        printf "\nError on migration, trying to recover... \n"
> +        echo "Failed db sync, aborting system start" 1>&2
> +        return $retval
> +    fi
> +
> +    python $BBBASEDIR/lib/toaster/manage.py migrate orm || retval=1
> +
> +    if [ $retval -eq 1 ]; then
> +        printf "\nError on orm migration, rolling back...\n"
>           python $BBBASEDIR/lib/toaster/manage.py migrate orm 0001_initial --fake
> -        retval=0
> -        python $BBBASEDIR/lib/toaster/manage.py migrate orm || retval=1
> +        return $retval
>       fi
> +
> +    python $BBBASEDIR/lib/toaster/manage.py migrate bldcontrol || retval=1
> +
> +    if [ $retval -eq 1 ]; then
> +        printf "\nError on bldcontrol migration, rolling back...\n"
> +        python $BBBASEDIR/lib/toaster/manage.py migrate bldcontrol 0001_initial --fake
> +        return $retval
> +    fi
> +
>       if [ "$TOASTER_MANAGED" = '1' ]; then
> -        python $BBBASEDIR/lib/toaster/manage.py migrate bldcontrol || retval=1
> -        python $BBBASEDIR/lib/toaster/manage.py checksettings  --traceback || retval=1
> +        python $BBBASEDIR/lib/toaster/manage.py checksettings --traceback || retval=1
>       fi
> -    if [ $retval -eq 0 ]; then
> -        echo "Starting webserver..."
> -        python $BBBASEDIR/lib/toaster/manage.py runserver "0.0.0.0:$WEB_PORT" </dev/null >>${BUILDDIR}/toaster_web.log 2>&1 & echo $! >${BUILDDIR}/.toastermain.pid
> -        sleep 1
> -        if ! cat "${BUILDDIR}/.toastermain.pid" | xargs -I{} kill -0 {} ; then
> -            retval=1
> -            rm "${BUILDDIR}/.toastermain.pid"
> -        else
> -            echo "Webserver address:  http://0.0.0.0:$WEB_PORT/"
> -        fi
> +
> +    if [ $retval -eq 1 ]; then
> +        printf "\nError while checking settings; aborting\n"
> +        return $retval
> +    fi
> +
> +    echo "Starting webserver..."
> +
> +    python $BBBASEDIR/lib/toaster/manage.py runserver "0.0.0.0:$WEB_PORT" </dev/null >>${BUILDDIR}/toaster_web.log 2>&1 & echo $! >${BUILDDIR}/.toastermain.pid
> +
> +    sleep 1
> +
> +    if ! cat "${BUILDDIR}/.toastermain.pid" | xargs -I{} kill -0 {} ; then
> +        retval=1
> +        rm "${BUILDDIR}/.toastermain.pid"
> +    else
> +        echo "Webserver address:  http://0.0.0.0:$WEB_PORT/"
>       fi
> +
>       return $retval
>   }
>   

If you want to run all migrations we can do just do ./manage migrate --all




More information about the toaster mailing list