Hi,

Made small modification compared to my earlier branch
sujith/toaster-build-cancel2 in :
http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=sujith/toaster-build-cancel3
I have tried to split my work into 3 patches
a) One for UI ( html + js)
b) One for API
c) One for toastergui/views.py

The only reason why I couldn't remove the line : self.connection =
server.establishConnection([]) from toaster/bldcontrol/bbcontroller.py file
is due to the fact that self.connection is an instance of
bb.server.xmlrpc.BitBakeXMLRPCServerConnection
and the server returned from
bb.server.xmlrpc._create_server(self.be.bbaddress, int(self.be.bbport)) ,
is an instance of ServerProxy.
So I am not sure if I completely remove self.connection =
server.establishConnection([]) and use
bb.server.xmlrpc._create_server(self.be.bbaddress, int(self.be.bbport))[0],
would cause breakage of code.

Any pointers here would be helpful.

Thanks,

Sujith H

On Mon, Dec 21, 2015 at 6:42 PM, sujith h <[email protected]> wrote:

> Hi,
>
> I have updated patch :
> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=sujith/toaster-build-cancel2
>
> Let me know if this looks ok or needs more enhancement(s)?
>
> Thanks,
> Sujith H
>
> On Mon, Dec 21, 2015 at 1:37 PM, sujith h <[email protected]> wrote:
>
>> Hi,
>>
>>
>> On Sat, Dec 19, 2015 at 8:57 PM, sujith h <[email protected]> wrote:
>>
>>> Hi,
>>>
>>> On Fri, Dec 18, 2015 at 7:16 PM, Ed Bartosh <[email protected]>
>>> wrote:
>>>
>>>> Hi Sujith,
>>>>
>>>> Can you split your changes please?
>>>> I'd suggest to at least separate backend changes from frontend ones.
>>>>
>>>> Having uihelper.py changes in a separate commit would be nice too.
>>>> It looks like you've spotted correctly that findServerDetails is not
>>>> used anywhere in bitbake code. You can remove it in a separate commit as
>>>> it looks unrelated to the rest of the patch.
>>>>
>>>> +1 for Michael's suggestion to use build controller.
>>>>
>>>
>>>  The problem I see using build controller is:
>>>
>>> I have tried with the build controller approach earlier and below are my
>>> findings:
>>> Lets say if I try to use getBuildEnvironmentController function as:
>>>
>>> localhostbctrl = localhostbecontroller.LocalhostBEController(be) # in
>>> toastergui/views.py
>>> localhostbctrl.getBBController()
>>>
>>> Then the failure starts when the control reaches function startBBServer
>>> and the initial assert fails.
>>>
>>> Even if I try to add a wrapper function known as cancelBuild in
>>> bbcontroller.py:
>>>
>>>     def conncetToServer(self):
>>>         server = bb.server.xmlrpc.BitBakeXMLRPCClient()
>>>         server.initServer()
>>>         server.saveConnectionDetails("%s:%s" % (self.be.bbaddress,
>>> self.be.bbport))
>>>         self.connection = server.establishConnection([])
>>>
>>>         self.be.bbtoken = self.connection.transport.connection_token
>>>         self.be.save()
>>>
>>>         return BitbakeController(self.connection)
>>>
>>> This would fail in server.establishConnection line. Because internally
>>> it does call connect function in xmlrpc.py which does call
>>> uievent.BBUIEventQueue. This call causes exception, because in
>>> registerEventHandler function  there is a line:
>>>
>>>  if (self.cooker.state in [bb.cooker.state.parsing,
>>> bb.cooker.state.running]):
>>>
>>> I couldn't tackle this situation and that is the reason why I opted for
>>> another approach from uihelper's function findServerDetails.
>>> Is there any other way using which I can tackle this situation from
>>> bbcontroller.py? As per my investigation the problem bubbles around with
>>> registerEventHandler function with this approach.
>>>
>>
>> Another approach which I followed was ( using bbcontroller.py ) by
>> writing a new function getBBServer:
>>
>>     def getBBServer(self, host, port):
>>         """ returns a connection from running server. This helps in
>> cancellation of bitbake from
>>             toaster UI.
>>         """
>>         server, transport = bb.server.xmlrpc._create_server(host, port)
>>         return server
>>
>> And then call this function from toastergui/views.py file:
>>
>>                         br =
>> BuildRequest.objects.select_for_update().get(project = prj, pk = i,
>> state__lte = BuildRequest.REQ_INPROGRESS)
>>                         bbctrl =
>> bbcontroller.BuildEnvironmentController(br.environment)
>>                         server =
>> bbctrl.getBBServer(br.environment.bbaddress, br.environment.bbport)
>>                         logger.warning(br.environment.LOCK_STATE)
>>                         server.runCommand(["stateForceShutdown"])
>>                         while True:
>>                             if len(BuildRequest.objects.get(pk = i
>> ).build.errors) > 0:
>>                                 br.state = BuildRequest.REQ_DELETED
>>                                 br.save()
>>                                 build = BuildRequest.objects.get(pk = i
>> ).build
>>                                 build.outcome = 0
>>                                 build.save()
>>                                 break
>>
>>
>> Nothing else is coming into my mind. Any pointers?
>>
>>>
>>> Thanks,
>>> Sujith H
>>>
>>>
>>>> On Thu, Dec 17, 2015 at 10:26:11PM +0530, sujith h wrote:
>>>> > Hi,
>>>> >
>>>> > I have posted my changes in:
>>>> >
>>>> http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=sujith/toaster-build-cancel
>>>> >
>>>> > Kindly review my changes and let me know if I have to make changes. I
>>>> would
>>>> > be happy to do so.
>>>> >
>>>> > Thanks for all helping hand from RP, Ed, Michael, Belen and Paul.
>>>> >
>>>> > Thanks,
>>>> > Sujith H
>>>>
>>>> --
>>>> Regards,
>>>> Ed
>>>>
>>>
>>>
>>>
>>> --
>>> സുജിത് ഹരിദാസന്
>>> 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
-- 
_______________________________________________
toaster mailing list
[email protected]
https://lists.yoctoproject.org/listinfo/toaster

Reply via email to