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

Method Create

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

Source from the content-addressed store, hash-verified

73}
74
75func (handler *ClusterHandler) Create(c *gin.Context) {
76 namespace := c.Param("namespace")
77 var req CreateClusterRequest
78 if err := c.BindJSON(&req); err != nil {
79 helper.ResponseBadRequest(c, err)
80 return
81 }
82
83 clusterStore := handler.s
84 if err := clusterStore.CheckNewNodes(c, req.Nodes); err != nil {
85 helper.ResponseError(c, err)
86 return
87 }
88
89 cluster, err := store.NewCluster(req.Name, req.Nodes, req.Replicas)
90 if err != nil {
91 helper.ResponseBadRequest(c, err)
92 return
93 }
94 cluster.SetPassword(req.Password)
95 checkClusterMode := strings.ToLower(c.GetHeader(consts.HeaderDontCheckClusterMode)) == "yes"
96 for _, node := range cluster.GetNodes() {
97 if !checkClusterMode {
98 break
99 }
100 version, err := node.CheckClusterMode(c)
101 if err != nil {
102 helper.ResponseError(c, err)
103 return
104 }
105 if version != -1 {
106 helper.ResponseBadRequest(c, errors.New("node is already in cluster mode"))
107 return
108 }
109 }
110
111 if err := clusterStore.CreateCluster(c, namespace, cluster); err != nil {
112 helper.ResponseError(c, err)
113 return
114 }
115 helper.ResponseCreated(c, gin.H{"cluster": cluster})
116}
117
118func (handler *ClusterHandler) Remove(c *gin.Context) {
119 namespace := c.Param("namespace")

Callers 1

TestClusterBasicsFunction · 0.95

Calls 9

SetPasswordMethod · 0.95
GetNodesMethod · 0.95
ResponseBadRequestFunction · 0.92
ResponseErrorFunction · 0.92
NewClusterFunction · 0.92
ResponseCreatedFunction · 0.92
CheckNewNodesMethod · 0.65
CheckClusterModeMethod · 0.65
CreateClusterMethod · 0.65

Tested by 1

TestClusterBasicsFunction · 0.76