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