MCPcopy Create free account
hub / github.com/apache/kvrocks-controller / Create

Method Create

server/api/shard.go:57–90  ·  view source on GitHub ↗
(c *gin.Context)

Source from the content-addressed store, hash-verified

55}
56
57func (handler *ShardHandler) Create(c *gin.Context) {
58 ns := c.Param("namespace")
59 var req struct {
60 Nodes []string `json:"nodes" validate:"required"`
61 Password string `json:"password"`
62 }
63 if err := c.BindJSON(&req); err != nil {
64 helper.ResponseBadRequest(c, err)
65 return
66 }
67 if len(req.Nodes) == 0 {
68 helper.ResponseBadRequest(c, errors.New("nodes should NOT be empty"))
69 return
70 }
71 nodes := make([]store.Node, 0, len(req.Nodes))
72 for i, addr := range req.Nodes {
73 node := store.NewClusterNode(addr, req.Password)
74 if i == 0 {
75 node.SetRole(store.RoleMaster)
76 } else {
77 node.SetRole(store.RoleSlave)
78 }
79 nodes = append(nodes, node)
80 }
81 cluster, _ := c.MustGet(consts.ContextKeyCluster).(*store.Cluster)
82 newShard := store.NewShard()
83 newShard.Nodes = nodes
84 cluster.Shards = append(cluster.Shards, newShard)
85 if err := handler.s.UpdateCluster(c, ns, cluster); err != nil {
86 helper.ResponseError(c, err)
87 return
88 }
89 helper.ResponseCreated(c, gin.H{"shard": newShard})
90}
91
92func (handler *ShardHandler) Remove(c *gin.Context) {
93 ns := c.Param("namespace")

Callers 1

TestShardBasicsFunction · 0.95

Calls 7

SetRoleMethod · 0.95
ResponseBadRequestFunction · 0.92
NewClusterNodeFunction · 0.92
NewShardFunction · 0.92
ResponseErrorFunction · 0.92
ResponseCreatedFunction · 0.92
UpdateClusterMethod · 0.65

Tested by 1

TestShardBasicsFunction · 0.76