[Toaster] Build cancellation from toaster
Michael Wood
michael.g.wood at intel.com
Fri Feb 19 15:11:08 PST 2016
On 09/02/16 13:40, sujith h wrote:
>
> snip
>
> Hi Belen as per our discussions, I have updated the changes at
> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=sujith/toaster-build-cancel14.
A few code review notes on those commits
toaster: update BuildEnvironmentController and BitbakeController
[ MW
- Not sure why getArtifact method is being removed here
- The arguments in the __init__ need realigning
]
toaster: add cancelled state in models
[ MW
- finished_criteria white space - we try to stick to 80 cols if possible
- The commit summary ideally could also include a little more info
e.g. toaster: models Add cancelled state to build outcome
- After modifying model definitions you also need to add a database
migration running. ./mange.py makemigrations will do this for you
]
toaster: add function cancelBuild to mrb_section.html
[ MW this patch doesn't seem to be needed as there are only unused
variables here which are wrapping libtoaster.cancelABuild ]
toaster: add get_tasks function
[ MW I prefer this compared to the filters, but as this is already
implemented and currently in use, it's best not to duplicate it. See the
custom filter in projectfilters.py and it's usage in the mrb_section
template. More info about filters here
https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#ref-templates-builtins-filters
]
toaster: update css for build cancellation
[ MW This css isn't needed, the build button just needs to have the
class 'pull-right' ]
toaster: update toastergui's table for build cancellation
[ MW
- It's neater to us Use exclude(Q(conditions) | Q(conditions)) in
exclude instead of a new call
- Use the 'enum' for the state CANCELLED instead of '3' - 3 might
change and this could introduce a bug
- No need to re-get the build object, it's part of buildrequest.build
- I can understand the while loop and the timing issue we have here I
will look into another solution for this because we could end up in an
infinite loop here.
]
toaster: add cancel button to UI
[ MW
- Here we don't want to use an inline onclick= handlers in the html
element with the django template code. To keep a good separation of JS,
django template and html we make use of the data attribute of the
element and then retrieve it in the JS.
- Avoid using the name of the 'command line builds' project to identify
it, if that name changes this will fail. Better to use the (admittedly
obscure) property 'is_default' on the project object to identify it
]
As we've not been able to help you much with this feature I've fixed all
the above issues and have pushed a new branch at
http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=michaelw/sujith/build-cancel
It's not quite finished yet - some more testing is needed. I've added
you as a co-author on some of the commits in which I've added or changed
additional code. Hope this is OK.
Thanks,
Michael
>
>
> Thanks,
> Sujith H
>
>
>
>
> >
> >This would help to hide cancel button for builds triggered
> from command
> >line in toaster.
> >
> >On Tue, Jan 26, 2016 at 7:52 PM, sujith h
> ><sujith.h at gmail.com <mailto:sujith.h at gmail.com>> wrote:
> >
> >
> >
> >On Wed, Jan 20, 2016 at 10:26 PM, Brian Avery
> ><avery.brian at gmail.com <mailto:avery.brian at gmail.com>> wrote:
> >
> >Pointer to xmlrpc test client -
> >https://bitbucket.org/srccode/xmlrpc-test-tool
> >
> >
> >
> >Today I gave a try with xmlrpc-test-tool. I tried to install
> php on my
> >local machine, followed by apache and then configured it to
> get it
> >working with php. Using this tool, I was getting the error as
> attached in
> >the screenshot.
> >
> >
> >
> >
> >
> >-b
> >
> >On Mon, Jan 18, 2016 at 8:12 AM, sujith h <sujith.h at gmail.com
> <mailto:sujith.h at gmail.com>> wrote:
> >>
> >>
> >> On Mon, Jan 18, 2016 at 1:13 AM, Barros Pena, Belen
> >> <belen.barros.pena at intel.com
> <mailto:belen.barros.pena at intel.com>> wrote:
> >>>
> >>>
> >>>
> >>> On 13/01/2016 16:47, "sujith h" <sujith.h at gmail.com
> <mailto:sujith.h at gmail.com>> wrote:
> >>>
> >>> >
> >>> >I have updated another patch set with which I have
> verified with:
> >>> >
> >>> >a) cancellation of a normal build
> >>> >
> >>> >b) run again and cancel the build
> >>> >
> >>> >c) stop toaster + start toaster + run again and cancel
> the build
> >>> >
> >>>
> >>> >
> >>>>http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=sujith/to
> >>>>ast
> >>> >er-build-cancel12
> >>>
> >>> Sorry for the delay in looking into this. Cancellation
> seems to be
> >>>working
> >>> well for me for any builds I start from Toaster. However,
> it doesn't
> >>>seem
> >>> to work for builds I start from the command line and I
> track through
> >>> Toaster. For those builds, a 'cancel' button appears, but
> when I click
> >>>it,
> >>> nothing happens: the build proceeds until it completes.
> >>>
> >>> I am not even sure if the 'cancel' functionality can work
> for builds
> >>> started from the command line, although it would be great
> if it did.
> >>>If it
> >>> is not possible to make it work, then the cancel button
> should not
> >>>display
> >>> for those builds. We can provide a message instead, as we
> do in the
> >>>case
> >>> of the 'run again' button, explaining that builds started
> from the
> >>>command
> >>> line can only be cancelled from the command line.
> >>
> >>
> >> Somehow when i try to use the same logic to cancel the
> build triggered
> >>from
> >> command line ( with small modification in the code though),
> I am getting
> >> error in the toaster_web.log as:
> >>
> >> ProtocolError: <ProtocolError for
> >0.0.0.0:42952/ <http://0.0.0.0:42952/>
> <http://0.0.0.0:42952/>: 503 Service Unavailable>
> >>
> >> Not able to understand why it is not able to connect to the
> port.
> >>Because as
> >> per my understanding when a build is triggered from
> toaster, we connect
> >>to
> >> the host:port and execute the commands. The runcommand is
> failing badly
> >>with
> >> the log:
> >>
> >> 2016-01-18 16:06:05,608 ERROR Internal Server Error:
> >> /toastergui/project/1/builds/
> >> Traceback (most recent call last):
> >> File
> >>
> >>"/home/sujith/build/poky-push/venv/lib/python2.7/site-packages/django/cor
> >>e/handlers/base.py",
> >> line 132, in get_response
> >> response = wrapped_callback(request, *callback_args,
> >>**callback_kwargs)
> >> File
> >>
> "/home/sujith/build/poky-push/bitbake/lib/toaster/toastergui/views.py",
> >>line
> >> 171, in returned_wrapper
> >> context = view(request, *args, **kwargs)
> >> File
> >>
> "/home/sujith/build/poky-push/bitbake/lib/toaster/toastergui/views.py",
> >>line
> >> 2896, in projectbuilds
> >> bbctrl.forceShutDown()
> >> File
> >>
> >>"/home/sujith/build/poky-push/bitbake/lib/toaster/bldcontrol/bbcontroller
> >>.py",
> >> line 73, in forceShutDown
> >> return self._runCommand(["stateForceShutdown"])
> >> File
> >>
> >>"/home/sujith/build/poky-push/bitbake/lib/toaster/bldcontrol/bbcontroller
> >>.py",
> >> line 50, in _runCommand
> >> result, error = self.connection.runCommand(command)
> >> File "/usr/lib64/python2.7/xmlrpclib.py", line 1240, in
> __call__
> >> return self.__send(self.__name, args)
> >> File "/usr/lib64/python2.7/xmlrpclib.py", line 1599, in
> __request
> >> verbose=self.__verbose
> >> File "/usr/lib64/python2.7/xmlrpclib.py", line 1280, in
> request
> >> return self.single_request(host, handler, request_body,
> verbose)
> >> File "/usr/lib64/python2.7/xmlrpclib.py", line 1328, in
> single_request
> >> response.msg,
> >> ProtocolError: <ProtocolError for
> >0.0.0.0:42952/ <http://0.0.0.0:42952/>
> <http://0.0.0.0:42952/>: 503 Service Unavailable>
> >> Internal Server Error: /toastergui/project/1/builds/
> >> Traceback (most recent call last):
> >> File
> >>
> >>"/home/sujith/build/poky-push/venv/lib/python2.7/site-packages/django/cor
> >>e/handlers/base.py",
> >> line 132, in get_response
> >> response = wrapped_callback(request, *callback_args,
> >>**callback_kwargs)
> >> File
> >>
> "/home/sujith/build/poky-push/bitbake/lib/toaster/toastergui/views.py",
> >>line
> >> 171, in returned_wrapper
> >> context = view(request, *args, **kwargs)
> >> File
> >>
> "/home/sujith/build/poky-push/bitbake/lib/toaster/toastergui/views.py",
> >>line
> >> 2896, in projectbuilds
> >> bbctrl.forceShutDown()
> >> File
> >>
> >>"/home/sujith/build/poky-push/bitbake/lib/toaster/bldcontrol/bbcontroller
> >>.py",
> >> line 73, in forceShutDown
> >> return self._runCommand(["stateForceShutdown"])
> >> File
> >>
> >>"/home/sujith/build/poky-push/bitbake/lib/toaster/bldcontrol/bbcontroller
> >>.py",
> >> line 50, in _runCommand
> >> result, error = self.connection.runCommand(command)
> >> File "/usr/lib64/python2.7/xmlrpclib.py", line 1240, in
> __call__
> >> return self.__send(self.__name, args)
> >> File "/usr/lib64/python2.7/xmlrpclib.py", line 1599, in
> __request
> >> verbose=self.__verbose
> >> File "/usr/lib64/python2.7/xmlrpclib.py", line 1280, in
> request
> >> return self.single_request(host, handler, request_body,
> verbose)
> >> File "/usr/lib64/python2.7/xmlrpclib.py", line 1328, in
> single_request
> >> response.msg,
> >> ProtocolError: <ProtocolError for
> >0.0.0.0:42952/ <http://0.0.0.0:42952/>
> <http://0.0.0.0:42952/>: 503 Service Unavailable>
> >> [18/Jan/2016 16:06:05] "POST /toastergui/project/1/builds/
> HTTP/1.1" 500
> >> 13414
> >>
> >>
> >> Any helping hand would be appreciated. More over I would
> also like to
> >>know
> >> if we can pass commands to builds triggered from command line?
> >>
> >> Thanks,
> >> Sujith H
> >>
> >> --
> >> സുജിത് ഹരിദാസന്
> >> Bangalore
> >> <Project>Contributor to KDE project
> >>
> >http://fci.wikia.com/wiki/Anti-DRM-Campaign
> ><http://fci.wikia.com/wiki/Anti-DRM-Campaign>
> >> <Blog> http://sujithh.info
> >>
> >
> >
> >> --
> >> _______________________________________________
> >> toaster mailing list
> >> toaster at yoctoproject.org <mailto:toaster at yoctoproject.org>
> >>
> >https://lists.yoctoproject.org/listinfo/toaster
> ><https://lists.yoctoproject.org/listinfo/toaster>
> >>
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >--
> >സുജിത് ഹരിദാസന്
> >Bangalore
> ><Project>Contributor to KDE project
> >http://fci.wikia.com/wiki/Anti-DRM-Campaign
> ><Blog> http://sujithh.info
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >--
> >സുജിത് ഹരിദാസന്
> >Bangalore
> ><Project>Contributor to KDE project
> >http://fci.wikia.com/wiki/Anti-DRM-Campaign
> ><Blog> http://sujithh.info
> >
> >
> >
> >
> >
> >
> >
>
>
>
>
> --
> സുജിത് ഹരിദാസന്
> Bangalore
> <Project>Contributor to KDE project
> http://fci.wikia.com/wiki/Anti-DRM-Campaign
> <Blog> http://sujithh.info
>
>
>
>
> --
> സുജിത് ഹരിദാസന്
> Bangalore
> <Project>Contributor to KDE project
> http://fci.wikia.com/wiki/Anti-DRM-Campaign
> <Blog> http://sujithh.info
>
>
More information about the toaster
mailing list