/** * Convert a protobuf ClusterStatus to a ClusterStatus * * @param proto the protobuf ClusterStatus * @return the converted ClusterStatus */ public static ClusterStatus convert(ClusterStatusProtos.ClusterStatus proto) { Map<ServerName, ServerLoad> servers = new HashMap<ServerName, ServerLoad>(); for (LiveServerInfo lsi : proto.getLiveServersList()) { servers.put(ProtobufUtil.toServerName(lsi.getServer()), new ServerLoad(lsi.getServerLoad())); } Collection<ServerName> deadServers = new LinkedList<ServerName>(); for (HBaseProtos.ServerName sn : proto.getDeadServersList()) { deadServers.add(ProtobufUtil.toServerName(sn)); } Collection<ServerName> backupMasters = new LinkedList<ServerName>(); for (HBaseProtos.ServerName sn : proto.getBackupMastersList()) { backupMasters.add(ProtobufUtil.toServerName(sn)); } final Map<String, RegionState> rit = new HashMap<String, RegionState>(); for (RegionInTransition region : proto.getRegionsInTransitionList()) { String key = new String(region.getSpec().getValue().toByteArray()); RegionState value = RegionState.convert(region.getRegionState()); rit.put(key, value); } final int numMasterCoprocessors = proto.getMasterCoprocessorsCount(); final String[] masterCoprocessors = new String[numMasterCoprocessors]; for (int i = 0; i < numMasterCoprocessors; i++) { masterCoprocessors[i] = proto.getMasterCoprocessors(i).getName(); } return new ClusterStatus( proto.getHbaseVersion().getVersion(), ClusterId.convert(proto.getClusterId()).toString(), servers, deadServers, ProtobufUtil.toServerName(proto.getMaster()), backupMasters, rit, masterCoprocessors, proto.getBalancerOn()); }
/** * Convert a ClutserStatus to a protobuf ClusterStatus * * @return the protobuf ClusterStatus */ public ClusterStatusProtos.ClusterStatus convert() { ClusterStatusProtos.ClusterStatus.Builder builder = ClusterStatusProtos.ClusterStatus.newBuilder(); builder.setHbaseVersion(HBaseVersionFileContent.newBuilder().setVersion(getHBaseVersion())); for (Map.Entry<ServerName, ServerLoad> entry : liveServers.entrySet()) { LiveServerInfo.Builder lsi = LiveServerInfo.newBuilder().setServer(ProtobufUtil.toServerName(entry.getKey())); lsi.setServerLoad(entry.getValue().obtainServerLoadPB()); builder.addLiveServers(lsi.build()); } for (ServerName deadServer : getDeadServerNames()) { builder.addDeadServers(ProtobufUtil.toServerName(deadServer)); } for (Map.Entry<String, RegionState> rit : getRegionsInTransition().entrySet()) { ClusterStatusProtos.RegionState rs = rit.getValue().convert(); RegionSpecifier.Builder spec = RegionSpecifier.newBuilder().setType(RegionSpecifierType.REGION_NAME); spec.setValue(ByteString.copyFrom(Bytes.toBytes(rit.getKey()))); RegionInTransition pbRIT = RegionInTransition.newBuilder().setSpec(spec.build()).setRegionState(rs).build(); builder.addRegionsInTransition(pbRIT); } builder.setClusterId(new ClusterId(getClusterId()).convert()); for (String coprocessor : getMasterCoprocessors()) { builder.addMasterCoprocessors(HBaseProtos.Coprocessor.newBuilder().setName(coprocessor)); } builder.setMaster(ProtobufUtil.toServerName(getMaster())); for (ServerName backup : getBackupMasters()) { builder.addBackupMasters(ProtobufUtil.toServerName(backup)); } builder.setBalancerOn(balancerOn); return builder.build(); }