On 02/24/2013 03:01 PM, Oved Ourfalli wrote:
> 
> ----- Original Message -----
>> > From: "Doron Fediuck" <[email protected]>
>> > To: "Michael Pasternak" <[email protected]>
>> > Cc: "Oved Ourfalli" <[email protected]>, [email protected], 
>> > [email protected]
>> > Sent: Sunday, February 24, 2013 1:20:12 PM
>> > Subject: Re: [Engine-devel] REST API calls from
>> > 
>> > 
>> > 
>> > ----- Original Message -----
>>> > > From: "Michael Pasternak" <[email protected]>
>>> > > To: "Oved Ourfalli" <[email protected]>
>>> > > Cc: [email protected], [email protected]
>>> > > Sent: Sunday, February 24, 2013 9:47:28 AM
>>> > > Subject: Re: [Engine-devel] REST API calls from
>>> > > 
>>> > > On 02/24/2013 09:05 AM, Oved Ourfalli wrote:
>>>> > > > 
>>>> > > > 
>>>> > > > ----- Original Message -----
>>>>> > > >> From: "Doron Fediuck" <[email protected]>
>>>>> > > >> To: "Michael Pasternak" <[email protected]>
>>>>> > > >> Cc: [email protected], [email protected]
>>>>> > > >> Sent: Thursday, February 21, 2013 6:54:59 PM
>>>>> > > >> Subject: Re: [Engine-devel] REST API calls from
>>>>> > > >>
>>>>> > > >>
>>>>> > > >>
>>>>> > > >> ----- Original Message -----
>>>>>> > > >>> From: "Michael Pasternak" <[email protected]>
>>>>>> > > >>> To: "Doron Fediuck" <[email protected]>
>>>>>> > > >>> Cc: [email protected], [email protected]
>>>>>> > > >>> Sent: Wednesday, February 20, 2013 2:56:59 PM
>>>>>> > > >>> Subject: Re: [Engine-devel] REST API calls from
>>>>>> > > >>>
>>>>>> > > >>> On 02/14/2013 11:20 AM, Doron Fediuck wrote:
>>>>>>> > > >>>>
>>>>>>> > > >>>>
>>>>>>> > > >>>> ----- Original Message -----
>>>>>>>> > > >>>>> From: "Michael Pasternak" <[email protected]>
>>>>>>>> > > >>>>> To: "Libor Spevak" <[email protected]>
>>>>>>>> > > >>>>> Cc: [email protected], [email protected]
>>>>>>>> > > >>>>> Sent: Wednesday, February 13, 2013 12:55:36 PM
>>>>>>>> > > >>>>> Subject: Re: [Engine-devel] REST API calls from the GUI
>>>>>>>> > > >>>>>
>>>>>>>> > > >>>>>
>>>>>>>> > > >>>>> Hi Libor,
>>>>>>>> > > >>>>>
>>>>>>>> > > >>>>> This issue came across in one of the conversations i had with
>>>>>>>> > > >>>>> UX
>>>>>>>> > > >>>>> folks, but since we didn't end
>>>>>>>> > > >>>>> up with any conclusion/road map (nor discussed it properly to
>>>>>>>> > > >>>>> hear
>>>>>>>> > > >>>>> other thoughts), this is a perfect
>>>>>>>> > > >>>>> place to start this discussion,
>>>>>>>> > > >>>>>
>>>>>>>> > > >>>>> Intuitively REST is a way to go with GWT AJAX calls
>>>>>>>> > > >>>>> ---------------------------------------------------
>>>>>>>> > > >>>>>
>>>>>>>> > > >>>>> pros
>>>>>>>> > > >>>>> ====
>>>>>>>> > > >>>>>
>>>>>>>> > > >>>>> - api data objects can be reused by generating java classes
>>>>>>>> > > >>>>> (using
>>>>>>>> > > >>>>> jaxb) from the rest schema [1]
>>>>>>>> > > >>>>> - no backend logic will be duplicated as api abstracts the
>>>>>>>> > > >>>>> backend
>>>>>>>> > > >>>>> exposing RESTful collection/resources to operate on
>>>>>>>> > > >>>>> - development against api is "easy" as api describes itself
>>>>>>>> > > >>>>> in
>>>>>>>> > > >>>>> RSDL
>>>>>>>> > > >>>>> [2]
>>>>>>>> > > >>>>>
>>>>>>>> > > >>>>> cons
>>>>>>>> > > >>>>> ====
>>>>>>>> > > >>>>>
>>>>>>>> > > >>>>> - implementing transport layer (HTTP) under GWT
>>>>>>>> > > >>>>> - implementing own j2xml/json/yaml/... marshalling layer
>>>>>>>> > > >>>>> - implementing own error handling mechanism
>>>>>>>> > > >>>>> - implementing REST callback mechanism (in GWT)
>>>>>>>> > > >>>>> - constant maintenance of the data objects generated from the
>>>>>>>> > > >>>>> api
>>>>>>>> > > >>>>> - painful for Java developers
>>>>>>>> > > >>>>>
>>>>>>>> > > >>>>> Java-SDK
>>>>>>>> > > >>>>> --------
>>>>>>>> > > >>>>>
>>>>>>>> > > >>>>> pros
>>>>>>>> > > >>>>> ====
>>>>>>>> > > >>>>>
>>>>>>>> > > >>>>> - abstracts transport layer (leaving developer in standard
>>>>>>>> > > >>>>> Java
>>>>>>>> > > >>>>> api)
>>>>>>>> > > >>>>> - typesafe code (no need to mess with XML bulks)
>>>>>>>> > > >>>>> - has own data objects to work with
>>>>>>>> > > >>>>> - abstracts authentication/authorization
>>>>>>>> > > >>>>> (kerberos/cookie/session/etc.)
>>>>>>>> > > >>>>> - since SDK is auto-generated, it can be easily extended with
>>>>>>>> > > >>>>> required
>>>>>>>> > > >>>>>   features to support UI (such as callback infrastructure for
>>>>>>>> > > >>>>>   instance)
>>>>>>>> > > >>>>>
>>>>>>>> > > >>>>> cons
>>>>>>>> > > >>>>> ====
>>>>>>>> > > >>>>>
>>>>>>>> > > >>>>> - has to be converted in to Javascript (not sure what the
>>>>>>>> > > >>>>> impacts
>>>>>>>> > > >>>>> are
>>>>>>>> > > >>>>> in terms of AJAX calls/etc.)
>>>>>>>> > > >>>>> - probably much more cons that we're not aware of and will
>>>>>>>> > > >>>>> have
>>>>>>>> > > >>>>> to
>>>>>>>> > > >>>>> figure out with POC
>>>>>>>> > > >>>>>
>>>>>>>> > > >>>>>
>>>>>>>> > > >>>>> thoughts?
>>>>>>>> > > >>>>>
>>>>>>>> > > >>>>> [1] http[s]://server[:port]/api?schema
>>>>>>>> > > >>>>> [2] http[s]://server[:port]/api?rsdl
>>>>>>>> > > >>>>>
>>>>>>> > > >>>>
>>>>>>> > > >>>> Although started as a UI request, there are other needs who
>>>>>>> > > >>>> wish
>>>>>>> > > >>>> to use API calls with a different transport. For example a
>>>>>>> > > >>>> backend
>>>>>>> > > >>>> hook which gets a REST entry point it can use to fetch for
>>>>>>> > > >>>> additional
>>>>>>> > > >>>> data, or perform actions. In this case I'd expect an internal
>>>>>>> > > >>>> connection
>>>>>>> > > >>>> rather than creating additional connections.
>>>>>>> > > >>>> How would you resolve it generically enough in this context?
>>>>>> > > >>>
>>>>>> > > >>> Doron,
>>>>>> > > >>>
>>>>>> > > >>> I believe your approach a bit different, UX folks seeking for a
>>>>>> > > >>> convenient
>>>>>> > > >>> way of communicating with ovirt public api, e.g closing
>>>>>> > > >>> api<->GUI
>>>>>> > > >>> gap, and
>>>>>> > > >>> theirs alternatives where native HTTP layer or Java-SDK based
>>>>>> > > >>> framework,
>>>>>> > > >>> while what you need is in-process channel to communicate with
>>>>>> > > >>> the
>>>>>> > > >>> engine itself,
>>>>>> > > >>>
>>>>>> > > >>> i understanding your will of using stable api for this
>>>>>> > > >>> (RESTapi),
>>>>>> > > >>> but
>>>>>> > > >>> not
>>>>>> > > >>> sure that doing this via JavaSDK is a good way to go simply
>>>>>> > > >>> because
>>>>>> > > >>> SDK is
>>>>>> > > >>> designed to operate in a client-space, while what you need is a
>>>>>> > > >>> server-space
>>>>>> > > >>> bridge for that.
>>>>>> > > >>>
>>>>> > > >>
>>>>> > > >> Michael, true but...
>>>>> > > >> Thinking about it differently both UI and hooks needs a client.
>>>>> > > >> The underlying protocols should be abstracted. This is something
>>>>> > > >> which will serve other functions as well.
>>>>> > > >>
>>>> > > > 
>>>> > > > I'm not sure we would need a new abstraction here.
>>>> > > > Both UI plugins and engine plugins need some API to do basic
>>>> > > > operations, and have access to different properties in the
>>>> > > > engine.
>>> > > 
>>> > > +1, that's exactly what i've suggested to begin with.
>>> > > 
>> > 
>> > The only issue is that UI plugins and engine plugins shave different
>> > expectations
>> > from performance point of view. If UI is willing to wait for a
>> > refresh that may
>> > take too long for engine plugins, which would prefer to get the
>> > information as
>> > soon as possible without going into various communication layers
>> > which are not
>> > always needed. So again- a simple solution which enables transports
>> > layers to
>> > be replaced may serve more than one functionality in a better way.
>> > 
> Let's start with the simple solution. We don't know yet who will the plugins, 
> how would they be used, and whether using the SDK will be a bottleneck of any 
> kind. If the proposed solution is to support different transport layers while 
> still using the SDK, then it is an extension we can always do in the future, 
> if we find it of high benefit.
> (btw, regardless of that, the API/SDK is now faster than in the past, as we 
> support REST sessions, which removes the need to re-authenticate upon each 
> API request).
> 

true, but the real bottleneck is sending XML bulks over the wire + 
bi-directional marshalling X 2 (engine<->api + api<->xml).

-- 

Michael Pasternak
RedHat, ENG-Virtualization R&D
_______________________________________________
Arch mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/arch

Reply via email to