ping @PengHuiLi @Enrico Olivelli <eolive...@apache.org> Thanks ZhangJian He
On Mon, 27 Feb 2023 at 14:02, ZhangJian He <shoot...@gmail.com> wrote: > > Another idea is whether it is possible to generate clients for various > languages based on the current pulsar rest swagger files > Yes. But I don't think this is a suitable choice for the go client. Due to > the existing swagger file not fully complying with the specification, it > cannot be used directly to generate client code. Personally, I don't think > fixing it is particularly easy and there is currently no one working on it. > For the go client, I would still recommend creating a new repository and > having everyone contribute to it from there. WDYT? > > Also, I would appreciate it if others could let me know your thoughts on > this matter. @PengHuiLi @Enrico Olivelli <eolive...@apache.org> > > Thanks > ZhangJian He > > > On Sun, 26 Feb 2023 at 21:04, Guangning E <eguangn...@gmail.com> wrote: > >> Another idea is whether it is possible to generate clients for various >> languages based on the current pulsar rest swagger files? >> >> Thanks, >> Guangning >> >> On Sat, Feb 25, 2023 at 1:44 PM Zixuan Liu <node...@gmail.com> wrote: >> >> > > I would like to suggest creating a new repository called >> > "pulsar-admin-go" >> > >> > +1, I agreed with you. >> > >> > Thanks, >> > Zixuan >> > >> > ZhangJian He <shoot...@gmail.com> 于2023年2月25日周六 11:05写道: >> > >> > > Following our previous discussions via email, I would like to suggest >> > > creating a new repository called "pulsar-admin-go". This repository >> will >> > > serve as a platform for all of us to contribute our code. >> Pulsarctl[0] go >> > > first. >> > > >> > > Please let me know your thoughts on this matter. >> > > >> > > [0] - https://github.com/streamnative/pulsarctl >> > > >> > > Thanks >> > > ZhangJian He >> > > >> > > >> > > On Fri, 17 Feb 2023 at 23:24, ZhangJian He <shoot...@gmail.com> >> wrote: >> > > >> > > > Thank for StreamNative for willing to donate this project. This >> means >> > we >> > > > don't have to develop and maintain a set of HTTP code from scratch. >> My >> > > idea >> > > > aligns with Yunze's, and separating it into a standalone >> > pulsar-admin-go >> > > > project would be better. The **pulsarctl** repo contains bookkeeper >> > http >> > > > call too. Maybe we can have a project bookkeeper-admin-go ?(it's a >> > liitle >> > > > going off-topic ) >> > > > >> > > > Thanks >> > > > ZhangJian He >> > > > >> > > > >> > > > On Fri, 17 Feb 2023 at 20:29, PengHui Li <codelipeng...@gmail.com> >> > > wrote: >> > > > >> > > >> Hi Yunze, >> > > >> >> > > >> Yes, we can split it. >> > > >> Both one repo with two modules or two repos works for me. >> > > >> >> > > >> The pulsarctl already have the admin API and CLI. >> > > >> So I think we don’t need to develop another one. >> > > >> >> > > >> Best, >> > > >> Penghui >> > > >> >> > > >> > On Feb 17, 2023, at 17:44, Yunze Xu <y...@streamnative.io.INVALID >> > >> > > >> wrote: >> > > >> > >> > > >> > Hi PengHui, >> > > >> > >> > > >> > Now I changed my mind a bit. Even if the pulsarctl was >> contributed >> > to >> > > >> > the Apache Foundation, I think we should also avoid adding it as >> the >> > > >> > dependency. What we need is an API layer but not the CLI, while >> > > >> > pulsarctl couples the API and CLI. >> > > >> > >> > > >> > At the moment, my expectation is: >> > > >> > 1. Use a separate repo (e.g. pulsar-admin-go) to implement the >> admin >> > > >> > APIs in Golang. >> > > >> > 2. Depend this new repo in pulsarctl. >> > > >> > >> > > >> > Then we will have three Go projects: >> > > >> > - pulsar-client-go: The Pulsar Go client APIs >> > > >> > - pulsar-admin-go: The Pulsar Go admin APIs >> > > >> > - pulsarctl: The admin CLI tool written in Go >> > > >> > >> > > >> > Thanks, >> > > >> > Yunze >> > > >> > >> > > >> > On Fri, Feb 17, 2023 at 4:22 PM PengHui Li <peng...@apache.org> >> > > wrote: >> > > >> >> >> > > >> >> I checked with Sijie today. >> > > >> >> StreamNative can contribute the pulsarctl project to Apache >> > > Foundation. >> > > >> >> >> > > >> >> Regards, >> > > >> >> Penghui >> > > >> >> >> > > >> >> On Fri, Feb 17, 2023 at 4:02 PM Enrico Olivelli < >> > eolive...@gmail.com >> > > > >> > > >> wrote: >> > > >> >> >> > > >> >>> I agree to add an admin API to the go client, this would be >> very >> > > >> helpful. >> > > >> >>> >> > > >> >>> Il giorno ven 17 feb 2023 alle ore 08:44 Zixuan Liu >> > > >> >>> <node...@gmail.com> ha scritto: >> > > >> >>>> >> > > >> >>>> Hi Zhangjian, >> > > >> >>>> >> > > >> >>>> This is a good idea to write the admin client by golang, but I >> > > don't >> > > >> >>>> suggest add the admin features to pulsar-go-client, it's >> better >> > to >> > > >> use a >> > > >> >>>> new repository to do that to separate dependencies. >> > > >> >>>> >> > > >> >>>> BTW, StreamNative has a pulsarctl [0] tool, which includes the >> > > admin >> > > >> api. >> > > >> >>>> >> > > >> >>>>>> It's better to reuse existing code rather than reinventing >> the >> > > >> wheel. >> > > >> >>>> >> > > >> >>>> I aggred this point. If possible, we can integrate the >> pulsarctl >> > to >> > > >> this >> > > >> >>>> new project. >> > > >> >>> >> > > >> >>> We are talking about adding a client that calls a >> > > >> >>> well defined and maintained REST API. >> > > >> >>> It is better to have our implementation and not rely on third >> > > parties >> > > >> >>> when it is possible. >> > > >> >>> If there is a security issue in pulsarctl, how would we handle >> > that >> > > ? >> > > >> >>> Also the Pulsar community maintains the Pulsar API and this is >> the >> > > >> >>> place where it is easier to keep the client up-to-date with the >> > new >> > > >> >>> APIs that we will develop, >> > > >> >>> we can't wait for a third party project to implement our own >> APIs >> > > and >> > > >> >>> wait for an upgrade (even if it is OSS, we cannot cut releases >> or >> > > have >> > > >> >>> control over the release cycle) >> > > >> >>> >> > > >> >>> >> > > >> >>> Enrico >> > > >> >>> >> > > >> >>> >> > > >> >>> >> > > >> >>>> >> > > >> >>>> [0] - https://github.com/streamnative/pulsarctl >> > > >> >>>> >> > > >> >>>> Thanks, >> > > >> >>>> Zixuan >> > > >> >>>> >> > > >> >>>> >> > > >> >>>> ZhangJian He <shoot...@gmail.com> 于2023年2月17日周五 13:47写道: >> > > >> >>>> >> > > >> >>>>> Separating dependencies is better. For example, I think >> > > >> >>> Pulsar-admin-go can >> > > >> >>>>> only have golang standard tls and http dependencies. >> > > >> >>>>> But it seems impossible to have two go modules when >> publishing >> > > >> packages >> > > >> >>>>> using github. >> > > >> >>>>> >> > > >> >>>>>> Has anyone tried generating an admin client from our >> generated >> > > open >> > > >> >>>>> api spec? >> > > >> >>>>> >> > > >> >>>>> I have attempted it, but it requires us to modify our Swagger >> > > file. >> > > >> Our >> > > >> >>>>> existing Swagger file can't generate HTTP clients directly. >> > > Perhaps >> > > >> we >> > > >> >>> can >> > > >> >>>>> rewrite a unified and standardized Swagger file, and then >> > generate >> > > >> all >> > > >> >>>>> code, including brokers, from there gradually. >> > > >> >>>>> >> > > >> >>>>> Thanks >> > > >> >>>>> ZhangJian He >> > > >> >>>>> >> > > >> >>>>> >> > > >> >>>>> On Fri, 17 Feb 2023 at 12:37, Yunze Xu >> > > <y...@streamnative.io.invalid >> > > >> > >> > > >> >>>>> wrote: >> > > >> >>>>> >> > > >> >>>>>>> I notice that the Java Client and the Java Admin Client are >> > > >> >>> separate >> > > >> >>>>>> dependencies. Is this boundary important to maintain for >> other >> > > >> >>>>>> language admin clients? >> > > >> >>>>>> >> > > >> >>>>>> IMO, separating them is better to maintain. I had an idea to >> > > >> >>> implement >> > > >> >>>>>> a pure C implementation of the Pulsar admin API. Only >> libcurl >> > and >> > > >> >>>>>> openssl dependencies are required. Compared with the C++ >> > library, >> > > >> the >> > > >> >>>>>> pure C library has smaller size, better ABI compatibility, >> and >> > > much >> > > >> >>>>>> quicker compilation speed than the C++ library, which has >> some >> > > more >> > > >> >>>>>> heavy dependencies like Boost and Protobuf. >> > > >> >>>>>> >> > > >> >>>>>> Thanks, >> > > >> >>>>>> Yunze >> > > >> >>>>>> >> > > >> >>>>>> On Fri, Feb 17, 2023 at 11:58 AM Michael Marshall < >> > > >> >>> mmarsh...@apache.org> >> > > >> >>>>>> wrote: >> > > >> >>>>>>> >> > > >> >>>>>>> I think it would be valuable to have admin clients in many >> > > >> >>> languages. >> > > >> >>>>>>> Has anyone tried generating an admin client from our >> generated >> > > >> open >> > > >> >>>>>>> api spec? >> > > >> >>>>>>> >> > > >> >>>>>>> I notice that the Java Client and the Java Admin Client are >> > > >> >>> separate >> > > >> >>>>>>> dependencies. Is this boundary important to maintain for >> other >> > > >> >>>>>>> language admin clients? >> > > >> >>>>>>> >> > > >> >>>>>>> Thanks, >> > > >> >>>>>>> Michael >> > > >> >>>>>>> >> > > >> >>>>>>> On Thu, Feb 16, 2023 at 7:47 PM ZhangJian He < >> > > shoot...@gmail.com> >> > > >> >>>>> wrote: >> > > >> >>>>>>>> >> > > >> >>>>>>>> I would like to express that the current Pulsar client >> for Go >> > > >> >>>>>>>> (pulsar-client-go) is missing the pulsar Admin API. As >> such, >> > I >> > > >> >>> would >> > > >> >>>>>> like >> > > >> >>>>>>>> to propose that we work towards adding this feature to >> > > >> >>>>>> pulsar-client-go. >> > > >> >>>>>>>> >> > > >> >>>>>>>> I believe that this new feature would be a valuable >> addition >> > to >> > > >> >>>>>>>> pulsar-client-go, and I am excited to work to make it >> happen. >> > > >> >>>>>>>> >> > > >> >>>>>>>> I have submitted a PR: >> > > >> >>>>>> https://github.com/apache/pulsar-client-go/pull/959 >> > > >> >>>>>>>> The full api is not currently available, but we are >> adding. >> > > >> >>>>>>>> >> > > >> >>>>>>>> Below is a simple example about how to use >> > > >> >>>>>>>> >> > > >> >>>>>>>> ## usage >> > > >> >>>>>>>> >> > > >> >>>>>>>> ```go >> > > >> >>>>>>>> package main >> > > >> >>>>>>>> >> > > >> >>>>>>>> import ( >> > > >> >>>>>>>> "fmt" >> > > >> >>>>>>>> "github.com/apache/pulsar-client-go/padmin" >> > > >> >>>>>>>> ) >> > > >> >>>>>>>> >> > > >> >>>>>>>> func main() { >> > > >> >>>>>>>> admin, err := padmin.NewDefaultPulsarAdmin() >> > > >> >>>>>>>> if err != nil { >> > > >> >>>>>>>> panic(err) >> > > >> >>>>>>>> } >> > > >> >>>>>>>> // get namespace topic list >> > > >> >>>>>>>> topics, err := >> > > >> >>> admin.PersistentTopics.ListNamespaceTopics("tenant", >> > > >> >>>>>>>> "namespace") >> > > >> >>>>>>>> if err != nil { >> > > >> >>>>>>>> panic(err) >> > > >> >>>>>>>> } >> > > >> >>>>>>>> fmt.Println(topics) >> > > >> >>>>>>>> } >> > > >> >>>>>>>> ``` >> > > >> >>>>>>>> >> > > >> >>>>>>>> Thanks >> > > >> >>>>>>>> ZhangJian He >> > > >> >>>>>> >> > > >> >>>>> >> > > >> >>> >> > > >> >> > > >> >> > > >> > >> >