public void fromProto(TaskAttemptStartedProto proto) {
   this.taskAttemptId = TezTaskAttemptID.fromString(proto.getTaskAttemptId());
   this.launchTime = proto.getStartTime();
   this.containerId = ConverterUtils.toContainerId(proto.getContainerId());
   this.nodeId = ConverterUtils.toNodeId(proto.getNodeId());
   this.creationTime = proto.getCreationTime();
   this.allocationTime = proto.getAllocationTime();
   if (proto.hasCreationCausalTA()) {
     this.creationCausalTA = TezTaskAttemptID.fromString(proto.getCreationCausalTA());
   }
 }
 private NodeId verifyAndGetNodeId(Block html) {
   String nodeIdStr = $(NM_NODENAME);
   if (nodeIdStr == null || nodeIdStr.isEmpty()) {
     html.h1()._("Cannot get container logs without a NodeId")._();
     return null;
   }
   NodeId nodeId = null;
   try {
     nodeId = ConverterUtils.toNodeId(nodeIdStr);
   } catch (IllegalArgumentException e) {
     html.h1()._("Cannot get container logs. Invalid nodeId: " + nodeIdStr)
         ._();
     return null;
   }
   return nodeId;
 }