CRedisService extends AbstractOuterClientService { @Override public ClusterInfo getClusterInfo(String clusterName) throws Exception { return catTransactionMonitor.logTransaction(TYPE, String.format("getClusterInfo:%s", clusterName), new Callable<ClusterInfo>() { @Override public ClusterInfo call() throws Exception { String address = CREDIS_SERVICE.QUERY_CLUSTER.getRealPath(credisConfig.getCredisServiceAddress()); ClusterInfo clusterInfo = restOperations.getForObject(address + "?name={clusterName}", ClusterInfo.class, clusterName); clusterInfo.mapIdc(DC_TRANSFORM_DIRECTION.OUTER_TO_INNER); return clusterInfo; } }); }  @Override int getOrder(); @Override String serviceName(); @Override void markInstanceUp(ClusterShardHostPort clusterShardHostPort); @Override boolean isInstanceUp(ClusterShardHostPort clusterShardHostPort); @Override void markInstanceDown(ClusterShardHostPort clusterShardHostPort); @Override MigrationPublishResult doMigrationPublish(String clusterName, String primaryDcName, List<InetSocketAddress> newMasters); @Override MigrationPublishResult doMigrationPublish(String clusterName, String shardName, String primaryDcName,
			InetSocketAddress newMaster); @Override ClusterInfo getClusterInfo(String clusterName); GetInstanceResult getInstance(ClusterShardHostPort clusterShardHostPort);  }
@Test public void testGetClusterInfo() throws Exception { JsonCodec jsonCodec = new JsonCodec(true); logger.info("{}", outerClientService.getClusterInfo("Members.OfflineLogin")); logger.info("{}", jsonCodec.encode(outerClientService.getClusterInfo("cluster_shyin"))); logger.info("{}", outerClientService.getClusterInfo("Members.OfflineLogin")); logger.info("{}", jsonCodec.encode(outerClientService.getClusterInfo("cluster_shyin_1"))); }