package com.sohu.cache.stats.app;
import java.util.List;
import java.util.Map;
import com.sohu.cache.constant.AppDataMigrateEnum;
import com.sohu.cache.constant.AppDataMigrateResult;
import com.sohu.cache.constant.CommandResult;
import com.sohu.cache.constant.RedisMigrateToolConstant;
import com.sohu.cache.entity.AppDataMigrateSearch;
import com.sohu.cache.entity.AppDataMigrateStatus;
/**
* 数据迁移
*
* @author leifu
* @Date 2016-6-8
* @Time 下午2:54:33
*/
public interface AppDataMigrateCenter {
/**
* 检查配置
*
* @param migrateMachineIp
* @param sourceRedisMigrateEnum
* @param sourceServers
* @param targetRedisMigrateEnum
* @param targetServers
* @param redisSourcePass
* @param redisTargetPass
* @return
*/
AppDataMigrateResult check(String migrateMachineIp, AppDataMigrateEnum sourceRedisMigrateEnum, String sourceServers,
AppDataMigrateEnum targetRedisMigrateEnum, String targetServers, String redisSourcePass, String redisTargetPass);
/**
* 开始迁移
*
* @param migrateMachineIp
* @param sourceRedisMigrateEnum
* @param sourceServers
* @param targetRedisMigrateEnum
* @param targetServers
* @param redisSourcePass
* @param targetSourcePass
* @return
*/
boolean migrate(String migrateMachineIp, AppDataMigrateEnum sourceRedisMigrateEnum, String sourceServers,
AppDataMigrateEnum targetRedisMigrateEnum, String targetServers, long sourceAppId, long targetAppId, String redisSourcePass, String targetSourcePass, long userId);
/**
* 搜索列表
* @param appDataMigrateSearch
* @return
*/
List<AppDataMigrateStatus> search(AppDataMigrateSearch appDataMigrateSearch);
/**
* 查看日志
* @param id
* @param pageSize
* @return
*/
String showDataMigrateLog(long id, int pageSize);
/**
* 查看配置
* @param id
* @return
*/
String showDataMigrateConf(long id);
/**
* 查询迁移工具的实时状态
* @param id
* @return
*/
Map<RedisMigrateToolConstant, Map<String, Object>> showMiragteToolProcess(long id);
/**
* 比较源和目标的样本数据
* @param id
* @param nums
* @return
*/
CommandResult sampleCheckData(long id, int nums);
/**
* 关闭迁移
* @param id
* @return
*/
AppDataMigrateResult stopMigrate(long id);
}