Any thoughts or comments on this. :) If not, would like to mark this BP approved. And we will prepare an initial PR for detailed discussion and comments.
On Wed, Sep 13, 2017 at 4:49 PM, Sijie Guo <guosi...@gmail.com> wrote: > On Wed, Sep 13, 2017 at 1:38 AM, Enrico Olivelli <eolive...@gmail.com> > wrote: > > > > > > > 2017-09-13 10:31 GMT+02:00 Jia Zhai <zhaiji...@gmail.com>: > > > >> Thanks a lot for your time Yiming and Enrico. :) > >> > >> Regarding the security, we could do it in a separate BP, and make this > BP > >> more focus on filling up the useful endpoints. How about it? > >> > > > > OK, but please consider that the more utility you add to the endpoint the > > more users will want to enable it and so security will be a blocker issue > > > > My take on this - we all know security is important for any communication > to bookies. > > However, security is a big different scope of problems to address. we > shouldn't put everything in one big BP. I'd suggest us focusing on the > problems > that a BP tends to address, defer other things to separate BPs. Otherwise > we can't land any changes quickly. > > > > > > > >> > >> On Wed, Sep 13, 2017 at 3:30 PM, Enrico Olivelli <eolive...@gmail.com> > >> wrote: > >> > >> > Hi Jia, > >> > I am OK with the idea of having standard HTTP API, this will help > >> > development of (non-Java) tools. > >> > > >> > It is not clear to me if we are going to add an http API useful for > >> > "managing bookies" or a new HTTP REST-like Client API to BookKeeper. > >> > I am referring to the fact that in the proposal there are API calls to > >> > create ledgers and to read data. > >> > I think we should separate this two aspects and maybe it is better to > >> > address the 'bookie management' first, which is the work that Yiming > >> > started. > >> > > >> [jia] It is targeting for the admin portal. the existence of the ledger > >> api > >> is just to simplify debugging or operations. we can eliminate the > ‘create’ > >> endpoint. > >> > > > > OK so are you already thinking about specific tools to manage bookies > > without the bookie shell > > > > We would like to integrate this for schedulers (e.g. k8s). so we can deploy > and operate bookkeeper easily > in those environments. > > > > > > > >> > >> > >> > > >> > Another point very important to me is that if we are going to > introduce > >> > management operations via http we have to take into account security, > at > >> > least TLS and some kind of authentication. > >> > About TLS it is very simple to achieve this, every HTTP server > supports > >> TLS > >> > (https) > >> > About authentication the problem is not so simple, Kerberos on HTTPs > is > >> > very complex, but we need to introduce some auth mechanism. > >> > IMHO We can require the 'http server implementation' to implement > >> security > >> > but out of the box we have to supply basic support at least for one > >> > provider bundled in the distribution package. > >> > > >> [jia] The BP focuses on filling up the useful endpoints. The security > will > >> be a separate BP. > >> > >> > >> > > >> > Some API can return very large result sets like 'list ledgers', > actually > >> > the HTTP Server subsystem exchanges strings in memory, we will need to > >> > introduce some more smart way because it would be easy to bring down > the > >> > bookie just by calling that API multiple times concurrencly (it is > just > >> an > >> > example) > >> > > >> [jia] We could add pagination into all the `list` api. > >> > > > > Yes but it will be really tricky to implement, but please do it > > > > > >> > >> > > >> > IMHO The 'create ledger' API is not useful, due to the design of BK > you > >> > have to create a ledger and then write immediately to it, I think that > >> such > >> > an API should allow the client to stream the contents of the ledger in > >> the > >> > HTTP body at least. But I think that a more stateful http API needs to > >> be > >> > designed to implement a pure Http client > >> > > >> [jia] Thanks, we are not planning to implement an http client. we will > >> remove ‘create’ here. > >> > > > > OK, thanks > > > >> > >> > >> > > >> > Maybe we should add a more narrowed motivation and add the only useful > >> APIs > >> > to address those issues. > >> > For instance in my company we would like to start creating a > BookKeeper > >> Web > >> > UI, so we need some way to talk to bookies and exchange data, but in > >> this > >> > case I am interested in asking to bookies their status and the > effective > >> > contents of the bookie > >> > > >> [jia] The BP proposes adding a standard naming convention for adding > admin > >> endpoints. Feel free to propose the endpoints you would like to appear > in > >> the http admin portal. > >> > > > > The ones you wrote are enough complete for me, I would like to have > > read-only operation in order to have a global view on the status of the > > system. > > > > -- Enrico > > > > > > > >> > >> > >> > > >> > -- Enrico > >> > > >> > > >> > 2017-09-13 6:09 GMT+02:00 Yiming Zang <yz...@twitter.com.invalid>: > >> > > >> > > Sure, I think the current HTTP endpoints in Twitter are only > designed > >> for > >> > > Twitter specific, such as check quorum loss, check rack/region > >> diversity. > >> > > So the endpoints convention in Twitter are not the same as in the > >> > proposal. > >> > > I think it would be great to have an agreement on the API naming > >> design, > >> > so > >> > > I like the API design in the proposal, I think the proposal looks > >> good to > >> > > me. > >> > > > >> > > Besides, we're currently only using GET functionalities in Twitter, > >> but I > >> > > notice there're a lot of POST and PUT APIs in the proposal which > could > >> > > change the bookie state or trigger some heavy workload. These APIs > >> looks > >> > a > >> > > bit risky to me if we don't have any authentication enabled (in > >> Twitter). > >> > > > >> > > On Tue, Sep 12, 2017 at 6:11 PM, Sijie Guo <guosi...@gmail.com> > >> wrote: > >> > > > >> > > > + Yiming > >> > > > > >> > > > Yiming, if you have time, please take a look at this BP. let's see > >> if > >> > > > there are any conflicts with those you added for autorecovery. > >> > > > > >> > > > - Sijie > >> > > > > >> > > > On Tue, Sep 12, 2017 at 8:00 AM, Jia Zhai <zhaiji...@gmail.com> > >> wrote: > >> > > > > >> > > >> Hi all, > >> > > >> > >> > > >> Based on Github #278 <https://github.com/apache/boo > >> kkeeper/pull/278>, > >> > > I > >> > > >> have just posted a proposal regarding define BookKeeper public > http > >> > > >> endpoints: > >> > > >> > >> > > >> https://cwiki.apache.org/confluence/display/BOOKKEEPER/BP- > >> > > >> 17%3A+Define+BookKeeper+public+http+endpoints > >> > > >> > >> > > >> > >> > > >> Github #278 <https://github.com/apache/bookkeeper/pull/278> > >> > introduces > >> > > >> BookKeeper Http Endpoint module. However there are only two > >> endpoints, > >> > > >> which is “/heartbeat” and “/api/config/serverconfig”, defined in > >> #278. > >> > > In > >> > > >> order to fully leverage the http modules, The goal of this BP is > to > >> > add > >> > > >> more endpoints to this modules. > >> > > >> > >> > > >> Any comments are welcome and appreciated. > >> > > >> > >> > > >> > >> > > >> Thanks. > >> > > >> > >> > > >> -Jia > >> > > >> > >> > > > > >> > > > > >> > > > >> > > >> > > > > >