...
1
2
3
4
5
6
7
8
9
10
11
12
13 package kivik
14
15 import (
16 "context"
17
18 "github.com/go-kivik/kivik/v4/driver"
19 )
20
21
22
23
24 func (c *Client) ClusterStatus(ctx context.Context, options ...Option) (string, error) {
25 endQuery, err := c.startQuery()
26 if err != nil {
27 return "", err
28 }
29 defer endQuery()
30 cluster, ok := c.driverClient.(driver.Cluster)
31 if !ok {
32 return "", errClusterNotImplemented
33 }
34 return cluster.ClusterStatus(ctx, multiOptions(options))
35 }
36
37
38
39
40
41
42 func (c *Client) ClusterSetup(ctx context.Context, action interface{}) error {
43 endQuery, err := c.startQuery()
44 if err != nil {
45 return err
46 }
47 defer endQuery()
48 cluster, ok := c.driverClient.(driver.Cluster)
49 if !ok {
50 return errClusterNotImplemented
51 }
52 return cluster.ClusterSetup(ctx, action)
53 }
54
55
56
57 type ClusterMembership struct {
58 AllNodes []string `json:"all_nodes"`
59 ClusterNodes []string `json:"cluster_nodes"`
60 }
61
62
63
64
65 func (c *Client) Membership(ctx context.Context) (*ClusterMembership, error) {
66 endQuery, err := c.startQuery()
67 if err != nil {
68 return nil, err
69 }
70 defer endQuery()
71 cluster, ok := c.driverClient.(driver.Cluster)
72 if !ok {
73 return nil, errClusterNotImplemented
74 }
75 nodes, err := cluster.Membership(ctx)
76 return (*ClusterMembership)(nodes), err
77 }
78
View as plain text