コード例 #1
0
ファイル: HardwareLayout.java プロジェクト: XUZHOUWANG/ambry
 private long calculateRawCapacityInBytes() {
   long capacityInBytes = 0;
   for (Datacenter datacenter : datacenters) {
     capacityInBytes += datacenter.getRawCapacityInBytes();
   }
   return capacityInBytes;
 }
コード例 #2
0
ファイル: HardwareLayout.java プロジェクト: XUZHOUWANG/ambry
 private long calculateDataNodeCount() {
   long count = 0;
   for (Datacenter datacenter : datacenters) {
     count += datacenter.getDataNodes().size();
   }
   return count;
 }
コード例 #3
0
ファイル: HardwareLayout.java プロジェクト: XUZHOUWANG/ambry
 /**
  * Finds Datacenter by name
  *
  * @param datacenterName name of datacenter to be found
  * @return Datacenter or null if not found.
  */
 public Datacenter findDatacenter(String datacenterName) {
   for (Datacenter datacenter : datacenters) {
     if (datacenter.getName().compareToIgnoreCase(datacenterName) == 0) {
       return datacenter;
     }
   }
   return null;
 }
コード例 #4
0
ファイル: HardwareLayout.java プロジェクト: XUZHOUWANG/ambry
 private long calculateDiskCount() {
   long count = 0;
   for (Datacenter datacenter : datacenters) {
     for (DataNode dataNode : datacenter.getDataNodes()) {
       count += dataNode.getDisks().size();
     }
   }
   return count;
 }
コード例 #5
0
ファイル: HardwareLayout.java プロジェクト: XUZHOUWANG/ambry
 public JSONObject toJSONObject() throws JSONException {
   JSONObject jsonObject =
       new JSONObject()
           .put("clusterName", clusterName)
           .put("version", version)
           .put("datacenters", new JSONArray());
   for (Datacenter datacenter : datacenters) {
     jsonObject.accumulate("datacenters", datacenter.toJSONObject());
   }
   return jsonObject;
 }
コード例 #6
0
ファイル: HardwareLayout.java プロジェクト: XUZHOUWANG/ambry
 public long calculateUnavailableDataNodeCount() {
   long count = 0;
   for (Datacenter datacenter : datacenters) {
     for (DataNode dataNode : datacenter.getDataNodes()) {
       if (dataNode.isDown()) {
         count++;
       }
     }
   }
   return count;
 }
コード例 #7
0
ファイル: HardwareLayout.java プロジェクト: XUZHOUWANG/ambry
 /**
  * Finds DataNode by hostname and port. Note that hostname is converted to canonical hostname for
  * comparison.
  *
  * @param hostname of datanode
  * @param port of datanode
  * @return DataNode or null if not found.
  */
 public DataNode findDataNode(String hostname, int port) {
   String canonicalHostname = DataNode.getFullyQualifiedDomainName(hostname);
   logger.trace("host to find host {} port {}", canonicalHostname, port);
   for (Datacenter datacenter : datacenters) {
     logger.trace("datacenter {}", datacenter.getName());
     for (DataNode dataNode : datacenter.getDataNodes()) {
       if (dataNode.getHostname().equals(canonicalHostname) && (dataNode.getPort() == port)) {
         return dataNode;
       }
     }
   }
   return null;
 }
コード例 #8
0
ファイル: HardwareLayout.java プロジェクト: XUZHOUWANG/ambry
 private Map<HardwareState, Long> calculateDataNodeInHardStateCount() {
   Map<HardwareState, Long> dataNodeInStateCount = new HashMap<HardwareState, Long>();
   for (HardwareState hardwareState : HardwareState.values()) {
     dataNodeInStateCount.put(hardwareState, new Long(0));
   }
   for (Datacenter datacenter : datacenters) {
     for (DataNode dataNode : datacenter.getDataNodes()) {
       dataNodeInStateCount.put(
           dataNode.getState(), dataNodeInStateCount.get(dataNode.getState()) + 1);
     }
   }
   return dataNodeInStateCount;
 }
コード例 #9
0
ファイル: DatacenterTest.java プロジェクト: XUZHOUWANG/ambry
  @Test
  public void basics() throws JSONException {
    JSONObject jsonObject = TestUtils.getJsonDatacenter("XYZ1", getDataNodes());
    ClusterMapConfig clusterMapConfig =
        new ClusterMapConfig(new VerifiableProperties(new Properties()));

    Datacenter datacenter = new TestDatacenter(jsonObject, clusterMapConfig);

    assertEquals(datacenter.getName(), "XYZ1");
    assertEquals(datacenter.getDataNodes().size(), dataNodeCount);
    assertEquals(
        datacenter.getRawCapacityInBytes(), dataNodeCount * diskCount * diskCapacityInBytes);
    assertFalse(datacenter.isRackAware());
    assertEquals(datacenter.toJSONObject().toString(), jsonObject.toString());
    assertEquals(datacenter, new TestDatacenter(datacenter.toJSONObject(), clusterMapConfig));

    jsonObject = TestUtils.getJsonDatacenter("XYZ1", getDataNodesRackAware());
    datacenter = new TestDatacenter(jsonObject, clusterMapConfig);
    assertTrue(datacenter.isRackAware());
    assertEquals(datacenter.toJSONObject().toString(), jsonObject.toString());
    assertEquals(datacenter, new TestDatacenter(datacenter.toJSONObject(), clusterMapConfig));
  }
コード例 #10
0
ファイル: HardwareLayout.java プロジェクト: XUZHOUWANG/ambry
  // Validate each hardware component (Datacenter, DataNode, and Disk) are unique
  protected void validateUniqueness() throws IllegalStateException {
    logger.trace("begin validateUniqueness.");
    HashSet<Datacenter> datacenterSet = new HashSet<Datacenter>();
    HashSet<DataNode> dataNodeSet = new HashSet<DataNode>();
    HashSet<Disk> diskSet = new HashSet<Disk>();

    for (Datacenter datacenter : datacenters) {
      if (!datacenterSet.add(datacenter)) {
        throw new IllegalStateException("Duplicate Datacenter detected: " + datacenter.toString());
      }
      for (DataNode dataNode : datacenter.getDataNodes()) {
        if (!dataNodeSet.add(dataNode)) {
          throw new IllegalStateException("Duplicate DataNode detected: " + dataNode.toString());
        }
        for (Disk disk : dataNode.getDisks()) {
          if (!diskSet.add(disk)) {
            throw new IllegalStateException("Duplicate Disk detected: " + disk.toString());
          }
        }
      }
    }
    logger.trace("complete validateUniqueness.");
  }