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