[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