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

Reply via email to