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

Reply via email to