@@ -39,23 +39,30 @@ import (
3939
4040var (
4141 MIGRATE_ETCD_STEPS = []int {
42- playbook .STOP_SERVICE ,
43- playbook .CLEAN_SERVICE , // only container
42+ playbook .ADD_ETCD_MEMBER ,
4443 playbook .PULL_IMAGE ,
4544 playbook .CREATE_CONTAINER ,
4645 playbook .SYNC_CONFIG ,
46+ playbook .AMEND_ETCD_CONFIG ,
4747 playbook .START_ETCD ,
48+ playbook .REMOVE_ETCD_MEMBER ,
49+ playbook .AMEND_SERVER_CONFIG , // modify the etcd endpoint in mds.conf
50+ playbook .RESTART_SERVICE , // restart all mds then modify the etcd endpoint
51+ playbook .STOP_SERVICE ,
52+ playbook .CLEAN_SERVICE , // only container
4853 playbook .UPDATE_TOPOLOGY ,
4954 }
5055
5156 // mds
5257 MIGRATE_MDS_STEPS = []int {
53- playbook .STOP_SERVICE ,
54- playbook .CLEAN_SERVICE , // only container
5558 playbook .PULL_IMAGE ,
5659 playbook .CREATE_CONTAINER ,
5760 playbook .SYNC_CONFIG ,
5861 playbook .START_MDS ,
62+ playbook .AMEND_SERVER_CONFIG , // modify the mds.listen.addr in metaserver.conf
63+ playbook .RESTART_SERVICE , // restart all metaserver then modify the mds.listen.addr
64+ playbook .STOP_SERVICE ,
65+ playbook .CLEAN_SERVICE , // only container
5966 playbook .UPDATE_TOPOLOGY ,
6067 }
6168
6774 playbook .CREATE_CONTAINER ,
6875 playbook .SYNC_CONFIG ,
6976 playbook .START_SNAPSHOTCLONE ,
77+ playbook .AMEND_SERVER_CONFIG , // modify the mds.listen.addr in metaserver.conf
78+ playbook .RESTART_SERVICE , // restart all metaserver then modify the mds.listen.addr
7079 playbook .UPDATE_TOPOLOGY ,
7180 }
7281
@@ -157,7 +166,7 @@ func checkMigrateTopology(curveadm *cli.CurveAdm, data string) error {
157166 } else if len (dcs2add ) < len (dcs2del ) {
158167 return errno .ERR_DELETE_SERVICE_WHILE_MIGRATING_IS_DENIED
159168 }
160- // len(dcs2add) == len(dcs2del)
169+
161170 if len (dcs2add ) == 0 {
162171 return errno .ERR_NO_SERVICES_FOR_MIGRATING
163172 }
@@ -199,6 +208,7 @@ func genMigratePlaybook(curveadm *cli.CurveAdm,
199208 migrates := getMigrates (curveadm , data )
200209 role := migrates [0 ].From .GetRole ()
201210 steps := MIGRATE_ROLE_STEPS [role ]
211+ etcdDCs := curveadm .FilterDeployConfigByRole (dcs , topology .ROLE_ETCD )
202212
203213 // post clean
204214 if options .clean {
@@ -221,10 +231,25 @@ func genMigratePlaybook(curveadm *cli.CurveAdm,
221231 config := dcs2add
222232 switch step {
223233 case playbook .STOP_SERVICE ,
224- playbook .CLEAN_SERVICE :
234+ playbook .CLEAN_SERVICE ,
235+ playbook .ADD_ETCD_MEMBER ,
236+ playbook .REMOVE_ETCD_MEMBER :
225237 config = dcs2del
226238 case playbook .BACKUP_ETCD_DATA :
227239 config = curveadm .FilterDeployConfigByRole (dcs , topology .ROLE_ETCD )
240+ // 1. migrate etcd, need to override mds config and restart all mds
241+ // 2. (FS)migrate mds, need to override metaserver config and restart all metaservers
242+ // 3. (BS)migrate mds, need to override chunkserver and snapshot config and restart all chunkservers and snapshotclones
243+ case playbook .AMEND_SERVER_CONFIG ,
244+ playbook .RESTART_SERVICE :
245+ if role == topology .ROLE_ETCD {
246+ config = curveadm .FilterDeployConfigByRole (dcs , topology .ROLE_MDS )
247+ } else if role == topology .ROLE_MDS && dcs [0 ].GetKind () == topology .KIND_CURVEFS {
248+ config = curveadm .FilterDeployConfigByRole (dcs , topology .ROLE_METASERVER )
249+ } else if role == topology .ROLE_MDS && dcs [0 ].GetKind () == topology .KIND_CURVEBS {
250+ config = curveadm .FilterDeployConfigByRole (dcs , topology .ROLE_CHUNKSERVER )
251+ config = append (config , curveadm .FilterDeployConfigByRole (dcs , topology .ROLE_SNAPSHOTCLONE )... )
252+ }
228253 case
229254 playbook .CREATE_PHYSICAL_POOL ,
230255 playbook .CREATE_LOGICAL_POOL ,
@@ -251,6 +276,11 @@ func genMigratePlaybook(curveadm *cli.CurveAdm,
251276 optionsKV [comm .KEY_POOLSET ] = poolset
252277 case playbook .UPDATE_TOPOLOGY :
253278 optionsKV [comm .KEY_NEW_TOPOLOGY_DATA ] = data
279+ case playbook .ADD_ETCD_MEMBER ,
280+ playbook .AMEND_ETCD_CONFIG ,
281+ playbook .AMEND_SERVER_CONFIG :
282+ optionsKV [comm .KEY_MIGRATE_SERVERS ] = migrates
283+ optionsKV [comm .KEY_CLUSTER_DCS ] = etcdDCs
254284 }
255285
256286 pb .AddStep (& playbook.PlaybookStep {
0 commit comments