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

Method Import

server/api/cluster.go:164–208  ·  view source on GitHub ↗
(c *gin.Context)

Source from the content-addressed store, hash-verified

162}
163
164func (handler *ClusterHandler) Import(c *gin.Context) {
165 namespace := c.Param("namespace")
166 clusterName := c.Param("cluster")
167 var req struct {
168 Nodes []string `json:"nodes" validate:"required"`
169 Password string `json:"password"`
170 }
171 if err := c.BindJSON(&req); err != nil {
172 helper.ResponseBadRequest(c, err)
173 return
174 }
175 if len(req.Nodes) == 0 {
176 helper.ResponseBadRequest(c, errors.New("nodes should NOT be empty"))
177 return
178 }
179
180 firstNode := store.NewClusterNode(req.Nodes[0], req.Password)
181 clusterNodesStr, err := firstNode.GetClusterNodesString(c)
182 if err != nil {
183 helper.ResponseError(c, err)
184 return
185 }
186 cluster, err := store.ParseCluster(clusterNodesStr)
187 if err != nil {
188 helper.ResponseError(c, err)
189 return
190 }
191 cluster.SetPassword(req.Password)
192
193 newNodes := make([]string, 0)
194 for _, node := range cluster.GetNodes() {
195 newNodes = append(newNodes, node.Addr())
196 }
197 if err := handler.s.CheckNewNodes(c, newNodes); err != nil {
198 helper.ResponseError(c, err)
199 return
200 }
201
202 cluster.Name = clusterName
203 if err := handler.s.CreateCluster(c, namespace, cluster); err != nil {
204 helper.ResponseError(c, err)
205 return
206 }
207 helper.ResponseOK(c, gin.H{"cluster": cluster})
208}

Callers 1

TestClusterImportFunction · 0.95

Calls 11

GetClusterNodesStringMethod · 0.95
ResponseBadRequestFunction · 0.92
NewClusterNodeFunction · 0.92
ResponseErrorFunction · 0.92
ParseClusterFunction · 0.92
ResponseOKFunction · 0.92
GetNodesMethod · 0.80
SetPasswordMethod · 0.65
AddrMethod · 0.65
CheckNewNodesMethod · 0.65
CreateClusterMethod · 0.65

Tested by 1

TestClusterImportFunction · 0.76