| 127 | } |
| 128 | |
| 129 | func (handler *ClusterHandler) MigrateSlot(c *gin.Context) { |
| 130 | namespace := c.Param("namespace") |
| 131 | clusterName := c.Param("cluster") |
| 132 | |
| 133 | lock := handler.getLock(namespace, clusterName) |
| 134 | lock.Lock() |
| 135 | defer lock.Unlock() |
| 136 | |
| 137 | s, _ := c.MustGet(consts.ContextKeyStore).(*store.ClusterStore) |
| 138 | cluster, err := s.GetCluster(c, namespace, clusterName) |
| 139 | if err != nil { |
| 140 | helper.ResponseError(c, err) |
| 141 | return |
| 142 | } |
| 143 | |
| 144 | var req MigrateSlotRequest |
| 145 | if err := c.BindJSON(&req); err != nil { |
| 146 | helper.ResponseBadRequest(c, err) |
| 147 | return |
| 148 | } |
| 149 | |
| 150 | err = cluster.MigrateSlot(c, req.Slot, req.Target, req.SlotOnly) |
| 151 | if err != nil { |
| 152 | helper.ResponseError(c, err) |
| 153 | return |
| 154 | } |
| 155 | |
| 156 | err = handler.s.UpdateCluster(c, namespace, cluster) |
| 157 | if err != nil { |
| 158 | helper.ResponseError(c, err) |
| 159 | return |
| 160 | } |
| 161 | helper.ResponseOK(c, gin.H{"cluster": cluster}) |
| 162 | } |
| 163 | |
| 164 | func (handler *ClusterHandler) Import(c *gin.Context) { |
| 165 | namespace := c.Param("namespace") |