@@ -39,23 +39,31 @@ 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 .AMEND_MDS_CONFIG , // add a etcd endpoint 
49+ 		playbook .RESTART_SERVICE ,  // restart all mds then add a etcd endpoint in mds.conf 
50+ 		playbook .REMOVE_ETCD_MEMBER ,
51+ 		playbook .STOP_SERVICE ,
52+ 		playbook .CLEAN_SERVICE , // only container 
53+ 		// playbook.AMEND_MDS_CONFIG, // remove a etcd endpoint 
54+ 		// playbook.RESTART_SERVICE, // restart all mds then remove a etcd endpoint in mds.conf 
55+ 		// playbook.RELOAD_METASERVER 
4856		playbook .UPDATE_TOPOLOGY ,
4957	}
5058
5159	// mds 
5260	MIGRATE_MDS_STEPS  =  []int {
53- 		playbook .STOP_SERVICE ,
54- 		playbook .CLEAN_SERVICE , // only container 
5561		playbook .PULL_IMAGE ,
5662		playbook .CREATE_CONTAINER ,
5763		playbook .SYNC_CONFIG ,
5864		playbook .START_MDS ,
65+ 		playbook .STOP_SERVICE ,
66+ 		playbook .CLEAN_SERVICE , // only container 
5967		playbook .UPDATE_TOPOLOGY ,
6068	}
6169
@@ -157,7 +165,7 @@ func checkMigrateTopology(curveadm *cli.CurveAdm, data string) error {
157165	} else  if  len (dcs2add ) <  len (dcs2del ) {
158166		return  errno .ERR_DELETE_SERVICE_WHILE_MIGRATING_IS_DENIED 
159167	}
160- 	 // len(dcs2add) == len(dcs2del) 
168+ 
161169	if  len (dcs2add ) ==  0  {
162170		return  errno .ERR_NO_SERVICES_FOR_MIGRATING 
163171	}
@@ -199,6 +207,7 @@ func genMigratePlaybook(curveadm *cli.CurveAdm,
199207	migrates  :=  getMigrates (curveadm , data )
200208	role  :=  migrates [0 ].From .GetRole ()
201209	steps  :=  MIGRATE_ROLE_STEPS [role ]
210+ 	etcdDCs  :=  curveadm .FilterDeployConfigByRole (dcs , topology .ROLE_ETCD )
202211
203212	// post clean 
204213	if  options .clean  {
@@ -221,10 +230,14 @@ func genMigratePlaybook(curveadm *cli.CurveAdm,
221230		config  :=  dcs2add 
222231		switch  step  {
223232		case  playbook .STOP_SERVICE ,
224- 			playbook .CLEAN_SERVICE :
233+ 			playbook .CLEAN_SERVICE ,
234+ 			playbook .ADD_ETCD_MEMBER :
225235			config  =  dcs2del 
226236		case  playbook .BACKUP_ETCD_DATA :
227237			config  =  curveadm .FilterDeployConfigByRole (dcs , topology .ROLE_ETCD )
238+ 		case  playbook .AMEND_MDS_CONFIG ,
239+ 			playbook .RESTART_SERVICE :
240+ 			config  =  curveadm .FilterDeployConfigByRole (dcs , topology .ROLE_MDS )
228241		case 
229242			playbook .CREATE_PHYSICAL_POOL ,
230243			playbook .CREATE_LOGICAL_POOL ,
@@ -251,6 +264,11 @@ func genMigratePlaybook(curveadm *cli.CurveAdm,
251264			optionsKV [comm .KEY_POOLSET ] =  poolset 
252265		case  playbook .UPDATE_TOPOLOGY :
253266			optionsKV [comm .KEY_NEW_TOPOLOGY_DATA ] =  data 
267+ 		case  playbook .ADD_ETCD_MEMBER ,
268+ 			playbook .AMEND_ETCD_CONFIG ,
269+ 			playbook .AMEND_MDS_CONFIG :
270+ 			optionsKV [comm .KEY_MIGRATE_SERVERS ] =  migrates 
271+ 			optionsKV [comm .KEY_CLUSTER_DCS ] =  etcdDCs 
254272		}
255273
256274		pb .AddStep (& playbook.PlaybookStep {
0 commit comments