Skip to content

Commit

Permalink
Add command cluster create-failure-domain (streamnative/pulsar-admi…
Browse files Browse the repository at this point in the history
…n-go#21)

Master issue: streamnative/pulsar-admin-go#2 

```
 USED FOR:
    This command is used for creating a failure domain of the <cluster-name>.

REQUIRED PERMISSION:
    This command requires super-user permissions.

EXAMPLES:
    #creating the failure domain
    pulsarctl clusters create-failure-domain <cluster-name> <domain-name>

    #creating the failure domain with brokers
    pulsarctl clusters create-failure-domain --broker-list <cluster-A> --broker-list <cluster-B> <cluster-name> <domain-name>

OUTPUT:
    #normal output
    Create failure domain <domain-name> for cluster <cluster-name> succeed

    #the args need to be specified as <cluster-name> <domain-name>
    [✖]  need specified two names for cluster and failure domain

    #the specified cluster does not exist in the broker
    [✖]  code: 404 reason: Cluster does not exist

Usage: pulsarctl clusters create-failure-domain [flags]

Aliases: create-failure-domain, cfd

FailureDomainData flags:
  -b, --broker-list strings   Set the failure domain clusters

Common flags:
  -s, --admin-service-url string    The admin web service url that pulsarctl connects to. (default "http://localhost:8080")
      --auth-params string          Authentication parameters are used to configure the public and private key files required by tls
                                     For example: "tlsCertFile:val1,tlsKeyFile:val2"
  -C, --color string                toggle colorized logs (true,false,fabulous) (default "true")
  -h, --help                        help for this command
      --tls-allow-insecure          Allow TLS insecure connection
      --tls-trust-cert-pat string   Allow TLS trust cert file path
  -v, --verbose int                 set log level, use 0 to silence, 4 for debugging (default 3)

Use 'pulsarctl clusters create-failure-domain [command] --help' for more information about a command.
```
  • Loading branch information
zymap authored and tisonkun committed Aug 15, 2023
1 parent fdd04a1 commit 698ead4
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 6 deletions.
2 changes: 1 addition & 1 deletion pulsaradmin/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ require (
github.com/mattn/go-colorable v0.1.2 // indirect
github.com/mattn/go-runewidth v0.0.4 // indirect
github.com/olekukonko/tablewriter v0.0.1
github.com/pkg/errors v0.8.1 // indirect
github.com/pkg/errors v0.8.1
github.com/spf13/cobra v0.0.5
github.com/spf13/pflag v1.0.3
github.com/stretchr/objx v0.2.0 // indirect
Expand Down
16 changes: 11 additions & 5 deletions pulsaradmin/pkg/pulsar/cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ type Clusters interface {
Update(ClusterData) error
UpdatePeerClusters(string, []string) error
GetPeerClusters(string) ([]string, error)
CreateFailureDomain(FailureDomainData) error
}

type clusters struct {
Expand Down Expand Up @@ -51,14 +52,19 @@ func (c *clusters) Update(cdata ClusterData) error {
endpoint := c.client.endpoint(c.basePath, cdata.Name)
return c.client.post(endpoint, &cdata, nil)
}

func (c *clusters) UpdatePeerClusters(cluster string, peerClusters []string) error {
endpoint := c.client.endpoint(c.basePath, cluster, "peers")
return c.client.post(endpoint, peerClusters, nil)
}
func (c *clusters) GetPeerClusters(name string) ([]string, error) {
var peerClusters []string
endpoint := c.client.endpoint(c.basePath, name, "peers")
err := c.client.get(endpoint, &peerClusters)
return peerClusters, err
}

func (c *clusters) UpdatePeerClusters(cluster string, peerClusters []string) error {
endpoint := c.client.endpoint(c.basePath, cluster, "peers")
return c.client.post(endpoint, peerClusters, nil)
}

func (c *clusters) CreateFailureDomain(data FailureDomainData) error {
endpoint := c.client.endpoint(c.basePath, data.ClusterName, "failureDomains", data.DomainName)
return c.client.post(endpoint, &data, nil)
}
7 changes: 7 additions & 0 deletions pulsaradmin/pkg/pulsar/data.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,10 @@ type FunctionData struct {
FuncConf *FunctionConfig `json:"-"`
UserCodeFile string `json:"-"`
}

// Failure Domain information
type FailureDomainData struct {
ClusterName string `json:"-"`
DomainName string `json:"-"`
BrokerList []string `json:"brokerList"`
}

0 comments on commit 698ead4

Please sign in to comment.