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 >> >>>>>> >> >>>>> >> >>> >> >>