// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: nodestatus.proto

package com.cloudera.thunderhead.telemetry.nodestatus;

public final class NodeStatusProto {
  private NodeStatusProto() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  /**
   * <pre>
   * Represents status of any kind of component.
   * </pre>
   *
   * Protobuf enum {@code cdp.telemetry.HealthStatus}
   */
  public enum HealthStatus
      implements com.google.protobuf.ProtocolMessageEnum {
    /**
     * <pre>
     * Status of the component is unknown.
     * </pre>
     *
     * <code>UNKNOWN = 0;</code>
     */
    UNKNOWN(0),
    /**
     * <pre>
     * Status is in good shape - like running.
     * </pre>
     *
     * <code>OK = 1;</code>
     */
    OK(1),
    /**
     * <pre>
     * Status is not in good shape - like not running.
     * </pre>
     *
     * <code>NOK = 2;</code>
     */
    NOK(2),
    UNRECOGNIZED(-1),
    ;

    /**
     * <pre>
     * Status of the component is unknown.
     * </pre>
     *
     * <code>UNKNOWN = 0;</code>
     */
    public static final int UNKNOWN_VALUE = 0;
    /**
     * <pre>
     * Status is in good shape - like running.
     * </pre>
     *
     * <code>OK = 1;</code>
     */
    public static final int OK_VALUE = 1;
    /**
     * <pre>
     * Status is not in good shape - like not running.
     * </pre>
     *
     * <code>NOK = 2;</code>
     */
    public static final int NOK_VALUE = 2;


    public final int getNumber() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalArgumentException(
            "Can't get the number of an unknown enum value.");
      }
      return value;
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     * @deprecated Use {@link #forNumber(int)} instead.
     */
    @java.lang.Deprecated
    public static HealthStatus valueOf(int value) {
      return forNumber(value);
    }

    /**
     * @param value The numeric wire value of the corresponding enum entry.
     * @return The enum associated with the given numeric wire value.
     */
    public static HealthStatus forNumber(int value) {
      switch (value) {
        case 0: return UNKNOWN;
        case 1: return OK;
        case 2: return NOK;
        default: return null;
      }
    }

    public static com.google.protobuf.Internal.EnumLiteMap<HealthStatus>
        internalGetValueMap() {
      return internalValueMap;
    }
    private static final com.google.protobuf.Internal.EnumLiteMap<
        HealthStatus> internalValueMap =
          new com.google.protobuf.Internal.EnumLiteMap<HealthStatus>() {
            public HealthStatus findValueByNumber(int number) {
              return HealthStatus.forNumber(number);
            }
          };

    public final com.google.protobuf.Descriptors.EnumValueDescriptor
        getValueDescriptor() {
      if (this == UNRECOGNIZED) {
        throw new java.lang.IllegalStateException(
            "Can't get the descriptor of an unrecognized enum value.");
      }
      return getDescriptor().getValues().get(ordinal());
    }
    public final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptorForType() {
      return getDescriptor();
    }
    public static final com.google.protobuf.Descriptors.EnumDescriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.getDescriptor().getEnumTypes().get(0);
    }

    private static final HealthStatus[] VALUES = values();

    public static HealthStatus valueOf(
        com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
      if (desc.getType() != getDescriptor()) {
        throw new java.lang.IllegalArgumentException(
          "EnumValueDescriptor is not for this type.");
      }
      if (desc.getIndex() == -1) {
        return UNRECOGNIZED;
      }
      return VALUES[desc.getIndex()];
    }

    private final int value;

    private HealthStatus(int value) {
      this.value = value;
    }

    // @@protoc_insertion_point(enum_scope:cdp.telemetry.HealthStatus)
  }

  public interface NodeStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.NodeStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Status and common details of the node.
     * </pre>
     *
     * <code>.cdp.telemetry.StatusDetails statusDetails = 1;</code>
     * @return Whether the statusDetails field is set.
     */
    boolean hasStatusDetails();
    /**
     * <pre>
     * Status and common details of the node.
     * </pre>
     *
     * <code>.cdp.telemetry.StatusDetails statusDetails = 1;</code>
     * @return The statusDetails.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails getStatusDetails();
    /**
     * <pre>
     * Status and common details of the node.
     * </pre>
     *
     * <code>.cdp.telemetry.StatusDetails statusDetails = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetailsOrBuilder getStatusDetailsOrBuilder();

    /**
     * <pre>
     * Service status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.ServicesDetails servicesDetails = 2;</code>
     * @return Whether the servicesDetails field is set.
     */
    boolean hasServicesDetails();
    /**
     * <pre>
     * Service status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.ServicesDetails servicesDetails = 2;</code>
     * @return The servicesDetails.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails getServicesDetails();
    /**
     * <pre>
     * Service status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.ServicesDetails servicesDetails = 2;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetailsOrBuilder getServicesDetailsOrBuilder();

    /**
     * <pre>
     * Network status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkDetails networkDetails = 3;</code>
     * @return Whether the networkDetails field is set.
     */
    boolean hasNetworkDetails();
    /**
     * <pre>
     * Network status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkDetails networkDetails = 3;</code>
     * @return The networkDetails.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails getNetworkDetails();
    /**
     * <pre>
     * Network status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkDetails networkDetails = 3;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetailsOrBuilder getNetworkDetailsOrBuilder();

    /**
     * <pre>
     * Network status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.MeteringDetails meteringDetails = 4;</code>
     * @return Whether the meteringDetails field is set.
     */
    boolean hasMeteringDetails();
    /**
     * <pre>
     * Network status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.MeteringDetails meteringDetails = 4;</code>
     * @return The meteringDetails.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails getMeteringDetails();
    /**
     * <pre>
     * Network status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.MeteringDetails meteringDetails = 4;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetailsOrBuilder getMeteringDetailsOrBuilder();

    /**
     * <pre>
     * Network status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.SystemMetrics systemMetrics = 5;</code>
     * @return Whether the systemMetrics field is set.
     */
    boolean hasSystemMetrics();
    /**
     * <pre>
     * Network status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.SystemMetrics systemMetrics = 5;</code>
     * @return The systemMetrics.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics getSystemMetrics();
    /**
     * <pre>
     * Network status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.SystemMetrics systemMetrics = 5;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetricsOrBuilder getSystemMetricsOrBuilder();
  }
  /**
   * <pre>
   * Node specific status for a CDP VM node.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.NodeStatus}
   */
  public static final class NodeStatus extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.NodeStatus)
      NodeStatusOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use NodeStatus.newBuilder() to construct.
    private NodeStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private NodeStatus() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new NodeStatus();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NodeStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NodeStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.Builder.class);
    }

    public static final int STATUSDETAILS_FIELD_NUMBER = 1;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails statusDetails_;
    /**
     * <pre>
     * Status and common details of the node.
     * </pre>
     *
     * <code>.cdp.telemetry.StatusDetails statusDetails = 1;</code>
     * @return Whether the statusDetails field is set.
     */
    @java.lang.Override
    public boolean hasStatusDetails() {
      return statusDetails_ != null;
    }
    /**
     * <pre>
     * Status and common details of the node.
     * </pre>
     *
     * <code>.cdp.telemetry.StatusDetails statusDetails = 1;</code>
     * @return The statusDetails.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails getStatusDetails() {
      return statusDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.getDefaultInstance() : statusDetails_;
    }
    /**
     * <pre>
     * Status and common details of the node.
     * </pre>
     *
     * <code>.cdp.telemetry.StatusDetails statusDetails = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetailsOrBuilder getStatusDetailsOrBuilder() {
      return getStatusDetails();
    }

    public static final int SERVICESDETAILS_FIELD_NUMBER = 2;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails servicesDetails_;
    /**
     * <pre>
     * Service status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.ServicesDetails servicesDetails = 2;</code>
     * @return Whether the servicesDetails field is set.
     */
    @java.lang.Override
    public boolean hasServicesDetails() {
      return servicesDetails_ != null;
    }
    /**
     * <pre>
     * Service status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.ServicesDetails servicesDetails = 2;</code>
     * @return The servicesDetails.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails getServicesDetails() {
      return servicesDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails.getDefaultInstance() : servicesDetails_;
    }
    /**
     * <pre>
     * Service status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.ServicesDetails servicesDetails = 2;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetailsOrBuilder getServicesDetailsOrBuilder() {
      return getServicesDetails();
    }

    public static final int NETWORKDETAILS_FIELD_NUMBER = 3;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails networkDetails_;
    /**
     * <pre>
     * Network status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkDetails networkDetails = 3;</code>
     * @return Whether the networkDetails field is set.
     */
    @java.lang.Override
    public boolean hasNetworkDetails() {
      return networkDetails_ != null;
    }
    /**
     * <pre>
     * Network status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkDetails networkDetails = 3;</code>
     * @return The networkDetails.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails getNetworkDetails() {
      return networkDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails.getDefaultInstance() : networkDetails_;
    }
    /**
     * <pre>
     * Network status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkDetails networkDetails = 3;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetailsOrBuilder getNetworkDetailsOrBuilder() {
      return getNetworkDetails();
    }

    public static final int METERINGDETAILS_FIELD_NUMBER = 4;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails meteringDetails_;
    /**
     * <pre>
     * Network status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.MeteringDetails meteringDetails = 4;</code>
     * @return Whether the meteringDetails field is set.
     */
    @java.lang.Override
    public boolean hasMeteringDetails() {
      return meteringDetails_ != null;
    }
    /**
     * <pre>
     * Network status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.MeteringDetails meteringDetails = 4;</code>
     * @return The meteringDetails.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails getMeteringDetails() {
      return meteringDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails.getDefaultInstance() : meteringDetails_;
    }
    /**
     * <pre>
     * Network status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.MeteringDetails meteringDetails = 4;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetailsOrBuilder getMeteringDetailsOrBuilder() {
      return getMeteringDetails();
    }

    public static final int SYSTEMMETRICS_FIELD_NUMBER = 5;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics systemMetrics_;
    /**
     * <pre>
     * Network status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.SystemMetrics systemMetrics = 5;</code>
     * @return Whether the systemMetrics field is set.
     */
    @java.lang.Override
    public boolean hasSystemMetrics() {
      return systemMetrics_ != null;
    }
    /**
     * <pre>
     * Network status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.SystemMetrics systemMetrics = 5;</code>
     * @return The systemMetrics.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics getSystemMetrics() {
      return systemMetrics_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics.getDefaultInstance() : systemMetrics_;
    }
    /**
     * <pre>
     * Network status responses.
     * </pre>
     *
     * <code>.cdp.telemetry.SystemMetrics systemMetrics = 5;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetricsOrBuilder getSystemMetricsOrBuilder() {
      return getSystemMetrics();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (statusDetails_ != null) {
        output.writeMessage(1, getStatusDetails());
      }
      if (servicesDetails_ != null) {
        output.writeMessage(2, getServicesDetails());
      }
      if (networkDetails_ != null) {
        output.writeMessage(3, getNetworkDetails());
      }
      if (meteringDetails_ != null) {
        output.writeMessage(4, getMeteringDetails());
      }
      if (systemMetrics_ != null) {
        output.writeMessage(5, getSystemMetrics());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (statusDetails_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getStatusDetails());
      }
      if (servicesDetails_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getServicesDetails());
      }
      if (networkDetails_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getNetworkDetails());
      }
      if (meteringDetails_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getMeteringDetails());
      }
      if (systemMetrics_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getSystemMetrics());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus) obj;

      if (hasStatusDetails() != other.hasStatusDetails()) return false;
      if (hasStatusDetails()) {
        if (!getStatusDetails()
            .equals(other.getStatusDetails())) return false;
      }
      if (hasServicesDetails() != other.hasServicesDetails()) return false;
      if (hasServicesDetails()) {
        if (!getServicesDetails()
            .equals(other.getServicesDetails())) return false;
      }
      if (hasNetworkDetails() != other.hasNetworkDetails()) return false;
      if (hasNetworkDetails()) {
        if (!getNetworkDetails()
            .equals(other.getNetworkDetails())) return false;
      }
      if (hasMeteringDetails() != other.hasMeteringDetails()) return false;
      if (hasMeteringDetails()) {
        if (!getMeteringDetails()
            .equals(other.getMeteringDetails())) return false;
      }
      if (hasSystemMetrics() != other.hasSystemMetrics()) return false;
      if (hasSystemMetrics()) {
        if (!getSystemMetrics()
            .equals(other.getSystemMetrics())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasStatusDetails()) {
        hash = (37 * hash) + STATUSDETAILS_FIELD_NUMBER;
        hash = (53 * hash) + getStatusDetails().hashCode();
      }
      if (hasServicesDetails()) {
        hash = (37 * hash) + SERVICESDETAILS_FIELD_NUMBER;
        hash = (53 * hash) + getServicesDetails().hashCode();
      }
      if (hasNetworkDetails()) {
        hash = (37 * hash) + NETWORKDETAILS_FIELD_NUMBER;
        hash = (53 * hash) + getNetworkDetails().hashCode();
      }
      if (hasMeteringDetails()) {
        hash = (37 * hash) + METERINGDETAILS_FIELD_NUMBER;
        hash = (53 * hash) + getMeteringDetails().hashCode();
      }
      if (hasSystemMetrics()) {
        hash = (37 * hash) + SYSTEMMETRICS_FIELD_NUMBER;
        hash = (53 * hash) + getSystemMetrics().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Node specific status for a CDP VM node.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.NodeStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.NodeStatus)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NodeStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NodeStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (statusDetailsBuilder_ == null) {
          statusDetails_ = null;
        } else {
          statusDetails_ = null;
          statusDetailsBuilder_ = null;
        }
        if (servicesDetailsBuilder_ == null) {
          servicesDetails_ = null;
        } else {
          servicesDetails_ = null;
          servicesDetailsBuilder_ = null;
        }
        if (networkDetailsBuilder_ == null) {
          networkDetails_ = null;
        } else {
          networkDetails_ = null;
          networkDetailsBuilder_ = null;
        }
        if (meteringDetailsBuilder_ == null) {
          meteringDetails_ = null;
        } else {
          meteringDetails_ = null;
          meteringDetailsBuilder_ = null;
        }
        if (systemMetricsBuilder_ == null) {
          systemMetrics_ = null;
        } else {
          systemMetrics_ = null;
          systemMetricsBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NodeStatus_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus(this);
        if (statusDetailsBuilder_ == null) {
          result.statusDetails_ = statusDetails_;
        } else {
          result.statusDetails_ = statusDetailsBuilder_.build();
        }
        if (servicesDetailsBuilder_ == null) {
          result.servicesDetails_ = servicesDetails_;
        } else {
          result.servicesDetails_ = servicesDetailsBuilder_.build();
        }
        if (networkDetailsBuilder_ == null) {
          result.networkDetails_ = networkDetails_;
        } else {
          result.networkDetails_ = networkDetailsBuilder_.build();
        }
        if (meteringDetailsBuilder_ == null) {
          result.meteringDetails_ = meteringDetails_;
        } else {
          result.meteringDetails_ = meteringDetailsBuilder_.build();
        }
        if (systemMetricsBuilder_ == null) {
          result.systemMetrics_ = systemMetrics_;
        } else {
          result.systemMetrics_ = systemMetricsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.getDefaultInstance()) return this;
        if (other.hasStatusDetails()) {
          mergeStatusDetails(other.getStatusDetails());
        }
        if (other.hasServicesDetails()) {
          mergeServicesDetails(other.getServicesDetails());
        }
        if (other.hasNetworkDetails()) {
          mergeNetworkDetails(other.getNetworkDetails());
        }
        if (other.hasMeteringDetails()) {
          mergeMeteringDetails(other.getMeteringDetails());
        }
        if (other.hasSystemMetrics()) {
          mergeSystemMetrics(other.getSystemMetrics());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getStatusDetailsFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getServicesDetailsFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getNetworkDetailsFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getMeteringDetailsFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getSystemMetricsFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 42
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails statusDetails_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetailsOrBuilder> statusDetailsBuilder_;
      /**
       * <pre>
       * Status and common details of the node.
       * </pre>
       *
       * <code>.cdp.telemetry.StatusDetails statusDetails = 1;</code>
       * @return Whether the statusDetails field is set.
       */
      public boolean hasStatusDetails() {
        return statusDetailsBuilder_ != null || statusDetails_ != null;
      }
      /**
       * <pre>
       * Status and common details of the node.
       * </pre>
       *
       * <code>.cdp.telemetry.StatusDetails statusDetails = 1;</code>
       * @return The statusDetails.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails getStatusDetails() {
        if (statusDetailsBuilder_ == null) {
          return statusDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.getDefaultInstance() : statusDetails_;
        } else {
          return statusDetailsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Status and common details of the node.
       * </pre>
       *
       * <code>.cdp.telemetry.StatusDetails statusDetails = 1;</code>
       */
      public Builder setStatusDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails value) {
        if (statusDetailsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          statusDetails_ = value;
          onChanged();
        } else {
          statusDetailsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Status and common details of the node.
       * </pre>
       *
       * <code>.cdp.telemetry.StatusDetails statusDetails = 1;</code>
       */
      public Builder setStatusDetails(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.Builder builderForValue) {
        if (statusDetailsBuilder_ == null) {
          statusDetails_ = builderForValue.build();
          onChanged();
        } else {
          statusDetailsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Status and common details of the node.
       * </pre>
       *
       * <code>.cdp.telemetry.StatusDetails statusDetails = 1;</code>
       */
      public Builder mergeStatusDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails value) {
        if (statusDetailsBuilder_ == null) {
          if (statusDetails_ != null) {
            statusDetails_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.newBuilder(statusDetails_).mergeFrom(value).buildPartial();
          } else {
            statusDetails_ = value;
          }
          onChanged();
        } else {
          statusDetailsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Status and common details of the node.
       * </pre>
       *
       * <code>.cdp.telemetry.StatusDetails statusDetails = 1;</code>
       */
      public Builder clearStatusDetails() {
        if (statusDetailsBuilder_ == null) {
          statusDetails_ = null;
          onChanged();
        } else {
          statusDetails_ = null;
          statusDetailsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Status and common details of the node.
       * </pre>
       *
       * <code>.cdp.telemetry.StatusDetails statusDetails = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.Builder getStatusDetailsBuilder() {
        
        onChanged();
        return getStatusDetailsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Status and common details of the node.
       * </pre>
       *
       * <code>.cdp.telemetry.StatusDetails statusDetails = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetailsOrBuilder getStatusDetailsOrBuilder() {
        if (statusDetailsBuilder_ != null) {
          return statusDetailsBuilder_.getMessageOrBuilder();
        } else {
          return statusDetails_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.getDefaultInstance() : statusDetails_;
        }
      }
      /**
       * <pre>
       * Status and common details of the node.
       * </pre>
       *
       * <code>.cdp.telemetry.StatusDetails statusDetails = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetailsOrBuilder> 
          getStatusDetailsFieldBuilder() {
        if (statusDetailsBuilder_ == null) {
          statusDetailsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetailsOrBuilder>(
                  getStatusDetails(),
                  getParentForChildren(),
                  isClean());
          statusDetails_ = null;
        }
        return statusDetailsBuilder_;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails servicesDetails_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetailsOrBuilder> servicesDetailsBuilder_;
      /**
       * <pre>
       * Service status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.ServicesDetails servicesDetails = 2;</code>
       * @return Whether the servicesDetails field is set.
       */
      public boolean hasServicesDetails() {
        return servicesDetailsBuilder_ != null || servicesDetails_ != null;
      }
      /**
       * <pre>
       * Service status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.ServicesDetails servicesDetails = 2;</code>
       * @return The servicesDetails.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails getServicesDetails() {
        if (servicesDetailsBuilder_ == null) {
          return servicesDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails.getDefaultInstance() : servicesDetails_;
        } else {
          return servicesDetailsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Service status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.ServicesDetails servicesDetails = 2;</code>
       */
      public Builder setServicesDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails value) {
        if (servicesDetailsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          servicesDetails_ = value;
          onChanged();
        } else {
          servicesDetailsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Service status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.ServicesDetails servicesDetails = 2;</code>
       */
      public Builder setServicesDetails(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails.Builder builderForValue) {
        if (servicesDetailsBuilder_ == null) {
          servicesDetails_ = builderForValue.build();
          onChanged();
        } else {
          servicesDetailsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Service status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.ServicesDetails servicesDetails = 2;</code>
       */
      public Builder mergeServicesDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails value) {
        if (servicesDetailsBuilder_ == null) {
          if (servicesDetails_ != null) {
            servicesDetails_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails.newBuilder(servicesDetails_).mergeFrom(value).buildPartial();
          } else {
            servicesDetails_ = value;
          }
          onChanged();
        } else {
          servicesDetailsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Service status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.ServicesDetails servicesDetails = 2;</code>
       */
      public Builder clearServicesDetails() {
        if (servicesDetailsBuilder_ == null) {
          servicesDetails_ = null;
          onChanged();
        } else {
          servicesDetails_ = null;
          servicesDetailsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Service status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.ServicesDetails servicesDetails = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails.Builder getServicesDetailsBuilder() {
        
        onChanged();
        return getServicesDetailsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Service status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.ServicesDetails servicesDetails = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetailsOrBuilder getServicesDetailsOrBuilder() {
        if (servicesDetailsBuilder_ != null) {
          return servicesDetailsBuilder_.getMessageOrBuilder();
        } else {
          return servicesDetails_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails.getDefaultInstance() : servicesDetails_;
        }
      }
      /**
       * <pre>
       * Service status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.ServicesDetails servicesDetails = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetailsOrBuilder> 
          getServicesDetailsFieldBuilder() {
        if (servicesDetailsBuilder_ == null) {
          servicesDetailsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetailsOrBuilder>(
                  getServicesDetails(),
                  getParentForChildren(),
                  isClean());
          servicesDetails_ = null;
        }
        return servicesDetailsBuilder_;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails networkDetails_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetailsOrBuilder> networkDetailsBuilder_;
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkDetails networkDetails = 3;</code>
       * @return Whether the networkDetails field is set.
       */
      public boolean hasNetworkDetails() {
        return networkDetailsBuilder_ != null || networkDetails_ != null;
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkDetails networkDetails = 3;</code>
       * @return The networkDetails.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails getNetworkDetails() {
        if (networkDetailsBuilder_ == null) {
          return networkDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails.getDefaultInstance() : networkDetails_;
        } else {
          return networkDetailsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkDetails networkDetails = 3;</code>
       */
      public Builder setNetworkDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails value) {
        if (networkDetailsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          networkDetails_ = value;
          onChanged();
        } else {
          networkDetailsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkDetails networkDetails = 3;</code>
       */
      public Builder setNetworkDetails(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails.Builder builderForValue) {
        if (networkDetailsBuilder_ == null) {
          networkDetails_ = builderForValue.build();
          onChanged();
        } else {
          networkDetailsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkDetails networkDetails = 3;</code>
       */
      public Builder mergeNetworkDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails value) {
        if (networkDetailsBuilder_ == null) {
          if (networkDetails_ != null) {
            networkDetails_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails.newBuilder(networkDetails_).mergeFrom(value).buildPartial();
          } else {
            networkDetails_ = value;
          }
          onChanged();
        } else {
          networkDetailsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkDetails networkDetails = 3;</code>
       */
      public Builder clearNetworkDetails() {
        if (networkDetailsBuilder_ == null) {
          networkDetails_ = null;
          onChanged();
        } else {
          networkDetails_ = null;
          networkDetailsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkDetails networkDetails = 3;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails.Builder getNetworkDetailsBuilder() {
        
        onChanged();
        return getNetworkDetailsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkDetails networkDetails = 3;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetailsOrBuilder getNetworkDetailsOrBuilder() {
        if (networkDetailsBuilder_ != null) {
          return networkDetailsBuilder_.getMessageOrBuilder();
        } else {
          return networkDetails_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails.getDefaultInstance() : networkDetails_;
        }
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkDetails networkDetails = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetailsOrBuilder> 
          getNetworkDetailsFieldBuilder() {
        if (networkDetailsBuilder_ == null) {
          networkDetailsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetailsOrBuilder>(
                  getNetworkDetails(),
                  getParentForChildren(),
                  isClean());
          networkDetails_ = null;
        }
        return networkDetailsBuilder_;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails meteringDetails_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetailsOrBuilder> meteringDetailsBuilder_;
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.MeteringDetails meteringDetails = 4;</code>
       * @return Whether the meteringDetails field is set.
       */
      public boolean hasMeteringDetails() {
        return meteringDetailsBuilder_ != null || meteringDetails_ != null;
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.MeteringDetails meteringDetails = 4;</code>
       * @return The meteringDetails.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails getMeteringDetails() {
        if (meteringDetailsBuilder_ == null) {
          return meteringDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails.getDefaultInstance() : meteringDetails_;
        } else {
          return meteringDetailsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.MeteringDetails meteringDetails = 4;</code>
       */
      public Builder setMeteringDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails value) {
        if (meteringDetailsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          meteringDetails_ = value;
          onChanged();
        } else {
          meteringDetailsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.MeteringDetails meteringDetails = 4;</code>
       */
      public Builder setMeteringDetails(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails.Builder builderForValue) {
        if (meteringDetailsBuilder_ == null) {
          meteringDetails_ = builderForValue.build();
          onChanged();
        } else {
          meteringDetailsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.MeteringDetails meteringDetails = 4;</code>
       */
      public Builder mergeMeteringDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails value) {
        if (meteringDetailsBuilder_ == null) {
          if (meteringDetails_ != null) {
            meteringDetails_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails.newBuilder(meteringDetails_).mergeFrom(value).buildPartial();
          } else {
            meteringDetails_ = value;
          }
          onChanged();
        } else {
          meteringDetailsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.MeteringDetails meteringDetails = 4;</code>
       */
      public Builder clearMeteringDetails() {
        if (meteringDetailsBuilder_ == null) {
          meteringDetails_ = null;
          onChanged();
        } else {
          meteringDetails_ = null;
          meteringDetailsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.MeteringDetails meteringDetails = 4;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails.Builder getMeteringDetailsBuilder() {
        
        onChanged();
        return getMeteringDetailsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.MeteringDetails meteringDetails = 4;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetailsOrBuilder getMeteringDetailsOrBuilder() {
        if (meteringDetailsBuilder_ != null) {
          return meteringDetailsBuilder_.getMessageOrBuilder();
        } else {
          return meteringDetails_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails.getDefaultInstance() : meteringDetails_;
        }
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.MeteringDetails meteringDetails = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetailsOrBuilder> 
          getMeteringDetailsFieldBuilder() {
        if (meteringDetailsBuilder_ == null) {
          meteringDetailsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetailsOrBuilder>(
                  getMeteringDetails(),
                  getParentForChildren(),
                  isClean());
          meteringDetails_ = null;
        }
        return meteringDetailsBuilder_;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics systemMetrics_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetricsOrBuilder> systemMetricsBuilder_;
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.SystemMetrics systemMetrics = 5;</code>
       * @return Whether the systemMetrics field is set.
       */
      public boolean hasSystemMetrics() {
        return systemMetricsBuilder_ != null || systemMetrics_ != null;
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.SystemMetrics systemMetrics = 5;</code>
       * @return The systemMetrics.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics getSystemMetrics() {
        if (systemMetricsBuilder_ == null) {
          return systemMetrics_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics.getDefaultInstance() : systemMetrics_;
        } else {
          return systemMetricsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.SystemMetrics systemMetrics = 5;</code>
       */
      public Builder setSystemMetrics(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics value) {
        if (systemMetricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          systemMetrics_ = value;
          onChanged();
        } else {
          systemMetricsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.SystemMetrics systemMetrics = 5;</code>
       */
      public Builder setSystemMetrics(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics.Builder builderForValue) {
        if (systemMetricsBuilder_ == null) {
          systemMetrics_ = builderForValue.build();
          onChanged();
        } else {
          systemMetricsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.SystemMetrics systemMetrics = 5;</code>
       */
      public Builder mergeSystemMetrics(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics value) {
        if (systemMetricsBuilder_ == null) {
          if (systemMetrics_ != null) {
            systemMetrics_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics.newBuilder(systemMetrics_).mergeFrom(value).buildPartial();
          } else {
            systemMetrics_ = value;
          }
          onChanged();
        } else {
          systemMetricsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.SystemMetrics systemMetrics = 5;</code>
       */
      public Builder clearSystemMetrics() {
        if (systemMetricsBuilder_ == null) {
          systemMetrics_ = null;
          onChanged();
        } else {
          systemMetrics_ = null;
          systemMetricsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.SystemMetrics systemMetrics = 5;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics.Builder getSystemMetricsBuilder() {
        
        onChanged();
        return getSystemMetricsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.SystemMetrics systemMetrics = 5;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetricsOrBuilder getSystemMetricsOrBuilder() {
        if (systemMetricsBuilder_ != null) {
          return systemMetricsBuilder_.getMessageOrBuilder();
        } else {
          return systemMetrics_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics.getDefaultInstance() : systemMetrics_;
        }
      }
      /**
       * <pre>
       * Network status responses.
       * </pre>
       *
       * <code>.cdp.telemetry.SystemMetrics systemMetrics = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetricsOrBuilder> 
          getSystemMetricsFieldBuilder() {
        if (systemMetricsBuilder_ == null) {
          systemMetricsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetricsOrBuilder>(
                  getSystemMetrics(),
                  getParentForChildren(),
                  isClean());
          systemMetrics_ = null;
        }
        return systemMetricsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.NodeStatus)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.NodeStatus)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NodeStatus>
        PARSER = new com.google.protobuf.AbstractParser<NodeStatus>() {
      @java.lang.Override
      public NodeStatus parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<NodeStatus> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NodeStatus> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NodeStatusReportOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.NodeStatusReport)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Node specific service status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
     */
    java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus> 
        getNodesList();
    /**
     * <pre>
     * Node specific service status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus getNodes(int index);
    /**
     * <pre>
     * Node specific service status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
     */
    int getNodesCount();
    /**
     * <pre>
     * Node specific service status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
     */
    java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusOrBuilder> 
        getNodesOrBuilderList();
    /**
     * <pre>
     * Node specific service status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusOrBuilder getNodesOrBuilder(
        int index);

    /**
     * <pre>
     * Common cluster related data.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
     * @return Whether the clusterDetails field is set.
     */
    boolean hasClusterDetails();
    /**
     * <pre>
     * Common cluster related data.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
     * @return The clusterDetails.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getClusterDetails();
    /**
     * <pre>
     * Common cluster related data.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder getClusterDetailsOrBuilder();

    /**
     * <pre>
     * Timestaamp of the service status report.
     * </pre>
     *
     * <code>int64 timestamp = 3;</code>
     * @return The timestamp.
     */
    long getTimestamp();

    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 4;</code>
     * @return The cdpTelemetryVersion.
     */
    java.lang.String getCdpTelemetryVersion();
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 4;</code>
     * @return The bytes for cdpTelemetryVersion.
     */
    com.google.protobuf.ByteString
        getCdpTelemetryVersionBytes();
  }
  /**
   * <pre>
   * CDP node status report per nodes (VM).
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.NodeStatusReport}
   */
  public static final class NodeStatusReport extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.NodeStatusReport)
      NodeStatusReportOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use NodeStatusReport.newBuilder() to construct.
    private NodeStatusReport(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private NodeStatusReport() {
      nodes_ = java.util.Collections.emptyList();
      cdpTelemetryVersion_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new NodeStatusReport();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NodeStatusReport_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NodeStatusReport_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport.Builder.class);
    }

    public static final int NODES_FIELD_NUMBER = 1;
    private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus> nodes_;
    /**
     * <pre>
     * Node specific service status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus> getNodesList() {
      return nodes_;
    }
    /**
     * <pre>
     * Node specific service status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusOrBuilder> 
        getNodesOrBuilderList() {
      return nodes_;
    }
    /**
     * <pre>
     * Node specific service status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
     */
    @java.lang.Override
    public int getNodesCount() {
      return nodes_.size();
    }
    /**
     * <pre>
     * Node specific service status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus getNodes(int index) {
      return nodes_.get(index);
    }
    /**
     * <pre>
     * Node specific service status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusOrBuilder getNodesOrBuilder(
        int index) {
      return nodes_.get(index);
    }

    public static final int CLUSTERDETAILS_FIELD_NUMBER = 2;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails clusterDetails_;
    /**
     * <pre>
     * Common cluster related data.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
     * @return Whether the clusterDetails field is set.
     */
    @java.lang.Override
    public boolean hasClusterDetails() {
      return clusterDetails_ != null;
    }
    /**
     * <pre>
     * Common cluster related data.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
     * @return The clusterDetails.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getClusterDetails() {
      return clusterDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance() : clusterDetails_;
    }
    /**
     * <pre>
     * Common cluster related data.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder getClusterDetailsOrBuilder() {
      return getClusterDetails();
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 3;
    private long timestamp_;
    /**
     * <pre>
     * Timestaamp of the service status report.
     * </pre>
     *
     * <code>int64 timestamp = 3;</code>
     * @return The timestamp.
     */
    @java.lang.Override
    public long getTimestamp() {
      return timestamp_;
    }

    public static final int CDPTELEMETRYVERSION_FIELD_NUMBER = 4;
    private volatile java.lang.Object cdpTelemetryVersion_;
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 4;</code>
     * @return The cdpTelemetryVersion.
     */
    @java.lang.Override
    public java.lang.String getCdpTelemetryVersion() {
      java.lang.Object ref = cdpTelemetryVersion_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        cdpTelemetryVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 4;</code>
     * @return The bytes for cdpTelemetryVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCdpTelemetryVersionBytes() {
      java.lang.Object ref = cdpTelemetryVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        cdpTelemetryVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < nodes_.size(); i++) {
        output.writeMessage(1, nodes_.get(i));
      }
      if (clusterDetails_ != null) {
        output.writeMessage(2, getClusterDetails());
      }
      if (timestamp_ != 0L) {
        output.writeInt64(3, timestamp_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cdpTelemetryVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, cdpTelemetryVersion_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < nodes_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, nodes_.get(i));
      }
      if (clusterDetails_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getClusterDetails());
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, timestamp_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cdpTelemetryVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, cdpTelemetryVersion_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport) obj;

      if (!getNodesList()
          .equals(other.getNodesList())) return false;
      if (hasClusterDetails() != other.hasClusterDetails()) return false;
      if (hasClusterDetails()) {
        if (!getClusterDetails()
            .equals(other.getClusterDetails())) return false;
      }
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (!getCdpTelemetryVersion()
          .equals(other.getCdpTelemetryVersion())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getNodesCount() > 0) {
        hash = (37 * hash) + NODES_FIELD_NUMBER;
        hash = (53 * hash) + getNodesList().hashCode();
      }
      if (hasClusterDetails()) {
        hash = (37 * hash) + CLUSTERDETAILS_FIELD_NUMBER;
        hash = (53 * hash) + getClusterDetails().hashCode();
      }
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      hash = (37 * hash) + CDPTELEMETRYVERSION_FIELD_NUMBER;
      hash = (53 * hash) + getCdpTelemetryVersion().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CDP node status report per nodes (VM).
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.NodeStatusReport}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.NodeStatusReport)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReportOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NodeStatusReport_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NodeStatusReport_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (nodesBuilder_ == null) {
          nodes_ = java.util.Collections.emptyList();
        } else {
          nodes_ = null;
          nodesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (clusterDetailsBuilder_ == null) {
          clusterDetails_ = null;
        } else {
          clusterDetails_ = null;
          clusterDetailsBuilder_ = null;
        }
        timestamp_ = 0L;

        cdpTelemetryVersion_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NodeStatusReport_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport(this);
        int from_bitField0_ = bitField0_;
        if (nodesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            nodes_ = java.util.Collections.unmodifiableList(nodes_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.nodes_ = nodes_;
        } else {
          result.nodes_ = nodesBuilder_.build();
        }
        if (clusterDetailsBuilder_ == null) {
          result.clusterDetails_ = clusterDetails_;
        } else {
          result.clusterDetails_ = clusterDetailsBuilder_.build();
        }
        result.timestamp_ = timestamp_;
        result.cdpTelemetryVersion_ = cdpTelemetryVersion_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport.getDefaultInstance()) return this;
        if (nodesBuilder_ == null) {
          if (!other.nodes_.isEmpty()) {
            if (nodes_.isEmpty()) {
              nodes_ = other.nodes_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureNodesIsMutable();
              nodes_.addAll(other.nodes_);
            }
            onChanged();
          }
        } else {
          if (!other.nodes_.isEmpty()) {
            if (nodesBuilder_.isEmpty()) {
              nodesBuilder_.dispose();
              nodesBuilder_ = null;
              nodes_ = other.nodes_;
              bitField0_ = (bitField0_ & ~0x00000001);
              nodesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getNodesFieldBuilder() : null;
            } else {
              nodesBuilder_.addAllMessages(other.nodes_);
            }
          }
        }
        if (other.hasClusterDetails()) {
          mergeClusterDetails(other.getClusterDetails());
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        if (!other.getCdpTelemetryVersion().isEmpty()) {
          cdpTelemetryVersion_ = other.cdpTelemetryVersion_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus m =
                    input.readMessage(
                        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.parser(),
                        extensionRegistry);
                if (nodesBuilder_ == null) {
                  ensureNodesIsMutable();
                  nodes_.add(m);
                } else {
                  nodesBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getClusterDetailsFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 18
              case 24: {
                timestamp_ = input.readInt64();

                break;
              } // case 24
              case 34: {
                cdpTelemetryVersion_ = input.readStringRequireUtf8();

                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus> nodes_ =
        java.util.Collections.emptyList();
      private void ensureNodesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          nodes_ = new java.util.ArrayList<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus>(nodes_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusOrBuilder> nodesBuilder_;

      /**
       * <pre>
       * Node specific service status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus> getNodesList() {
        if (nodesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(nodes_);
        } else {
          return nodesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Node specific service status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
       */
      public int getNodesCount() {
        if (nodesBuilder_ == null) {
          return nodes_.size();
        } else {
          return nodesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Node specific service status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus getNodes(int index) {
        if (nodesBuilder_ == null) {
          return nodes_.get(index);
        } else {
          return nodesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Node specific service status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
       */
      public Builder setNodes(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus value) {
        if (nodesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodesIsMutable();
          nodes_.set(index, value);
          onChanged();
        } else {
          nodesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Node specific service status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
       */
      public Builder setNodes(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.Builder builderForValue) {
        if (nodesBuilder_ == null) {
          ensureNodesIsMutable();
          nodes_.set(index, builderForValue.build());
          onChanged();
        } else {
          nodesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Node specific service status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
       */
      public Builder addNodes(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus value) {
        if (nodesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodesIsMutable();
          nodes_.add(value);
          onChanged();
        } else {
          nodesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Node specific service status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
       */
      public Builder addNodes(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus value) {
        if (nodesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureNodesIsMutable();
          nodes_.add(index, value);
          onChanged();
        } else {
          nodesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Node specific service status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
       */
      public Builder addNodes(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.Builder builderForValue) {
        if (nodesBuilder_ == null) {
          ensureNodesIsMutable();
          nodes_.add(builderForValue.build());
          onChanged();
        } else {
          nodesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Node specific service status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
       */
      public Builder addNodes(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.Builder builderForValue) {
        if (nodesBuilder_ == null) {
          ensureNodesIsMutable();
          nodes_.add(index, builderForValue.build());
          onChanged();
        } else {
          nodesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Node specific service status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
       */
      public Builder addAllNodes(
          java.lang.Iterable<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus> values) {
        if (nodesBuilder_ == null) {
          ensureNodesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, nodes_);
          onChanged();
        } else {
          nodesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Node specific service status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
       */
      public Builder clearNodes() {
        if (nodesBuilder_ == null) {
          nodes_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          nodesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Node specific service status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
       */
      public Builder removeNodes(int index) {
        if (nodesBuilder_ == null) {
          ensureNodesIsMutable();
          nodes_.remove(index);
          onChanged();
        } else {
          nodesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Node specific service status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.Builder getNodesBuilder(
          int index) {
        return getNodesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Node specific service status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusOrBuilder getNodesOrBuilder(
          int index) {
        if (nodesBuilder_ == null) {
          return nodes_.get(index);  } else {
          return nodesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Node specific service status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
       */
      public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusOrBuilder> 
           getNodesOrBuilderList() {
        if (nodesBuilder_ != null) {
          return nodesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(nodes_);
        }
      }
      /**
       * <pre>
       * Node specific service status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.Builder addNodesBuilder() {
        return getNodesFieldBuilder().addBuilder(
            com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Node specific service status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.Builder addNodesBuilder(
          int index) {
        return getNodesFieldBuilder().addBuilder(
            index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Node specific service status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.NodeStatus nodes = 1;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.Builder> 
           getNodesBuilderList() {
        return getNodesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusOrBuilder> 
          getNodesFieldBuilder() {
        if (nodesBuilder_ == null) {
          nodesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatus.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusOrBuilder>(
                  nodes_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          nodes_ = null;
        }
        return nodesBuilder_;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails clusterDetails_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder> clusterDetailsBuilder_;
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       * @return Whether the clusterDetails field is set.
       */
      public boolean hasClusterDetails() {
        return clusterDetailsBuilder_ != null || clusterDetails_ != null;
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       * @return The clusterDetails.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getClusterDetails() {
        if (clusterDetailsBuilder_ == null) {
          return clusterDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance() : clusterDetails_;
        } else {
          return clusterDetailsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      public Builder setClusterDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails value) {
        if (clusterDetailsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clusterDetails_ = value;
          onChanged();
        } else {
          clusterDetailsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      public Builder setClusterDetails(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder builderForValue) {
        if (clusterDetailsBuilder_ == null) {
          clusterDetails_ = builderForValue.build();
          onChanged();
        } else {
          clusterDetailsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      public Builder mergeClusterDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails value) {
        if (clusterDetailsBuilder_ == null) {
          if (clusterDetails_ != null) {
            clusterDetails_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.newBuilder(clusterDetails_).mergeFrom(value).buildPartial();
          } else {
            clusterDetails_ = value;
          }
          onChanged();
        } else {
          clusterDetailsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      public Builder clearClusterDetails() {
        if (clusterDetailsBuilder_ == null) {
          clusterDetails_ = null;
          onChanged();
        } else {
          clusterDetails_ = null;
          clusterDetailsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder getClusterDetailsBuilder() {
        
        onChanged();
        return getClusterDetailsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder getClusterDetailsOrBuilder() {
        if (clusterDetailsBuilder_ != null) {
          return clusterDetailsBuilder_.getMessageOrBuilder();
        } else {
          return clusterDetails_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance() : clusterDetails_;
        }
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder> 
          getClusterDetailsFieldBuilder() {
        if (clusterDetailsBuilder_ == null) {
          clusterDetailsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder>(
                  getClusterDetails(),
                  getParentForChildren(),
                  isClean());
          clusterDetails_ = null;
        }
        return clusterDetailsBuilder_;
      }

      private long timestamp_ ;
      /**
       * <pre>
       * Timestaamp of the service status report.
       * </pre>
       *
       * <code>int64 timestamp = 3;</code>
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       * Timestaamp of the service status report.
       * </pre>
       *
       * <code>int64 timestamp = 3;</code>
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Timestaamp of the service status report.
       * </pre>
       *
       * <code>int64 timestamp = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object cdpTelemetryVersion_ = "";
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 4;</code>
       * @return The cdpTelemetryVersion.
       */
      public java.lang.String getCdpTelemetryVersion() {
        java.lang.Object ref = cdpTelemetryVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          cdpTelemetryVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 4;</code>
       * @return The bytes for cdpTelemetryVersion.
       */
      public com.google.protobuf.ByteString
          getCdpTelemetryVersionBytes() {
        java.lang.Object ref = cdpTelemetryVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          cdpTelemetryVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 4;</code>
       * @param value The cdpTelemetryVersion to set.
       * @return This builder for chaining.
       */
      public Builder setCdpTelemetryVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        cdpTelemetryVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearCdpTelemetryVersion() {
        
        cdpTelemetryVersion_ = getDefaultInstance().getCdpTelemetryVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 4;</code>
       * @param value The bytes for cdpTelemetryVersion to set.
       * @return This builder for chaining.
       */
      public Builder setCdpTelemetryVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        cdpTelemetryVersion_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.NodeStatusReport)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.NodeStatusReport)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NodeStatusReport>
        PARSER = new com.google.protobuf.AbstractParser<NodeStatusReport>() {
      @java.lang.Override
      public NodeStatusReport parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<NodeStatusReport> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NodeStatusReport> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NodeStatusReport getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServiceStatusOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.ServiceStatus)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Name of the service.
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name of the service.
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Status of the service.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus status = 2;</code>
     * @return The enum numeric value on the wire for status.
     */
    int getStatusValue();
    /**
     * <pre>
     * Status of the service.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus status = 2;</code>
     * @return The status.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getStatus();
  }
  /**
   * <pre>
   * Status of a CDP service that runs on the VM nodes.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.ServiceStatus}
   */
  public static final class ServiceStatus extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.ServiceStatus)
      ServiceStatusOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ServiceStatus.newBuilder() to construct.
    private ServiceStatus(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ServiceStatus() {
      name_ = "";
      status_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ServiceStatus();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_ServiceStatus_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_ServiceStatus_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder.class);
    }

    public static final int NAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * Name of the service.
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Name of the service.
     * </pre>
     *
     * <code>string name = 1;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STATUS_FIELD_NUMBER = 2;
    private int status_;
    /**
     * <pre>
     * Status of the service.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus status = 2;</code>
     * @return The enum numeric value on the wire for status.
     */
    @java.lang.Override public int getStatusValue() {
      return status_;
    }
    /**
     * <pre>
     * Status of the service.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus status = 2;</code>
     * @return The status.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getStatus() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(status_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
      }
      if (status_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(2, status_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
      }
      if (status_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, status_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus) obj;

      if (!getName()
          .equals(other.getName())) return false;
      if (status_ != other.status_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + STATUS_FIELD_NUMBER;
      hash = (53 * hash) + status_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Status of a CDP service that runs on the VM nodes.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.ServiceStatus}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.ServiceStatus)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_ServiceStatus_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_ServiceStatus_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        name_ = "";

        status_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_ServiceStatus_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus(this);
        result.name_ = name_;
        result.status_ = status_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.getDefaultInstance()) return this;
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.status_ != 0) {
          setStatusValue(other.getStatusValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                name_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 16: {
                status_ = input.readEnum();

                break;
              } // case 16
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * Name of the service.
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Name of the service.
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Name of the service.
       * </pre>
       *
       * <code>string name = 1;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the service.
       * </pre>
       *
       * <code>string name = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the service.
       * </pre>
       *
       * <code>string name = 1;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private int status_ = 0;
      /**
       * <pre>
       * Status of the service.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus status = 2;</code>
       * @return The enum numeric value on the wire for status.
       */
      @java.lang.Override public int getStatusValue() {
        return status_;
      }
      /**
       * <pre>
       * Status of the service.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus status = 2;</code>
       * @param value The enum numeric value on the wire for status to set.
       * @return This builder for chaining.
       */
      public Builder setStatusValue(int value) {
        
        status_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status of the service.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus status = 2;</code>
       * @return The status.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getStatus() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(status_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Status of the service.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus status = 2;</code>
       * @param value The status to set.
       * @return This builder for chaining.
       */
      public Builder setStatus(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        status_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status of the service.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus status = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatus() {
        
        status_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.ServiceStatus)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.ServiceStatus)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ServiceStatus>
        PARSER = new com.google.protobuf.AbstractParser<ServiceStatus>() {
      @java.lang.Override
      public ServiceStatus parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ServiceStatus> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ServiceStatus> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServicesDetailsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.ServicesDetails)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Common service statuses.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> 
        getServicesList();
    /**
     * <pre>
     * Common service statuses.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus getServices(int index);
    /**
     * <pre>
     * Common service statuses.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    int getServicesCount();
    /**
     * <pre>
     * Common service statuses.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
        getServicesOrBuilderList();
    /**
     * <pre>
     * Common service statuses.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder getServicesOrBuilder(
        int index);

    /**
     * <pre>
     * Infra service statuses for both FreeIPA and CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
     */
    java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> 
        getInfraServicesList();
    /**
     * <pre>
     * Infra service statuses for both FreeIPA and CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus getInfraServices(int index);
    /**
     * <pre>
     * Infra service statuses for both FreeIPA and CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
     */
    int getInfraServicesCount();
    /**
     * <pre>
     * Infra service statuses for both FreeIPA and CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
     */
    java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
        getInfraServicesOrBuilderList();
    /**
     * <pre>
     * Infra service statuses for both FreeIPA and CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder getInfraServicesOrBuilder(
        int index);

    /**
     * <pre>
     * Service statuses for CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
     */
    java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> 
        getCmServicesList();
    /**
     * <pre>
     * Service statuses for CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus getCmServices(int index);
    /**
     * <pre>
     * Service statuses for CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
     */
    int getCmServicesCount();
    /**
     * <pre>
     * Service statuses for CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
     */
    java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
        getCmServicesOrBuilderList();
    /**
     * <pre>
     * Service statuses for CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder getCmServicesOrBuilder(
        int index);

    /**
     * <pre>
     * Service statuses for FreeIPA clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
     */
    java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> 
        getFreeipaServicesList();
    /**
     * <pre>
     * Service statuses for FreeIPA clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus getFreeipaServices(int index);
    /**
     * <pre>
     * Service statuses for FreeIPA clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
     */
    int getFreeipaServicesCount();
    /**
     * <pre>
     * Service statuses for FreeIPA clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
     */
    java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
        getFreeipaServicesOrBuilderList();
    /**
     * <pre>
     * Service statuses for FreeIPA clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder getFreeipaServicesOrBuilder(
        int index);

    /**
     * <pre>
     * Timestamp of service status report.
     * </pre>
     *
     * <code>int64 timestamp = 5;</code>
     * @return The timestamp.
     */
    long getTimestamp();

    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 6;</code>
     * @return The cdpTelemetryVersion.
     */
    java.lang.String getCdpTelemetryVersion();
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 6;</code>
     * @return The bytes for cdpTelemetryVersion.
     */
    com.google.protobuf.ByteString
        getCdpTelemetryVersionBytes();
  }
  /**
   * <pre>
   * Holds different service statuses based on the VM type.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.ServicesDetails}
   */
  public static final class ServicesDetails extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.ServicesDetails)
      ServicesDetailsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ServicesDetails.newBuilder() to construct.
    private ServicesDetails(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ServicesDetails() {
      services_ = java.util.Collections.emptyList();
      infraServices_ = java.util.Collections.emptyList();
      cmServices_ = java.util.Collections.emptyList();
      freeipaServices_ = java.util.Collections.emptyList();
      cdpTelemetryVersion_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ServicesDetails();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_ServicesDetails_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_ServicesDetails_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails.Builder.class);
    }

    public static final int SERVICES_FIELD_NUMBER = 1;
    private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> services_;
    /**
     * <pre>
     * Common service statuses.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> getServicesList() {
      return services_;
    }
    /**
     * <pre>
     * Common service statuses.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
        getServicesOrBuilderList() {
      return services_;
    }
    /**
     * <pre>
     * Common service statuses.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    @java.lang.Override
    public int getServicesCount() {
      return services_.size();
    }
    /**
     * <pre>
     * Common service statuses.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus getServices(int index) {
      return services_.get(index);
    }
    /**
     * <pre>
     * Common service statuses.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder getServicesOrBuilder(
        int index) {
      return services_.get(index);
    }

    public static final int INFRASERVICES_FIELD_NUMBER = 2;
    private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> infraServices_;
    /**
     * <pre>
     * Infra service statuses for both FreeIPA and CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
     */
    @java.lang.Override
    public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> getInfraServicesList() {
      return infraServices_;
    }
    /**
     * <pre>
     * Infra service statuses for both FreeIPA and CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
        getInfraServicesOrBuilderList() {
      return infraServices_;
    }
    /**
     * <pre>
     * Infra service statuses for both FreeIPA and CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
     */
    @java.lang.Override
    public int getInfraServicesCount() {
      return infraServices_.size();
    }
    /**
     * <pre>
     * Infra service statuses for both FreeIPA and CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus getInfraServices(int index) {
      return infraServices_.get(index);
    }
    /**
     * <pre>
     * Infra service statuses for both FreeIPA and CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder getInfraServicesOrBuilder(
        int index) {
      return infraServices_.get(index);
    }

    public static final int CMSERVICES_FIELD_NUMBER = 3;
    private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> cmServices_;
    /**
     * <pre>
     * Service statuses for CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
     */
    @java.lang.Override
    public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> getCmServicesList() {
      return cmServices_;
    }
    /**
     * <pre>
     * Service statuses for CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
        getCmServicesOrBuilderList() {
      return cmServices_;
    }
    /**
     * <pre>
     * Service statuses for CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
     */
    @java.lang.Override
    public int getCmServicesCount() {
      return cmServices_.size();
    }
    /**
     * <pre>
     * Service statuses for CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus getCmServices(int index) {
      return cmServices_.get(index);
    }
    /**
     * <pre>
     * Service statuses for CM clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder getCmServicesOrBuilder(
        int index) {
      return cmServices_.get(index);
    }

    public static final int FREEIPASERVICES_FIELD_NUMBER = 4;
    private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> freeipaServices_;
    /**
     * <pre>
     * Service statuses for FreeIPA clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
     */
    @java.lang.Override
    public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> getFreeipaServicesList() {
      return freeipaServices_;
    }
    /**
     * <pre>
     * Service statuses for FreeIPA clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
        getFreeipaServicesOrBuilderList() {
      return freeipaServices_;
    }
    /**
     * <pre>
     * Service statuses for FreeIPA clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
     */
    @java.lang.Override
    public int getFreeipaServicesCount() {
      return freeipaServices_.size();
    }
    /**
     * <pre>
     * Service statuses for FreeIPA clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus getFreeipaServices(int index) {
      return freeipaServices_.get(index);
    }
    /**
     * <pre>
     * Service statuses for FreeIPA clusters.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder getFreeipaServicesOrBuilder(
        int index) {
      return freeipaServices_.get(index);
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 5;
    private long timestamp_;
    /**
     * <pre>
     * Timestamp of service status report.
     * </pre>
     *
     * <code>int64 timestamp = 5;</code>
     * @return The timestamp.
     */
    @java.lang.Override
    public long getTimestamp() {
      return timestamp_;
    }

    public static final int CDPTELEMETRYVERSION_FIELD_NUMBER = 6;
    private volatile java.lang.Object cdpTelemetryVersion_;
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 6;</code>
     * @return The cdpTelemetryVersion.
     */
    @java.lang.Override
    public java.lang.String getCdpTelemetryVersion() {
      java.lang.Object ref = cdpTelemetryVersion_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        cdpTelemetryVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 6;</code>
     * @return The bytes for cdpTelemetryVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCdpTelemetryVersionBytes() {
      java.lang.Object ref = cdpTelemetryVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        cdpTelemetryVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < services_.size(); i++) {
        output.writeMessage(1, services_.get(i));
      }
      for (int i = 0; i < infraServices_.size(); i++) {
        output.writeMessage(2, infraServices_.get(i));
      }
      for (int i = 0; i < cmServices_.size(); i++) {
        output.writeMessage(3, cmServices_.get(i));
      }
      for (int i = 0; i < freeipaServices_.size(); i++) {
        output.writeMessage(4, freeipaServices_.get(i));
      }
      if (timestamp_ != 0L) {
        output.writeInt64(5, timestamp_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cdpTelemetryVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, cdpTelemetryVersion_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < services_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, services_.get(i));
      }
      for (int i = 0; i < infraServices_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, infraServices_.get(i));
      }
      for (int i = 0; i < cmServices_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, cmServices_.get(i));
      }
      for (int i = 0; i < freeipaServices_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, freeipaServices_.get(i));
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, timestamp_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cdpTelemetryVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, cdpTelemetryVersion_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails) obj;

      if (!getServicesList()
          .equals(other.getServicesList())) return false;
      if (!getInfraServicesList()
          .equals(other.getInfraServicesList())) return false;
      if (!getCmServicesList()
          .equals(other.getCmServicesList())) return false;
      if (!getFreeipaServicesList()
          .equals(other.getFreeipaServicesList())) return false;
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (!getCdpTelemetryVersion()
          .equals(other.getCdpTelemetryVersion())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getServicesCount() > 0) {
        hash = (37 * hash) + SERVICES_FIELD_NUMBER;
        hash = (53 * hash) + getServicesList().hashCode();
      }
      if (getInfraServicesCount() > 0) {
        hash = (37 * hash) + INFRASERVICES_FIELD_NUMBER;
        hash = (53 * hash) + getInfraServicesList().hashCode();
      }
      if (getCmServicesCount() > 0) {
        hash = (37 * hash) + CMSERVICES_FIELD_NUMBER;
        hash = (53 * hash) + getCmServicesList().hashCode();
      }
      if (getFreeipaServicesCount() > 0) {
        hash = (37 * hash) + FREEIPASERVICES_FIELD_NUMBER;
        hash = (53 * hash) + getFreeipaServicesList().hashCode();
      }
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      hash = (37 * hash) + CDPTELEMETRYVERSION_FIELD_NUMBER;
      hash = (53 * hash) + getCdpTelemetryVersion().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds different service statuses based on the VM type.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.ServicesDetails}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.ServicesDetails)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetailsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_ServicesDetails_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_ServicesDetails_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (servicesBuilder_ == null) {
          services_ = java.util.Collections.emptyList();
        } else {
          services_ = null;
          servicesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (infraServicesBuilder_ == null) {
          infraServices_ = java.util.Collections.emptyList();
        } else {
          infraServices_ = null;
          infraServicesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (cmServicesBuilder_ == null) {
          cmServices_ = java.util.Collections.emptyList();
        } else {
          cmServices_ = null;
          cmServicesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000004);
        if (freeipaServicesBuilder_ == null) {
          freeipaServices_ = java.util.Collections.emptyList();
        } else {
          freeipaServices_ = null;
          freeipaServicesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000008);
        timestamp_ = 0L;

        cdpTelemetryVersion_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_ServicesDetails_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails(this);
        int from_bitField0_ = bitField0_;
        if (servicesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            services_ = java.util.Collections.unmodifiableList(services_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.services_ = services_;
        } else {
          result.services_ = servicesBuilder_.build();
        }
        if (infraServicesBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            infraServices_ = java.util.Collections.unmodifiableList(infraServices_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.infraServices_ = infraServices_;
        } else {
          result.infraServices_ = infraServicesBuilder_.build();
        }
        if (cmServicesBuilder_ == null) {
          if (((bitField0_ & 0x00000004) != 0)) {
            cmServices_ = java.util.Collections.unmodifiableList(cmServices_);
            bitField0_ = (bitField0_ & ~0x00000004);
          }
          result.cmServices_ = cmServices_;
        } else {
          result.cmServices_ = cmServicesBuilder_.build();
        }
        if (freeipaServicesBuilder_ == null) {
          if (((bitField0_ & 0x00000008) != 0)) {
            freeipaServices_ = java.util.Collections.unmodifiableList(freeipaServices_);
            bitField0_ = (bitField0_ & ~0x00000008);
          }
          result.freeipaServices_ = freeipaServices_;
        } else {
          result.freeipaServices_ = freeipaServicesBuilder_.build();
        }
        result.timestamp_ = timestamp_;
        result.cdpTelemetryVersion_ = cdpTelemetryVersion_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails.getDefaultInstance()) return this;
        if (servicesBuilder_ == null) {
          if (!other.services_.isEmpty()) {
            if (services_.isEmpty()) {
              services_ = other.services_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureServicesIsMutable();
              services_.addAll(other.services_);
            }
            onChanged();
          }
        } else {
          if (!other.services_.isEmpty()) {
            if (servicesBuilder_.isEmpty()) {
              servicesBuilder_.dispose();
              servicesBuilder_ = null;
              services_ = other.services_;
              bitField0_ = (bitField0_ & ~0x00000001);
              servicesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getServicesFieldBuilder() : null;
            } else {
              servicesBuilder_.addAllMessages(other.services_);
            }
          }
        }
        if (infraServicesBuilder_ == null) {
          if (!other.infraServices_.isEmpty()) {
            if (infraServices_.isEmpty()) {
              infraServices_ = other.infraServices_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureInfraServicesIsMutable();
              infraServices_.addAll(other.infraServices_);
            }
            onChanged();
          }
        } else {
          if (!other.infraServices_.isEmpty()) {
            if (infraServicesBuilder_.isEmpty()) {
              infraServicesBuilder_.dispose();
              infraServicesBuilder_ = null;
              infraServices_ = other.infraServices_;
              bitField0_ = (bitField0_ & ~0x00000002);
              infraServicesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getInfraServicesFieldBuilder() : null;
            } else {
              infraServicesBuilder_.addAllMessages(other.infraServices_);
            }
          }
        }
        if (cmServicesBuilder_ == null) {
          if (!other.cmServices_.isEmpty()) {
            if (cmServices_.isEmpty()) {
              cmServices_ = other.cmServices_;
              bitField0_ = (bitField0_ & ~0x00000004);
            } else {
              ensureCmServicesIsMutable();
              cmServices_.addAll(other.cmServices_);
            }
            onChanged();
          }
        } else {
          if (!other.cmServices_.isEmpty()) {
            if (cmServicesBuilder_.isEmpty()) {
              cmServicesBuilder_.dispose();
              cmServicesBuilder_ = null;
              cmServices_ = other.cmServices_;
              bitField0_ = (bitField0_ & ~0x00000004);
              cmServicesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getCmServicesFieldBuilder() : null;
            } else {
              cmServicesBuilder_.addAllMessages(other.cmServices_);
            }
          }
        }
        if (freeipaServicesBuilder_ == null) {
          if (!other.freeipaServices_.isEmpty()) {
            if (freeipaServices_.isEmpty()) {
              freeipaServices_ = other.freeipaServices_;
              bitField0_ = (bitField0_ & ~0x00000008);
            } else {
              ensureFreeipaServicesIsMutable();
              freeipaServices_.addAll(other.freeipaServices_);
            }
            onChanged();
          }
        } else {
          if (!other.freeipaServices_.isEmpty()) {
            if (freeipaServicesBuilder_.isEmpty()) {
              freeipaServicesBuilder_.dispose();
              freeipaServicesBuilder_ = null;
              freeipaServices_ = other.freeipaServices_;
              bitField0_ = (bitField0_ & ~0x00000008);
              freeipaServicesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getFreeipaServicesFieldBuilder() : null;
            } else {
              freeipaServicesBuilder_.addAllMessages(other.freeipaServices_);
            }
          }
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        if (!other.getCdpTelemetryVersion().isEmpty()) {
          cdpTelemetryVersion_ = other.cdpTelemetryVersion_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus m =
                    input.readMessage(
                        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.parser(),
                        extensionRegistry);
                if (servicesBuilder_ == null) {
                  ensureServicesIsMutable();
                  services_.add(m);
                } else {
                  servicesBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus m =
                    input.readMessage(
                        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.parser(),
                        extensionRegistry);
                if (infraServicesBuilder_ == null) {
                  ensureInfraServicesIsMutable();
                  infraServices_.add(m);
                } else {
                  infraServicesBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 26: {
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus m =
                    input.readMessage(
                        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.parser(),
                        extensionRegistry);
                if (cmServicesBuilder_ == null) {
                  ensureCmServicesIsMutable();
                  cmServices_.add(m);
                } else {
                  cmServicesBuilder_.addMessage(m);
                }
                break;
              } // case 26
              case 34: {
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus m =
                    input.readMessage(
                        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.parser(),
                        extensionRegistry);
                if (freeipaServicesBuilder_ == null) {
                  ensureFreeipaServicesIsMutable();
                  freeipaServices_.add(m);
                } else {
                  freeipaServicesBuilder_.addMessage(m);
                }
                break;
              } // case 34
              case 40: {
                timestamp_ = input.readInt64();

                break;
              } // case 40
              case 50: {
                cdpTelemetryVersion_ = input.readStringRequireUtf8();

                break;
              } // case 50
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> services_ =
        java.util.Collections.emptyList();
      private void ensureServicesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          services_ = new java.util.ArrayList<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus>(services_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> servicesBuilder_;

      /**
       * <pre>
       * Common service statuses.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> getServicesList() {
        if (servicesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(services_);
        } else {
          return servicesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Common service statuses.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public int getServicesCount() {
        if (servicesBuilder_ == null) {
          return services_.size();
        } else {
          return servicesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Common service statuses.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus getServices(int index) {
        if (servicesBuilder_ == null) {
          return services_.get(index);
        } else {
          return servicesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Common service statuses.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public Builder setServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus value) {
        if (servicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServicesIsMutable();
          services_.set(index, value);
          onChanged();
        } else {
          servicesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Common service statuses.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public Builder setServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder builderForValue) {
        if (servicesBuilder_ == null) {
          ensureServicesIsMutable();
          services_.set(index, builderForValue.build());
          onChanged();
        } else {
          servicesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Common service statuses.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public Builder addServices(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus value) {
        if (servicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServicesIsMutable();
          services_.add(value);
          onChanged();
        } else {
          servicesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Common service statuses.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public Builder addServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus value) {
        if (servicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServicesIsMutable();
          services_.add(index, value);
          onChanged();
        } else {
          servicesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Common service statuses.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public Builder addServices(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder builderForValue) {
        if (servicesBuilder_ == null) {
          ensureServicesIsMutable();
          services_.add(builderForValue.build());
          onChanged();
        } else {
          servicesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Common service statuses.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public Builder addServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder builderForValue) {
        if (servicesBuilder_ == null) {
          ensureServicesIsMutable();
          services_.add(index, builderForValue.build());
          onChanged();
        } else {
          servicesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Common service statuses.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public Builder addAllServices(
          java.lang.Iterable<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> values) {
        if (servicesBuilder_ == null) {
          ensureServicesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, services_);
          onChanged();
        } else {
          servicesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Common service statuses.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public Builder clearServices() {
        if (servicesBuilder_ == null) {
          services_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          servicesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Common service statuses.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public Builder removeServices(int index) {
        if (servicesBuilder_ == null) {
          ensureServicesIsMutable();
          services_.remove(index);
          onChanged();
        } else {
          servicesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Common service statuses.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder getServicesBuilder(
          int index) {
        return getServicesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Common service statuses.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder getServicesOrBuilder(
          int index) {
        if (servicesBuilder_ == null) {
          return services_.get(index);  } else {
          return servicesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Common service statuses.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
           getServicesOrBuilderList() {
        if (servicesBuilder_ != null) {
          return servicesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(services_);
        }
      }
      /**
       * <pre>
       * Common service statuses.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder addServicesBuilder() {
        return getServicesFieldBuilder().addBuilder(
            com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Common service statuses.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder addServicesBuilder(
          int index) {
        return getServicesFieldBuilder().addBuilder(
            index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Common service statuses.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder> 
           getServicesBuilderList() {
        return getServicesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
          getServicesFieldBuilder() {
        if (servicesBuilder_ == null) {
          servicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder>(
                  services_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          services_ = null;
        }
        return servicesBuilder_;
      }

      private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> infraServices_ =
        java.util.Collections.emptyList();
      private void ensureInfraServicesIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          infraServices_ = new java.util.ArrayList<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus>(infraServices_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> infraServicesBuilder_;

      /**
       * <pre>
       * Infra service statuses for both FreeIPA and CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> getInfraServicesList() {
        if (infraServicesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(infraServices_);
        } else {
          return infraServicesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Infra service statuses for both FreeIPA and CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
       */
      public int getInfraServicesCount() {
        if (infraServicesBuilder_ == null) {
          return infraServices_.size();
        } else {
          return infraServicesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Infra service statuses for both FreeIPA and CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus getInfraServices(int index) {
        if (infraServicesBuilder_ == null) {
          return infraServices_.get(index);
        } else {
          return infraServicesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Infra service statuses for both FreeIPA and CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
       */
      public Builder setInfraServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus value) {
        if (infraServicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInfraServicesIsMutable();
          infraServices_.set(index, value);
          onChanged();
        } else {
          infraServicesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Infra service statuses for both FreeIPA and CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
       */
      public Builder setInfraServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder builderForValue) {
        if (infraServicesBuilder_ == null) {
          ensureInfraServicesIsMutable();
          infraServices_.set(index, builderForValue.build());
          onChanged();
        } else {
          infraServicesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Infra service statuses for both FreeIPA and CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
       */
      public Builder addInfraServices(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus value) {
        if (infraServicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInfraServicesIsMutable();
          infraServices_.add(value);
          onChanged();
        } else {
          infraServicesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Infra service statuses for both FreeIPA and CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
       */
      public Builder addInfraServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus value) {
        if (infraServicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureInfraServicesIsMutable();
          infraServices_.add(index, value);
          onChanged();
        } else {
          infraServicesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Infra service statuses for both FreeIPA and CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
       */
      public Builder addInfraServices(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder builderForValue) {
        if (infraServicesBuilder_ == null) {
          ensureInfraServicesIsMutable();
          infraServices_.add(builderForValue.build());
          onChanged();
        } else {
          infraServicesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Infra service statuses for both FreeIPA and CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
       */
      public Builder addInfraServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder builderForValue) {
        if (infraServicesBuilder_ == null) {
          ensureInfraServicesIsMutable();
          infraServices_.add(index, builderForValue.build());
          onChanged();
        } else {
          infraServicesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Infra service statuses for both FreeIPA and CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
       */
      public Builder addAllInfraServices(
          java.lang.Iterable<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> values) {
        if (infraServicesBuilder_ == null) {
          ensureInfraServicesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, infraServices_);
          onChanged();
        } else {
          infraServicesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Infra service statuses for both FreeIPA and CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
       */
      public Builder clearInfraServices() {
        if (infraServicesBuilder_ == null) {
          infraServices_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          infraServicesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Infra service statuses for both FreeIPA and CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
       */
      public Builder removeInfraServices(int index) {
        if (infraServicesBuilder_ == null) {
          ensureInfraServicesIsMutable();
          infraServices_.remove(index);
          onChanged();
        } else {
          infraServicesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Infra service statuses for both FreeIPA and CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder getInfraServicesBuilder(
          int index) {
        return getInfraServicesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Infra service statuses for both FreeIPA and CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder getInfraServicesOrBuilder(
          int index) {
        if (infraServicesBuilder_ == null) {
          return infraServices_.get(index);  } else {
          return infraServicesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Infra service statuses for both FreeIPA and CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
       */
      public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
           getInfraServicesOrBuilderList() {
        if (infraServicesBuilder_ != null) {
          return infraServicesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(infraServices_);
        }
      }
      /**
       * <pre>
       * Infra service statuses for both FreeIPA and CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder addInfraServicesBuilder() {
        return getInfraServicesFieldBuilder().addBuilder(
            com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Infra service statuses for both FreeIPA and CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder addInfraServicesBuilder(
          int index) {
        return getInfraServicesFieldBuilder().addBuilder(
            index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Infra service statuses for both FreeIPA and CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus infraServices = 2;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder> 
           getInfraServicesBuilderList() {
        return getInfraServicesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
          getInfraServicesFieldBuilder() {
        if (infraServicesBuilder_ == null) {
          infraServicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder>(
                  infraServices_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          infraServices_ = null;
        }
        return infraServicesBuilder_;
      }

      private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> cmServices_ =
        java.util.Collections.emptyList();
      private void ensureCmServicesIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          cmServices_ = new java.util.ArrayList<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus>(cmServices_);
          bitField0_ |= 0x00000004;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> cmServicesBuilder_;

      /**
       * <pre>
       * Service statuses for CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> getCmServicesList() {
        if (cmServicesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(cmServices_);
        } else {
          return cmServicesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Service statuses for CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
       */
      public int getCmServicesCount() {
        if (cmServicesBuilder_ == null) {
          return cmServices_.size();
        } else {
          return cmServicesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Service statuses for CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus getCmServices(int index) {
        if (cmServicesBuilder_ == null) {
          return cmServices_.get(index);
        } else {
          return cmServicesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Service statuses for CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
       */
      public Builder setCmServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus value) {
        if (cmServicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCmServicesIsMutable();
          cmServices_.set(index, value);
          onChanged();
        } else {
          cmServicesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Service statuses for CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
       */
      public Builder setCmServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder builderForValue) {
        if (cmServicesBuilder_ == null) {
          ensureCmServicesIsMutable();
          cmServices_.set(index, builderForValue.build());
          onChanged();
        } else {
          cmServicesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Service statuses for CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
       */
      public Builder addCmServices(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus value) {
        if (cmServicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCmServicesIsMutable();
          cmServices_.add(value);
          onChanged();
        } else {
          cmServicesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Service statuses for CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
       */
      public Builder addCmServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus value) {
        if (cmServicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureCmServicesIsMutable();
          cmServices_.add(index, value);
          onChanged();
        } else {
          cmServicesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Service statuses for CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
       */
      public Builder addCmServices(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder builderForValue) {
        if (cmServicesBuilder_ == null) {
          ensureCmServicesIsMutable();
          cmServices_.add(builderForValue.build());
          onChanged();
        } else {
          cmServicesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Service statuses for CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
       */
      public Builder addCmServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder builderForValue) {
        if (cmServicesBuilder_ == null) {
          ensureCmServicesIsMutable();
          cmServices_.add(index, builderForValue.build());
          onChanged();
        } else {
          cmServicesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Service statuses for CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
       */
      public Builder addAllCmServices(
          java.lang.Iterable<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> values) {
        if (cmServicesBuilder_ == null) {
          ensureCmServicesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, cmServices_);
          onChanged();
        } else {
          cmServicesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Service statuses for CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
       */
      public Builder clearCmServices() {
        if (cmServicesBuilder_ == null) {
          cmServices_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000004);
          onChanged();
        } else {
          cmServicesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Service statuses for CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
       */
      public Builder removeCmServices(int index) {
        if (cmServicesBuilder_ == null) {
          ensureCmServicesIsMutable();
          cmServices_.remove(index);
          onChanged();
        } else {
          cmServicesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Service statuses for CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder getCmServicesBuilder(
          int index) {
        return getCmServicesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Service statuses for CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder getCmServicesOrBuilder(
          int index) {
        if (cmServicesBuilder_ == null) {
          return cmServices_.get(index);  } else {
          return cmServicesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Service statuses for CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
       */
      public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
           getCmServicesOrBuilderList() {
        if (cmServicesBuilder_ != null) {
          return cmServicesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(cmServices_);
        }
      }
      /**
       * <pre>
       * Service statuses for CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder addCmServicesBuilder() {
        return getCmServicesFieldBuilder().addBuilder(
            com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Service statuses for CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder addCmServicesBuilder(
          int index) {
        return getCmServicesFieldBuilder().addBuilder(
            index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Service statuses for CM clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus cmServices = 3;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder> 
           getCmServicesBuilderList() {
        return getCmServicesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
          getCmServicesFieldBuilder() {
        if (cmServicesBuilder_ == null) {
          cmServicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder>(
                  cmServices_,
                  ((bitField0_ & 0x00000004) != 0),
                  getParentForChildren(),
                  isClean());
          cmServices_ = null;
        }
        return cmServicesBuilder_;
      }

      private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> freeipaServices_ =
        java.util.Collections.emptyList();
      private void ensureFreeipaServicesIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          freeipaServices_ = new java.util.ArrayList<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus>(freeipaServices_);
          bitField0_ |= 0x00000008;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> freeipaServicesBuilder_;

      /**
       * <pre>
       * Service statuses for FreeIPA clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> getFreeipaServicesList() {
        if (freeipaServicesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(freeipaServices_);
        } else {
          return freeipaServicesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Service statuses for FreeIPA clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
       */
      public int getFreeipaServicesCount() {
        if (freeipaServicesBuilder_ == null) {
          return freeipaServices_.size();
        } else {
          return freeipaServicesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Service statuses for FreeIPA clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus getFreeipaServices(int index) {
        if (freeipaServicesBuilder_ == null) {
          return freeipaServices_.get(index);
        } else {
          return freeipaServicesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Service statuses for FreeIPA clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
       */
      public Builder setFreeipaServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus value) {
        if (freeipaServicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFreeipaServicesIsMutable();
          freeipaServices_.set(index, value);
          onChanged();
        } else {
          freeipaServicesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Service statuses for FreeIPA clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
       */
      public Builder setFreeipaServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder builderForValue) {
        if (freeipaServicesBuilder_ == null) {
          ensureFreeipaServicesIsMutable();
          freeipaServices_.set(index, builderForValue.build());
          onChanged();
        } else {
          freeipaServicesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Service statuses for FreeIPA clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
       */
      public Builder addFreeipaServices(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus value) {
        if (freeipaServicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFreeipaServicesIsMutable();
          freeipaServices_.add(value);
          onChanged();
        } else {
          freeipaServicesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Service statuses for FreeIPA clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
       */
      public Builder addFreeipaServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus value) {
        if (freeipaServicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureFreeipaServicesIsMutable();
          freeipaServices_.add(index, value);
          onChanged();
        } else {
          freeipaServicesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Service statuses for FreeIPA clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
       */
      public Builder addFreeipaServices(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder builderForValue) {
        if (freeipaServicesBuilder_ == null) {
          ensureFreeipaServicesIsMutable();
          freeipaServices_.add(builderForValue.build());
          onChanged();
        } else {
          freeipaServicesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Service statuses for FreeIPA clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
       */
      public Builder addFreeipaServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder builderForValue) {
        if (freeipaServicesBuilder_ == null) {
          ensureFreeipaServicesIsMutable();
          freeipaServices_.add(index, builderForValue.build());
          onChanged();
        } else {
          freeipaServicesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Service statuses for FreeIPA clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
       */
      public Builder addAllFreeipaServices(
          java.lang.Iterable<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> values) {
        if (freeipaServicesBuilder_ == null) {
          ensureFreeipaServicesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, freeipaServices_);
          onChanged();
        } else {
          freeipaServicesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Service statuses for FreeIPA clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
       */
      public Builder clearFreeipaServices() {
        if (freeipaServicesBuilder_ == null) {
          freeipaServices_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000008);
          onChanged();
        } else {
          freeipaServicesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Service statuses for FreeIPA clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
       */
      public Builder removeFreeipaServices(int index) {
        if (freeipaServicesBuilder_ == null) {
          ensureFreeipaServicesIsMutable();
          freeipaServices_.remove(index);
          onChanged();
        } else {
          freeipaServicesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Service statuses for FreeIPA clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder getFreeipaServicesBuilder(
          int index) {
        return getFreeipaServicesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Service statuses for FreeIPA clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder getFreeipaServicesOrBuilder(
          int index) {
        if (freeipaServicesBuilder_ == null) {
          return freeipaServices_.get(index);  } else {
          return freeipaServicesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Service statuses for FreeIPA clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
       */
      public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
           getFreeipaServicesOrBuilderList() {
        if (freeipaServicesBuilder_ != null) {
          return freeipaServicesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(freeipaServices_);
        }
      }
      /**
       * <pre>
       * Service statuses for FreeIPA clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder addFreeipaServicesBuilder() {
        return getFreeipaServicesFieldBuilder().addBuilder(
            com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Service statuses for FreeIPA clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder addFreeipaServicesBuilder(
          int index) {
        return getFreeipaServicesFieldBuilder().addBuilder(
            index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Service statuses for FreeIPA clusters.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus freeipaServices = 4;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder> 
           getFreeipaServicesBuilderList() {
        return getFreeipaServicesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
          getFreeipaServicesFieldBuilder() {
        if (freeipaServicesBuilder_ == null) {
          freeipaServicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder>(
                  freeipaServices_,
                  ((bitField0_ & 0x00000008) != 0),
                  getParentForChildren(),
                  isClean());
          freeipaServices_ = null;
        }
        return freeipaServicesBuilder_;
      }

      private long timestamp_ ;
      /**
       * <pre>
       * Timestamp of service status report.
       * </pre>
       *
       * <code>int64 timestamp = 5;</code>
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       * Timestamp of service status report.
       * </pre>
       *
       * <code>int64 timestamp = 5;</code>
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Timestamp of service status report.
       * </pre>
       *
       * <code>int64 timestamp = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object cdpTelemetryVersion_ = "";
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 6;</code>
       * @return The cdpTelemetryVersion.
       */
      public java.lang.String getCdpTelemetryVersion() {
        java.lang.Object ref = cdpTelemetryVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          cdpTelemetryVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 6;</code>
       * @return The bytes for cdpTelemetryVersion.
       */
      public com.google.protobuf.ByteString
          getCdpTelemetryVersionBytes() {
        java.lang.Object ref = cdpTelemetryVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          cdpTelemetryVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 6;</code>
       * @param value The cdpTelemetryVersion to set.
       * @return This builder for chaining.
       */
      public Builder setCdpTelemetryVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        cdpTelemetryVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearCdpTelemetryVersion() {
        
        cdpTelemetryVersion_ = getDefaultInstance().getCdpTelemetryVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 6;</code>
       * @param value The bytes for cdpTelemetryVersion to set.
       * @return This builder for chaining.
       */
      public Builder setCdpTelemetryVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        cdpTelemetryVersion_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.ServicesDetails)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.ServicesDetails)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ServicesDetails>
        PARSER = new com.google.protobuf.AbstractParser<ServicesDetails>() {
      @java.lang.Override
      public ServicesDetails parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ServicesDetails> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ServicesDetails> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServicesDetails getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SaltMasterHealthOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.SaltMasterHealth)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Status responses of the salt master related services.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> 
        getServicesList();
    /**
     * <pre>
     * Status responses of the salt master related services.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus getServices(int index);
    /**
     * <pre>
     * Status responses of the salt master related services.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    int getServicesCount();
    /**
     * <pre>
     * Status responses of the salt master related services.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
        getServicesOrBuilderList();
    /**
     * <pre>
     * Status responses of the salt master related services.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder getServicesOrBuilder(
        int index);

    /**
     * <pre>
     * Timestamp of the salt master health report.
     * </pre>
     *
     * <code>int64 timestamp = 2;</code>
     * @return The timestamp.
     */
    long getTimestamp();
  }
  /**
   * <pre>
   * Holds salt master health details .
   * Currently, only about the local master on the same node where nodestatus monitor is running.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.SaltMasterHealth}
   */
  public static final class SaltMasterHealth extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.SaltMasterHealth)
      SaltMasterHealthOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SaltMasterHealth.newBuilder() to construct.
    private SaltMasterHealth(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SaltMasterHealth() {
      services_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SaltMasterHealth();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltMasterHealth_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltMasterHealth_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth.Builder.class);
    }

    public static final int SERVICES_FIELD_NUMBER = 1;
    private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> services_;
    /**
     * <pre>
     * Status responses of the salt master related services.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> getServicesList() {
      return services_;
    }
    /**
     * <pre>
     * Status responses of the salt master related services.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
        getServicesOrBuilderList() {
      return services_;
    }
    /**
     * <pre>
     * Status responses of the salt master related services.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    @java.lang.Override
    public int getServicesCount() {
      return services_.size();
    }
    /**
     * <pre>
     * Status responses of the salt master related services.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus getServices(int index) {
      return services_.get(index);
    }
    /**
     * <pre>
     * Status responses of the salt master related services.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder getServicesOrBuilder(
        int index) {
      return services_.get(index);
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 2;
    private long timestamp_;
    /**
     * <pre>
     * Timestamp of the salt master health report.
     * </pre>
     *
     * <code>int64 timestamp = 2;</code>
     * @return The timestamp.
     */
    @java.lang.Override
    public long getTimestamp() {
      return timestamp_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < services_.size(); i++) {
        output.writeMessage(1, services_.get(i));
      }
      if (timestamp_ != 0L) {
        output.writeInt64(2, timestamp_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < services_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, services_.get(i));
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, timestamp_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth) obj;

      if (!getServicesList()
          .equals(other.getServicesList())) return false;
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getServicesCount() > 0) {
        hash = (37 * hash) + SERVICES_FIELD_NUMBER;
        hash = (53 * hash) + getServicesList().hashCode();
      }
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds salt master health details .
     * Currently, only about the local master on the same node where nodestatus monitor is running.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.SaltMasterHealth}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.SaltMasterHealth)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealthOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltMasterHealth_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltMasterHealth_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (servicesBuilder_ == null) {
          services_ = java.util.Collections.emptyList();
        } else {
          services_ = null;
          servicesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        timestamp_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltMasterHealth_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth(this);
        int from_bitField0_ = bitField0_;
        if (servicesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            services_ = java.util.Collections.unmodifiableList(services_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.services_ = services_;
        } else {
          result.services_ = servicesBuilder_.build();
        }
        result.timestamp_ = timestamp_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth.getDefaultInstance()) return this;
        if (servicesBuilder_ == null) {
          if (!other.services_.isEmpty()) {
            if (services_.isEmpty()) {
              services_ = other.services_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureServicesIsMutable();
              services_.addAll(other.services_);
            }
            onChanged();
          }
        } else {
          if (!other.services_.isEmpty()) {
            if (servicesBuilder_.isEmpty()) {
              servicesBuilder_.dispose();
              servicesBuilder_ = null;
              services_ = other.services_;
              bitField0_ = (bitField0_ & ~0x00000001);
              servicesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getServicesFieldBuilder() : null;
            } else {
              servicesBuilder_.addAllMessages(other.services_);
            }
          }
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus m =
                    input.readMessage(
                        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.parser(),
                        extensionRegistry);
                if (servicesBuilder_ == null) {
                  ensureServicesIsMutable();
                  services_.add(m);
                } else {
                  servicesBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 16: {
                timestamp_ = input.readInt64();

                break;
              } // case 16
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> services_ =
        java.util.Collections.emptyList();
      private void ensureServicesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          services_ = new java.util.ArrayList<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus>(services_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> servicesBuilder_;

      /**
       * <pre>
       * Status responses of the salt master related services.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> getServicesList() {
        if (servicesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(services_);
        } else {
          return servicesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Status responses of the salt master related services.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public int getServicesCount() {
        if (servicesBuilder_ == null) {
          return services_.size();
        } else {
          return servicesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Status responses of the salt master related services.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus getServices(int index) {
        if (servicesBuilder_ == null) {
          return services_.get(index);
        } else {
          return servicesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Status responses of the salt master related services.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public Builder setServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus value) {
        if (servicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServicesIsMutable();
          services_.set(index, value);
          onChanged();
        } else {
          servicesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Status responses of the salt master related services.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public Builder setServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder builderForValue) {
        if (servicesBuilder_ == null) {
          ensureServicesIsMutable();
          services_.set(index, builderForValue.build());
          onChanged();
        } else {
          servicesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Status responses of the salt master related services.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public Builder addServices(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus value) {
        if (servicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServicesIsMutable();
          services_.add(value);
          onChanged();
        } else {
          servicesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Status responses of the salt master related services.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public Builder addServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus value) {
        if (servicesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureServicesIsMutable();
          services_.add(index, value);
          onChanged();
        } else {
          servicesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Status responses of the salt master related services.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public Builder addServices(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder builderForValue) {
        if (servicesBuilder_ == null) {
          ensureServicesIsMutable();
          services_.add(builderForValue.build());
          onChanged();
        } else {
          servicesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Status responses of the salt master related services.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public Builder addServices(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder builderForValue) {
        if (servicesBuilder_ == null) {
          ensureServicesIsMutable();
          services_.add(index, builderForValue.build());
          onChanged();
        } else {
          servicesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Status responses of the salt master related services.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public Builder addAllServices(
          java.lang.Iterable<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus> values) {
        if (servicesBuilder_ == null) {
          ensureServicesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, services_);
          onChanged();
        } else {
          servicesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Status responses of the salt master related services.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public Builder clearServices() {
        if (servicesBuilder_ == null) {
          services_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          servicesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Status responses of the salt master related services.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public Builder removeServices(int index) {
        if (servicesBuilder_ == null) {
          ensureServicesIsMutable();
          services_.remove(index);
          onChanged();
        } else {
          servicesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Status responses of the salt master related services.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder getServicesBuilder(
          int index) {
        return getServicesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Status responses of the salt master related services.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder getServicesOrBuilder(
          int index) {
        if (servicesBuilder_ == null) {
          return services_.get(index);  } else {
          return servicesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Status responses of the salt master related services.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
           getServicesOrBuilderList() {
        if (servicesBuilder_ != null) {
          return servicesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(services_);
        }
      }
      /**
       * <pre>
       * Status responses of the salt master related services.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder addServicesBuilder() {
        return getServicesFieldBuilder().addBuilder(
            com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Status responses of the salt master related services.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder addServicesBuilder(
          int index) {
        return getServicesFieldBuilder().addBuilder(
            index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.getDefaultInstance());
      }
      /**
       * <pre>
       * Status responses of the salt master related services.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.ServiceStatus services = 1;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder> 
           getServicesBuilderList() {
        return getServicesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder> 
          getServicesFieldBuilder() {
        if (servicesBuilder_ == null) {
          servicesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatus.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ServiceStatusOrBuilder>(
                  services_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          services_ = null;
        }
        return servicesBuilder_;
      }

      private long timestamp_ ;
      /**
       * <pre>
       * Timestamp of the salt master health report.
       * </pre>
       *
       * <code>int64 timestamp = 2;</code>
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       * Timestamp of the salt master health report.
       * </pre>
       *
       * <code>int64 timestamp = 2;</code>
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Timestamp of the salt master health report.
       * </pre>
       *
       * <code>int64 timestamp = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.SaltMasterHealth)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.SaltMasterHealth)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SaltMasterHealth>
        PARSER = new com.google.protobuf.AbstractParser<SaltMasterHealth>() {
      @java.lang.Override
      public SaltMasterHealth parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SaltMasterHealth> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SaltMasterHealth> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SaltMinionsHealthOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.SaltMinionsHealth)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Node specific status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
     */
    java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails> 
        getPingResponsesList();
    /**
     * <pre>
     * Node specific status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails getPingResponses(int index);
    /**
     * <pre>
     * Node specific status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
     */
    int getPingResponsesCount();
    /**
     * <pre>
     * Node specific status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
     */
    java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetailsOrBuilder> 
        getPingResponsesOrBuilderList();
    /**
     * <pre>
     * Node specific status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetailsOrBuilder getPingResponsesOrBuilder(
        int index);

    /**
     * <pre>
     * Timestamp of the salt minion health report.
     * </pre>
     *
     * <code>int64 timestamp = 2;</code>
     * @return The timestamp.
     */
    long getTimestamp();
  }
  /**
   * <pre>
   * Holds salt minion health responses (gathered from salt ping responses).
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.SaltMinionsHealth}
   */
  public static final class SaltMinionsHealth extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.SaltMinionsHealth)
      SaltMinionsHealthOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SaltMinionsHealth.newBuilder() to construct.
    private SaltMinionsHealth(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SaltMinionsHealth() {
      pingResponses_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SaltMinionsHealth();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltMinionsHealth_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltMinionsHealth_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth.Builder.class);
    }

    public static final int PINGRESPONSES_FIELD_NUMBER = 1;
    private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails> pingResponses_;
    /**
     * <pre>
     * Node specific status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails> getPingResponsesList() {
      return pingResponses_;
    }
    /**
     * <pre>
     * Node specific status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetailsOrBuilder> 
        getPingResponsesOrBuilderList() {
      return pingResponses_;
    }
    /**
     * <pre>
     * Node specific status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
     */
    @java.lang.Override
    public int getPingResponsesCount() {
      return pingResponses_.size();
    }
    /**
     * <pre>
     * Node specific status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails getPingResponses(int index) {
      return pingResponses_.get(index);
    }
    /**
     * <pre>
     * Node specific status response.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetailsOrBuilder getPingResponsesOrBuilder(
        int index) {
      return pingResponses_.get(index);
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 2;
    private long timestamp_;
    /**
     * <pre>
     * Timestamp of the salt minion health report.
     * </pre>
     *
     * <code>int64 timestamp = 2;</code>
     * @return The timestamp.
     */
    @java.lang.Override
    public long getTimestamp() {
      return timestamp_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < pingResponses_.size(); i++) {
        output.writeMessage(1, pingResponses_.get(i));
      }
      if (timestamp_ != 0L) {
        output.writeInt64(2, timestamp_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < pingResponses_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, pingResponses_.get(i));
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, timestamp_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth) obj;

      if (!getPingResponsesList()
          .equals(other.getPingResponsesList())) return false;
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getPingResponsesCount() > 0) {
        hash = (37 * hash) + PINGRESPONSES_FIELD_NUMBER;
        hash = (53 * hash) + getPingResponsesList().hashCode();
      }
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds salt minion health responses (gathered from salt ping responses).
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.SaltMinionsHealth}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.SaltMinionsHealth)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealthOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltMinionsHealth_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltMinionsHealth_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (pingResponsesBuilder_ == null) {
          pingResponses_ = java.util.Collections.emptyList();
        } else {
          pingResponses_ = null;
          pingResponsesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        timestamp_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltMinionsHealth_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth(this);
        int from_bitField0_ = bitField0_;
        if (pingResponsesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            pingResponses_ = java.util.Collections.unmodifiableList(pingResponses_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.pingResponses_ = pingResponses_;
        } else {
          result.pingResponses_ = pingResponsesBuilder_.build();
        }
        result.timestamp_ = timestamp_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth.getDefaultInstance()) return this;
        if (pingResponsesBuilder_ == null) {
          if (!other.pingResponses_.isEmpty()) {
            if (pingResponses_.isEmpty()) {
              pingResponses_ = other.pingResponses_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensurePingResponsesIsMutable();
              pingResponses_.addAll(other.pingResponses_);
            }
            onChanged();
          }
        } else {
          if (!other.pingResponses_.isEmpty()) {
            if (pingResponsesBuilder_.isEmpty()) {
              pingResponsesBuilder_.dispose();
              pingResponsesBuilder_ = null;
              pingResponses_ = other.pingResponses_;
              bitField0_ = (bitField0_ & ~0x00000001);
              pingResponsesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getPingResponsesFieldBuilder() : null;
            } else {
              pingResponsesBuilder_.addAllMessages(other.pingResponses_);
            }
          }
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails m =
                    input.readMessage(
                        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.parser(),
                        extensionRegistry);
                if (pingResponsesBuilder_ == null) {
                  ensurePingResponsesIsMutable();
                  pingResponses_.add(m);
                } else {
                  pingResponsesBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 16: {
                timestamp_ = input.readInt64();

                break;
              } // case 16
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails> pingResponses_ =
        java.util.Collections.emptyList();
      private void ensurePingResponsesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          pingResponses_ = new java.util.ArrayList<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails>(pingResponses_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetailsOrBuilder> pingResponsesBuilder_;

      /**
       * <pre>
       * Node specific status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails> getPingResponsesList() {
        if (pingResponsesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(pingResponses_);
        } else {
          return pingResponsesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Node specific status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
       */
      public int getPingResponsesCount() {
        if (pingResponsesBuilder_ == null) {
          return pingResponses_.size();
        } else {
          return pingResponsesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Node specific status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails getPingResponses(int index) {
        if (pingResponsesBuilder_ == null) {
          return pingResponses_.get(index);
        } else {
          return pingResponsesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Node specific status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
       */
      public Builder setPingResponses(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails value) {
        if (pingResponsesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePingResponsesIsMutable();
          pingResponses_.set(index, value);
          onChanged();
        } else {
          pingResponsesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Node specific status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
       */
      public Builder setPingResponses(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.Builder builderForValue) {
        if (pingResponsesBuilder_ == null) {
          ensurePingResponsesIsMutable();
          pingResponses_.set(index, builderForValue.build());
          onChanged();
        } else {
          pingResponsesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Node specific status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
       */
      public Builder addPingResponses(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails value) {
        if (pingResponsesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePingResponsesIsMutable();
          pingResponses_.add(value);
          onChanged();
        } else {
          pingResponsesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Node specific status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
       */
      public Builder addPingResponses(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails value) {
        if (pingResponsesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePingResponsesIsMutable();
          pingResponses_.add(index, value);
          onChanged();
        } else {
          pingResponsesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Node specific status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
       */
      public Builder addPingResponses(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.Builder builderForValue) {
        if (pingResponsesBuilder_ == null) {
          ensurePingResponsesIsMutable();
          pingResponses_.add(builderForValue.build());
          onChanged();
        } else {
          pingResponsesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Node specific status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
       */
      public Builder addPingResponses(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.Builder builderForValue) {
        if (pingResponsesBuilder_ == null) {
          ensurePingResponsesIsMutable();
          pingResponses_.add(index, builderForValue.build());
          onChanged();
        } else {
          pingResponsesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Node specific status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
       */
      public Builder addAllPingResponses(
          java.lang.Iterable<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails> values) {
        if (pingResponsesBuilder_ == null) {
          ensurePingResponsesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, pingResponses_);
          onChanged();
        } else {
          pingResponsesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Node specific status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
       */
      public Builder clearPingResponses() {
        if (pingResponsesBuilder_ == null) {
          pingResponses_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          pingResponsesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Node specific status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
       */
      public Builder removePingResponses(int index) {
        if (pingResponsesBuilder_ == null) {
          ensurePingResponsesIsMutable();
          pingResponses_.remove(index);
          onChanged();
        } else {
          pingResponsesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Node specific status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.Builder getPingResponsesBuilder(
          int index) {
        return getPingResponsesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Node specific status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetailsOrBuilder getPingResponsesOrBuilder(
          int index) {
        if (pingResponsesBuilder_ == null) {
          return pingResponses_.get(index);  } else {
          return pingResponsesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Node specific status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
       */
      public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetailsOrBuilder> 
           getPingResponsesOrBuilderList() {
        if (pingResponsesBuilder_ != null) {
          return pingResponsesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(pingResponses_);
        }
      }
      /**
       * <pre>
       * Node specific status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.Builder addPingResponsesBuilder() {
        return getPingResponsesFieldBuilder().addBuilder(
            com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.getDefaultInstance());
      }
      /**
       * <pre>
       * Node specific status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.Builder addPingResponsesBuilder(
          int index) {
        return getPingResponsesFieldBuilder().addBuilder(
            index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.getDefaultInstance());
      }
      /**
       * <pre>
       * Node specific status response.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.StatusDetails pingResponses = 1;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.Builder> 
           getPingResponsesBuilderList() {
        return getPingResponsesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetailsOrBuilder> 
          getPingResponsesFieldBuilder() {
        if (pingResponsesBuilder_ == null) {
          pingResponsesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetailsOrBuilder>(
                  pingResponses_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          pingResponses_ = null;
        }
        return pingResponsesBuilder_;
      }

      private long timestamp_ ;
      /**
       * <pre>
       * Timestamp of the salt minion health report.
       * </pre>
       *
       * <code>int64 timestamp = 2;</code>
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       * Timestamp of the salt minion health report.
       * </pre>
       *
       * <code>int64 timestamp = 2;</code>
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Timestamp of the salt minion health report.
       * </pre>
       *
       * <code>int64 timestamp = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.SaltMinionsHealth)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.SaltMinionsHealth)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SaltMinionsHealth>
        PARSER = new com.google.protobuf.AbstractParser<SaltMinionsHealth>() {
      @java.lang.Override
      public SaltMinionsHealth parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SaltMinionsHealth> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SaltMinionsHealth> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SaltKeysOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.SaltKeys)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Unaccepted salt keys that are waiting to be accepted
     * </pre>
     *
     * <code>repeated string unaccepted = 1;</code>
     * @return A list containing the unaccepted.
     */
    java.util.List<java.lang.String>
        getUnacceptedList();
    /**
     * <pre>
     * Unaccepted salt keys that are waiting to be accepted
     * </pre>
     *
     * <code>repeated string unaccepted = 1;</code>
     * @return The count of unaccepted.
     */
    int getUnacceptedCount();
    /**
     * <pre>
     * Unaccepted salt keys that are waiting to be accepted
     * </pre>
     *
     * <code>repeated string unaccepted = 1;</code>
     * @param index The index of the element to return.
     * @return The unaccepted at the given index.
     */
    java.lang.String getUnaccepted(int index);
    /**
     * <pre>
     * Unaccepted salt keys that are waiting to be accepted
     * </pre>
     *
     * <code>repeated string unaccepted = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the unaccepted at the given index.
     */
    com.google.protobuf.ByteString
        getUnacceptedBytes(int index);

    /**
     * <pre>
     * Accepted salt keys
     * </pre>
     *
     * <code>repeated string accepted = 2;</code>
     * @return A list containing the accepted.
     */
    java.util.List<java.lang.String>
        getAcceptedList();
    /**
     * <pre>
     * Accepted salt keys
     * </pre>
     *
     * <code>repeated string accepted = 2;</code>
     * @return The count of accepted.
     */
    int getAcceptedCount();
    /**
     * <pre>
     * Accepted salt keys
     * </pre>
     *
     * <code>repeated string accepted = 2;</code>
     * @param index The index of the element to return.
     * @return The accepted at the given index.
     */
    java.lang.String getAccepted(int index);
    /**
     * <pre>
     * Accepted salt keys
     * </pre>
     *
     * <code>repeated string accepted = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the accepted at the given index.
     */
    com.google.protobuf.ByteString
        getAcceptedBytes(int index);

    /**
     * <pre>
     * Rejected salt keys, minion does not recive any communication from salt server
     * </pre>
     *
     * <code>repeated string rejected = 3;</code>
     * @return A list containing the rejected.
     */
    java.util.List<java.lang.String>
        getRejectedList();
    /**
     * <pre>
     * Rejected salt keys, minion does not recive any communication from salt server
     * </pre>
     *
     * <code>repeated string rejected = 3;</code>
     * @return The count of rejected.
     */
    int getRejectedCount();
    /**
     * <pre>
     * Rejected salt keys, minion does not recive any communication from salt server
     * </pre>
     *
     * <code>repeated string rejected = 3;</code>
     * @param index The index of the element to return.
     * @return The rejected at the given index.
     */
    java.lang.String getRejected(int index);
    /**
     * <pre>
     * Rejected salt keys, minion does not recive any communication from salt server
     * </pre>
     *
     * <code>repeated string rejected = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the rejected at the given index.
     */
    com.google.protobuf.ByteString
        getRejectedBytes(int index);

    /**
     * <pre>
     * Keys that are rejected automatically by master. (minions with duplicated ID, rebuilt minion or new keys were generated but old ones are not deleted yet)
     * </pre>
     *
     * <code>repeated string denied = 4;</code>
     * @return A list containing the denied.
     */
    java.util.List<java.lang.String>
        getDeniedList();
    /**
     * <pre>
     * Keys that are rejected automatically by master. (minions with duplicated ID, rebuilt minion or new keys were generated but old ones are not deleted yet)
     * </pre>
     *
     * <code>repeated string denied = 4;</code>
     * @return The count of denied.
     */
    int getDeniedCount();
    /**
     * <pre>
     * Keys that are rejected automatically by master. (minions with duplicated ID, rebuilt minion or new keys were generated but old ones are not deleted yet)
     * </pre>
     *
     * <code>repeated string denied = 4;</code>
     * @param index The index of the element to return.
     * @return The denied at the given index.
     */
    java.lang.String getDenied(int index);
    /**
     * <pre>
     * Keys that are rejected automatically by master. (minions with duplicated ID, rebuilt minion or new keys were generated but old ones are not deleted yet)
     * </pre>
     *
     * <code>repeated string denied = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the denied at the given index.
     */
    com.google.protobuf.ByteString
        getDeniedBytes(int index);

    /**
     * <pre>
     * Timestamp of the salt keys report.
     * </pre>
     *
     * <code>int64 timestamp = 5;</code>
     * @return The timestamp.
     */
    long getTimestamp();
  }
  /**
   * <pre>
   * Holds salt server public keys that are used for authentication.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.SaltKeys}
   */
  public static final class SaltKeys extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.SaltKeys)
      SaltKeysOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SaltKeys.newBuilder() to construct.
    private SaltKeys(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SaltKeys() {
      unaccepted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      accepted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      rejected_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      denied_ = com.google.protobuf.LazyStringArrayList.EMPTY;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SaltKeys();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltKeys_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltKeys_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys.Builder.class);
    }

    public static final int UNACCEPTED_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList unaccepted_;
    /**
     * <pre>
     * Unaccepted salt keys that are waiting to be accepted
     * </pre>
     *
     * <code>repeated string unaccepted = 1;</code>
     * @return A list containing the unaccepted.
     */
    public com.google.protobuf.ProtocolStringList
        getUnacceptedList() {
      return unaccepted_;
    }
    /**
     * <pre>
     * Unaccepted salt keys that are waiting to be accepted
     * </pre>
     *
     * <code>repeated string unaccepted = 1;</code>
     * @return The count of unaccepted.
     */
    public int getUnacceptedCount() {
      return unaccepted_.size();
    }
    /**
     * <pre>
     * Unaccepted salt keys that are waiting to be accepted
     * </pre>
     *
     * <code>repeated string unaccepted = 1;</code>
     * @param index The index of the element to return.
     * @return The unaccepted at the given index.
     */
    public java.lang.String getUnaccepted(int index) {
      return unaccepted_.get(index);
    }
    /**
     * <pre>
     * Unaccepted salt keys that are waiting to be accepted
     * </pre>
     *
     * <code>repeated string unaccepted = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the unaccepted at the given index.
     */
    public com.google.protobuf.ByteString
        getUnacceptedBytes(int index) {
      return unaccepted_.getByteString(index);
    }

    public static final int ACCEPTED_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList accepted_;
    /**
     * <pre>
     * Accepted salt keys
     * </pre>
     *
     * <code>repeated string accepted = 2;</code>
     * @return A list containing the accepted.
     */
    public com.google.protobuf.ProtocolStringList
        getAcceptedList() {
      return accepted_;
    }
    /**
     * <pre>
     * Accepted salt keys
     * </pre>
     *
     * <code>repeated string accepted = 2;</code>
     * @return The count of accepted.
     */
    public int getAcceptedCount() {
      return accepted_.size();
    }
    /**
     * <pre>
     * Accepted salt keys
     * </pre>
     *
     * <code>repeated string accepted = 2;</code>
     * @param index The index of the element to return.
     * @return The accepted at the given index.
     */
    public java.lang.String getAccepted(int index) {
      return accepted_.get(index);
    }
    /**
     * <pre>
     * Accepted salt keys
     * </pre>
     *
     * <code>repeated string accepted = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the accepted at the given index.
     */
    public com.google.protobuf.ByteString
        getAcceptedBytes(int index) {
      return accepted_.getByteString(index);
    }

    public static final int REJECTED_FIELD_NUMBER = 3;
    private com.google.protobuf.LazyStringList rejected_;
    /**
     * <pre>
     * Rejected salt keys, minion does not recive any communication from salt server
     * </pre>
     *
     * <code>repeated string rejected = 3;</code>
     * @return A list containing the rejected.
     */
    public com.google.protobuf.ProtocolStringList
        getRejectedList() {
      return rejected_;
    }
    /**
     * <pre>
     * Rejected salt keys, minion does not recive any communication from salt server
     * </pre>
     *
     * <code>repeated string rejected = 3;</code>
     * @return The count of rejected.
     */
    public int getRejectedCount() {
      return rejected_.size();
    }
    /**
     * <pre>
     * Rejected salt keys, minion does not recive any communication from salt server
     * </pre>
     *
     * <code>repeated string rejected = 3;</code>
     * @param index The index of the element to return.
     * @return The rejected at the given index.
     */
    public java.lang.String getRejected(int index) {
      return rejected_.get(index);
    }
    /**
     * <pre>
     * Rejected salt keys, minion does not recive any communication from salt server
     * </pre>
     *
     * <code>repeated string rejected = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the rejected at the given index.
     */
    public com.google.protobuf.ByteString
        getRejectedBytes(int index) {
      return rejected_.getByteString(index);
    }

    public static final int DENIED_FIELD_NUMBER = 4;
    private com.google.protobuf.LazyStringList denied_;
    /**
     * <pre>
     * Keys that are rejected automatically by master. (minions with duplicated ID, rebuilt minion or new keys were generated but old ones are not deleted yet)
     * </pre>
     *
     * <code>repeated string denied = 4;</code>
     * @return A list containing the denied.
     */
    public com.google.protobuf.ProtocolStringList
        getDeniedList() {
      return denied_;
    }
    /**
     * <pre>
     * Keys that are rejected automatically by master. (minions with duplicated ID, rebuilt minion or new keys were generated but old ones are not deleted yet)
     * </pre>
     *
     * <code>repeated string denied = 4;</code>
     * @return The count of denied.
     */
    public int getDeniedCount() {
      return denied_.size();
    }
    /**
     * <pre>
     * Keys that are rejected automatically by master. (minions with duplicated ID, rebuilt minion or new keys were generated but old ones are not deleted yet)
     * </pre>
     *
     * <code>repeated string denied = 4;</code>
     * @param index The index of the element to return.
     * @return The denied at the given index.
     */
    public java.lang.String getDenied(int index) {
      return denied_.get(index);
    }
    /**
     * <pre>
     * Keys that are rejected automatically by master. (minions with duplicated ID, rebuilt minion or new keys were generated but old ones are not deleted yet)
     * </pre>
     *
     * <code>repeated string denied = 4;</code>
     * @param index The index of the value to return.
     * @return The bytes of the denied at the given index.
     */
    public com.google.protobuf.ByteString
        getDeniedBytes(int index) {
      return denied_.getByteString(index);
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 5;
    private long timestamp_;
    /**
     * <pre>
     * Timestamp of the salt keys report.
     * </pre>
     *
     * <code>int64 timestamp = 5;</code>
     * @return The timestamp.
     */
    @java.lang.Override
    public long getTimestamp() {
      return timestamp_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < unaccepted_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, unaccepted_.getRaw(i));
      }
      for (int i = 0; i < accepted_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, accepted_.getRaw(i));
      }
      for (int i = 0; i < rejected_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, rejected_.getRaw(i));
      }
      for (int i = 0; i < denied_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, denied_.getRaw(i));
      }
      if (timestamp_ != 0L) {
        output.writeInt64(5, timestamp_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < unaccepted_.size(); i++) {
          dataSize += computeStringSizeNoTag(unaccepted_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getUnacceptedList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < accepted_.size(); i++) {
          dataSize += computeStringSizeNoTag(accepted_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getAcceptedList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < rejected_.size(); i++) {
          dataSize += computeStringSizeNoTag(rejected_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getRejectedList().size();
      }
      {
        int dataSize = 0;
        for (int i = 0; i < denied_.size(); i++) {
          dataSize += computeStringSizeNoTag(denied_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getDeniedList().size();
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, timestamp_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys) obj;

      if (!getUnacceptedList()
          .equals(other.getUnacceptedList())) return false;
      if (!getAcceptedList()
          .equals(other.getAcceptedList())) return false;
      if (!getRejectedList()
          .equals(other.getRejectedList())) return false;
      if (!getDeniedList()
          .equals(other.getDeniedList())) return false;
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getUnacceptedCount() > 0) {
        hash = (37 * hash) + UNACCEPTED_FIELD_NUMBER;
        hash = (53 * hash) + getUnacceptedList().hashCode();
      }
      if (getAcceptedCount() > 0) {
        hash = (37 * hash) + ACCEPTED_FIELD_NUMBER;
        hash = (53 * hash) + getAcceptedList().hashCode();
      }
      if (getRejectedCount() > 0) {
        hash = (37 * hash) + REJECTED_FIELD_NUMBER;
        hash = (53 * hash) + getRejectedList().hashCode();
      }
      if (getDeniedCount() > 0) {
        hash = (37 * hash) + DENIED_FIELD_NUMBER;
        hash = (53 * hash) + getDeniedList().hashCode();
      }
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds salt server public keys that are used for authentication.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.SaltKeys}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.SaltKeys)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeysOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltKeys_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltKeys_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        unaccepted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        accepted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        rejected_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        denied_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        timestamp_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltKeys_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          unaccepted_ = unaccepted_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.unaccepted_ = unaccepted_;
        if (((bitField0_ & 0x00000002) != 0)) {
          accepted_ = accepted_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.accepted_ = accepted_;
        if (((bitField0_ & 0x00000004) != 0)) {
          rejected_ = rejected_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000004);
        }
        result.rejected_ = rejected_;
        if (((bitField0_ & 0x00000008) != 0)) {
          denied_ = denied_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000008);
        }
        result.denied_ = denied_;
        result.timestamp_ = timestamp_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys.getDefaultInstance()) return this;
        if (!other.unaccepted_.isEmpty()) {
          if (unaccepted_.isEmpty()) {
            unaccepted_ = other.unaccepted_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureUnacceptedIsMutable();
            unaccepted_.addAll(other.unaccepted_);
          }
          onChanged();
        }
        if (!other.accepted_.isEmpty()) {
          if (accepted_.isEmpty()) {
            accepted_ = other.accepted_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureAcceptedIsMutable();
            accepted_.addAll(other.accepted_);
          }
          onChanged();
        }
        if (!other.rejected_.isEmpty()) {
          if (rejected_.isEmpty()) {
            rejected_ = other.rejected_;
            bitField0_ = (bitField0_ & ~0x00000004);
          } else {
            ensureRejectedIsMutable();
            rejected_.addAll(other.rejected_);
          }
          onChanged();
        }
        if (!other.denied_.isEmpty()) {
          if (denied_.isEmpty()) {
            denied_ = other.denied_;
            bitField0_ = (bitField0_ & ~0x00000008);
          } else {
            ensureDeniedIsMutable();
            denied_.addAll(other.denied_);
          }
          onChanged();
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureUnacceptedIsMutable();
                unaccepted_.add(s);
                break;
              } // case 10
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureAcceptedIsMutable();
                accepted_.add(s);
                break;
              } // case 18
              case 26: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureRejectedIsMutable();
                rejected_.add(s);
                break;
              } // case 26
              case 34: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureDeniedIsMutable();
                denied_.add(s);
                break;
              } // case 34
              case 40: {
                timestamp_ = input.readInt64();

                break;
              } // case 40
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList unaccepted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureUnacceptedIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          unaccepted_ = new com.google.protobuf.LazyStringArrayList(unaccepted_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * Unaccepted salt keys that are waiting to be accepted
       * </pre>
       *
       * <code>repeated string unaccepted = 1;</code>
       * @return A list containing the unaccepted.
       */
      public com.google.protobuf.ProtocolStringList
          getUnacceptedList() {
        return unaccepted_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Unaccepted salt keys that are waiting to be accepted
       * </pre>
       *
       * <code>repeated string unaccepted = 1;</code>
       * @return The count of unaccepted.
       */
      public int getUnacceptedCount() {
        return unaccepted_.size();
      }
      /**
       * <pre>
       * Unaccepted salt keys that are waiting to be accepted
       * </pre>
       *
       * <code>repeated string unaccepted = 1;</code>
       * @param index The index of the element to return.
       * @return The unaccepted at the given index.
       */
      public java.lang.String getUnaccepted(int index) {
        return unaccepted_.get(index);
      }
      /**
       * <pre>
       * Unaccepted salt keys that are waiting to be accepted
       * </pre>
       *
       * <code>repeated string unaccepted = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the unaccepted at the given index.
       */
      public com.google.protobuf.ByteString
          getUnacceptedBytes(int index) {
        return unaccepted_.getByteString(index);
      }
      /**
       * <pre>
       * Unaccepted salt keys that are waiting to be accepted
       * </pre>
       *
       * <code>repeated string unaccepted = 1;</code>
       * @param index The index to set the value at.
       * @param value The unaccepted to set.
       * @return This builder for chaining.
       */
      public Builder setUnaccepted(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureUnacceptedIsMutable();
        unaccepted_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Unaccepted salt keys that are waiting to be accepted
       * </pre>
       *
       * <code>repeated string unaccepted = 1;</code>
       * @param value The unaccepted to add.
       * @return This builder for chaining.
       */
      public Builder addUnaccepted(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureUnacceptedIsMutable();
        unaccepted_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Unaccepted salt keys that are waiting to be accepted
       * </pre>
       *
       * <code>repeated string unaccepted = 1;</code>
       * @param values The unaccepted to add.
       * @return This builder for chaining.
       */
      public Builder addAllUnaccepted(
          java.lang.Iterable<java.lang.String> values) {
        ensureUnacceptedIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, unaccepted_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Unaccepted salt keys that are waiting to be accepted
       * </pre>
       *
       * <code>repeated string unaccepted = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearUnaccepted() {
        unaccepted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Unaccepted salt keys that are waiting to be accepted
       * </pre>
       *
       * <code>repeated string unaccepted = 1;</code>
       * @param value The bytes of the unaccepted to add.
       * @return This builder for chaining.
       */
      public Builder addUnacceptedBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureUnacceptedIsMutable();
        unaccepted_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList accepted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureAcceptedIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          accepted_ = new com.google.protobuf.LazyStringArrayList(accepted_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       * Accepted salt keys
       * </pre>
       *
       * <code>repeated string accepted = 2;</code>
       * @return A list containing the accepted.
       */
      public com.google.protobuf.ProtocolStringList
          getAcceptedList() {
        return accepted_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Accepted salt keys
       * </pre>
       *
       * <code>repeated string accepted = 2;</code>
       * @return The count of accepted.
       */
      public int getAcceptedCount() {
        return accepted_.size();
      }
      /**
       * <pre>
       * Accepted salt keys
       * </pre>
       *
       * <code>repeated string accepted = 2;</code>
       * @param index The index of the element to return.
       * @return The accepted at the given index.
       */
      public java.lang.String getAccepted(int index) {
        return accepted_.get(index);
      }
      /**
       * <pre>
       * Accepted salt keys
       * </pre>
       *
       * <code>repeated string accepted = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the accepted at the given index.
       */
      public com.google.protobuf.ByteString
          getAcceptedBytes(int index) {
        return accepted_.getByteString(index);
      }
      /**
       * <pre>
       * Accepted salt keys
       * </pre>
       *
       * <code>repeated string accepted = 2;</code>
       * @param index The index to set the value at.
       * @param value The accepted to set.
       * @return This builder for chaining.
       */
      public Builder setAccepted(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAcceptedIsMutable();
        accepted_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Accepted salt keys
       * </pre>
       *
       * <code>repeated string accepted = 2;</code>
       * @param value The accepted to add.
       * @return This builder for chaining.
       */
      public Builder addAccepted(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureAcceptedIsMutable();
        accepted_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Accepted salt keys
       * </pre>
       *
       * <code>repeated string accepted = 2;</code>
       * @param values The accepted to add.
       * @return This builder for chaining.
       */
      public Builder addAllAccepted(
          java.lang.Iterable<java.lang.String> values) {
        ensureAcceptedIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, accepted_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Accepted salt keys
       * </pre>
       *
       * <code>repeated string accepted = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearAccepted() {
        accepted_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Accepted salt keys
       * </pre>
       *
       * <code>repeated string accepted = 2;</code>
       * @param value The bytes of the accepted to add.
       * @return This builder for chaining.
       */
      public Builder addAcceptedBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureAcceptedIsMutable();
        accepted_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList rejected_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureRejectedIsMutable() {
        if (!((bitField0_ & 0x00000004) != 0)) {
          rejected_ = new com.google.protobuf.LazyStringArrayList(rejected_);
          bitField0_ |= 0x00000004;
         }
      }
      /**
       * <pre>
       * Rejected salt keys, minion does not recive any communication from salt server
       * </pre>
       *
       * <code>repeated string rejected = 3;</code>
       * @return A list containing the rejected.
       */
      public com.google.protobuf.ProtocolStringList
          getRejectedList() {
        return rejected_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Rejected salt keys, minion does not recive any communication from salt server
       * </pre>
       *
       * <code>repeated string rejected = 3;</code>
       * @return The count of rejected.
       */
      public int getRejectedCount() {
        return rejected_.size();
      }
      /**
       * <pre>
       * Rejected salt keys, minion does not recive any communication from salt server
       * </pre>
       *
       * <code>repeated string rejected = 3;</code>
       * @param index The index of the element to return.
       * @return The rejected at the given index.
       */
      public java.lang.String getRejected(int index) {
        return rejected_.get(index);
      }
      /**
       * <pre>
       * Rejected salt keys, minion does not recive any communication from salt server
       * </pre>
       *
       * <code>repeated string rejected = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the rejected at the given index.
       */
      public com.google.protobuf.ByteString
          getRejectedBytes(int index) {
        return rejected_.getByteString(index);
      }
      /**
       * <pre>
       * Rejected salt keys, minion does not recive any communication from salt server
       * </pre>
       *
       * <code>repeated string rejected = 3;</code>
       * @param index The index to set the value at.
       * @param value The rejected to set.
       * @return This builder for chaining.
       */
      public Builder setRejected(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRejectedIsMutable();
        rejected_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Rejected salt keys, minion does not recive any communication from salt server
       * </pre>
       *
       * <code>repeated string rejected = 3;</code>
       * @param value The rejected to add.
       * @return This builder for chaining.
       */
      public Builder addRejected(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureRejectedIsMutable();
        rejected_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Rejected salt keys, minion does not recive any communication from salt server
       * </pre>
       *
       * <code>repeated string rejected = 3;</code>
       * @param values The rejected to add.
       * @return This builder for chaining.
       */
      public Builder addAllRejected(
          java.lang.Iterable<java.lang.String> values) {
        ensureRejectedIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, rejected_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Rejected salt keys, minion does not recive any communication from salt server
       * </pre>
       *
       * <code>repeated string rejected = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearRejected() {
        rejected_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000004);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Rejected salt keys, minion does not recive any communication from salt server
       * </pre>
       *
       * <code>repeated string rejected = 3;</code>
       * @param value The bytes of the rejected to add.
       * @return This builder for chaining.
       */
      public Builder addRejectedBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureRejectedIsMutable();
        rejected_.add(value);
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList denied_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDeniedIsMutable() {
        if (!((bitField0_ & 0x00000008) != 0)) {
          denied_ = new com.google.protobuf.LazyStringArrayList(denied_);
          bitField0_ |= 0x00000008;
         }
      }
      /**
       * <pre>
       * Keys that are rejected automatically by master. (minions with duplicated ID, rebuilt minion or new keys were generated but old ones are not deleted yet)
       * </pre>
       *
       * <code>repeated string denied = 4;</code>
       * @return A list containing the denied.
       */
      public com.google.protobuf.ProtocolStringList
          getDeniedList() {
        return denied_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Keys that are rejected automatically by master. (minions with duplicated ID, rebuilt minion or new keys were generated but old ones are not deleted yet)
       * </pre>
       *
       * <code>repeated string denied = 4;</code>
       * @return The count of denied.
       */
      public int getDeniedCount() {
        return denied_.size();
      }
      /**
       * <pre>
       * Keys that are rejected automatically by master. (minions with duplicated ID, rebuilt minion or new keys were generated but old ones are not deleted yet)
       * </pre>
       *
       * <code>repeated string denied = 4;</code>
       * @param index The index of the element to return.
       * @return The denied at the given index.
       */
      public java.lang.String getDenied(int index) {
        return denied_.get(index);
      }
      /**
       * <pre>
       * Keys that are rejected automatically by master. (minions with duplicated ID, rebuilt minion or new keys were generated but old ones are not deleted yet)
       * </pre>
       *
       * <code>repeated string denied = 4;</code>
       * @param index The index of the value to return.
       * @return The bytes of the denied at the given index.
       */
      public com.google.protobuf.ByteString
          getDeniedBytes(int index) {
        return denied_.getByteString(index);
      }
      /**
       * <pre>
       * Keys that are rejected automatically by master. (minions with duplicated ID, rebuilt minion or new keys were generated but old ones are not deleted yet)
       * </pre>
       *
       * <code>repeated string denied = 4;</code>
       * @param index The index to set the value at.
       * @param value The denied to set.
       * @return This builder for chaining.
       */
      public Builder setDenied(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDeniedIsMutable();
        denied_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Keys that are rejected automatically by master. (minions with duplicated ID, rebuilt minion or new keys were generated but old ones are not deleted yet)
       * </pre>
       *
       * <code>repeated string denied = 4;</code>
       * @param value The denied to add.
       * @return This builder for chaining.
       */
      public Builder addDenied(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDeniedIsMutable();
        denied_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Keys that are rejected automatically by master. (minions with duplicated ID, rebuilt minion or new keys were generated but old ones are not deleted yet)
       * </pre>
       *
       * <code>repeated string denied = 4;</code>
       * @param values The denied to add.
       * @return This builder for chaining.
       */
      public Builder addAllDenied(
          java.lang.Iterable<java.lang.String> values) {
        ensureDeniedIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, denied_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Keys that are rejected automatically by master. (minions with duplicated ID, rebuilt minion or new keys were generated but old ones are not deleted yet)
       * </pre>
       *
       * <code>repeated string denied = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearDenied() {
        denied_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000008);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Keys that are rejected automatically by master. (minions with duplicated ID, rebuilt minion or new keys were generated but old ones are not deleted yet)
       * </pre>
       *
       * <code>repeated string denied = 4;</code>
       * @param value The bytes of the denied to add.
       * @return This builder for chaining.
       */
      public Builder addDeniedBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDeniedIsMutable();
        denied_.add(value);
        onChanged();
        return this;
      }

      private long timestamp_ ;
      /**
       * <pre>
       * Timestamp of the salt keys report.
       * </pre>
       *
       * <code>int64 timestamp = 5;</code>
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       * Timestamp of the salt keys report.
       * </pre>
       *
       * <code>int64 timestamp = 5;</code>
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Timestamp of the salt keys report.
       * </pre>
       *
       * <code>int64 timestamp = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.SaltKeys)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.SaltKeys)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SaltKeys>
        PARSER = new com.google.protobuf.AbstractParser<SaltKeys>() {
      @java.lang.Override
      public SaltKeys parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SaltKeys> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SaltKeys> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SaltHealthReportOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.SaltHealthReport)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Represents salt master health (salt services) response.
     * </pre>
     *
     * <code>.cdp.telemetry.SaltMasterHealth master = 1;</code>
     * @return Whether the master field is set.
     */
    boolean hasMaster();
    /**
     * <pre>
     * Represents salt master health (salt services) response.
     * </pre>
     *
     * <code>.cdp.telemetry.SaltMasterHealth master = 1;</code>
     * @return The master.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth getMaster();
    /**
     * <pre>
     * Represents salt master health (salt services) response.
     * </pre>
     *
     * <code>.cdp.telemetry.SaltMasterHealth master = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealthOrBuilder getMasterOrBuilder();

    /**
     * <pre>
     * Represents salt minion health responses.
     * </pre>
     *
     * <code>.cdp.telemetry.SaltMinionsHealth minions = 2;</code>
     * @return Whether the minions field is set.
     */
    boolean hasMinions();
    /**
     * <pre>
     * Represents salt minion health responses.
     * </pre>
     *
     * <code>.cdp.telemetry.SaltMinionsHealth minions = 2;</code>
     * @return The minions.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth getMinions();
    /**
     * <pre>
     * Represents salt minion health responses.
     * </pre>
     *
     * <code>.cdp.telemetry.SaltMinionsHealth minions = 2;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealthOrBuilder getMinionsOrBuilder();

    /**
     * <pre>
     * Timestam of the salt health report.
     * </pre>
     *
     * <code>int64 timestamp = 3;</code>
     * @return The timestamp.
     */
    long getTimestamp();

    /**
     * <pre>
     * Salt public keys - hold by salt master for minions.
     * </pre>
     *
     * <code>.cdp.telemetry.SaltKeys keys = 4;</code>
     * @return Whether the keys field is set.
     */
    boolean hasKeys();
    /**
     * <pre>
     * Salt public keys - hold by salt master for minions.
     * </pre>
     *
     * <code>.cdp.telemetry.SaltKeys keys = 4;</code>
     * @return The keys.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys getKeys();
    /**
     * <pre>
     * Salt public keys - hold by salt master for minions.
     * </pre>
     *
     * <code>.cdp.telemetry.SaltKeys keys = 4;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeysOrBuilder getKeysOrBuilder();

    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 5;</code>
     * @return The cdpTelemetryVersion.
     */
    java.lang.String getCdpTelemetryVersion();
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 5;</code>
     * @return The bytes for cdpTelemetryVersion.
     */
    com.google.protobuf.ByteString
        getCdpTelemetryVersionBytes();
  }
  /**
   * <pre>
   * Holds both salt master and salt minions health data.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.SaltHealthReport}
   */
  public static final class SaltHealthReport extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.SaltHealthReport)
      SaltHealthReportOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SaltHealthReport.newBuilder() to construct.
    private SaltHealthReport(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SaltHealthReport() {
      cdpTelemetryVersion_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SaltHealthReport();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltHealthReport_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltHealthReport_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport.Builder.class);
    }

    public static final int MASTER_FIELD_NUMBER = 1;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth master_;
    /**
     * <pre>
     * Represents salt master health (salt services) response.
     * </pre>
     *
     * <code>.cdp.telemetry.SaltMasterHealth master = 1;</code>
     * @return Whether the master field is set.
     */
    @java.lang.Override
    public boolean hasMaster() {
      return master_ != null;
    }
    /**
     * <pre>
     * Represents salt master health (salt services) response.
     * </pre>
     *
     * <code>.cdp.telemetry.SaltMasterHealth master = 1;</code>
     * @return The master.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth getMaster() {
      return master_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth.getDefaultInstance() : master_;
    }
    /**
     * <pre>
     * Represents salt master health (salt services) response.
     * </pre>
     *
     * <code>.cdp.telemetry.SaltMasterHealth master = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealthOrBuilder getMasterOrBuilder() {
      return getMaster();
    }

    public static final int MINIONS_FIELD_NUMBER = 2;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth minions_;
    /**
     * <pre>
     * Represents salt minion health responses.
     * </pre>
     *
     * <code>.cdp.telemetry.SaltMinionsHealth minions = 2;</code>
     * @return Whether the minions field is set.
     */
    @java.lang.Override
    public boolean hasMinions() {
      return minions_ != null;
    }
    /**
     * <pre>
     * Represents salt minion health responses.
     * </pre>
     *
     * <code>.cdp.telemetry.SaltMinionsHealth minions = 2;</code>
     * @return The minions.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth getMinions() {
      return minions_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth.getDefaultInstance() : minions_;
    }
    /**
     * <pre>
     * Represents salt minion health responses.
     * </pre>
     *
     * <code>.cdp.telemetry.SaltMinionsHealth minions = 2;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealthOrBuilder getMinionsOrBuilder() {
      return getMinions();
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 3;
    private long timestamp_;
    /**
     * <pre>
     * Timestam of the salt health report.
     * </pre>
     *
     * <code>int64 timestamp = 3;</code>
     * @return The timestamp.
     */
    @java.lang.Override
    public long getTimestamp() {
      return timestamp_;
    }

    public static final int KEYS_FIELD_NUMBER = 4;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys keys_;
    /**
     * <pre>
     * Salt public keys - hold by salt master for minions.
     * </pre>
     *
     * <code>.cdp.telemetry.SaltKeys keys = 4;</code>
     * @return Whether the keys field is set.
     */
    @java.lang.Override
    public boolean hasKeys() {
      return keys_ != null;
    }
    /**
     * <pre>
     * Salt public keys - hold by salt master for minions.
     * </pre>
     *
     * <code>.cdp.telemetry.SaltKeys keys = 4;</code>
     * @return The keys.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys getKeys() {
      return keys_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys.getDefaultInstance() : keys_;
    }
    /**
     * <pre>
     * Salt public keys - hold by salt master for minions.
     * </pre>
     *
     * <code>.cdp.telemetry.SaltKeys keys = 4;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeysOrBuilder getKeysOrBuilder() {
      return getKeys();
    }

    public static final int CDPTELEMETRYVERSION_FIELD_NUMBER = 5;
    private volatile java.lang.Object cdpTelemetryVersion_;
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 5;</code>
     * @return The cdpTelemetryVersion.
     */
    @java.lang.Override
    public java.lang.String getCdpTelemetryVersion() {
      java.lang.Object ref = cdpTelemetryVersion_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        cdpTelemetryVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 5;</code>
     * @return The bytes for cdpTelemetryVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCdpTelemetryVersionBytes() {
      java.lang.Object ref = cdpTelemetryVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        cdpTelemetryVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (master_ != null) {
        output.writeMessage(1, getMaster());
      }
      if (minions_ != null) {
        output.writeMessage(2, getMinions());
      }
      if (timestamp_ != 0L) {
        output.writeInt64(3, timestamp_);
      }
      if (keys_ != null) {
        output.writeMessage(4, getKeys());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cdpTelemetryVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, cdpTelemetryVersion_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (master_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getMaster());
      }
      if (minions_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getMinions());
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, timestamp_);
      }
      if (keys_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getKeys());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cdpTelemetryVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, cdpTelemetryVersion_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport) obj;

      if (hasMaster() != other.hasMaster()) return false;
      if (hasMaster()) {
        if (!getMaster()
            .equals(other.getMaster())) return false;
      }
      if (hasMinions() != other.hasMinions()) return false;
      if (hasMinions()) {
        if (!getMinions()
            .equals(other.getMinions())) return false;
      }
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (hasKeys() != other.hasKeys()) return false;
      if (hasKeys()) {
        if (!getKeys()
            .equals(other.getKeys())) return false;
      }
      if (!getCdpTelemetryVersion()
          .equals(other.getCdpTelemetryVersion())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasMaster()) {
        hash = (37 * hash) + MASTER_FIELD_NUMBER;
        hash = (53 * hash) + getMaster().hashCode();
      }
      if (hasMinions()) {
        hash = (37 * hash) + MINIONS_FIELD_NUMBER;
        hash = (53 * hash) + getMinions().hashCode();
      }
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      if (hasKeys()) {
        hash = (37 * hash) + KEYS_FIELD_NUMBER;
        hash = (53 * hash) + getKeys().hashCode();
      }
      hash = (37 * hash) + CDPTELEMETRYVERSION_FIELD_NUMBER;
      hash = (53 * hash) + getCdpTelemetryVersion().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds both salt master and salt minions health data.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.SaltHealthReport}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.SaltHealthReport)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReportOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltHealthReport_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltHealthReport_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (masterBuilder_ == null) {
          master_ = null;
        } else {
          master_ = null;
          masterBuilder_ = null;
        }
        if (minionsBuilder_ == null) {
          minions_ = null;
        } else {
          minions_ = null;
          minionsBuilder_ = null;
        }
        timestamp_ = 0L;

        if (keysBuilder_ == null) {
          keys_ = null;
        } else {
          keys_ = null;
          keysBuilder_ = null;
        }
        cdpTelemetryVersion_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SaltHealthReport_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport(this);
        if (masterBuilder_ == null) {
          result.master_ = master_;
        } else {
          result.master_ = masterBuilder_.build();
        }
        if (minionsBuilder_ == null) {
          result.minions_ = minions_;
        } else {
          result.minions_ = minionsBuilder_.build();
        }
        result.timestamp_ = timestamp_;
        if (keysBuilder_ == null) {
          result.keys_ = keys_;
        } else {
          result.keys_ = keysBuilder_.build();
        }
        result.cdpTelemetryVersion_ = cdpTelemetryVersion_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport.getDefaultInstance()) return this;
        if (other.hasMaster()) {
          mergeMaster(other.getMaster());
        }
        if (other.hasMinions()) {
          mergeMinions(other.getMinions());
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        if (other.hasKeys()) {
          mergeKeys(other.getKeys());
        }
        if (!other.getCdpTelemetryVersion().isEmpty()) {
          cdpTelemetryVersion_ = other.cdpTelemetryVersion_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getMasterFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getMinionsFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 18
              case 24: {
                timestamp_ = input.readInt64();

                break;
              } // case 24
              case 34: {
                input.readMessage(
                    getKeysFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 34
              case 42: {
                cdpTelemetryVersion_ = input.readStringRequireUtf8();

                break;
              } // case 42
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth master_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealthOrBuilder> masterBuilder_;
      /**
       * <pre>
       * Represents salt master health (salt services) response.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltMasterHealth master = 1;</code>
       * @return Whether the master field is set.
       */
      public boolean hasMaster() {
        return masterBuilder_ != null || master_ != null;
      }
      /**
       * <pre>
       * Represents salt master health (salt services) response.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltMasterHealth master = 1;</code>
       * @return The master.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth getMaster() {
        if (masterBuilder_ == null) {
          return master_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth.getDefaultInstance() : master_;
        } else {
          return masterBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Represents salt master health (salt services) response.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltMasterHealth master = 1;</code>
       */
      public Builder setMaster(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth value) {
        if (masterBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          master_ = value;
          onChanged();
        } else {
          masterBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Represents salt master health (salt services) response.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltMasterHealth master = 1;</code>
       */
      public Builder setMaster(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth.Builder builderForValue) {
        if (masterBuilder_ == null) {
          master_ = builderForValue.build();
          onChanged();
        } else {
          masterBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Represents salt master health (salt services) response.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltMasterHealth master = 1;</code>
       */
      public Builder mergeMaster(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth value) {
        if (masterBuilder_ == null) {
          if (master_ != null) {
            master_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth.newBuilder(master_).mergeFrom(value).buildPartial();
          } else {
            master_ = value;
          }
          onChanged();
        } else {
          masterBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Represents salt master health (salt services) response.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltMasterHealth master = 1;</code>
       */
      public Builder clearMaster() {
        if (masterBuilder_ == null) {
          master_ = null;
          onChanged();
        } else {
          master_ = null;
          masterBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Represents salt master health (salt services) response.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltMasterHealth master = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth.Builder getMasterBuilder() {
        
        onChanged();
        return getMasterFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Represents salt master health (salt services) response.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltMasterHealth master = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealthOrBuilder getMasterOrBuilder() {
        if (masterBuilder_ != null) {
          return masterBuilder_.getMessageOrBuilder();
        } else {
          return master_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth.getDefaultInstance() : master_;
        }
      }
      /**
       * <pre>
       * Represents salt master health (salt services) response.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltMasterHealth master = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealthOrBuilder> 
          getMasterFieldBuilder() {
        if (masterBuilder_ == null) {
          masterBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealth.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMasterHealthOrBuilder>(
                  getMaster(),
                  getParentForChildren(),
                  isClean());
          master_ = null;
        }
        return masterBuilder_;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth minions_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealthOrBuilder> minionsBuilder_;
      /**
       * <pre>
       * Represents salt minion health responses.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltMinionsHealth minions = 2;</code>
       * @return Whether the minions field is set.
       */
      public boolean hasMinions() {
        return minionsBuilder_ != null || minions_ != null;
      }
      /**
       * <pre>
       * Represents salt minion health responses.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltMinionsHealth minions = 2;</code>
       * @return The minions.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth getMinions() {
        if (minionsBuilder_ == null) {
          return minions_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth.getDefaultInstance() : minions_;
        } else {
          return minionsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Represents salt minion health responses.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltMinionsHealth minions = 2;</code>
       */
      public Builder setMinions(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth value) {
        if (minionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          minions_ = value;
          onChanged();
        } else {
          minionsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Represents salt minion health responses.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltMinionsHealth minions = 2;</code>
       */
      public Builder setMinions(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth.Builder builderForValue) {
        if (minionsBuilder_ == null) {
          minions_ = builderForValue.build();
          onChanged();
        } else {
          minionsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Represents salt minion health responses.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltMinionsHealth minions = 2;</code>
       */
      public Builder mergeMinions(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth value) {
        if (minionsBuilder_ == null) {
          if (minions_ != null) {
            minions_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth.newBuilder(minions_).mergeFrom(value).buildPartial();
          } else {
            minions_ = value;
          }
          onChanged();
        } else {
          minionsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Represents salt minion health responses.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltMinionsHealth minions = 2;</code>
       */
      public Builder clearMinions() {
        if (minionsBuilder_ == null) {
          minions_ = null;
          onChanged();
        } else {
          minions_ = null;
          minionsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Represents salt minion health responses.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltMinionsHealth minions = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth.Builder getMinionsBuilder() {
        
        onChanged();
        return getMinionsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Represents salt minion health responses.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltMinionsHealth minions = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealthOrBuilder getMinionsOrBuilder() {
        if (minionsBuilder_ != null) {
          return minionsBuilder_.getMessageOrBuilder();
        } else {
          return minions_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth.getDefaultInstance() : minions_;
        }
      }
      /**
       * <pre>
       * Represents salt minion health responses.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltMinionsHealth minions = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealthOrBuilder> 
          getMinionsFieldBuilder() {
        if (minionsBuilder_ == null) {
          minionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealth.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltMinionsHealthOrBuilder>(
                  getMinions(),
                  getParentForChildren(),
                  isClean());
          minions_ = null;
        }
        return minionsBuilder_;
      }

      private long timestamp_ ;
      /**
       * <pre>
       * Timestam of the salt health report.
       * </pre>
       *
       * <code>int64 timestamp = 3;</code>
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       * Timestam of the salt health report.
       * </pre>
       *
       * <code>int64 timestamp = 3;</code>
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Timestam of the salt health report.
       * </pre>
       *
       * <code>int64 timestamp = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys keys_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeysOrBuilder> keysBuilder_;
      /**
       * <pre>
       * Salt public keys - hold by salt master for minions.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltKeys keys = 4;</code>
       * @return Whether the keys field is set.
       */
      public boolean hasKeys() {
        return keysBuilder_ != null || keys_ != null;
      }
      /**
       * <pre>
       * Salt public keys - hold by salt master for minions.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltKeys keys = 4;</code>
       * @return The keys.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys getKeys() {
        if (keysBuilder_ == null) {
          return keys_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys.getDefaultInstance() : keys_;
        } else {
          return keysBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Salt public keys - hold by salt master for minions.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltKeys keys = 4;</code>
       */
      public Builder setKeys(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys value) {
        if (keysBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          keys_ = value;
          onChanged();
        } else {
          keysBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Salt public keys - hold by salt master for minions.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltKeys keys = 4;</code>
       */
      public Builder setKeys(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys.Builder builderForValue) {
        if (keysBuilder_ == null) {
          keys_ = builderForValue.build();
          onChanged();
        } else {
          keysBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Salt public keys - hold by salt master for minions.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltKeys keys = 4;</code>
       */
      public Builder mergeKeys(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys value) {
        if (keysBuilder_ == null) {
          if (keys_ != null) {
            keys_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys.newBuilder(keys_).mergeFrom(value).buildPartial();
          } else {
            keys_ = value;
          }
          onChanged();
        } else {
          keysBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Salt public keys - hold by salt master for minions.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltKeys keys = 4;</code>
       */
      public Builder clearKeys() {
        if (keysBuilder_ == null) {
          keys_ = null;
          onChanged();
        } else {
          keys_ = null;
          keysBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Salt public keys - hold by salt master for minions.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltKeys keys = 4;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys.Builder getKeysBuilder() {
        
        onChanged();
        return getKeysFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Salt public keys - hold by salt master for minions.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltKeys keys = 4;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeysOrBuilder getKeysOrBuilder() {
        if (keysBuilder_ != null) {
          return keysBuilder_.getMessageOrBuilder();
        } else {
          return keys_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys.getDefaultInstance() : keys_;
        }
      }
      /**
       * <pre>
       * Salt public keys - hold by salt master for minions.
       * </pre>
       *
       * <code>.cdp.telemetry.SaltKeys keys = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeysOrBuilder> 
          getKeysFieldBuilder() {
        if (keysBuilder_ == null) {
          keysBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeys.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltKeysOrBuilder>(
                  getKeys(),
                  getParentForChildren(),
                  isClean());
          keys_ = null;
        }
        return keysBuilder_;
      }

      private java.lang.Object cdpTelemetryVersion_ = "";
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 5;</code>
       * @return The cdpTelemetryVersion.
       */
      public java.lang.String getCdpTelemetryVersion() {
        java.lang.Object ref = cdpTelemetryVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          cdpTelemetryVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 5;</code>
       * @return The bytes for cdpTelemetryVersion.
       */
      public com.google.protobuf.ByteString
          getCdpTelemetryVersionBytes() {
        java.lang.Object ref = cdpTelemetryVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          cdpTelemetryVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 5;</code>
       * @param value The cdpTelemetryVersion to set.
       * @return This builder for chaining.
       */
      public Builder setCdpTelemetryVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        cdpTelemetryVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearCdpTelemetryVersion() {
        
        cdpTelemetryVersion_ = getDefaultInstance().getCdpTelemetryVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 5;</code>
       * @param value The bytes for cdpTelemetryVersion to set.
       * @return This builder for chaining.
       */
      public Builder setCdpTelemetryVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        cdpTelemetryVersion_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.SaltHealthReport)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.SaltHealthReport)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SaltHealthReport>
        PARSER = new com.google.protobuf.AbstractParser<SaltHealthReport>() {
      @java.lang.Override
      public SaltHealthReport parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SaltHealthReport> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SaltHealthReport> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SaltHealthReport getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface StatusDetailsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.StatusDetails)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * CDP nodename / hostname.
     * </pre>
     *
     * <code>string host = 1;</code>
     * @return The host.
     */
    java.lang.String getHost();
    /**
     * <pre>
     * CDP nodename / hostname.
     * </pre>
     *
     * <code>string host = 1;</code>
     * @return The bytes for host.
     */
    com.google.protobuf.ByteString
        getHostBytes();

    /**
     * <pre>
     * Response status.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus status = 2;</code>
     * @return The enum numeric value on the wire for status.
     */
    int getStatusValue();
    /**
     * <pre>
     * Response status.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus status = 2;</code>
     * @return The status.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getStatus();

    /**
     * <pre>
     * Additional helper message for the status (optional).
     * </pre>
     *
     * <code>string statusReason = 3;</code>
     * @return The statusReason.
     */
    java.lang.String getStatusReason();
    /**
     * <pre>
     * Additional helper message for the status (optional).
     * </pre>
     *
     * <code>string statusReason = 3;</code>
     * @return The bytes for statusReason.
     */
    com.google.protobuf.ByteString
        getStatusReasonBytes();

    /**
     * <pre>
     * Timestaamp of the service statuses for the specific node.
     * </pre>
     *
     * <code>int64 timestamp = 4;</code>
     * @return The timestamp.
     */
    long getTimestamp();
  }
  /**
   * <pre>
   * Holds common node status fields
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.StatusDetails}
   */
  public static final class StatusDetails extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.StatusDetails)
      StatusDetailsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use StatusDetails.newBuilder() to construct.
    private StatusDetails(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private StatusDetails() {
      host_ = "";
      status_ = 0;
      statusReason_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new StatusDetails();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_StatusDetails_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_StatusDetails_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.Builder.class);
    }

    public static final int HOST_FIELD_NUMBER = 1;
    private volatile java.lang.Object host_;
    /**
     * <pre>
     * CDP nodename / hostname.
     * </pre>
     *
     * <code>string host = 1;</code>
     * @return The host.
     */
    @java.lang.Override
    public java.lang.String getHost() {
      java.lang.Object ref = host_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        host_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * CDP nodename / hostname.
     * </pre>
     *
     * <code>string host = 1;</code>
     * @return The bytes for host.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getHostBytes() {
      java.lang.Object ref = host_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        host_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int STATUS_FIELD_NUMBER = 2;
    private int status_;
    /**
     * <pre>
     * Response status.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus status = 2;</code>
     * @return The enum numeric value on the wire for status.
     */
    @java.lang.Override public int getStatusValue() {
      return status_;
    }
    /**
     * <pre>
     * Response status.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus status = 2;</code>
     * @return The status.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getStatus() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(status_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    public static final int STATUSREASON_FIELD_NUMBER = 3;
    private volatile java.lang.Object statusReason_;
    /**
     * <pre>
     * Additional helper message for the status (optional).
     * </pre>
     *
     * <code>string statusReason = 3;</code>
     * @return The statusReason.
     */
    @java.lang.Override
    public java.lang.String getStatusReason() {
      java.lang.Object ref = statusReason_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        statusReason_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Additional helper message for the status (optional).
     * </pre>
     *
     * <code>string statusReason = 3;</code>
     * @return The bytes for statusReason.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStatusReasonBytes() {
      java.lang.Object ref = statusReason_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        statusReason_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 4;
    private long timestamp_;
    /**
     * <pre>
     * Timestaamp of the service statuses for the specific node.
     * </pre>
     *
     * <code>int64 timestamp = 4;</code>
     * @return The timestamp.
     */
    @java.lang.Override
    public long getTimestamp() {
      return timestamp_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(host_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, host_);
      }
      if (status_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(2, status_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(statusReason_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, statusReason_);
      }
      if (timestamp_ != 0L) {
        output.writeInt64(4, timestamp_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(host_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, host_);
      }
      if (status_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(2, status_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(statusReason_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, statusReason_);
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, timestamp_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails) obj;

      if (!getHost()
          .equals(other.getHost())) return false;
      if (status_ != other.status_) return false;
      if (!getStatusReason()
          .equals(other.getStatusReason())) return false;
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + HOST_FIELD_NUMBER;
      hash = (53 * hash) + getHost().hashCode();
      hash = (37 * hash) + STATUS_FIELD_NUMBER;
      hash = (53 * hash) + status_;
      hash = (37 * hash) + STATUSREASON_FIELD_NUMBER;
      hash = (53 * hash) + getStatusReason().hashCode();
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds common node status fields
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.StatusDetails}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.StatusDetails)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetailsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_StatusDetails_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_StatusDetails_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        host_ = "";

        status_ = 0;

        statusReason_ = "";

        timestamp_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_StatusDetails_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails(this);
        result.host_ = host_;
        result.status_ = status_;
        result.statusReason_ = statusReason_;
        result.timestamp_ = timestamp_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails.getDefaultInstance()) return this;
        if (!other.getHost().isEmpty()) {
          host_ = other.host_;
          onChanged();
        }
        if (other.status_ != 0) {
          setStatusValue(other.getStatusValue());
        }
        if (!other.getStatusReason().isEmpty()) {
          statusReason_ = other.statusReason_;
          onChanged();
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                host_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 16: {
                status_ = input.readEnum();

                break;
              } // case 16
              case 26: {
                statusReason_ = input.readStringRequireUtf8();

                break;
              } // case 26
              case 32: {
                timestamp_ = input.readInt64();

                break;
              } // case 32
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private java.lang.Object host_ = "";
      /**
       * <pre>
       * CDP nodename / hostname.
       * </pre>
       *
       * <code>string host = 1;</code>
       * @return The host.
       */
      public java.lang.String getHost() {
        java.lang.Object ref = host_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          host_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * CDP nodename / hostname.
       * </pre>
       *
       * <code>string host = 1;</code>
       * @return The bytes for host.
       */
      public com.google.protobuf.ByteString
          getHostBytes() {
        java.lang.Object ref = host_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          host_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * CDP nodename / hostname.
       * </pre>
       *
       * <code>string host = 1;</code>
       * @param value The host to set.
       * @return This builder for chaining.
       */
      public Builder setHost(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        host_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * CDP nodename / hostname.
       * </pre>
       *
       * <code>string host = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearHost() {
        
        host_ = getDefaultInstance().getHost();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * CDP nodename / hostname.
       * </pre>
       *
       * <code>string host = 1;</code>
       * @param value The bytes for host to set.
       * @return This builder for chaining.
       */
      public Builder setHostBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        host_ = value;
        onChanged();
        return this;
      }

      private int status_ = 0;
      /**
       * <pre>
       * Response status.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus status = 2;</code>
       * @return The enum numeric value on the wire for status.
       */
      @java.lang.Override public int getStatusValue() {
        return status_;
      }
      /**
       * <pre>
       * Response status.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus status = 2;</code>
       * @param value The enum numeric value on the wire for status to set.
       * @return This builder for chaining.
       */
      public Builder setStatusValue(int value) {
        
        status_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Response status.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus status = 2;</code>
       * @return The status.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getStatus() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(status_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Response status.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus status = 2;</code>
       * @param value The status to set.
       * @return This builder for chaining.
       */
      public Builder setStatus(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        status_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Response status.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus status = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatus() {
        
        status_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object statusReason_ = "";
      /**
       * <pre>
       * Additional helper message for the status (optional).
       * </pre>
       *
       * <code>string statusReason = 3;</code>
       * @return The statusReason.
       */
      public java.lang.String getStatusReason() {
        java.lang.Object ref = statusReason_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          statusReason_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Additional helper message for the status (optional).
       * </pre>
       *
       * <code>string statusReason = 3;</code>
       * @return The bytes for statusReason.
       */
      public com.google.protobuf.ByteString
          getStatusReasonBytes() {
        java.lang.Object ref = statusReason_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          statusReason_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Additional helper message for the status (optional).
       * </pre>
       *
       * <code>string statusReason = 3;</code>
       * @param value The statusReason to set.
       * @return This builder for chaining.
       */
      public Builder setStatusReason(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        statusReason_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Additional helper message for the status (optional).
       * </pre>
       *
       * <code>string statusReason = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearStatusReason() {
        
        statusReason_ = getDefaultInstance().getStatusReason();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Additional helper message for the status (optional).
       * </pre>
       *
       * <code>string statusReason = 3;</code>
       * @param value The bytes for statusReason to set.
       * @return This builder for chaining.
       */
      public Builder setStatusReasonBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        statusReason_ = value;
        onChanged();
        return this;
      }

      private long timestamp_ ;
      /**
       * <pre>
       * Timestaamp of the service statuses for the specific node.
       * </pre>
       *
       * <code>int64 timestamp = 4;</code>
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       * Timestaamp of the service statuses for the specific node.
       * </pre>
       *
       * <code>int64 timestamp = 4;</code>
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Timestaamp of the service statuses for the specific node.
       * </pre>
       *
       * <code>int64 timestamp = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.StatusDetails)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.StatusDetails)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<StatusDetails>
        PARSER = new com.google.protobuf.AbstractParser<StatusDetails>() {
      @java.lang.Override
      public StatusDetails parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<StatusDetails> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<StatusDetails> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.StatusDetails getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MeteringDetailsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.MeteringDetails)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Databus related configuration data.
     * </pre>
     *
     * <code>map&lt;string, string&gt; databusDetails = 1;</code>
     */
    int getDatabusDetailsCount();
    /**
     * <pre>
     * Databus related configuration data.
     * </pre>
     *
     * <code>map&lt;string, string&gt; databusDetails = 1;</code>
     */
    boolean containsDatabusDetails(
        java.lang.String key);
    /**
     * Use {@link #getDatabusDetailsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getDatabusDetails();
    /**
     * <pre>
     * Databus related configuration data.
     * </pre>
     *
     * <code>map&lt;string, string&gt; databusDetails = 1;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getDatabusDetailsMap();
    /**
     * <pre>
     * Databus related configuration data.
     * </pre>
     *
     * <code>map&lt;string, string&gt; databusDetails = 1;</code>
     */

    /* nullable */
java.lang.String getDatabusDetailsOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * <pre>
     * Databus related configuration data.
     * </pre>
     *
     * <code>map&lt;string, string&gt; databusDetails = 1;</code>
     */

    java.lang.String getDatabusDetailsOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * Heartbeat event related configuration data.
     * </pre>
     *
     * <code>map&lt;string, string&gt; eventDetails = 2;</code>
     */
    int getEventDetailsCount();
    /**
     * <pre>
     * Heartbeat event related configuration data.
     * </pre>
     *
     * <code>map&lt;string, string&gt; eventDetails = 2;</code>
     */
    boolean containsEventDetails(
        java.lang.String key);
    /**
     * Use {@link #getEventDetailsMap()} instead.
     */
    @java.lang.Deprecated
    java.util.Map<java.lang.String, java.lang.String>
    getEventDetails();
    /**
     * <pre>
     * Heartbeat event related configuration data.
     * </pre>
     *
     * <code>map&lt;string, string&gt; eventDetails = 2;</code>
     */
    java.util.Map<java.lang.String, java.lang.String>
    getEventDetailsMap();
    /**
     * <pre>
     * Heartbeat event related configuration data.
     * </pre>
     *
     * <code>map&lt;string, string&gt; eventDetails = 2;</code>
     */

    /* nullable */
java.lang.String getEventDetailsOrDefault(
        java.lang.String key,
        /* nullable */
java.lang.String defaultValue);
    /**
     * <pre>
     * Heartbeat event related configuration data.
     * </pre>
     *
     * <code>map&lt;string, string&gt; eventDetails = 2;</code>
     */

    java.lang.String getEventDetailsOrThrow(
        java.lang.String key);

    /**
     * <pre>
     * First heartbeat event timestamp from the heartbeat event JSON file.
     * </pre>
     *
     * <code>int64 firstHeartbeatEventTimestamp = 3;</code>
     * @return The firstHeartbeatEventTimestamp.
     */
    long getFirstHeartbeatEventTimestamp();

    /**
     * <pre>
     * System boot time - can be useful to figure out from what time should the heartbeats generate data.
     * </pre>
     *
     * <code>int64 systemBootTimestamp = 4;</code>
     * @return The systemBootTimestamp.
     */
    long getSystemBootTimestamp();

    /**
     * <pre>
     * Number of lines in the heartbeat event JSON file.
     * </pre>
     *
     * <code>int32 heartbeatEventCount = 5;</code>
     * @return The heartbeatEventCount.
     */
    int getHeartbeatEventCount();

    /**
     * <pre>
     * Status of the heartbeat agent.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus heartbeatAgentRunning = 6;</code>
     * @return The enum numeric value on the wire for heartbeatAgentRunning.
     */
    int getHeartbeatAgentRunningValue();
    /**
     * <pre>
     * Status of the heartbeat agent.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus heartbeatAgentRunning = 6;</code>
     * @return The heartbeatAgentRunning.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getHeartbeatAgentRunning();

    /**
     * <pre>
     * Status (existence) of the generated heartbeat config.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus heartbeatConfig = 7;</code>
     * @return The enum numeric value on the wire for heartbeatConfig.
     */
    int getHeartbeatConfigValue();
    /**
     * <pre>
     * Status (existence) of the generated heartbeat config.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus heartbeatConfig = 7;</code>
     * @return The heartbeatConfig.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getHeartbeatConfig();

    /**
     * <pre>
     * Databus API availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus databusReachable = 8;</code>
     * @return The enum numeric value on the wire for databusReachable.
     */
    int getDatabusReachableValue();
    /**
     * <pre>
     * Databus API availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus databusReachable = 8;</code>
     * @return The databusReachable.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getDatabusReachable();

    /**
     * <pre>
     * Databus status check result.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus databusTestResponse = 9;</code>
     * @return The enum numeric value on the wire for databusTestResponse.
     */
    int getDatabusTestResponseValue();
    /**
     * <pre>
     * Databus status check result.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus databusTestResponse = 9;</code>
     * @return The databusTestResponse.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getDatabusTestResponse();

    /**
     * <pre>
     * Status (existence) of the generated heartbeat config.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus loggingAgentConfig = 10;</code>
     * @return The enum numeric value on the wire for loggingAgentConfig.
     */
    int getLoggingAgentConfigValue();
    /**
     * <pre>
     * Status (existence) of the generated heartbeat config.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus loggingAgentConfig = 10;</code>
     * @return The loggingAgentConfig.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getLoggingAgentConfig();

    /**
     * <pre>
     * Status of the logging agent service.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus loggingServiceRunning = 11;</code>
     * @return The enum numeric value on the wire for loggingServiceRunning.
     */
    int getLoggingServiceRunningValue();
    /**
     * <pre>
     * Status of the logging agent service.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus loggingServiceRunning = 11;</code>
     * @return The loggingServiceRunning.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getLoggingServiceRunning();

    /**
     * <pre>
     * Timestamp of metering status report.
     * </pre>
     *
     * <code>int64 timestamp = 12;</code>
     * @return The timestamp.
     */
    long getTimestamp();

    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 13;</code>
     * @return The cdpTelemetryVersion.
     */
    java.lang.String getCdpTelemetryVersion();
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 13;</code>
     * @return The bytes for cdpTelemetryVersion.
     */
    com.google.protobuf.ByteString
        getCdpTelemetryVersionBytes();
  }
  /**
   * <pre>
   * CDP billing related details.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.MeteringDetails}
   */
  public static final class MeteringDetails extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.MeteringDetails)
      MeteringDetailsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MeteringDetails.newBuilder() to construct.
    private MeteringDetails(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MeteringDetails() {
      heartbeatAgentRunning_ = 0;
      heartbeatConfig_ = 0;
      databusReachable_ = 0;
      databusTestResponse_ = 0;
      loggingAgentConfig_ = 0;
      loggingServiceRunning_ = 0;
      cdpTelemetryVersion_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new MeteringDetails();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_MeteringDetails_descriptor;
    }

    @SuppressWarnings({"rawtypes"})
    @java.lang.Override
    protected com.google.protobuf.MapField internalGetMapField(
        int number) {
      switch (number) {
        case 1:
          return internalGetDatabusDetails();
        case 2:
          return internalGetEventDetails();
        default:
          throw new RuntimeException(
              "Invalid map field number: " + number);
      }
    }
    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_MeteringDetails_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails.Builder.class);
    }

    public static final int DATABUSDETAILS_FIELD_NUMBER = 1;
    private static final class DatabusDetailsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_MeteringDetails_DatabusDetailsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> databusDetails_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetDatabusDetails() {
      if (databusDetails_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            DatabusDetailsDefaultEntryHolder.defaultEntry);
      }
      return databusDetails_;
    }

    public int getDatabusDetailsCount() {
      return internalGetDatabusDetails().getMap().size();
    }
    /**
     * <pre>
     * Databus related configuration data.
     * </pre>
     *
     * <code>map&lt;string, string&gt; databusDetails = 1;</code>
     */

    @java.lang.Override
    public boolean containsDatabusDetails(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetDatabusDetails().getMap().containsKey(key);
    }
    /**
     * Use {@link #getDatabusDetailsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getDatabusDetails() {
      return getDatabusDetailsMap();
    }
    /**
     * <pre>
     * Databus related configuration data.
     * </pre>
     *
     * <code>map&lt;string, string&gt; databusDetails = 1;</code>
     */
    @java.lang.Override

    public java.util.Map<java.lang.String, java.lang.String> getDatabusDetailsMap() {
      return internalGetDatabusDetails().getMap();
    }
    /**
     * <pre>
     * Databus related configuration data.
     * </pre>
     *
     * <code>map&lt;string, string&gt; databusDetails = 1;</code>
     */
    @java.lang.Override

    public java.lang.String getDatabusDetailsOrDefault(
        java.lang.String key,
        java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetDatabusDetails().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Databus related configuration data.
     * </pre>
     *
     * <code>map&lt;string, string&gt; databusDetails = 1;</code>
     */
    @java.lang.Override

    public java.lang.String getDatabusDetailsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetDatabusDetails().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int EVENTDETAILS_FIELD_NUMBER = 2;
    private static final class EventDetailsDefaultEntryHolder {
      static final com.google.protobuf.MapEntry<
          java.lang.String, java.lang.String> defaultEntry =
              com.google.protobuf.MapEntry
              .<java.lang.String, java.lang.String>newDefaultInstance(
                  com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_MeteringDetails_EventDetailsEntry_descriptor, 
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "",
                  com.google.protobuf.WireFormat.FieldType.STRING,
                  "");
    }
    private com.google.protobuf.MapField<
        java.lang.String, java.lang.String> eventDetails_;
    private com.google.protobuf.MapField<java.lang.String, java.lang.String>
    internalGetEventDetails() {
      if (eventDetails_ == null) {
        return com.google.protobuf.MapField.emptyMapField(
            EventDetailsDefaultEntryHolder.defaultEntry);
      }
      return eventDetails_;
    }

    public int getEventDetailsCount() {
      return internalGetEventDetails().getMap().size();
    }
    /**
     * <pre>
     * Heartbeat event related configuration data.
     * </pre>
     *
     * <code>map&lt;string, string&gt; eventDetails = 2;</code>
     */

    @java.lang.Override
    public boolean containsEventDetails(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      return internalGetEventDetails().getMap().containsKey(key);
    }
    /**
     * Use {@link #getEventDetailsMap()} instead.
     */
    @java.lang.Override
    @java.lang.Deprecated
    public java.util.Map<java.lang.String, java.lang.String> getEventDetails() {
      return getEventDetailsMap();
    }
    /**
     * <pre>
     * Heartbeat event related configuration data.
     * </pre>
     *
     * <code>map&lt;string, string&gt; eventDetails = 2;</code>
     */
    @java.lang.Override

    public java.util.Map<java.lang.String, java.lang.String> getEventDetailsMap() {
      return internalGetEventDetails().getMap();
    }
    /**
     * <pre>
     * Heartbeat event related configuration data.
     * </pre>
     *
     * <code>map&lt;string, string&gt; eventDetails = 2;</code>
     */
    @java.lang.Override

    public java.lang.String getEventDetailsOrDefault(
        java.lang.String key,
        java.lang.String defaultValue) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetEventDetails().getMap();
      return map.containsKey(key) ? map.get(key) : defaultValue;
    }
    /**
     * <pre>
     * Heartbeat event related configuration data.
     * </pre>
     *
     * <code>map&lt;string, string&gt; eventDetails = 2;</code>
     */
    @java.lang.Override

    public java.lang.String getEventDetailsOrThrow(
        java.lang.String key) {
      if (key == null) { throw new NullPointerException("map key"); }
      java.util.Map<java.lang.String, java.lang.String> map =
          internalGetEventDetails().getMap();
      if (!map.containsKey(key)) {
        throw new java.lang.IllegalArgumentException();
      }
      return map.get(key);
    }

    public static final int FIRSTHEARTBEATEVENTTIMESTAMP_FIELD_NUMBER = 3;
    private long firstHeartbeatEventTimestamp_;
    /**
     * <pre>
     * First heartbeat event timestamp from the heartbeat event JSON file.
     * </pre>
     *
     * <code>int64 firstHeartbeatEventTimestamp = 3;</code>
     * @return The firstHeartbeatEventTimestamp.
     */
    @java.lang.Override
    public long getFirstHeartbeatEventTimestamp() {
      return firstHeartbeatEventTimestamp_;
    }

    public static final int SYSTEMBOOTTIMESTAMP_FIELD_NUMBER = 4;
    private long systemBootTimestamp_;
    /**
     * <pre>
     * System boot time - can be useful to figure out from what time should the heartbeats generate data.
     * </pre>
     *
     * <code>int64 systemBootTimestamp = 4;</code>
     * @return The systemBootTimestamp.
     */
    @java.lang.Override
    public long getSystemBootTimestamp() {
      return systemBootTimestamp_;
    }

    public static final int HEARTBEATEVENTCOUNT_FIELD_NUMBER = 5;
    private int heartbeatEventCount_;
    /**
     * <pre>
     * Number of lines in the heartbeat event JSON file.
     * </pre>
     *
     * <code>int32 heartbeatEventCount = 5;</code>
     * @return The heartbeatEventCount.
     */
    @java.lang.Override
    public int getHeartbeatEventCount() {
      return heartbeatEventCount_;
    }

    public static final int HEARTBEATAGENTRUNNING_FIELD_NUMBER = 6;
    private int heartbeatAgentRunning_;
    /**
     * <pre>
     * Status of the heartbeat agent.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus heartbeatAgentRunning = 6;</code>
     * @return The enum numeric value on the wire for heartbeatAgentRunning.
     */
    @java.lang.Override public int getHeartbeatAgentRunningValue() {
      return heartbeatAgentRunning_;
    }
    /**
     * <pre>
     * Status of the heartbeat agent.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus heartbeatAgentRunning = 6;</code>
     * @return The heartbeatAgentRunning.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getHeartbeatAgentRunning() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(heartbeatAgentRunning_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    public static final int HEARTBEATCONFIG_FIELD_NUMBER = 7;
    private int heartbeatConfig_;
    /**
     * <pre>
     * Status (existence) of the generated heartbeat config.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus heartbeatConfig = 7;</code>
     * @return The enum numeric value on the wire for heartbeatConfig.
     */
    @java.lang.Override public int getHeartbeatConfigValue() {
      return heartbeatConfig_;
    }
    /**
     * <pre>
     * Status (existence) of the generated heartbeat config.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus heartbeatConfig = 7;</code>
     * @return The heartbeatConfig.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getHeartbeatConfig() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(heartbeatConfig_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    public static final int DATABUSREACHABLE_FIELD_NUMBER = 8;
    private int databusReachable_;
    /**
     * <pre>
     * Databus API availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus databusReachable = 8;</code>
     * @return The enum numeric value on the wire for databusReachable.
     */
    @java.lang.Override public int getDatabusReachableValue() {
      return databusReachable_;
    }
    /**
     * <pre>
     * Databus API availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus databusReachable = 8;</code>
     * @return The databusReachable.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getDatabusReachable() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(databusReachable_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    public static final int DATABUSTESTRESPONSE_FIELD_NUMBER = 9;
    private int databusTestResponse_;
    /**
     * <pre>
     * Databus status check result.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus databusTestResponse = 9;</code>
     * @return The enum numeric value on the wire for databusTestResponse.
     */
    @java.lang.Override public int getDatabusTestResponseValue() {
      return databusTestResponse_;
    }
    /**
     * <pre>
     * Databus status check result.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus databusTestResponse = 9;</code>
     * @return The databusTestResponse.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getDatabusTestResponse() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(databusTestResponse_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    public static final int LOGGINGAGENTCONFIG_FIELD_NUMBER = 10;
    private int loggingAgentConfig_;
    /**
     * <pre>
     * Status (existence) of the generated heartbeat config.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus loggingAgentConfig = 10;</code>
     * @return The enum numeric value on the wire for loggingAgentConfig.
     */
    @java.lang.Override public int getLoggingAgentConfigValue() {
      return loggingAgentConfig_;
    }
    /**
     * <pre>
     * Status (existence) of the generated heartbeat config.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus loggingAgentConfig = 10;</code>
     * @return The loggingAgentConfig.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getLoggingAgentConfig() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(loggingAgentConfig_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    public static final int LOGGINGSERVICERUNNING_FIELD_NUMBER = 11;
    private int loggingServiceRunning_;
    /**
     * <pre>
     * Status of the logging agent service.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus loggingServiceRunning = 11;</code>
     * @return The enum numeric value on the wire for loggingServiceRunning.
     */
    @java.lang.Override public int getLoggingServiceRunningValue() {
      return loggingServiceRunning_;
    }
    /**
     * <pre>
     * Status of the logging agent service.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus loggingServiceRunning = 11;</code>
     * @return The loggingServiceRunning.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getLoggingServiceRunning() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(loggingServiceRunning_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 12;
    private long timestamp_;
    /**
     * <pre>
     * Timestamp of metering status report.
     * </pre>
     *
     * <code>int64 timestamp = 12;</code>
     * @return The timestamp.
     */
    @java.lang.Override
    public long getTimestamp() {
      return timestamp_;
    }

    public static final int CDPTELEMETRYVERSION_FIELD_NUMBER = 13;
    private volatile java.lang.Object cdpTelemetryVersion_;
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 13;</code>
     * @return The cdpTelemetryVersion.
     */
    @java.lang.Override
    public java.lang.String getCdpTelemetryVersion() {
      java.lang.Object ref = cdpTelemetryVersion_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        cdpTelemetryVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 13;</code>
     * @return The bytes for cdpTelemetryVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCdpTelemetryVersionBytes() {
      java.lang.Object ref = cdpTelemetryVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        cdpTelemetryVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetDatabusDetails(),
          DatabusDetailsDefaultEntryHolder.defaultEntry,
          1);
      com.google.protobuf.GeneratedMessageV3
        .serializeStringMapTo(
          output,
          internalGetEventDetails(),
          EventDetailsDefaultEntryHolder.defaultEntry,
          2);
      if (firstHeartbeatEventTimestamp_ != 0L) {
        output.writeInt64(3, firstHeartbeatEventTimestamp_);
      }
      if (systemBootTimestamp_ != 0L) {
        output.writeInt64(4, systemBootTimestamp_);
      }
      if (heartbeatEventCount_ != 0) {
        output.writeInt32(5, heartbeatEventCount_);
      }
      if (heartbeatAgentRunning_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(6, heartbeatAgentRunning_);
      }
      if (heartbeatConfig_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(7, heartbeatConfig_);
      }
      if (databusReachable_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(8, databusReachable_);
      }
      if (databusTestResponse_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(9, databusTestResponse_);
      }
      if (loggingAgentConfig_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(10, loggingAgentConfig_);
      }
      if (loggingServiceRunning_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(11, loggingServiceRunning_);
      }
      if (timestamp_ != 0L) {
        output.writeInt64(12, timestamp_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cdpTelemetryVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 13, cdpTelemetryVersion_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetDatabusDetails().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        databusDetails__ = DatabusDetailsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(1, databusDetails__);
      }
      for (java.util.Map.Entry<java.lang.String, java.lang.String> entry
           : internalGetEventDetails().getMap().entrySet()) {
        com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
        eventDetails__ = EventDetailsDefaultEntryHolder.defaultEntry.newBuilderForType()
            .setKey(entry.getKey())
            .setValue(entry.getValue())
            .build();
        size += com.google.protobuf.CodedOutputStream
            .computeMessageSize(2, eventDetails__);
      }
      if (firstHeartbeatEventTimestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, firstHeartbeatEventTimestamp_);
      }
      if (systemBootTimestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, systemBootTimestamp_);
      }
      if (heartbeatEventCount_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, heartbeatEventCount_);
      }
      if (heartbeatAgentRunning_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(6, heartbeatAgentRunning_);
      }
      if (heartbeatConfig_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(7, heartbeatConfig_);
      }
      if (databusReachable_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(8, databusReachable_);
      }
      if (databusTestResponse_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(9, databusTestResponse_);
      }
      if (loggingAgentConfig_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(10, loggingAgentConfig_);
      }
      if (loggingServiceRunning_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(11, loggingServiceRunning_);
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(12, timestamp_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cdpTelemetryVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(13, cdpTelemetryVersion_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails) obj;

      if (!internalGetDatabusDetails().equals(
          other.internalGetDatabusDetails())) return false;
      if (!internalGetEventDetails().equals(
          other.internalGetEventDetails())) return false;
      if (getFirstHeartbeatEventTimestamp()
          != other.getFirstHeartbeatEventTimestamp()) return false;
      if (getSystemBootTimestamp()
          != other.getSystemBootTimestamp()) return false;
      if (getHeartbeatEventCount()
          != other.getHeartbeatEventCount()) return false;
      if (heartbeatAgentRunning_ != other.heartbeatAgentRunning_) return false;
      if (heartbeatConfig_ != other.heartbeatConfig_) return false;
      if (databusReachable_ != other.databusReachable_) return false;
      if (databusTestResponse_ != other.databusTestResponse_) return false;
      if (loggingAgentConfig_ != other.loggingAgentConfig_) return false;
      if (loggingServiceRunning_ != other.loggingServiceRunning_) return false;
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (!getCdpTelemetryVersion()
          .equals(other.getCdpTelemetryVersion())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (!internalGetDatabusDetails().getMap().isEmpty()) {
        hash = (37 * hash) + DATABUSDETAILS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetDatabusDetails().hashCode();
      }
      if (!internalGetEventDetails().getMap().isEmpty()) {
        hash = (37 * hash) + EVENTDETAILS_FIELD_NUMBER;
        hash = (53 * hash) + internalGetEventDetails().hashCode();
      }
      hash = (37 * hash) + FIRSTHEARTBEATEVENTTIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getFirstHeartbeatEventTimestamp());
      hash = (37 * hash) + SYSTEMBOOTTIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getSystemBootTimestamp());
      hash = (37 * hash) + HEARTBEATEVENTCOUNT_FIELD_NUMBER;
      hash = (53 * hash) + getHeartbeatEventCount();
      hash = (37 * hash) + HEARTBEATAGENTRUNNING_FIELD_NUMBER;
      hash = (53 * hash) + heartbeatAgentRunning_;
      hash = (37 * hash) + HEARTBEATCONFIG_FIELD_NUMBER;
      hash = (53 * hash) + heartbeatConfig_;
      hash = (37 * hash) + DATABUSREACHABLE_FIELD_NUMBER;
      hash = (53 * hash) + databusReachable_;
      hash = (37 * hash) + DATABUSTESTRESPONSE_FIELD_NUMBER;
      hash = (53 * hash) + databusTestResponse_;
      hash = (37 * hash) + LOGGINGAGENTCONFIG_FIELD_NUMBER;
      hash = (53 * hash) + loggingAgentConfig_;
      hash = (37 * hash) + LOGGINGSERVICERUNNING_FIELD_NUMBER;
      hash = (53 * hash) + loggingServiceRunning_;
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      hash = (37 * hash) + CDPTELEMETRYVERSION_FIELD_NUMBER;
      hash = (53 * hash) + getCdpTelemetryVersion().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CDP billing related details.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.MeteringDetails}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.MeteringDetails)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetailsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_MeteringDetails_descriptor;
      }

      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetDatabusDetails();
          case 2:
            return internalGetEventDetails();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @SuppressWarnings({"rawtypes"})
      protected com.google.protobuf.MapField internalGetMutableMapField(
          int number) {
        switch (number) {
          case 1:
            return internalGetMutableDatabusDetails();
          case 2:
            return internalGetMutableEventDetails();
          default:
            throw new RuntimeException(
                "Invalid map field number: " + number);
        }
      }
      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_MeteringDetails_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        internalGetMutableDatabusDetails().clear();
        internalGetMutableEventDetails().clear();
        firstHeartbeatEventTimestamp_ = 0L;

        systemBootTimestamp_ = 0L;

        heartbeatEventCount_ = 0;

        heartbeatAgentRunning_ = 0;

        heartbeatConfig_ = 0;

        databusReachable_ = 0;

        databusTestResponse_ = 0;

        loggingAgentConfig_ = 0;

        loggingServiceRunning_ = 0;

        timestamp_ = 0L;

        cdpTelemetryVersion_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_MeteringDetails_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails(this);
        int from_bitField0_ = bitField0_;
        result.databusDetails_ = internalGetDatabusDetails();
        result.databusDetails_.makeImmutable();
        result.eventDetails_ = internalGetEventDetails();
        result.eventDetails_.makeImmutable();
        result.firstHeartbeatEventTimestamp_ = firstHeartbeatEventTimestamp_;
        result.systemBootTimestamp_ = systemBootTimestamp_;
        result.heartbeatEventCount_ = heartbeatEventCount_;
        result.heartbeatAgentRunning_ = heartbeatAgentRunning_;
        result.heartbeatConfig_ = heartbeatConfig_;
        result.databusReachable_ = databusReachable_;
        result.databusTestResponse_ = databusTestResponse_;
        result.loggingAgentConfig_ = loggingAgentConfig_;
        result.loggingServiceRunning_ = loggingServiceRunning_;
        result.timestamp_ = timestamp_;
        result.cdpTelemetryVersion_ = cdpTelemetryVersion_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails.getDefaultInstance()) return this;
        internalGetMutableDatabusDetails().mergeFrom(
            other.internalGetDatabusDetails());
        internalGetMutableEventDetails().mergeFrom(
            other.internalGetEventDetails());
        if (other.getFirstHeartbeatEventTimestamp() != 0L) {
          setFirstHeartbeatEventTimestamp(other.getFirstHeartbeatEventTimestamp());
        }
        if (other.getSystemBootTimestamp() != 0L) {
          setSystemBootTimestamp(other.getSystemBootTimestamp());
        }
        if (other.getHeartbeatEventCount() != 0) {
          setHeartbeatEventCount(other.getHeartbeatEventCount());
        }
        if (other.heartbeatAgentRunning_ != 0) {
          setHeartbeatAgentRunningValue(other.getHeartbeatAgentRunningValue());
        }
        if (other.heartbeatConfig_ != 0) {
          setHeartbeatConfigValue(other.getHeartbeatConfigValue());
        }
        if (other.databusReachable_ != 0) {
          setDatabusReachableValue(other.getDatabusReachableValue());
        }
        if (other.databusTestResponse_ != 0) {
          setDatabusTestResponseValue(other.getDatabusTestResponseValue());
        }
        if (other.loggingAgentConfig_ != 0) {
          setLoggingAgentConfigValue(other.getLoggingAgentConfigValue());
        }
        if (other.loggingServiceRunning_ != 0) {
          setLoggingServiceRunningValue(other.getLoggingServiceRunningValue());
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        if (!other.getCdpTelemetryVersion().isEmpty()) {
          cdpTelemetryVersion_ = other.cdpTelemetryVersion_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                databusDetails__ = input.readMessage(
                    DatabusDetailsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableDatabusDetails().getMutableMap().put(
                    databusDetails__.getKey(), databusDetails__.getValue());
                break;
              } // case 10
              case 18: {
                com.google.protobuf.MapEntry<java.lang.String, java.lang.String>
                eventDetails__ = input.readMessage(
                    EventDetailsDefaultEntryHolder.defaultEntry.getParserForType(), extensionRegistry);
                internalGetMutableEventDetails().getMutableMap().put(
                    eventDetails__.getKey(), eventDetails__.getValue());
                break;
              } // case 18
              case 24: {
                firstHeartbeatEventTimestamp_ = input.readInt64();

                break;
              } // case 24
              case 32: {
                systemBootTimestamp_ = input.readInt64();

                break;
              } // case 32
              case 40: {
                heartbeatEventCount_ = input.readInt32();

                break;
              } // case 40
              case 48: {
                heartbeatAgentRunning_ = input.readEnum();

                break;
              } // case 48
              case 56: {
                heartbeatConfig_ = input.readEnum();

                break;
              } // case 56
              case 64: {
                databusReachable_ = input.readEnum();

                break;
              } // case 64
              case 72: {
                databusTestResponse_ = input.readEnum();

                break;
              } // case 72
              case 80: {
                loggingAgentConfig_ = input.readEnum();

                break;
              } // case 80
              case 88: {
                loggingServiceRunning_ = input.readEnum();

                break;
              } // case 88
              case 96: {
                timestamp_ = input.readInt64();

                break;
              } // case 96
              case 106: {
                cdpTelemetryVersion_ = input.readStringRequireUtf8();

                break;
              } // case 106
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> databusDetails_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetDatabusDetails() {
        if (databusDetails_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              DatabusDetailsDefaultEntryHolder.defaultEntry);
        }
        return databusDetails_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetMutableDatabusDetails() {
        onChanged();;
        if (databusDetails_ == null) {
          databusDetails_ = com.google.protobuf.MapField.newMapField(
              DatabusDetailsDefaultEntryHolder.defaultEntry);
        }
        if (!databusDetails_.isMutable()) {
          databusDetails_ = databusDetails_.copy();
        }
        return databusDetails_;
      }

      public int getDatabusDetailsCount() {
        return internalGetDatabusDetails().getMap().size();
      }
      /**
       * <pre>
       * Databus related configuration data.
       * </pre>
       *
       * <code>map&lt;string, string&gt; databusDetails = 1;</code>
       */

      @java.lang.Override
      public boolean containsDatabusDetails(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetDatabusDetails().getMap().containsKey(key);
      }
      /**
       * Use {@link #getDatabusDetailsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getDatabusDetails() {
        return getDatabusDetailsMap();
      }
      /**
       * <pre>
       * Databus related configuration data.
       * </pre>
       *
       * <code>map&lt;string, string&gt; databusDetails = 1;</code>
       */
      @java.lang.Override

      public java.util.Map<java.lang.String, java.lang.String> getDatabusDetailsMap() {
        return internalGetDatabusDetails().getMap();
      }
      /**
       * <pre>
       * Databus related configuration data.
       * </pre>
       *
       * <code>map&lt;string, string&gt; databusDetails = 1;</code>
       */
      @java.lang.Override

      public java.lang.String getDatabusDetailsOrDefault(
          java.lang.String key,
          java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetDatabusDetails().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * Databus related configuration data.
       * </pre>
       *
       * <code>map&lt;string, string&gt; databusDetails = 1;</code>
       */
      @java.lang.Override

      public java.lang.String getDatabusDetailsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetDatabusDetails().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearDatabusDetails() {
        internalGetMutableDatabusDetails().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * Databus related configuration data.
       * </pre>
       *
       * <code>map&lt;string, string&gt; databusDetails = 1;</code>
       */

      public Builder removeDatabusDetails(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableDatabusDetails().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
      getMutableDatabusDetails() {
        return internalGetMutableDatabusDetails().getMutableMap();
      }
      /**
       * <pre>
       * Databus related configuration data.
       * </pre>
       *
       * <code>map&lt;string, string&gt; databusDetails = 1;</code>
       */
      public Builder putDatabusDetails(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) {
  throw new NullPointerException("map value");
}

        internalGetMutableDatabusDetails().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <pre>
       * Databus related configuration data.
       * </pre>
       *
       * <code>map&lt;string, string&gt; databusDetails = 1;</code>
       */

      public Builder putAllDatabusDetails(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableDatabusDetails().getMutableMap()
            .putAll(values);
        return this;
      }

      private com.google.protobuf.MapField<
          java.lang.String, java.lang.String> eventDetails_;
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetEventDetails() {
        if (eventDetails_ == null) {
          return com.google.protobuf.MapField.emptyMapField(
              EventDetailsDefaultEntryHolder.defaultEntry);
        }
        return eventDetails_;
      }
      private com.google.protobuf.MapField<java.lang.String, java.lang.String>
      internalGetMutableEventDetails() {
        onChanged();;
        if (eventDetails_ == null) {
          eventDetails_ = com.google.protobuf.MapField.newMapField(
              EventDetailsDefaultEntryHolder.defaultEntry);
        }
        if (!eventDetails_.isMutable()) {
          eventDetails_ = eventDetails_.copy();
        }
        return eventDetails_;
      }

      public int getEventDetailsCount() {
        return internalGetEventDetails().getMap().size();
      }
      /**
       * <pre>
       * Heartbeat event related configuration data.
       * </pre>
       *
       * <code>map&lt;string, string&gt; eventDetails = 2;</code>
       */

      @java.lang.Override
      public boolean containsEventDetails(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        return internalGetEventDetails().getMap().containsKey(key);
      }
      /**
       * Use {@link #getEventDetailsMap()} instead.
       */
      @java.lang.Override
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String> getEventDetails() {
        return getEventDetailsMap();
      }
      /**
       * <pre>
       * Heartbeat event related configuration data.
       * </pre>
       *
       * <code>map&lt;string, string&gt; eventDetails = 2;</code>
       */
      @java.lang.Override

      public java.util.Map<java.lang.String, java.lang.String> getEventDetailsMap() {
        return internalGetEventDetails().getMap();
      }
      /**
       * <pre>
       * Heartbeat event related configuration data.
       * </pre>
       *
       * <code>map&lt;string, string&gt; eventDetails = 2;</code>
       */
      @java.lang.Override

      public java.lang.String getEventDetailsOrDefault(
          java.lang.String key,
          java.lang.String defaultValue) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetEventDetails().getMap();
        return map.containsKey(key) ? map.get(key) : defaultValue;
      }
      /**
       * <pre>
       * Heartbeat event related configuration data.
       * </pre>
       *
       * <code>map&lt;string, string&gt; eventDetails = 2;</code>
       */
      @java.lang.Override

      public java.lang.String getEventDetailsOrThrow(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        java.util.Map<java.lang.String, java.lang.String> map =
            internalGetEventDetails().getMap();
        if (!map.containsKey(key)) {
          throw new java.lang.IllegalArgumentException();
        }
        return map.get(key);
      }

      public Builder clearEventDetails() {
        internalGetMutableEventDetails().getMutableMap()
            .clear();
        return this;
      }
      /**
       * <pre>
       * Heartbeat event related configuration data.
       * </pre>
       *
       * <code>map&lt;string, string&gt; eventDetails = 2;</code>
       */

      public Builder removeEventDetails(
          java.lang.String key) {
        if (key == null) { throw new NullPointerException("map key"); }
        internalGetMutableEventDetails().getMutableMap()
            .remove(key);
        return this;
      }
      /**
       * Use alternate mutation accessors instead.
       */
      @java.lang.Deprecated
      public java.util.Map<java.lang.String, java.lang.String>
      getMutableEventDetails() {
        return internalGetMutableEventDetails().getMutableMap();
      }
      /**
       * <pre>
       * Heartbeat event related configuration data.
       * </pre>
       *
       * <code>map&lt;string, string&gt; eventDetails = 2;</code>
       */
      public Builder putEventDetails(
          java.lang.String key,
          java.lang.String value) {
        if (key == null) { throw new NullPointerException("map key"); }
        if (value == null) {
  throw new NullPointerException("map value");
}

        internalGetMutableEventDetails().getMutableMap()
            .put(key, value);
        return this;
      }
      /**
       * <pre>
       * Heartbeat event related configuration data.
       * </pre>
       *
       * <code>map&lt;string, string&gt; eventDetails = 2;</code>
       */

      public Builder putAllEventDetails(
          java.util.Map<java.lang.String, java.lang.String> values) {
        internalGetMutableEventDetails().getMutableMap()
            .putAll(values);
        return this;
      }

      private long firstHeartbeatEventTimestamp_ ;
      /**
       * <pre>
       * First heartbeat event timestamp from the heartbeat event JSON file.
       * </pre>
       *
       * <code>int64 firstHeartbeatEventTimestamp = 3;</code>
       * @return The firstHeartbeatEventTimestamp.
       */
      @java.lang.Override
      public long getFirstHeartbeatEventTimestamp() {
        return firstHeartbeatEventTimestamp_;
      }
      /**
       * <pre>
       * First heartbeat event timestamp from the heartbeat event JSON file.
       * </pre>
       *
       * <code>int64 firstHeartbeatEventTimestamp = 3;</code>
       * @param value The firstHeartbeatEventTimestamp to set.
       * @return This builder for chaining.
       */
      public Builder setFirstHeartbeatEventTimestamp(long value) {
        
        firstHeartbeatEventTimestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * First heartbeat event timestamp from the heartbeat event JSON file.
       * </pre>
       *
       * <code>int64 firstHeartbeatEventTimestamp = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearFirstHeartbeatEventTimestamp() {
        
        firstHeartbeatEventTimestamp_ = 0L;
        onChanged();
        return this;
      }

      private long systemBootTimestamp_ ;
      /**
       * <pre>
       * System boot time - can be useful to figure out from what time should the heartbeats generate data.
       * </pre>
       *
       * <code>int64 systemBootTimestamp = 4;</code>
       * @return The systemBootTimestamp.
       */
      @java.lang.Override
      public long getSystemBootTimestamp() {
        return systemBootTimestamp_;
      }
      /**
       * <pre>
       * System boot time - can be useful to figure out from what time should the heartbeats generate data.
       * </pre>
       *
       * <code>int64 systemBootTimestamp = 4;</code>
       * @param value The systemBootTimestamp to set.
       * @return This builder for chaining.
       */
      public Builder setSystemBootTimestamp(long value) {
        
        systemBootTimestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * System boot time - can be useful to figure out from what time should the heartbeats generate data.
       * </pre>
       *
       * <code>int64 systemBootTimestamp = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearSystemBootTimestamp() {
        
        systemBootTimestamp_ = 0L;
        onChanged();
        return this;
      }

      private int heartbeatEventCount_ ;
      /**
       * <pre>
       * Number of lines in the heartbeat event JSON file.
       * </pre>
       *
       * <code>int32 heartbeatEventCount = 5;</code>
       * @return The heartbeatEventCount.
       */
      @java.lang.Override
      public int getHeartbeatEventCount() {
        return heartbeatEventCount_;
      }
      /**
       * <pre>
       * Number of lines in the heartbeat event JSON file.
       * </pre>
       *
       * <code>int32 heartbeatEventCount = 5;</code>
       * @param value The heartbeatEventCount to set.
       * @return This builder for chaining.
       */
      public Builder setHeartbeatEventCount(int value) {
        
        heartbeatEventCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of lines in the heartbeat event JSON file.
       * </pre>
       *
       * <code>int32 heartbeatEventCount = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearHeartbeatEventCount() {
        
        heartbeatEventCount_ = 0;
        onChanged();
        return this;
      }

      private int heartbeatAgentRunning_ = 0;
      /**
       * <pre>
       * Status of the heartbeat agent.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus heartbeatAgentRunning = 6;</code>
       * @return The enum numeric value on the wire for heartbeatAgentRunning.
       */
      @java.lang.Override public int getHeartbeatAgentRunningValue() {
        return heartbeatAgentRunning_;
      }
      /**
       * <pre>
       * Status of the heartbeat agent.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus heartbeatAgentRunning = 6;</code>
       * @param value The enum numeric value on the wire for heartbeatAgentRunning to set.
       * @return This builder for chaining.
       */
      public Builder setHeartbeatAgentRunningValue(int value) {
        
        heartbeatAgentRunning_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status of the heartbeat agent.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus heartbeatAgentRunning = 6;</code>
       * @return The heartbeatAgentRunning.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getHeartbeatAgentRunning() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(heartbeatAgentRunning_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Status of the heartbeat agent.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus heartbeatAgentRunning = 6;</code>
       * @param value The heartbeatAgentRunning to set.
       * @return This builder for chaining.
       */
      public Builder setHeartbeatAgentRunning(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        heartbeatAgentRunning_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status of the heartbeat agent.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus heartbeatAgentRunning = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearHeartbeatAgentRunning() {
        
        heartbeatAgentRunning_ = 0;
        onChanged();
        return this;
      }

      private int heartbeatConfig_ = 0;
      /**
       * <pre>
       * Status (existence) of the generated heartbeat config.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus heartbeatConfig = 7;</code>
       * @return The enum numeric value on the wire for heartbeatConfig.
       */
      @java.lang.Override public int getHeartbeatConfigValue() {
        return heartbeatConfig_;
      }
      /**
       * <pre>
       * Status (existence) of the generated heartbeat config.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus heartbeatConfig = 7;</code>
       * @param value The enum numeric value on the wire for heartbeatConfig to set.
       * @return This builder for chaining.
       */
      public Builder setHeartbeatConfigValue(int value) {
        
        heartbeatConfig_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status (existence) of the generated heartbeat config.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus heartbeatConfig = 7;</code>
       * @return The heartbeatConfig.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getHeartbeatConfig() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(heartbeatConfig_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Status (existence) of the generated heartbeat config.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus heartbeatConfig = 7;</code>
       * @param value The heartbeatConfig to set.
       * @return This builder for chaining.
       */
      public Builder setHeartbeatConfig(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        heartbeatConfig_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status (existence) of the generated heartbeat config.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus heartbeatConfig = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearHeartbeatConfig() {
        
        heartbeatConfig_ = 0;
        onChanged();
        return this;
      }

      private int databusReachable_ = 0;
      /**
       * <pre>
       * Databus API availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusReachable = 8;</code>
       * @return The enum numeric value on the wire for databusReachable.
       */
      @java.lang.Override public int getDatabusReachableValue() {
        return databusReachable_;
      }
      /**
       * <pre>
       * Databus API availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusReachable = 8;</code>
       * @param value The enum numeric value on the wire for databusReachable to set.
       * @return This builder for chaining.
       */
      public Builder setDatabusReachableValue(int value) {
        
        databusReachable_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Databus API availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusReachable = 8;</code>
       * @return The databusReachable.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getDatabusReachable() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(databusReachable_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Databus API availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusReachable = 8;</code>
       * @param value The databusReachable to set.
       * @return This builder for chaining.
       */
      public Builder setDatabusReachable(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        databusReachable_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Databus API availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusReachable = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearDatabusReachable() {
        
        databusReachable_ = 0;
        onChanged();
        return this;
      }

      private int databusTestResponse_ = 0;
      /**
       * <pre>
       * Databus status check result.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusTestResponse = 9;</code>
       * @return The enum numeric value on the wire for databusTestResponse.
       */
      @java.lang.Override public int getDatabusTestResponseValue() {
        return databusTestResponse_;
      }
      /**
       * <pre>
       * Databus status check result.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusTestResponse = 9;</code>
       * @param value The enum numeric value on the wire for databusTestResponse to set.
       * @return This builder for chaining.
       */
      public Builder setDatabusTestResponseValue(int value) {
        
        databusTestResponse_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Databus status check result.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusTestResponse = 9;</code>
       * @return The databusTestResponse.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getDatabusTestResponse() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(databusTestResponse_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Databus status check result.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusTestResponse = 9;</code>
       * @param value The databusTestResponse to set.
       * @return This builder for chaining.
       */
      public Builder setDatabusTestResponse(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        databusTestResponse_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Databus status check result.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusTestResponse = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearDatabusTestResponse() {
        
        databusTestResponse_ = 0;
        onChanged();
        return this;
      }

      private int loggingAgentConfig_ = 0;
      /**
       * <pre>
       * Status (existence) of the generated heartbeat config.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus loggingAgentConfig = 10;</code>
       * @return The enum numeric value on the wire for loggingAgentConfig.
       */
      @java.lang.Override public int getLoggingAgentConfigValue() {
        return loggingAgentConfig_;
      }
      /**
       * <pre>
       * Status (existence) of the generated heartbeat config.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus loggingAgentConfig = 10;</code>
       * @param value The enum numeric value on the wire for loggingAgentConfig to set.
       * @return This builder for chaining.
       */
      public Builder setLoggingAgentConfigValue(int value) {
        
        loggingAgentConfig_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status (existence) of the generated heartbeat config.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus loggingAgentConfig = 10;</code>
       * @return The loggingAgentConfig.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getLoggingAgentConfig() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(loggingAgentConfig_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Status (existence) of the generated heartbeat config.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus loggingAgentConfig = 10;</code>
       * @param value The loggingAgentConfig to set.
       * @return This builder for chaining.
       */
      public Builder setLoggingAgentConfig(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        loggingAgentConfig_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status (existence) of the generated heartbeat config.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus loggingAgentConfig = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearLoggingAgentConfig() {
        
        loggingAgentConfig_ = 0;
        onChanged();
        return this;
      }

      private int loggingServiceRunning_ = 0;
      /**
       * <pre>
       * Status of the logging agent service.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus loggingServiceRunning = 11;</code>
       * @return The enum numeric value on the wire for loggingServiceRunning.
       */
      @java.lang.Override public int getLoggingServiceRunningValue() {
        return loggingServiceRunning_;
      }
      /**
       * <pre>
       * Status of the logging agent service.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus loggingServiceRunning = 11;</code>
       * @param value The enum numeric value on the wire for loggingServiceRunning to set.
       * @return This builder for chaining.
       */
      public Builder setLoggingServiceRunningValue(int value) {
        
        loggingServiceRunning_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status of the logging agent service.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus loggingServiceRunning = 11;</code>
       * @return The loggingServiceRunning.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getLoggingServiceRunning() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(loggingServiceRunning_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Status of the logging agent service.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus loggingServiceRunning = 11;</code>
       * @param value The loggingServiceRunning to set.
       * @return This builder for chaining.
       */
      public Builder setLoggingServiceRunning(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        loggingServiceRunning_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Status of the logging agent service.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus loggingServiceRunning = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearLoggingServiceRunning() {
        
        loggingServiceRunning_ = 0;
        onChanged();
        return this;
      }

      private long timestamp_ ;
      /**
       * <pre>
       * Timestamp of metering status report.
       * </pre>
       *
       * <code>int64 timestamp = 12;</code>
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       * Timestamp of metering status report.
       * </pre>
       *
       * <code>int64 timestamp = 12;</code>
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Timestamp of metering status report.
       * </pre>
       *
       * <code>int64 timestamp = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object cdpTelemetryVersion_ = "";
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 13;</code>
       * @return The cdpTelemetryVersion.
       */
      public java.lang.String getCdpTelemetryVersion() {
        java.lang.Object ref = cdpTelemetryVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          cdpTelemetryVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 13;</code>
       * @return The bytes for cdpTelemetryVersion.
       */
      public com.google.protobuf.ByteString
          getCdpTelemetryVersionBytes() {
        java.lang.Object ref = cdpTelemetryVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          cdpTelemetryVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 13;</code>
       * @param value The cdpTelemetryVersion to set.
       * @return This builder for chaining.
       */
      public Builder setCdpTelemetryVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        cdpTelemetryVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearCdpTelemetryVersion() {
        
        cdpTelemetryVersion_ = getDefaultInstance().getCdpTelemetryVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 13;</code>
       * @param value The bytes for cdpTelemetryVersion to set.
       * @return This builder for chaining.
       */
      public Builder setCdpTelemetryVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        cdpTelemetryVersion_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.MeteringDetails)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.MeteringDetails)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<MeteringDetails>
        PARSER = new com.google.protobuf.AbstractParser<MeteringDetails>() {
      @java.lang.Override
      public MeteringDetails parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<MeteringDetails> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<MeteringDetails> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MeteringDetails getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NetworkDetailsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.NetworkDetails)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * CDP nodename / hostname.
     * </pre>
     *
     * <code>string host = 1;</code>
     * @return The host.
     */
    java.lang.String getHost();
    /**
     * <pre>
     * CDP nodename / hostname.
     * </pre>
     *
     * <code>string host = 1;</code>
     * @return The bytes for host.
     */
    com.google.protobuf.ByteString
        getHostBytes();

    /**
     * <pre>
     * CCM usage flag.
     * </pre>
     *
     * <code>bool ccmEnabled = 2;</code>
     * @return The ccmEnabled.
     */
    boolean getCcmEnabled();

    /**
     * <pre>
     * List of DNS resolvers.
     * </pre>
     *
     * <code>repeated string dnsResolvers = 3;</code>
     * @return A list containing the dnsResolvers.
     */
    java.util.List<java.lang.String>
        getDnsResolversList();
    /**
     * <pre>
     * List of DNS resolvers.
     * </pre>
     *
     * <code>repeated string dnsResolvers = 3;</code>
     * @return The count of dnsResolvers.
     */
    int getDnsResolversCount();
    /**
     * <pre>
     * List of DNS resolvers.
     * </pre>
     *
     * <code>repeated string dnsResolvers = 3;</code>
     * @param index The index of the element to return.
     * @return The dnsResolvers at the given index.
     */
    java.lang.String getDnsResolvers(int index);
    /**
     * <pre>
     * List of DNS resolvers.
     * </pre>
     *
     * <code>repeated string dnsResolvers = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the dnsResolvers at the given index.
     */
    com.google.protobuf.ByteString
        getDnsResolversBytes(int index);

    /**
     * <pre>
     * Scanning host networks for neighbours (against Saltboot API).
     * </pre>
     *
     * <code>bool neighbourScan = 4;</code>
     * @return The neighbourScan.
     */
    boolean getNeighbourScan();

    /**
     * <pre>
     * Neighbours (addresses) on the host network.
     * </pre>
     *
     * <code>repeated string neighbours = 5;</code>
     * @return A list containing the neighbours.
     */
    java.util.List<java.lang.String>
        getNeighboursList();
    /**
     * <pre>
     * Neighbours (addresses) on the host network.
     * </pre>
     *
     * <code>repeated string neighbours = 5;</code>
     * @return The count of neighbours.
     */
    int getNeighboursCount();
    /**
     * <pre>
     * Neighbours (addresses) on the host network.
     * </pre>
     *
     * <code>repeated string neighbours = 5;</code>
     * @param index The index of the element to return.
     * @return The neighbours at the given index.
     */
    java.lang.String getNeighbours(int index);
    /**
     * <pre>
     * Neighbours (addresses) on the host network.
     * </pre>
     *
     * <code>repeated string neighbours = 5;</code>
     * @param index The index of the value to return.
     * @return The bytes of the neighbours at the given index.
     */
    com.google.protobuf.ByteString
        getNeighboursBytes(int index);

    /**
     * <pre>
     * Accessibility of the neighbours from the host network.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus anyNeighboursAccessible = 6;</code>
     * @return The enum numeric value on the wire for anyNeighboursAccessible.
     */
    int getAnyNeighboursAccessibleValue();
    /**
     * <pre>
     * Accessibility of the neighbours from the host network.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus anyNeighboursAccessible = 6;</code>
     * @return The anyNeighboursAccessible.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getAnyNeighboursAccessible();

    /**
     * <pre>
     * Number of neighbours on the host network.
     * </pre>
     *
     * <code>int32 numberOfNeighbours = 7;</code>
     * @return The numberOfNeighbours.
     */
    int getNumberOfNeighbours();

    /**
     * <pre>
     * Timestamp of network status report.
     * </pre>
     *
     * <code>int64 timestamp = 8;</code>
     * @return The timestamp.
     */
    long getTimestamp();

    /**
     * <pre>
     * CCM address availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus ccmAccessible = 9;</code>
     * @return The enum numeric value on the wire for ccmAccessible.
     */
    int getCcmAccessibleValue();
    /**
     * <pre>
     * CCM address availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus ccmAccessible = 9;</code>
     * @return The ccmAccessible.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getCcmAccessible();

    /**
     * <pre>
     * Availability of .cloudera.com address.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus clouderaComAccessible = 10;</code>
     * @return The enum numeric value on the wire for clouderaComAccessible.
     */
    int getClouderaComAccessibleValue();
    /**
     * <pre>
     * Availability of .cloudera.com address.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus clouderaComAccessible = 10;</code>
     * @return The clouderaComAccessible.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getClouderaComAccessible();

    /**
     * <pre>
     * Databus API availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus databusAccessible = 11;</code>
     * @return The enum numeric value on the wire for databusAccessible.
     */
    int getDatabusAccessibleValue();
    /**
     * <pre>
     * Databus API availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus databusAccessible = 11;</code>
     * @return The databusAccessible.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getDatabusAccessible();

    /**
     * <pre>
     * Databus S3 API availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus databusS3Accessible = 12;</code>
     * @return The enum numeric value on the wire for databusS3Accessible.
     */
    int getDatabusS3AccessibleValue();
    /**
     * <pre>
     * Databus S3 API availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus databusS3Accessible = 12;</code>
     * @return The databusS3Accessible.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getDatabusS3Accessible();

    /**
     * <pre>
     * AWS S3 endpoint availability (endpoint is produced by metadata service: s3.&lt;region&gt;.&lt;domain&gt;).
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus s3Accessible = 13;</code>
     * @return The enum numeric value on the wire for s3Accessible.
     */
    int getS3AccessibleValue();
    /**
     * <pre>
     * AWS S3 endpoint availability (endpoint is produced by metadata service: s3.&lt;region&gt;.&lt;domain&gt;).
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus s3Accessible = 13;</code>
     * @return The s3Accessible.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getS3Accessible();

    /**
     * <pre>
     * ADLS v2 (ABFS) endpoint availability (&lt;azure_storage_account&gt;.dfs.core.windows.net).
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus adlsV2Accessible = 14;</code>
     * @return The enum numeric value on the wire for adlsV2Accessible.
     */
    int getAdlsV2AccessibleValue();
    /**
     * <pre>
     * ADLS v2 (ABFS) endpoint availability (&lt;azure_storage_account&gt;.dfs.core.windows.net).
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus adlsV2Accessible = 14;</code>
     * @return The adlsV2Accessible.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getAdlsV2Accessible();

    /**
     * <pre>
     * GCS endpoint (storage.googleapis.com) availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus gcsAccessible = 15;</code>
     * @return The enum numeric value on the wire for gcsAccessible.
     */
    int getGcsAccessibleValue();
    /**
     * <pre>
     * GCS endpoint (storage.googleapis.com) availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus gcsAccessible = 15;</code>
     * @return The gcsAccessible.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getGcsAccessible();

    /**
     * <pre>
     * AWS Security Token Service endpoint availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus stsAccessible = 16;</code>
     * @return The enum numeric value on the wire for stsAccessible.
     */
    int getStsAccessibleValue();
    /**
     * <pre>
     * AWS Security Token Service endpoint availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus stsAccessible = 16;</code>
     * @return The stsAccessible.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getStsAccessible();

    /**
     * <pre>
     * Azure management endpoint - management.azure.com availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus azureManagementAccessible = 17;</code>
     * @return The enum numeric value on the wire for azureManagementAccessible.
     */
    int getAzureManagementAccessibleValue();
    /**
     * <pre>
     * Azure management endpoint - management.azure.com availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus azureManagementAccessible = 17;</code>
     * @return The azureManagementAccessible.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getAzureManagementAccessible();

    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 18;</code>
     * @return The cdpTelemetryVersion.
     */
    java.lang.String getCdpTelemetryVersion();
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 18;</code>
     * @return The bytes for cdpTelemetryVersion.
     */
    com.google.protobuf.ByteString
        getCdpTelemetryVersionBytes();

    /**
     * <pre>
     * Availability of archive.cloudera.com address.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus archiveClouderaComAccessible = 19;</code>
     * @return The enum numeric value on the wire for archiveClouderaComAccessible.
     */
    int getArchiveClouderaComAccessibleValue();
    /**
     * <pre>
     * Availability of archive.cloudera.com address.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus archiveClouderaComAccessible = 19;</code>
     * @return The archiveClouderaComAccessible.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getArchiveClouderaComAccessible();

    /**
     * <pre>
     * Availability of cloudera-service-delivery-cache.s3.amazonaws.com address.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus serviceDeliveryCacheS3Accessible = 20;</code>
     * @return The enum numeric value on the wire for serviceDeliveryCacheS3Accessible.
     */
    int getServiceDeliveryCacheS3AccessibleValue();
    /**
     * <pre>
     * Availability of cloudera-service-delivery-cache.s3.amazonaws.com address.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus serviceDeliveryCacheS3Accessible = 20;</code>
     * @return The serviceDeliveryCacheS3Accessible.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getServiceDeliveryCacheS3Accessible();

    /**
     * <pre>
     * Availability of compute monitoring remote write address.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus computeMonitoringAccessible = 21;</code>
     * @return The enum numeric value on the wire for computeMonitoringAccessible.
     */
    int getComputeMonitoringAccessibleValue();
    /**
     * <pre>
     * Availability of compute monitoring remote write address.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus computeMonitoringAccessible = 21;</code>
     * @return The computeMonitoringAccessible.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getComputeMonitoringAccessible();
  }
  /**
   * <pre>
   * CDP VM network related details.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.NetworkDetails}
   */
  public static final class NetworkDetails extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.NetworkDetails)
      NetworkDetailsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use NetworkDetails.newBuilder() to construct.
    private NetworkDetails(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private NetworkDetails() {
      host_ = "";
      dnsResolvers_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      neighbours_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      anyNeighboursAccessible_ = 0;
      ccmAccessible_ = 0;
      clouderaComAccessible_ = 0;
      databusAccessible_ = 0;
      databusS3Accessible_ = 0;
      s3Accessible_ = 0;
      adlsV2Accessible_ = 0;
      gcsAccessible_ = 0;
      stsAccessible_ = 0;
      azureManagementAccessible_ = 0;
      cdpTelemetryVersion_ = "";
      archiveClouderaComAccessible_ = 0;
      serviceDeliveryCacheS3Accessible_ = 0;
      computeMonitoringAccessible_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new NetworkDetails();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkDetails_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkDetails_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails.Builder.class);
    }

    public static final int HOST_FIELD_NUMBER = 1;
    private volatile java.lang.Object host_;
    /**
     * <pre>
     * CDP nodename / hostname.
     * </pre>
     *
     * <code>string host = 1;</code>
     * @return The host.
     */
    @java.lang.Override
    public java.lang.String getHost() {
      java.lang.Object ref = host_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        host_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * CDP nodename / hostname.
     * </pre>
     *
     * <code>string host = 1;</code>
     * @return The bytes for host.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getHostBytes() {
      java.lang.Object ref = host_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        host_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CCMENABLED_FIELD_NUMBER = 2;
    private boolean ccmEnabled_;
    /**
     * <pre>
     * CCM usage flag.
     * </pre>
     *
     * <code>bool ccmEnabled = 2;</code>
     * @return The ccmEnabled.
     */
    @java.lang.Override
    public boolean getCcmEnabled() {
      return ccmEnabled_;
    }

    public static final int DNSRESOLVERS_FIELD_NUMBER = 3;
    private com.google.protobuf.LazyStringList dnsResolvers_;
    /**
     * <pre>
     * List of DNS resolvers.
     * </pre>
     *
     * <code>repeated string dnsResolvers = 3;</code>
     * @return A list containing the dnsResolvers.
     */
    public com.google.protobuf.ProtocolStringList
        getDnsResolversList() {
      return dnsResolvers_;
    }
    /**
     * <pre>
     * List of DNS resolvers.
     * </pre>
     *
     * <code>repeated string dnsResolvers = 3;</code>
     * @return The count of dnsResolvers.
     */
    public int getDnsResolversCount() {
      return dnsResolvers_.size();
    }
    /**
     * <pre>
     * List of DNS resolvers.
     * </pre>
     *
     * <code>repeated string dnsResolvers = 3;</code>
     * @param index The index of the element to return.
     * @return The dnsResolvers at the given index.
     */
    public java.lang.String getDnsResolvers(int index) {
      return dnsResolvers_.get(index);
    }
    /**
     * <pre>
     * List of DNS resolvers.
     * </pre>
     *
     * <code>repeated string dnsResolvers = 3;</code>
     * @param index The index of the value to return.
     * @return The bytes of the dnsResolvers at the given index.
     */
    public com.google.protobuf.ByteString
        getDnsResolversBytes(int index) {
      return dnsResolvers_.getByteString(index);
    }

    public static final int NEIGHBOURSCAN_FIELD_NUMBER = 4;
    private boolean neighbourScan_;
    /**
     * <pre>
     * Scanning host networks for neighbours (against Saltboot API).
     * </pre>
     *
     * <code>bool neighbourScan = 4;</code>
     * @return The neighbourScan.
     */
    @java.lang.Override
    public boolean getNeighbourScan() {
      return neighbourScan_;
    }

    public static final int NEIGHBOURS_FIELD_NUMBER = 5;
    private com.google.protobuf.LazyStringList neighbours_;
    /**
     * <pre>
     * Neighbours (addresses) on the host network.
     * </pre>
     *
     * <code>repeated string neighbours = 5;</code>
     * @return A list containing the neighbours.
     */
    public com.google.protobuf.ProtocolStringList
        getNeighboursList() {
      return neighbours_;
    }
    /**
     * <pre>
     * Neighbours (addresses) on the host network.
     * </pre>
     *
     * <code>repeated string neighbours = 5;</code>
     * @return The count of neighbours.
     */
    public int getNeighboursCount() {
      return neighbours_.size();
    }
    /**
     * <pre>
     * Neighbours (addresses) on the host network.
     * </pre>
     *
     * <code>repeated string neighbours = 5;</code>
     * @param index The index of the element to return.
     * @return The neighbours at the given index.
     */
    public java.lang.String getNeighbours(int index) {
      return neighbours_.get(index);
    }
    /**
     * <pre>
     * Neighbours (addresses) on the host network.
     * </pre>
     *
     * <code>repeated string neighbours = 5;</code>
     * @param index The index of the value to return.
     * @return The bytes of the neighbours at the given index.
     */
    public com.google.protobuf.ByteString
        getNeighboursBytes(int index) {
      return neighbours_.getByteString(index);
    }

    public static final int ANYNEIGHBOURSACCESSIBLE_FIELD_NUMBER = 6;
    private int anyNeighboursAccessible_;
    /**
     * <pre>
     * Accessibility of the neighbours from the host network.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus anyNeighboursAccessible = 6;</code>
     * @return The enum numeric value on the wire for anyNeighboursAccessible.
     */
    @java.lang.Override public int getAnyNeighboursAccessibleValue() {
      return anyNeighboursAccessible_;
    }
    /**
     * <pre>
     * Accessibility of the neighbours from the host network.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus anyNeighboursAccessible = 6;</code>
     * @return The anyNeighboursAccessible.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getAnyNeighboursAccessible() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(anyNeighboursAccessible_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    public static final int NUMBEROFNEIGHBOURS_FIELD_NUMBER = 7;
    private int numberOfNeighbours_;
    /**
     * <pre>
     * Number of neighbours on the host network.
     * </pre>
     *
     * <code>int32 numberOfNeighbours = 7;</code>
     * @return The numberOfNeighbours.
     */
    @java.lang.Override
    public int getNumberOfNeighbours() {
      return numberOfNeighbours_;
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 8;
    private long timestamp_;
    /**
     * <pre>
     * Timestamp of network status report.
     * </pre>
     *
     * <code>int64 timestamp = 8;</code>
     * @return The timestamp.
     */
    @java.lang.Override
    public long getTimestamp() {
      return timestamp_;
    }

    public static final int CCMACCESSIBLE_FIELD_NUMBER = 9;
    private int ccmAccessible_;
    /**
     * <pre>
     * CCM address availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus ccmAccessible = 9;</code>
     * @return The enum numeric value on the wire for ccmAccessible.
     */
    @java.lang.Override public int getCcmAccessibleValue() {
      return ccmAccessible_;
    }
    /**
     * <pre>
     * CCM address availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus ccmAccessible = 9;</code>
     * @return The ccmAccessible.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getCcmAccessible() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(ccmAccessible_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    public static final int CLOUDERACOMACCESSIBLE_FIELD_NUMBER = 10;
    private int clouderaComAccessible_;
    /**
     * <pre>
     * Availability of .cloudera.com address.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus clouderaComAccessible = 10;</code>
     * @return The enum numeric value on the wire for clouderaComAccessible.
     */
    @java.lang.Override public int getClouderaComAccessibleValue() {
      return clouderaComAccessible_;
    }
    /**
     * <pre>
     * Availability of .cloudera.com address.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus clouderaComAccessible = 10;</code>
     * @return The clouderaComAccessible.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getClouderaComAccessible() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(clouderaComAccessible_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    public static final int DATABUSACCESSIBLE_FIELD_NUMBER = 11;
    private int databusAccessible_;
    /**
     * <pre>
     * Databus API availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus databusAccessible = 11;</code>
     * @return The enum numeric value on the wire for databusAccessible.
     */
    @java.lang.Override public int getDatabusAccessibleValue() {
      return databusAccessible_;
    }
    /**
     * <pre>
     * Databus API availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus databusAccessible = 11;</code>
     * @return The databusAccessible.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getDatabusAccessible() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(databusAccessible_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    public static final int DATABUSS3ACCESSIBLE_FIELD_NUMBER = 12;
    private int databusS3Accessible_;
    /**
     * <pre>
     * Databus S3 API availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus databusS3Accessible = 12;</code>
     * @return The enum numeric value on the wire for databusS3Accessible.
     */
    @java.lang.Override public int getDatabusS3AccessibleValue() {
      return databusS3Accessible_;
    }
    /**
     * <pre>
     * Databus S3 API availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus databusS3Accessible = 12;</code>
     * @return The databusS3Accessible.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getDatabusS3Accessible() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(databusS3Accessible_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    public static final int S3ACCESSIBLE_FIELD_NUMBER = 13;
    private int s3Accessible_;
    /**
     * <pre>
     * AWS S3 endpoint availability (endpoint is produced by metadata service: s3.&lt;region&gt;.&lt;domain&gt;).
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus s3Accessible = 13;</code>
     * @return The enum numeric value on the wire for s3Accessible.
     */
    @java.lang.Override public int getS3AccessibleValue() {
      return s3Accessible_;
    }
    /**
     * <pre>
     * AWS S3 endpoint availability (endpoint is produced by metadata service: s3.&lt;region&gt;.&lt;domain&gt;).
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus s3Accessible = 13;</code>
     * @return The s3Accessible.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getS3Accessible() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(s3Accessible_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    public static final int ADLSV2ACCESSIBLE_FIELD_NUMBER = 14;
    private int adlsV2Accessible_;
    /**
     * <pre>
     * ADLS v2 (ABFS) endpoint availability (&lt;azure_storage_account&gt;.dfs.core.windows.net).
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus adlsV2Accessible = 14;</code>
     * @return The enum numeric value on the wire for adlsV2Accessible.
     */
    @java.lang.Override public int getAdlsV2AccessibleValue() {
      return adlsV2Accessible_;
    }
    /**
     * <pre>
     * ADLS v2 (ABFS) endpoint availability (&lt;azure_storage_account&gt;.dfs.core.windows.net).
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus adlsV2Accessible = 14;</code>
     * @return The adlsV2Accessible.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getAdlsV2Accessible() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(adlsV2Accessible_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    public static final int GCSACCESSIBLE_FIELD_NUMBER = 15;
    private int gcsAccessible_;
    /**
     * <pre>
     * GCS endpoint (storage.googleapis.com) availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus gcsAccessible = 15;</code>
     * @return The enum numeric value on the wire for gcsAccessible.
     */
    @java.lang.Override public int getGcsAccessibleValue() {
      return gcsAccessible_;
    }
    /**
     * <pre>
     * GCS endpoint (storage.googleapis.com) availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus gcsAccessible = 15;</code>
     * @return The gcsAccessible.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getGcsAccessible() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(gcsAccessible_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    public static final int STSACCESSIBLE_FIELD_NUMBER = 16;
    private int stsAccessible_;
    /**
     * <pre>
     * AWS Security Token Service endpoint availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus stsAccessible = 16;</code>
     * @return The enum numeric value on the wire for stsAccessible.
     */
    @java.lang.Override public int getStsAccessibleValue() {
      return stsAccessible_;
    }
    /**
     * <pre>
     * AWS Security Token Service endpoint availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus stsAccessible = 16;</code>
     * @return The stsAccessible.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getStsAccessible() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(stsAccessible_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    public static final int AZUREMANAGEMENTACCESSIBLE_FIELD_NUMBER = 17;
    private int azureManagementAccessible_;
    /**
     * <pre>
     * Azure management endpoint - management.azure.com availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus azureManagementAccessible = 17;</code>
     * @return The enum numeric value on the wire for azureManagementAccessible.
     */
    @java.lang.Override public int getAzureManagementAccessibleValue() {
      return azureManagementAccessible_;
    }
    /**
     * <pre>
     * Azure management endpoint - management.azure.com availability.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus azureManagementAccessible = 17;</code>
     * @return The azureManagementAccessible.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getAzureManagementAccessible() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(azureManagementAccessible_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    public static final int CDPTELEMETRYVERSION_FIELD_NUMBER = 18;
    private volatile java.lang.Object cdpTelemetryVersion_;
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 18;</code>
     * @return The cdpTelemetryVersion.
     */
    @java.lang.Override
    public java.lang.String getCdpTelemetryVersion() {
      java.lang.Object ref = cdpTelemetryVersion_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        cdpTelemetryVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 18;</code>
     * @return The bytes for cdpTelemetryVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCdpTelemetryVersionBytes() {
      java.lang.Object ref = cdpTelemetryVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        cdpTelemetryVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ARCHIVECLOUDERACOMACCESSIBLE_FIELD_NUMBER = 19;
    private int archiveClouderaComAccessible_;
    /**
     * <pre>
     * Availability of archive.cloudera.com address.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus archiveClouderaComAccessible = 19;</code>
     * @return The enum numeric value on the wire for archiveClouderaComAccessible.
     */
    @java.lang.Override public int getArchiveClouderaComAccessibleValue() {
      return archiveClouderaComAccessible_;
    }
    /**
     * <pre>
     * Availability of archive.cloudera.com address.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus archiveClouderaComAccessible = 19;</code>
     * @return The archiveClouderaComAccessible.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getArchiveClouderaComAccessible() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(archiveClouderaComAccessible_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    public static final int SERVICEDELIVERYCACHES3ACCESSIBLE_FIELD_NUMBER = 20;
    private int serviceDeliveryCacheS3Accessible_;
    /**
     * <pre>
     * Availability of cloudera-service-delivery-cache.s3.amazonaws.com address.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus serviceDeliveryCacheS3Accessible = 20;</code>
     * @return The enum numeric value on the wire for serviceDeliveryCacheS3Accessible.
     */
    @java.lang.Override public int getServiceDeliveryCacheS3AccessibleValue() {
      return serviceDeliveryCacheS3Accessible_;
    }
    /**
     * <pre>
     * Availability of cloudera-service-delivery-cache.s3.amazonaws.com address.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus serviceDeliveryCacheS3Accessible = 20;</code>
     * @return The serviceDeliveryCacheS3Accessible.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getServiceDeliveryCacheS3Accessible() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(serviceDeliveryCacheS3Accessible_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    public static final int COMPUTEMONITORINGACCESSIBLE_FIELD_NUMBER = 21;
    private int computeMonitoringAccessible_;
    /**
     * <pre>
     * Availability of compute monitoring remote write address.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus computeMonitoringAccessible = 21;</code>
     * @return The enum numeric value on the wire for computeMonitoringAccessible.
     */
    @java.lang.Override public int getComputeMonitoringAccessibleValue() {
      return computeMonitoringAccessible_;
    }
    /**
     * <pre>
     * Availability of compute monitoring remote write address.
     * </pre>
     *
     * <code>.cdp.telemetry.HealthStatus computeMonitoringAccessible = 21;</code>
     * @return The computeMonitoringAccessible.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getComputeMonitoringAccessible() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(computeMonitoringAccessible_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(host_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, host_);
      }
      if (ccmEnabled_ != false) {
        output.writeBool(2, ccmEnabled_);
      }
      for (int i = 0; i < dnsResolvers_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, dnsResolvers_.getRaw(i));
      }
      if (neighbourScan_ != false) {
        output.writeBool(4, neighbourScan_);
      }
      for (int i = 0; i < neighbours_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, neighbours_.getRaw(i));
      }
      if (anyNeighboursAccessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(6, anyNeighboursAccessible_);
      }
      if (numberOfNeighbours_ != 0) {
        output.writeInt32(7, numberOfNeighbours_);
      }
      if (timestamp_ != 0L) {
        output.writeInt64(8, timestamp_);
      }
      if (ccmAccessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(9, ccmAccessible_);
      }
      if (clouderaComAccessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(10, clouderaComAccessible_);
      }
      if (databusAccessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(11, databusAccessible_);
      }
      if (databusS3Accessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(12, databusS3Accessible_);
      }
      if (s3Accessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(13, s3Accessible_);
      }
      if (adlsV2Accessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(14, adlsV2Accessible_);
      }
      if (gcsAccessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(15, gcsAccessible_);
      }
      if (stsAccessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(16, stsAccessible_);
      }
      if (azureManagementAccessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(17, azureManagementAccessible_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cdpTelemetryVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 18, cdpTelemetryVersion_);
      }
      if (archiveClouderaComAccessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(19, archiveClouderaComAccessible_);
      }
      if (serviceDeliveryCacheS3Accessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(20, serviceDeliveryCacheS3Accessible_);
      }
      if (computeMonitoringAccessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        output.writeEnum(21, computeMonitoringAccessible_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(host_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, host_);
      }
      if (ccmEnabled_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, ccmEnabled_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < dnsResolvers_.size(); i++) {
          dataSize += computeStringSizeNoTag(dnsResolvers_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getDnsResolversList().size();
      }
      if (neighbourScan_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(4, neighbourScan_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < neighbours_.size(); i++) {
          dataSize += computeStringSizeNoTag(neighbours_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getNeighboursList().size();
      }
      if (anyNeighboursAccessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(6, anyNeighboursAccessible_);
      }
      if (numberOfNeighbours_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(7, numberOfNeighbours_);
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(8, timestamp_);
      }
      if (ccmAccessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(9, ccmAccessible_);
      }
      if (clouderaComAccessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(10, clouderaComAccessible_);
      }
      if (databusAccessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(11, databusAccessible_);
      }
      if (databusS3Accessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(12, databusS3Accessible_);
      }
      if (s3Accessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(13, s3Accessible_);
      }
      if (adlsV2Accessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(14, adlsV2Accessible_);
      }
      if (gcsAccessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(15, gcsAccessible_);
      }
      if (stsAccessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(16, stsAccessible_);
      }
      if (azureManagementAccessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(17, azureManagementAccessible_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cdpTelemetryVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(18, cdpTelemetryVersion_);
      }
      if (archiveClouderaComAccessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(19, archiveClouderaComAccessible_);
      }
      if (serviceDeliveryCacheS3Accessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(20, serviceDeliveryCacheS3Accessible_);
      }
      if (computeMonitoringAccessible_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(21, computeMonitoringAccessible_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails) obj;

      if (!getHost()
          .equals(other.getHost())) return false;
      if (getCcmEnabled()
          != other.getCcmEnabled()) return false;
      if (!getDnsResolversList()
          .equals(other.getDnsResolversList())) return false;
      if (getNeighbourScan()
          != other.getNeighbourScan()) return false;
      if (!getNeighboursList()
          .equals(other.getNeighboursList())) return false;
      if (anyNeighboursAccessible_ != other.anyNeighboursAccessible_) return false;
      if (getNumberOfNeighbours()
          != other.getNumberOfNeighbours()) return false;
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (ccmAccessible_ != other.ccmAccessible_) return false;
      if (clouderaComAccessible_ != other.clouderaComAccessible_) return false;
      if (databusAccessible_ != other.databusAccessible_) return false;
      if (databusS3Accessible_ != other.databusS3Accessible_) return false;
      if (s3Accessible_ != other.s3Accessible_) return false;
      if (adlsV2Accessible_ != other.adlsV2Accessible_) return false;
      if (gcsAccessible_ != other.gcsAccessible_) return false;
      if (stsAccessible_ != other.stsAccessible_) return false;
      if (azureManagementAccessible_ != other.azureManagementAccessible_) return false;
      if (!getCdpTelemetryVersion()
          .equals(other.getCdpTelemetryVersion())) return false;
      if (archiveClouderaComAccessible_ != other.archiveClouderaComAccessible_) return false;
      if (serviceDeliveryCacheS3Accessible_ != other.serviceDeliveryCacheS3Accessible_) return false;
      if (computeMonitoringAccessible_ != other.computeMonitoringAccessible_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + HOST_FIELD_NUMBER;
      hash = (53 * hash) + getHost().hashCode();
      hash = (37 * hash) + CCMENABLED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getCcmEnabled());
      if (getDnsResolversCount() > 0) {
        hash = (37 * hash) + DNSRESOLVERS_FIELD_NUMBER;
        hash = (53 * hash) + getDnsResolversList().hashCode();
      }
      hash = (37 * hash) + NEIGHBOURSCAN_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getNeighbourScan());
      if (getNeighboursCount() > 0) {
        hash = (37 * hash) + NEIGHBOURS_FIELD_NUMBER;
        hash = (53 * hash) + getNeighboursList().hashCode();
      }
      hash = (37 * hash) + ANYNEIGHBOURSACCESSIBLE_FIELD_NUMBER;
      hash = (53 * hash) + anyNeighboursAccessible_;
      hash = (37 * hash) + NUMBEROFNEIGHBOURS_FIELD_NUMBER;
      hash = (53 * hash) + getNumberOfNeighbours();
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      hash = (37 * hash) + CCMACCESSIBLE_FIELD_NUMBER;
      hash = (53 * hash) + ccmAccessible_;
      hash = (37 * hash) + CLOUDERACOMACCESSIBLE_FIELD_NUMBER;
      hash = (53 * hash) + clouderaComAccessible_;
      hash = (37 * hash) + DATABUSACCESSIBLE_FIELD_NUMBER;
      hash = (53 * hash) + databusAccessible_;
      hash = (37 * hash) + DATABUSS3ACCESSIBLE_FIELD_NUMBER;
      hash = (53 * hash) + databusS3Accessible_;
      hash = (37 * hash) + S3ACCESSIBLE_FIELD_NUMBER;
      hash = (53 * hash) + s3Accessible_;
      hash = (37 * hash) + ADLSV2ACCESSIBLE_FIELD_NUMBER;
      hash = (53 * hash) + adlsV2Accessible_;
      hash = (37 * hash) + GCSACCESSIBLE_FIELD_NUMBER;
      hash = (53 * hash) + gcsAccessible_;
      hash = (37 * hash) + STSACCESSIBLE_FIELD_NUMBER;
      hash = (53 * hash) + stsAccessible_;
      hash = (37 * hash) + AZUREMANAGEMENTACCESSIBLE_FIELD_NUMBER;
      hash = (53 * hash) + azureManagementAccessible_;
      hash = (37 * hash) + CDPTELEMETRYVERSION_FIELD_NUMBER;
      hash = (53 * hash) + getCdpTelemetryVersion().hashCode();
      hash = (37 * hash) + ARCHIVECLOUDERACOMACCESSIBLE_FIELD_NUMBER;
      hash = (53 * hash) + archiveClouderaComAccessible_;
      hash = (37 * hash) + SERVICEDELIVERYCACHES3ACCESSIBLE_FIELD_NUMBER;
      hash = (53 * hash) + serviceDeliveryCacheS3Accessible_;
      hash = (37 * hash) + COMPUTEMONITORINGACCESSIBLE_FIELD_NUMBER;
      hash = (53 * hash) + computeMonitoringAccessible_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * CDP VM network related details.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.NetworkDetails}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.NetworkDetails)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetailsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkDetails_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkDetails_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        host_ = "";

        ccmEnabled_ = false;

        dnsResolvers_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        neighbourScan_ = false;

        neighbours_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        anyNeighboursAccessible_ = 0;

        numberOfNeighbours_ = 0;

        timestamp_ = 0L;

        ccmAccessible_ = 0;

        clouderaComAccessible_ = 0;

        databusAccessible_ = 0;

        databusS3Accessible_ = 0;

        s3Accessible_ = 0;

        adlsV2Accessible_ = 0;

        gcsAccessible_ = 0;

        stsAccessible_ = 0;

        azureManagementAccessible_ = 0;

        cdpTelemetryVersion_ = "";

        archiveClouderaComAccessible_ = 0;

        serviceDeliveryCacheS3Accessible_ = 0;

        computeMonitoringAccessible_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkDetails_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails(this);
        int from_bitField0_ = bitField0_;
        result.host_ = host_;
        result.ccmEnabled_ = ccmEnabled_;
        if (((bitField0_ & 0x00000001) != 0)) {
          dnsResolvers_ = dnsResolvers_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.dnsResolvers_ = dnsResolvers_;
        result.neighbourScan_ = neighbourScan_;
        if (((bitField0_ & 0x00000002) != 0)) {
          neighbours_ = neighbours_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.neighbours_ = neighbours_;
        result.anyNeighboursAccessible_ = anyNeighboursAccessible_;
        result.numberOfNeighbours_ = numberOfNeighbours_;
        result.timestamp_ = timestamp_;
        result.ccmAccessible_ = ccmAccessible_;
        result.clouderaComAccessible_ = clouderaComAccessible_;
        result.databusAccessible_ = databusAccessible_;
        result.databusS3Accessible_ = databusS3Accessible_;
        result.s3Accessible_ = s3Accessible_;
        result.adlsV2Accessible_ = adlsV2Accessible_;
        result.gcsAccessible_ = gcsAccessible_;
        result.stsAccessible_ = stsAccessible_;
        result.azureManagementAccessible_ = azureManagementAccessible_;
        result.cdpTelemetryVersion_ = cdpTelemetryVersion_;
        result.archiveClouderaComAccessible_ = archiveClouderaComAccessible_;
        result.serviceDeliveryCacheS3Accessible_ = serviceDeliveryCacheS3Accessible_;
        result.computeMonitoringAccessible_ = computeMonitoringAccessible_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails.getDefaultInstance()) return this;
        if (!other.getHost().isEmpty()) {
          host_ = other.host_;
          onChanged();
        }
        if (other.getCcmEnabled() != false) {
          setCcmEnabled(other.getCcmEnabled());
        }
        if (!other.dnsResolvers_.isEmpty()) {
          if (dnsResolvers_.isEmpty()) {
            dnsResolvers_ = other.dnsResolvers_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureDnsResolversIsMutable();
            dnsResolvers_.addAll(other.dnsResolvers_);
          }
          onChanged();
        }
        if (other.getNeighbourScan() != false) {
          setNeighbourScan(other.getNeighbourScan());
        }
        if (!other.neighbours_.isEmpty()) {
          if (neighbours_.isEmpty()) {
            neighbours_ = other.neighbours_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureNeighboursIsMutable();
            neighbours_.addAll(other.neighbours_);
          }
          onChanged();
        }
        if (other.anyNeighboursAccessible_ != 0) {
          setAnyNeighboursAccessibleValue(other.getAnyNeighboursAccessibleValue());
        }
        if (other.getNumberOfNeighbours() != 0) {
          setNumberOfNeighbours(other.getNumberOfNeighbours());
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        if (other.ccmAccessible_ != 0) {
          setCcmAccessibleValue(other.getCcmAccessibleValue());
        }
        if (other.clouderaComAccessible_ != 0) {
          setClouderaComAccessibleValue(other.getClouderaComAccessibleValue());
        }
        if (other.databusAccessible_ != 0) {
          setDatabusAccessibleValue(other.getDatabusAccessibleValue());
        }
        if (other.databusS3Accessible_ != 0) {
          setDatabusS3AccessibleValue(other.getDatabusS3AccessibleValue());
        }
        if (other.s3Accessible_ != 0) {
          setS3AccessibleValue(other.getS3AccessibleValue());
        }
        if (other.adlsV2Accessible_ != 0) {
          setAdlsV2AccessibleValue(other.getAdlsV2AccessibleValue());
        }
        if (other.gcsAccessible_ != 0) {
          setGcsAccessibleValue(other.getGcsAccessibleValue());
        }
        if (other.stsAccessible_ != 0) {
          setStsAccessibleValue(other.getStsAccessibleValue());
        }
        if (other.azureManagementAccessible_ != 0) {
          setAzureManagementAccessibleValue(other.getAzureManagementAccessibleValue());
        }
        if (!other.getCdpTelemetryVersion().isEmpty()) {
          cdpTelemetryVersion_ = other.cdpTelemetryVersion_;
          onChanged();
        }
        if (other.archiveClouderaComAccessible_ != 0) {
          setArchiveClouderaComAccessibleValue(other.getArchiveClouderaComAccessibleValue());
        }
        if (other.serviceDeliveryCacheS3Accessible_ != 0) {
          setServiceDeliveryCacheS3AccessibleValue(other.getServiceDeliveryCacheS3AccessibleValue());
        }
        if (other.computeMonitoringAccessible_ != 0) {
          setComputeMonitoringAccessibleValue(other.getComputeMonitoringAccessibleValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                host_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 16: {
                ccmEnabled_ = input.readBool();

                break;
              } // case 16
              case 26: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureDnsResolversIsMutable();
                dnsResolvers_.add(s);
                break;
              } // case 26
              case 32: {
                neighbourScan_ = input.readBool();

                break;
              } // case 32
              case 42: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureNeighboursIsMutable();
                neighbours_.add(s);
                break;
              } // case 42
              case 48: {
                anyNeighboursAccessible_ = input.readEnum();

                break;
              } // case 48
              case 56: {
                numberOfNeighbours_ = input.readInt32();

                break;
              } // case 56
              case 64: {
                timestamp_ = input.readInt64();

                break;
              } // case 64
              case 72: {
                ccmAccessible_ = input.readEnum();

                break;
              } // case 72
              case 80: {
                clouderaComAccessible_ = input.readEnum();

                break;
              } // case 80
              case 88: {
                databusAccessible_ = input.readEnum();

                break;
              } // case 88
              case 96: {
                databusS3Accessible_ = input.readEnum();

                break;
              } // case 96
              case 104: {
                s3Accessible_ = input.readEnum();

                break;
              } // case 104
              case 112: {
                adlsV2Accessible_ = input.readEnum();

                break;
              } // case 112
              case 120: {
                gcsAccessible_ = input.readEnum();

                break;
              } // case 120
              case 128: {
                stsAccessible_ = input.readEnum();

                break;
              } // case 128
              case 136: {
                azureManagementAccessible_ = input.readEnum();

                break;
              } // case 136
              case 146: {
                cdpTelemetryVersion_ = input.readStringRequireUtf8();

                break;
              } // case 146
              case 152: {
                archiveClouderaComAccessible_ = input.readEnum();

                break;
              } // case 152
              case 160: {
                serviceDeliveryCacheS3Accessible_ = input.readEnum();

                break;
              } // case 160
              case 168: {
                computeMonitoringAccessible_ = input.readEnum();

                break;
              } // case 168
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object host_ = "";
      /**
       * <pre>
       * CDP nodename / hostname.
       * </pre>
       *
       * <code>string host = 1;</code>
       * @return The host.
       */
      public java.lang.String getHost() {
        java.lang.Object ref = host_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          host_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * CDP nodename / hostname.
       * </pre>
       *
       * <code>string host = 1;</code>
       * @return The bytes for host.
       */
      public com.google.protobuf.ByteString
          getHostBytes() {
        java.lang.Object ref = host_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          host_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * CDP nodename / hostname.
       * </pre>
       *
       * <code>string host = 1;</code>
       * @param value The host to set.
       * @return This builder for chaining.
       */
      public Builder setHost(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        host_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * CDP nodename / hostname.
       * </pre>
       *
       * <code>string host = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearHost() {
        
        host_ = getDefaultInstance().getHost();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * CDP nodename / hostname.
       * </pre>
       *
       * <code>string host = 1;</code>
       * @param value The bytes for host to set.
       * @return This builder for chaining.
       */
      public Builder setHostBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        host_ = value;
        onChanged();
        return this;
      }

      private boolean ccmEnabled_ ;
      /**
       * <pre>
       * CCM usage flag.
       * </pre>
       *
       * <code>bool ccmEnabled = 2;</code>
       * @return The ccmEnabled.
       */
      @java.lang.Override
      public boolean getCcmEnabled() {
        return ccmEnabled_;
      }
      /**
       * <pre>
       * CCM usage flag.
       * </pre>
       *
       * <code>bool ccmEnabled = 2;</code>
       * @param value The ccmEnabled to set.
       * @return This builder for chaining.
       */
      public Builder setCcmEnabled(boolean value) {
        
        ccmEnabled_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * CCM usage flag.
       * </pre>
       *
       * <code>bool ccmEnabled = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearCcmEnabled() {
        
        ccmEnabled_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList dnsResolvers_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureDnsResolversIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          dnsResolvers_ = new com.google.protobuf.LazyStringArrayList(dnsResolvers_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * List of DNS resolvers.
       * </pre>
       *
       * <code>repeated string dnsResolvers = 3;</code>
       * @return A list containing the dnsResolvers.
       */
      public com.google.protobuf.ProtocolStringList
          getDnsResolversList() {
        return dnsResolvers_.getUnmodifiableView();
      }
      /**
       * <pre>
       * List of DNS resolvers.
       * </pre>
       *
       * <code>repeated string dnsResolvers = 3;</code>
       * @return The count of dnsResolvers.
       */
      public int getDnsResolversCount() {
        return dnsResolvers_.size();
      }
      /**
       * <pre>
       * List of DNS resolvers.
       * </pre>
       *
       * <code>repeated string dnsResolvers = 3;</code>
       * @param index The index of the element to return.
       * @return The dnsResolvers at the given index.
       */
      public java.lang.String getDnsResolvers(int index) {
        return dnsResolvers_.get(index);
      }
      /**
       * <pre>
       * List of DNS resolvers.
       * </pre>
       *
       * <code>repeated string dnsResolvers = 3;</code>
       * @param index The index of the value to return.
       * @return The bytes of the dnsResolvers at the given index.
       */
      public com.google.protobuf.ByteString
          getDnsResolversBytes(int index) {
        return dnsResolvers_.getByteString(index);
      }
      /**
       * <pre>
       * List of DNS resolvers.
       * </pre>
       *
       * <code>repeated string dnsResolvers = 3;</code>
       * @param index The index to set the value at.
       * @param value The dnsResolvers to set.
       * @return This builder for chaining.
       */
      public Builder setDnsResolvers(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDnsResolversIsMutable();
        dnsResolvers_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of DNS resolvers.
       * </pre>
       *
       * <code>repeated string dnsResolvers = 3;</code>
       * @param value The dnsResolvers to add.
       * @return This builder for chaining.
       */
      public Builder addDnsResolvers(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureDnsResolversIsMutable();
        dnsResolvers_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of DNS resolvers.
       * </pre>
       *
       * <code>repeated string dnsResolvers = 3;</code>
       * @param values The dnsResolvers to add.
       * @return This builder for chaining.
       */
      public Builder addAllDnsResolvers(
          java.lang.Iterable<java.lang.String> values) {
        ensureDnsResolversIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, dnsResolvers_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of DNS resolvers.
       * </pre>
       *
       * <code>repeated string dnsResolvers = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDnsResolvers() {
        dnsResolvers_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * List of DNS resolvers.
       * </pre>
       *
       * <code>repeated string dnsResolvers = 3;</code>
       * @param value The bytes of the dnsResolvers to add.
       * @return This builder for chaining.
       */
      public Builder addDnsResolversBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureDnsResolversIsMutable();
        dnsResolvers_.add(value);
        onChanged();
        return this;
      }

      private boolean neighbourScan_ ;
      /**
       * <pre>
       * Scanning host networks for neighbours (against Saltboot API).
       * </pre>
       *
       * <code>bool neighbourScan = 4;</code>
       * @return The neighbourScan.
       */
      @java.lang.Override
      public boolean getNeighbourScan() {
        return neighbourScan_;
      }
      /**
       * <pre>
       * Scanning host networks for neighbours (against Saltboot API).
       * </pre>
       *
       * <code>bool neighbourScan = 4;</code>
       * @param value The neighbourScan to set.
       * @return This builder for chaining.
       */
      public Builder setNeighbourScan(boolean value) {
        
        neighbourScan_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Scanning host networks for neighbours (against Saltboot API).
       * </pre>
       *
       * <code>bool neighbourScan = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearNeighbourScan() {
        
        neighbourScan_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList neighbours_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureNeighboursIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          neighbours_ = new com.google.protobuf.LazyStringArrayList(neighbours_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       * Neighbours (addresses) on the host network.
       * </pre>
       *
       * <code>repeated string neighbours = 5;</code>
       * @return A list containing the neighbours.
       */
      public com.google.protobuf.ProtocolStringList
          getNeighboursList() {
        return neighbours_.getUnmodifiableView();
      }
      /**
       * <pre>
       * Neighbours (addresses) on the host network.
       * </pre>
       *
       * <code>repeated string neighbours = 5;</code>
       * @return The count of neighbours.
       */
      public int getNeighboursCount() {
        return neighbours_.size();
      }
      /**
       * <pre>
       * Neighbours (addresses) on the host network.
       * </pre>
       *
       * <code>repeated string neighbours = 5;</code>
       * @param index The index of the element to return.
       * @return The neighbours at the given index.
       */
      public java.lang.String getNeighbours(int index) {
        return neighbours_.get(index);
      }
      /**
       * <pre>
       * Neighbours (addresses) on the host network.
       * </pre>
       *
       * <code>repeated string neighbours = 5;</code>
       * @param index The index of the value to return.
       * @return The bytes of the neighbours at the given index.
       */
      public com.google.protobuf.ByteString
          getNeighboursBytes(int index) {
        return neighbours_.getByteString(index);
      }
      /**
       * <pre>
       * Neighbours (addresses) on the host network.
       * </pre>
       *
       * <code>repeated string neighbours = 5;</code>
       * @param index The index to set the value at.
       * @param value The neighbours to set.
       * @return This builder for chaining.
       */
      public Builder setNeighbours(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureNeighboursIsMutable();
        neighbours_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Neighbours (addresses) on the host network.
       * </pre>
       *
       * <code>repeated string neighbours = 5;</code>
       * @param value The neighbours to add.
       * @return This builder for chaining.
       */
      public Builder addNeighbours(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureNeighboursIsMutable();
        neighbours_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Neighbours (addresses) on the host network.
       * </pre>
       *
       * <code>repeated string neighbours = 5;</code>
       * @param values The neighbours to add.
       * @return This builder for chaining.
       */
      public Builder addAllNeighbours(
          java.lang.Iterable<java.lang.String> values) {
        ensureNeighboursIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, neighbours_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Neighbours (addresses) on the host network.
       * </pre>
       *
       * <code>repeated string neighbours = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearNeighbours() {
        neighbours_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000002);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Neighbours (addresses) on the host network.
       * </pre>
       *
       * <code>repeated string neighbours = 5;</code>
       * @param value The bytes of the neighbours to add.
       * @return This builder for chaining.
       */
      public Builder addNeighboursBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureNeighboursIsMutable();
        neighbours_.add(value);
        onChanged();
        return this;
      }

      private int anyNeighboursAccessible_ = 0;
      /**
       * <pre>
       * Accessibility of the neighbours from the host network.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus anyNeighboursAccessible = 6;</code>
       * @return The enum numeric value on the wire for anyNeighboursAccessible.
       */
      @java.lang.Override public int getAnyNeighboursAccessibleValue() {
        return anyNeighboursAccessible_;
      }
      /**
       * <pre>
       * Accessibility of the neighbours from the host network.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus anyNeighboursAccessible = 6;</code>
       * @param value The enum numeric value on the wire for anyNeighboursAccessible to set.
       * @return This builder for chaining.
       */
      public Builder setAnyNeighboursAccessibleValue(int value) {
        
        anyNeighboursAccessible_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Accessibility of the neighbours from the host network.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus anyNeighboursAccessible = 6;</code>
       * @return The anyNeighboursAccessible.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getAnyNeighboursAccessible() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(anyNeighboursAccessible_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Accessibility of the neighbours from the host network.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus anyNeighboursAccessible = 6;</code>
       * @param value The anyNeighboursAccessible to set.
       * @return This builder for chaining.
       */
      public Builder setAnyNeighboursAccessible(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        anyNeighboursAccessible_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Accessibility of the neighbours from the host network.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus anyNeighboursAccessible = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearAnyNeighboursAccessible() {
        
        anyNeighboursAccessible_ = 0;
        onChanged();
        return this;
      }

      private int numberOfNeighbours_ ;
      /**
       * <pre>
       * Number of neighbours on the host network.
       * </pre>
       *
       * <code>int32 numberOfNeighbours = 7;</code>
       * @return The numberOfNeighbours.
       */
      @java.lang.Override
      public int getNumberOfNeighbours() {
        return numberOfNeighbours_;
      }
      /**
       * <pre>
       * Number of neighbours on the host network.
       * </pre>
       *
       * <code>int32 numberOfNeighbours = 7;</code>
       * @param value The numberOfNeighbours to set.
       * @return This builder for chaining.
       */
      public Builder setNumberOfNeighbours(int value) {
        
        numberOfNeighbours_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of neighbours on the host network.
       * </pre>
       *
       * <code>int32 numberOfNeighbours = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearNumberOfNeighbours() {
        
        numberOfNeighbours_ = 0;
        onChanged();
        return this;
      }

      private long timestamp_ ;
      /**
       * <pre>
       * Timestamp of network status report.
       * </pre>
       *
       * <code>int64 timestamp = 8;</code>
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       * Timestamp of network status report.
       * </pre>
       *
       * <code>int64 timestamp = 8;</code>
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Timestamp of network status report.
       * </pre>
       *
       * <code>int64 timestamp = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      private int ccmAccessible_ = 0;
      /**
       * <pre>
       * CCM address availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus ccmAccessible = 9;</code>
       * @return The enum numeric value on the wire for ccmAccessible.
       */
      @java.lang.Override public int getCcmAccessibleValue() {
        return ccmAccessible_;
      }
      /**
       * <pre>
       * CCM address availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus ccmAccessible = 9;</code>
       * @param value The enum numeric value on the wire for ccmAccessible to set.
       * @return This builder for chaining.
       */
      public Builder setCcmAccessibleValue(int value) {
        
        ccmAccessible_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * CCM address availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus ccmAccessible = 9;</code>
       * @return The ccmAccessible.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getCcmAccessible() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(ccmAccessible_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * CCM address availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus ccmAccessible = 9;</code>
       * @param value The ccmAccessible to set.
       * @return This builder for chaining.
       */
      public Builder setCcmAccessible(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        ccmAccessible_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * CCM address availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus ccmAccessible = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearCcmAccessible() {
        
        ccmAccessible_ = 0;
        onChanged();
        return this;
      }

      private int clouderaComAccessible_ = 0;
      /**
       * <pre>
       * Availability of .cloudera.com address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus clouderaComAccessible = 10;</code>
       * @return The enum numeric value on the wire for clouderaComAccessible.
       */
      @java.lang.Override public int getClouderaComAccessibleValue() {
        return clouderaComAccessible_;
      }
      /**
       * <pre>
       * Availability of .cloudera.com address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus clouderaComAccessible = 10;</code>
       * @param value The enum numeric value on the wire for clouderaComAccessible to set.
       * @return This builder for chaining.
       */
      public Builder setClouderaComAccessibleValue(int value) {
        
        clouderaComAccessible_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Availability of .cloudera.com address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus clouderaComAccessible = 10;</code>
       * @return The clouderaComAccessible.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getClouderaComAccessible() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(clouderaComAccessible_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Availability of .cloudera.com address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus clouderaComAccessible = 10;</code>
       * @param value The clouderaComAccessible to set.
       * @return This builder for chaining.
       */
      public Builder setClouderaComAccessible(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        clouderaComAccessible_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Availability of .cloudera.com address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus clouderaComAccessible = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearClouderaComAccessible() {
        
        clouderaComAccessible_ = 0;
        onChanged();
        return this;
      }

      private int databusAccessible_ = 0;
      /**
       * <pre>
       * Databus API availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusAccessible = 11;</code>
       * @return The enum numeric value on the wire for databusAccessible.
       */
      @java.lang.Override public int getDatabusAccessibleValue() {
        return databusAccessible_;
      }
      /**
       * <pre>
       * Databus API availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusAccessible = 11;</code>
       * @param value The enum numeric value on the wire for databusAccessible to set.
       * @return This builder for chaining.
       */
      public Builder setDatabusAccessibleValue(int value) {
        
        databusAccessible_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Databus API availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusAccessible = 11;</code>
       * @return The databusAccessible.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getDatabusAccessible() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(databusAccessible_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Databus API availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusAccessible = 11;</code>
       * @param value The databusAccessible to set.
       * @return This builder for chaining.
       */
      public Builder setDatabusAccessible(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        databusAccessible_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Databus API availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusAccessible = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearDatabusAccessible() {
        
        databusAccessible_ = 0;
        onChanged();
        return this;
      }

      private int databusS3Accessible_ = 0;
      /**
       * <pre>
       * Databus S3 API availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusS3Accessible = 12;</code>
       * @return The enum numeric value on the wire for databusS3Accessible.
       */
      @java.lang.Override public int getDatabusS3AccessibleValue() {
        return databusS3Accessible_;
      }
      /**
       * <pre>
       * Databus S3 API availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusS3Accessible = 12;</code>
       * @param value The enum numeric value on the wire for databusS3Accessible to set.
       * @return This builder for chaining.
       */
      public Builder setDatabusS3AccessibleValue(int value) {
        
        databusS3Accessible_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Databus S3 API availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusS3Accessible = 12;</code>
       * @return The databusS3Accessible.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getDatabusS3Accessible() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(databusS3Accessible_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Databus S3 API availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusS3Accessible = 12;</code>
       * @param value The databusS3Accessible to set.
       * @return This builder for chaining.
       */
      public Builder setDatabusS3Accessible(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        databusS3Accessible_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Databus S3 API availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus databusS3Accessible = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearDatabusS3Accessible() {
        
        databusS3Accessible_ = 0;
        onChanged();
        return this;
      }

      private int s3Accessible_ = 0;
      /**
       * <pre>
       * AWS S3 endpoint availability (endpoint is produced by metadata service: s3.&lt;region&gt;.&lt;domain&gt;).
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus s3Accessible = 13;</code>
       * @return The enum numeric value on the wire for s3Accessible.
       */
      @java.lang.Override public int getS3AccessibleValue() {
        return s3Accessible_;
      }
      /**
       * <pre>
       * AWS S3 endpoint availability (endpoint is produced by metadata service: s3.&lt;region&gt;.&lt;domain&gt;).
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus s3Accessible = 13;</code>
       * @param value The enum numeric value on the wire for s3Accessible to set.
       * @return This builder for chaining.
       */
      public Builder setS3AccessibleValue(int value) {
        
        s3Accessible_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * AWS S3 endpoint availability (endpoint is produced by metadata service: s3.&lt;region&gt;.&lt;domain&gt;).
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus s3Accessible = 13;</code>
       * @return The s3Accessible.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getS3Accessible() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(s3Accessible_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * AWS S3 endpoint availability (endpoint is produced by metadata service: s3.&lt;region&gt;.&lt;domain&gt;).
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus s3Accessible = 13;</code>
       * @param value The s3Accessible to set.
       * @return This builder for chaining.
       */
      public Builder setS3Accessible(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        s3Accessible_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * AWS S3 endpoint availability (endpoint is produced by metadata service: s3.&lt;region&gt;.&lt;domain&gt;).
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus s3Accessible = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearS3Accessible() {
        
        s3Accessible_ = 0;
        onChanged();
        return this;
      }

      private int adlsV2Accessible_ = 0;
      /**
       * <pre>
       * ADLS v2 (ABFS) endpoint availability (&lt;azure_storage_account&gt;.dfs.core.windows.net).
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus adlsV2Accessible = 14;</code>
       * @return The enum numeric value on the wire for adlsV2Accessible.
       */
      @java.lang.Override public int getAdlsV2AccessibleValue() {
        return adlsV2Accessible_;
      }
      /**
       * <pre>
       * ADLS v2 (ABFS) endpoint availability (&lt;azure_storage_account&gt;.dfs.core.windows.net).
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus adlsV2Accessible = 14;</code>
       * @param value The enum numeric value on the wire for adlsV2Accessible to set.
       * @return This builder for chaining.
       */
      public Builder setAdlsV2AccessibleValue(int value) {
        
        adlsV2Accessible_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ADLS v2 (ABFS) endpoint availability (&lt;azure_storage_account&gt;.dfs.core.windows.net).
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus adlsV2Accessible = 14;</code>
       * @return The adlsV2Accessible.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getAdlsV2Accessible() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(adlsV2Accessible_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * ADLS v2 (ABFS) endpoint availability (&lt;azure_storage_account&gt;.dfs.core.windows.net).
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus adlsV2Accessible = 14;</code>
       * @param value The adlsV2Accessible to set.
       * @return This builder for chaining.
       */
      public Builder setAdlsV2Accessible(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        adlsV2Accessible_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * ADLS v2 (ABFS) endpoint availability (&lt;azure_storage_account&gt;.dfs.core.windows.net).
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus adlsV2Accessible = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearAdlsV2Accessible() {
        
        adlsV2Accessible_ = 0;
        onChanged();
        return this;
      }

      private int gcsAccessible_ = 0;
      /**
       * <pre>
       * GCS endpoint (storage.googleapis.com) availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus gcsAccessible = 15;</code>
       * @return The enum numeric value on the wire for gcsAccessible.
       */
      @java.lang.Override public int getGcsAccessibleValue() {
        return gcsAccessible_;
      }
      /**
       * <pre>
       * GCS endpoint (storage.googleapis.com) availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus gcsAccessible = 15;</code>
       * @param value The enum numeric value on the wire for gcsAccessible to set.
       * @return This builder for chaining.
       */
      public Builder setGcsAccessibleValue(int value) {
        
        gcsAccessible_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * GCS endpoint (storage.googleapis.com) availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus gcsAccessible = 15;</code>
       * @return The gcsAccessible.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getGcsAccessible() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(gcsAccessible_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * GCS endpoint (storage.googleapis.com) availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus gcsAccessible = 15;</code>
       * @param value The gcsAccessible to set.
       * @return This builder for chaining.
       */
      public Builder setGcsAccessible(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        gcsAccessible_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * GCS endpoint (storage.googleapis.com) availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus gcsAccessible = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearGcsAccessible() {
        
        gcsAccessible_ = 0;
        onChanged();
        return this;
      }

      private int stsAccessible_ = 0;
      /**
       * <pre>
       * AWS Security Token Service endpoint availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus stsAccessible = 16;</code>
       * @return The enum numeric value on the wire for stsAccessible.
       */
      @java.lang.Override public int getStsAccessibleValue() {
        return stsAccessible_;
      }
      /**
       * <pre>
       * AWS Security Token Service endpoint availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus stsAccessible = 16;</code>
       * @param value The enum numeric value on the wire for stsAccessible to set.
       * @return This builder for chaining.
       */
      public Builder setStsAccessibleValue(int value) {
        
        stsAccessible_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * AWS Security Token Service endpoint availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus stsAccessible = 16;</code>
       * @return The stsAccessible.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getStsAccessible() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(stsAccessible_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * AWS Security Token Service endpoint availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus stsAccessible = 16;</code>
       * @param value The stsAccessible to set.
       * @return This builder for chaining.
       */
      public Builder setStsAccessible(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        stsAccessible_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * AWS Security Token Service endpoint availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus stsAccessible = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearStsAccessible() {
        
        stsAccessible_ = 0;
        onChanged();
        return this;
      }

      private int azureManagementAccessible_ = 0;
      /**
       * <pre>
       * Azure management endpoint - management.azure.com availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus azureManagementAccessible = 17;</code>
       * @return The enum numeric value on the wire for azureManagementAccessible.
       */
      @java.lang.Override public int getAzureManagementAccessibleValue() {
        return azureManagementAccessible_;
      }
      /**
       * <pre>
       * Azure management endpoint - management.azure.com availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus azureManagementAccessible = 17;</code>
       * @param value The enum numeric value on the wire for azureManagementAccessible to set.
       * @return This builder for chaining.
       */
      public Builder setAzureManagementAccessibleValue(int value) {
        
        azureManagementAccessible_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Azure management endpoint - management.azure.com availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus azureManagementAccessible = 17;</code>
       * @return The azureManagementAccessible.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getAzureManagementAccessible() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(azureManagementAccessible_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Azure management endpoint - management.azure.com availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus azureManagementAccessible = 17;</code>
       * @param value The azureManagementAccessible to set.
       * @return This builder for chaining.
       */
      public Builder setAzureManagementAccessible(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        azureManagementAccessible_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Azure management endpoint - management.azure.com availability.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus azureManagementAccessible = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearAzureManagementAccessible() {
        
        azureManagementAccessible_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object cdpTelemetryVersion_ = "";
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 18;</code>
       * @return The cdpTelemetryVersion.
       */
      public java.lang.String getCdpTelemetryVersion() {
        java.lang.Object ref = cdpTelemetryVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          cdpTelemetryVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 18;</code>
       * @return The bytes for cdpTelemetryVersion.
       */
      public com.google.protobuf.ByteString
          getCdpTelemetryVersionBytes() {
        java.lang.Object ref = cdpTelemetryVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          cdpTelemetryVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 18;</code>
       * @param value The cdpTelemetryVersion to set.
       * @return This builder for chaining.
       */
      public Builder setCdpTelemetryVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        cdpTelemetryVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 18;</code>
       * @return This builder for chaining.
       */
      public Builder clearCdpTelemetryVersion() {
        
        cdpTelemetryVersion_ = getDefaultInstance().getCdpTelemetryVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 18;</code>
       * @param value The bytes for cdpTelemetryVersion to set.
       * @return This builder for chaining.
       */
      public Builder setCdpTelemetryVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        cdpTelemetryVersion_ = value;
        onChanged();
        return this;
      }

      private int archiveClouderaComAccessible_ = 0;
      /**
       * <pre>
       * Availability of archive.cloudera.com address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus archiveClouderaComAccessible = 19;</code>
       * @return The enum numeric value on the wire for archiveClouderaComAccessible.
       */
      @java.lang.Override public int getArchiveClouderaComAccessibleValue() {
        return archiveClouderaComAccessible_;
      }
      /**
       * <pre>
       * Availability of archive.cloudera.com address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus archiveClouderaComAccessible = 19;</code>
       * @param value The enum numeric value on the wire for archiveClouderaComAccessible to set.
       * @return This builder for chaining.
       */
      public Builder setArchiveClouderaComAccessibleValue(int value) {
        
        archiveClouderaComAccessible_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Availability of archive.cloudera.com address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus archiveClouderaComAccessible = 19;</code>
       * @return The archiveClouderaComAccessible.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getArchiveClouderaComAccessible() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(archiveClouderaComAccessible_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Availability of archive.cloudera.com address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus archiveClouderaComAccessible = 19;</code>
       * @param value The archiveClouderaComAccessible to set.
       * @return This builder for chaining.
       */
      public Builder setArchiveClouderaComAccessible(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        archiveClouderaComAccessible_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Availability of archive.cloudera.com address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus archiveClouderaComAccessible = 19;</code>
       * @return This builder for chaining.
       */
      public Builder clearArchiveClouderaComAccessible() {
        
        archiveClouderaComAccessible_ = 0;
        onChanged();
        return this;
      }

      private int serviceDeliveryCacheS3Accessible_ = 0;
      /**
       * <pre>
       * Availability of cloudera-service-delivery-cache.s3.amazonaws.com address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus serviceDeliveryCacheS3Accessible = 20;</code>
       * @return The enum numeric value on the wire for serviceDeliveryCacheS3Accessible.
       */
      @java.lang.Override public int getServiceDeliveryCacheS3AccessibleValue() {
        return serviceDeliveryCacheS3Accessible_;
      }
      /**
       * <pre>
       * Availability of cloudera-service-delivery-cache.s3.amazonaws.com address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus serviceDeliveryCacheS3Accessible = 20;</code>
       * @param value The enum numeric value on the wire for serviceDeliveryCacheS3Accessible to set.
       * @return This builder for chaining.
       */
      public Builder setServiceDeliveryCacheS3AccessibleValue(int value) {
        
        serviceDeliveryCacheS3Accessible_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Availability of cloudera-service-delivery-cache.s3.amazonaws.com address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus serviceDeliveryCacheS3Accessible = 20;</code>
       * @return The serviceDeliveryCacheS3Accessible.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getServiceDeliveryCacheS3Accessible() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(serviceDeliveryCacheS3Accessible_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Availability of cloudera-service-delivery-cache.s3.amazonaws.com address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus serviceDeliveryCacheS3Accessible = 20;</code>
       * @param value The serviceDeliveryCacheS3Accessible to set.
       * @return This builder for chaining.
       */
      public Builder setServiceDeliveryCacheS3Accessible(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        serviceDeliveryCacheS3Accessible_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Availability of cloudera-service-delivery-cache.s3.amazonaws.com address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus serviceDeliveryCacheS3Accessible = 20;</code>
       * @return This builder for chaining.
       */
      public Builder clearServiceDeliveryCacheS3Accessible() {
        
        serviceDeliveryCacheS3Accessible_ = 0;
        onChanged();
        return this;
      }

      private int computeMonitoringAccessible_ = 0;
      /**
       * <pre>
       * Availability of compute monitoring remote write address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus computeMonitoringAccessible = 21;</code>
       * @return The enum numeric value on the wire for computeMonitoringAccessible.
       */
      @java.lang.Override public int getComputeMonitoringAccessibleValue() {
        return computeMonitoringAccessible_;
      }
      /**
       * <pre>
       * Availability of compute monitoring remote write address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus computeMonitoringAccessible = 21;</code>
       * @param value The enum numeric value on the wire for computeMonitoringAccessible to set.
       * @return This builder for chaining.
       */
      public Builder setComputeMonitoringAccessibleValue(int value) {
        
        computeMonitoringAccessible_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Availability of compute monitoring remote write address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus computeMonitoringAccessible = 21;</code>
       * @return The computeMonitoringAccessible.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus getComputeMonitoringAccessible() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.valueOf(computeMonitoringAccessible_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Availability of compute monitoring remote write address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus computeMonitoringAccessible = 21;</code>
       * @param value The computeMonitoringAccessible to set.
       * @return This builder for chaining.
       */
      public Builder setComputeMonitoringAccessible(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.HealthStatus value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        computeMonitoringAccessible_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Availability of compute monitoring remote write address.
       * </pre>
       *
       * <code>.cdp.telemetry.HealthStatus computeMonitoringAccessible = 21;</code>
       * @return This builder for chaining.
       */
      public Builder clearComputeMonitoringAccessible() {
        
        computeMonitoringAccessible_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.NetworkDetails)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.NetworkDetails)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NetworkDetails>
        PARSER = new com.google.protobuf.AbstractParser<NetworkDetails>() {
      @java.lang.Override
      public NetworkDetails parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<NetworkDetails> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NetworkDetails> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkDetails getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SystemMetricsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.SystemMetrics)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * CPU related system metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.CpuMetrics cpu = 1;</code>
     * @return Whether the cpu field is set.
     */
    boolean hasCpu();
    /**
     * <pre>
     * CPU related system metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.CpuMetrics cpu = 1;</code>
     * @return The cpu.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics getCpu();
    /**
     * <pre>
     * CPU related system metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.CpuMetrics cpu = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetricsOrBuilder getCpuOrBuilder();

    /**
     * <pre>
     * Disk related system metrics (e.g.: partitions and largest log folders).
     * </pre>
     *
     * <code>.cdp.telemetry.DiskMetrics disk = 2;</code>
     * @return Whether the disk field is set.
     */
    boolean hasDisk();
    /**
     * <pre>
     * Disk related system metrics (e.g.: partitions and largest log folders).
     * </pre>
     *
     * <code>.cdp.telemetry.DiskMetrics disk = 2;</code>
     * @return The disk.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics getDisk();
    /**
     * <pre>
     * Disk related system metrics (e.g.: partitions and largest log folders).
     * </pre>
     *
     * <code>.cdp.telemetry.DiskMetrics disk = 2;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetricsOrBuilder getDiskOrBuilder();

    /**
     * <pre>
     * Memory (virtual/swap) related system metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.MemoryMetrics memory = 3;</code>
     * @return Whether the memory field is set.
     */
    boolean hasMemory();
    /**
     * <pre>
     * Memory (virtual/swap) related system metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.MemoryMetrics memory = 3;</code>
     * @return The memory.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics getMemory();
    /**
     * <pre>
     * Memory (virtual/swap) related system metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.MemoryMetrics memory = 3;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetricsOrBuilder getMemoryOrBuilder();

    /**
     * <pre>
     * Network related metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkMetrics network = 4;</code>
     * @return Whether the network field is set.
     */
    boolean hasNetwork();
    /**
     * <pre>
     * Network related metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkMetrics network = 4;</code>
     * @return The network.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics getNetwork();
    /**
     * <pre>
     * Network related metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkMetrics network = 4;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetricsOrBuilder getNetworkOrBuilder();

    /**
     * <pre>
     * Timestamp of the host metrics that shows when were the metrics collected last time.
     * </pre>
     *
     * <code>int64 timestamp = 5;</code>
     * @return The timestamp.
     */
    long getTimestamp();

    /**
     * <pre>
     * Common cluster related data (optional - can be filled from NodeStatusReport as well).
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
     * @return Whether the clusterDetails field is set.
     */
    boolean hasClusterDetails();
    /**
     * <pre>
     * Common cluster related data (optional - can be filled from NodeStatusReport as well).
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
     * @return The clusterDetails.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getClusterDetails();
    /**
     * <pre>
     * Common cluster related data (optional - can be filled from NodeStatusReport as well).
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder getClusterDetailsOrBuilder();

    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 7;</code>
     * @return The cdpTelemetryVersion.
     */
    java.lang.String getCdpTelemetryVersion();
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 7;</code>
     * @return The bytes for cdpTelemetryVersion.
     */
    com.google.protobuf.ByteString
        getCdpTelemetryVersionBytes();
  }
  /**
   * <pre>
   * System host metrics that is collected periodically by nodestatus monitor.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.SystemMetrics}
   */
  public static final class SystemMetrics extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.SystemMetrics)
      SystemMetricsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SystemMetrics.newBuilder() to construct.
    private SystemMetrics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SystemMetrics() {
      cdpTelemetryVersion_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SystemMetrics();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SystemMetrics_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SystemMetrics_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics.Builder.class);
    }

    public static final int CPU_FIELD_NUMBER = 1;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics cpu_;
    /**
     * <pre>
     * CPU related system metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.CpuMetrics cpu = 1;</code>
     * @return Whether the cpu field is set.
     */
    @java.lang.Override
    public boolean hasCpu() {
      return cpu_ != null;
    }
    /**
     * <pre>
     * CPU related system metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.CpuMetrics cpu = 1;</code>
     * @return The cpu.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics getCpu() {
      return cpu_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics.getDefaultInstance() : cpu_;
    }
    /**
     * <pre>
     * CPU related system metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.CpuMetrics cpu = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetricsOrBuilder getCpuOrBuilder() {
      return getCpu();
    }

    public static final int DISK_FIELD_NUMBER = 2;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics disk_;
    /**
     * <pre>
     * Disk related system metrics (e.g.: partitions and largest log folders).
     * </pre>
     *
     * <code>.cdp.telemetry.DiskMetrics disk = 2;</code>
     * @return Whether the disk field is set.
     */
    @java.lang.Override
    public boolean hasDisk() {
      return disk_ != null;
    }
    /**
     * <pre>
     * Disk related system metrics (e.g.: partitions and largest log folders).
     * </pre>
     *
     * <code>.cdp.telemetry.DiskMetrics disk = 2;</code>
     * @return The disk.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics getDisk() {
      return disk_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics.getDefaultInstance() : disk_;
    }
    /**
     * <pre>
     * Disk related system metrics (e.g.: partitions and largest log folders).
     * </pre>
     *
     * <code>.cdp.telemetry.DiskMetrics disk = 2;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetricsOrBuilder getDiskOrBuilder() {
      return getDisk();
    }

    public static final int MEMORY_FIELD_NUMBER = 3;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics memory_;
    /**
     * <pre>
     * Memory (virtual/swap) related system metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.MemoryMetrics memory = 3;</code>
     * @return Whether the memory field is set.
     */
    @java.lang.Override
    public boolean hasMemory() {
      return memory_ != null;
    }
    /**
     * <pre>
     * Memory (virtual/swap) related system metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.MemoryMetrics memory = 3;</code>
     * @return The memory.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics getMemory() {
      return memory_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics.getDefaultInstance() : memory_;
    }
    /**
     * <pre>
     * Memory (virtual/swap) related system metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.MemoryMetrics memory = 3;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetricsOrBuilder getMemoryOrBuilder() {
      return getMemory();
    }

    public static final int NETWORK_FIELD_NUMBER = 4;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics network_;
    /**
     * <pre>
     * Network related metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkMetrics network = 4;</code>
     * @return Whether the network field is set.
     */
    @java.lang.Override
    public boolean hasNetwork() {
      return network_ != null;
    }
    /**
     * <pre>
     * Network related metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkMetrics network = 4;</code>
     * @return The network.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics getNetwork() {
      return network_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics.getDefaultInstance() : network_;
    }
    /**
     * <pre>
     * Network related metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkMetrics network = 4;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetricsOrBuilder getNetworkOrBuilder() {
      return getNetwork();
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 5;
    private long timestamp_;
    /**
     * <pre>
     * Timestamp of the host metrics that shows when were the metrics collected last time.
     * </pre>
     *
     * <code>int64 timestamp = 5;</code>
     * @return The timestamp.
     */
    @java.lang.Override
    public long getTimestamp() {
      return timestamp_;
    }

    public static final int CLUSTERDETAILS_FIELD_NUMBER = 6;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails clusterDetails_;
    /**
     * <pre>
     * Common cluster related data (optional - can be filled from NodeStatusReport as well).
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
     * @return Whether the clusterDetails field is set.
     */
    @java.lang.Override
    public boolean hasClusterDetails() {
      return clusterDetails_ != null;
    }
    /**
     * <pre>
     * Common cluster related data (optional - can be filled from NodeStatusReport as well).
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
     * @return The clusterDetails.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getClusterDetails() {
      return clusterDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance() : clusterDetails_;
    }
    /**
     * <pre>
     * Common cluster related data (optional - can be filled from NodeStatusReport as well).
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder getClusterDetailsOrBuilder() {
      return getClusterDetails();
    }

    public static final int CDPTELEMETRYVERSION_FIELD_NUMBER = 7;
    private volatile java.lang.Object cdpTelemetryVersion_;
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 7;</code>
     * @return The cdpTelemetryVersion.
     */
    @java.lang.Override
    public java.lang.String getCdpTelemetryVersion() {
      java.lang.Object ref = cdpTelemetryVersion_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        cdpTelemetryVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 7;</code>
     * @return The bytes for cdpTelemetryVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCdpTelemetryVersionBytes() {
      java.lang.Object ref = cdpTelemetryVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        cdpTelemetryVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (cpu_ != null) {
        output.writeMessage(1, getCpu());
      }
      if (disk_ != null) {
        output.writeMessage(2, getDisk());
      }
      if (memory_ != null) {
        output.writeMessage(3, getMemory());
      }
      if (network_ != null) {
        output.writeMessage(4, getNetwork());
      }
      if (timestamp_ != 0L) {
        output.writeInt64(5, timestamp_);
      }
      if (clusterDetails_ != null) {
        output.writeMessage(6, getClusterDetails());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cdpTelemetryVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, cdpTelemetryVersion_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (cpu_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getCpu());
      }
      if (disk_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getDisk());
      }
      if (memory_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getMemory());
      }
      if (network_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getNetwork());
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, timestamp_);
      }
      if (clusterDetails_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getClusterDetails());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cdpTelemetryVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, cdpTelemetryVersion_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics) obj;

      if (hasCpu() != other.hasCpu()) return false;
      if (hasCpu()) {
        if (!getCpu()
            .equals(other.getCpu())) return false;
      }
      if (hasDisk() != other.hasDisk()) return false;
      if (hasDisk()) {
        if (!getDisk()
            .equals(other.getDisk())) return false;
      }
      if (hasMemory() != other.hasMemory()) return false;
      if (hasMemory()) {
        if (!getMemory()
            .equals(other.getMemory())) return false;
      }
      if (hasNetwork() != other.hasNetwork()) return false;
      if (hasNetwork()) {
        if (!getNetwork()
            .equals(other.getNetwork())) return false;
      }
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (hasClusterDetails() != other.hasClusterDetails()) return false;
      if (hasClusterDetails()) {
        if (!getClusterDetails()
            .equals(other.getClusterDetails())) return false;
      }
      if (!getCdpTelemetryVersion()
          .equals(other.getCdpTelemetryVersion())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasCpu()) {
        hash = (37 * hash) + CPU_FIELD_NUMBER;
        hash = (53 * hash) + getCpu().hashCode();
      }
      if (hasDisk()) {
        hash = (37 * hash) + DISK_FIELD_NUMBER;
        hash = (53 * hash) + getDisk().hashCode();
      }
      if (hasMemory()) {
        hash = (37 * hash) + MEMORY_FIELD_NUMBER;
        hash = (53 * hash) + getMemory().hashCode();
      }
      if (hasNetwork()) {
        hash = (37 * hash) + NETWORK_FIELD_NUMBER;
        hash = (53 * hash) + getNetwork().hashCode();
      }
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      if (hasClusterDetails()) {
        hash = (37 * hash) + CLUSTERDETAILS_FIELD_NUMBER;
        hash = (53 * hash) + getClusterDetails().hashCode();
      }
      hash = (37 * hash) + CDPTELEMETRYVERSION_FIELD_NUMBER;
      hash = (53 * hash) + getCdpTelemetryVersion().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * System host metrics that is collected periodically by nodestatus monitor.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.SystemMetrics}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.SystemMetrics)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetricsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SystemMetrics_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SystemMetrics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (cpuBuilder_ == null) {
          cpu_ = null;
        } else {
          cpu_ = null;
          cpuBuilder_ = null;
        }
        if (diskBuilder_ == null) {
          disk_ = null;
        } else {
          disk_ = null;
          diskBuilder_ = null;
        }
        if (memoryBuilder_ == null) {
          memory_ = null;
        } else {
          memory_ = null;
          memoryBuilder_ = null;
        }
        if (networkBuilder_ == null) {
          network_ = null;
        } else {
          network_ = null;
          networkBuilder_ = null;
        }
        timestamp_ = 0L;

        if (clusterDetailsBuilder_ == null) {
          clusterDetails_ = null;
        } else {
          clusterDetails_ = null;
          clusterDetailsBuilder_ = null;
        }
        cdpTelemetryVersion_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SystemMetrics_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics(this);
        if (cpuBuilder_ == null) {
          result.cpu_ = cpu_;
        } else {
          result.cpu_ = cpuBuilder_.build();
        }
        if (diskBuilder_ == null) {
          result.disk_ = disk_;
        } else {
          result.disk_ = diskBuilder_.build();
        }
        if (memoryBuilder_ == null) {
          result.memory_ = memory_;
        } else {
          result.memory_ = memoryBuilder_.build();
        }
        if (networkBuilder_ == null) {
          result.network_ = network_;
        } else {
          result.network_ = networkBuilder_.build();
        }
        result.timestamp_ = timestamp_;
        if (clusterDetailsBuilder_ == null) {
          result.clusterDetails_ = clusterDetails_;
        } else {
          result.clusterDetails_ = clusterDetailsBuilder_.build();
        }
        result.cdpTelemetryVersion_ = cdpTelemetryVersion_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics.getDefaultInstance()) return this;
        if (other.hasCpu()) {
          mergeCpu(other.getCpu());
        }
        if (other.hasDisk()) {
          mergeDisk(other.getDisk());
        }
        if (other.hasMemory()) {
          mergeMemory(other.getMemory());
        }
        if (other.hasNetwork()) {
          mergeNetwork(other.getNetwork());
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        if (other.hasClusterDetails()) {
          mergeClusterDetails(other.getClusterDetails());
        }
        if (!other.getCdpTelemetryVersion().isEmpty()) {
          cdpTelemetryVersion_ = other.cdpTelemetryVersion_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getCpuFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getDiskFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getMemoryFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getNetworkFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 34
              case 40: {
                timestamp_ = input.readInt64();

                break;
              } // case 40
              case 50: {
                input.readMessage(
                    getClusterDetailsFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 50
              case 58: {
                cdpTelemetryVersion_ = input.readStringRequireUtf8();

                break;
              } // case 58
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics cpu_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetricsOrBuilder> cpuBuilder_;
      /**
       * <pre>
       * CPU related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuMetrics cpu = 1;</code>
       * @return Whether the cpu field is set.
       */
      public boolean hasCpu() {
        return cpuBuilder_ != null || cpu_ != null;
      }
      /**
       * <pre>
       * CPU related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuMetrics cpu = 1;</code>
       * @return The cpu.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics getCpu() {
        if (cpuBuilder_ == null) {
          return cpu_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics.getDefaultInstance() : cpu_;
        } else {
          return cpuBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * CPU related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuMetrics cpu = 1;</code>
       */
      public Builder setCpu(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics value) {
        if (cpuBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          cpu_ = value;
          onChanged();
        } else {
          cpuBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * CPU related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuMetrics cpu = 1;</code>
       */
      public Builder setCpu(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics.Builder builderForValue) {
        if (cpuBuilder_ == null) {
          cpu_ = builderForValue.build();
          onChanged();
        } else {
          cpuBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * CPU related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuMetrics cpu = 1;</code>
       */
      public Builder mergeCpu(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics value) {
        if (cpuBuilder_ == null) {
          if (cpu_ != null) {
            cpu_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics.newBuilder(cpu_).mergeFrom(value).buildPartial();
          } else {
            cpu_ = value;
          }
          onChanged();
        } else {
          cpuBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * CPU related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuMetrics cpu = 1;</code>
       */
      public Builder clearCpu() {
        if (cpuBuilder_ == null) {
          cpu_ = null;
          onChanged();
        } else {
          cpu_ = null;
          cpuBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * CPU related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuMetrics cpu = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics.Builder getCpuBuilder() {
        
        onChanged();
        return getCpuFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * CPU related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuMetrics cpu = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetricsOrBuilder getCpuOrBuilder() {
        if (cpuBuilder_ != null) {
          return cpuBuilder_.getMessageOrBuilder();
        } else {
          return cpu_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics.getDefaultInstance() : cpu_;
        }
      }
      /**
       * <pre>
       * CPU related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuMetrics cpu = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetricsOrBuilder> 
          getCpuFieldBuilder() {
        if (cpuBuilder_ == null) {
          cpuBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetricsOrBuilder>(
                  getCpu(),
                  getParentForChildren(),
                  isClean());
          cpu_ = null;
        }
        return cpuBuilder_;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics disk_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetricsOrBuilder> diskBuilder_;
      /**
       * <pre>
       * Disk related system metrics (e.g.: partitions and largest log folders).
       * </pre>
       *
       * <code>.cdp.telemetry.DiskMetrics disk = 2;</code>
       * @return Whether the disk field is set.
       */
      public boolean hasDisk() {
        return diskBuilder_ != null || disk_ != null;
      }
      /**
       * <pre>
       * Disk related system metrics (e.g.: partitions and largest log folders).
       * </pre>
       *
       * <code>.cdp.telemetry.DiskMetrics disk = 2;</code>
       * @return The disk.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics getDisk() {
        if (diskBuilder_ == null) {
          return disk_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics.getDefaultInstance() : disk_;
        } else {
          return diskBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Disk related system metrics (e.g.: partitions and largest log folders).
       * </pre>
       *
       * <code>.cdp.telemetry.DiskMetrics disk = 2;</code>
       */
      public Builder setDisk(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics value) {
        if (diskBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          disk_ = value;
          onChanged();
        } else {
          diskBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Disk related system metrics (e.g.: partitions and largest log folders).
       * </pre>
       *
       * <code>.cdp.telemetry.DiskMetrics disk = 2;</code>
       */
      public Builder setDisk(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics.Builder builderForValue) {
        if (diskBuilder_ == null) {
          disk_ = builderForValue.build();
          onChanged();
        } else {
          diskBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Disk related system metrics (e.g.: partitions and largest log folders).
       * </pre>
       *
       * <code>.cdp.telemetry.DiskMetrics disk = 2;</code>
       */
      public Builder mergeDisk(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics value) {
        if (diskBuilder_ == null) {
          if (disk_ != null) {
            disk_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics.newBuilder(disk_).mergeFrom(value).buildPartial();
          } else {
            disk_ = value;
          }
          onChanged();
        } else {
          diskBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Disk related system metrics (e.g.: partitions and largest log folders).
       * </pre>
       *
       * <code>.cdp.telemetry.DiskMetrics disk = 2;</code>
       */
      public Builder clearDisk() {
        if (diskBuilder_ == null) {
          disk_ = null;
          onChanged();
        } else {
          disk_ = null;
          diskBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Disk related system metrics (e.g.: partitions and largest log folders).
       * </pre>
       *
       * <code>.cdp.telemetry.DiskMetrics disk = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics.Builder getDiskBuilder() {
        
        onChanged();
        return getDiskFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Disk related system metrics (e.g.: partitions and largest log folders).
       * </pre>
       *
       * <code>.cdp.telemetry.DiskMetrics disk = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetricsOrBuilder getDiskOrBuilder() {
        if (diskBuilder_ != null) {
          return diskBuilder_.getMessageOrBuilder();
        } else {
          return disk_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics.getDefaultInstance() : disk_;
        }
      }
      /**
       * <pre>
       * Disk related system metrics (e.g.: partitions and largest log folders).
       * </pre>
       *
       * <code>.cdp.telemetry.DiskMetrics disk = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetricsOrBuilder> 
          getDiskFieldBuilder() {
        if (diskBuilder_ == null) {
          diskBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetricsOrBuilder>(
                  getDisk(),
                  getParentForChildren(),
                  isClean());
          disk_ = null;
        }
        return diskBuilder_;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics memory_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetricsOrBuilder> memoryBuilder_;
      /**
       * <pre>
       * Memory (virtual/swap) related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.MemoryMetrics memory = 3;</code>
       * @return Whether the memory field is set.
       */
      public boolean hasMemory() {
        return memoryBuilder_ != null || memory_ != null;
      }
      /**
       * <pre>
       * Memory (virtual/swap) related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.MemoryMetrics memory = 3;</code>
       * @return The memory.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics getMemory() {
        if (memoryBuilder_ == null) {
          return memory_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics.getDefaultInstance() : memory_;
        } else {
          return memoryBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Memory (virtual/swap) related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.MemoryMetrics memory = 3;</code>
       */
      public Builder setMemory(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics value) {
        if (memoryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          memory_ = value;
          onChanged();
        } else {
          memoryBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Memory (virtual/swap) related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.MemoryMetrics memory = 3;</code>
       */
      public Builder setMemory(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics.Builder builderForValue) {
        if (memoryBuilder_ == null) {
          memory_ = builderForValue.build();
          onChanged();
        } else {
          memoryBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Memory (virtual/swap) related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.MemoryMetrics memory = 3;</code>
       */
      public Builder mergeMemory(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics value) {
        if (memoryBuilder_ == null) {
          if (memory_ != null) {
            memory_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics.newBuilder(memory_).mergeFrom(value).buildPartial();
          } else {
            memory_ = value;
          }
          onChanged();
        } else {
          memoryBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Memory (virtual/swap) related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.MemoryMetrics memory = 3;</code>
       */
      public Builder clearMemory() {
        if (memoryBuilder_ == null) {
          memory_ = null;
          onChanged();
        } else {
          memory_ = null;
          memoryBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Memory (virtual/swap) related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.MemoryMetrics memory = 3;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics.Builder getMemoryBuilder() {
        
        onChanged();
        return getMemoryFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Memory (virtual/swap) related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.MemoryMetrics memory = 3;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetricsOrBuilder getMemoryOrBuilder() {
        if (memoryBuilder_ != null) {
          return memoryBuilder_.getMessageOrBuilder();
        } else {
          return memory_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics.getDefaultInstance() : memory_;
        }
      }
      /**
       * <pre>
       * Memory (virtual/swap) related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.MemoryMetrics memory = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetricsOrBuilder> 
          getMemoryFieldBuilder() {
        if (memoryBuilder_ == null) {
          memoryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetricsOrBuilder>(
                  getMemory(),
                  getParentForChildren(),
                  isClean());
          memory_ = null;
        }
        return memoryBuilder_;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics network_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetricsOrBuilder> networkBuilder_;
      /**
       * <pre>
       * Network related metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkMetrics network = 4;</code>
       * @return Whether the network field is set.
       */
      public boolean hasNetwork() {
        return networkBuilder_ != null || network_ != null;
      }
      /**
       * <pre>
       * Network related metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkMetrics network = 4;</code>
       * @return The network.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics getNetwork() {
        if (networkBuilder_ == null) {
          return network_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics.getDefaultInstance() : network_;
        } else {
          return networkBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Network related metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkMetrics network = 4;</code>
       */
      public Builder setNetwork(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics value) {
        if (networkBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          network_ = value;
          onChanged();
        } else {
          networkBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Network related metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkMetrics network = 4;</code>
       */
      public Builder setNetwork(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics.Builder builderForValue) {
        if (networkBuilder_ == null) {
          network_ = builderForValue.build();
          onChanged();
        } else {
          networkBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Network related metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkMetrics network = 4;</code>
       */
      public Builder mergeNetwork(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics value) {
        if (networkBuilder_ == null) {
          if (network_ != null) {
            network_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics.newBuilder(network_).mergeFrom(value).buildPartial();
          } else {
            network_ = value;
          }
          onChanged();
        } else {
          networkBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Network related metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkMetrics network = 4;</code>
       */
      public Builder clearNetwork() {
        if (networkBuilder_ == null) {
          network_ = null;
          onChanged();
        } else {
          network_ = null;
          networkBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Network related metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkMetrics network = 4;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics.Builder getNetworkBuilder() {
        
        onChanged();
        return getNetworkFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Network related metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkMetrics network = 4;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetricsOrBuilder getNetworkOrBuilder() {
        if (networkBuilder_ != null) {
          return networkBuilder_.getMessageOrBuilder();
        } else {
          return network_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics.getDefaultInstance() : network_;
        }
      }
      /**
       * <pre>
       * Network related metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkMetrics network = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetricsOrBuilder> 
          getNetworkFieldBuilder() {
        if (networkBuilder_ == null) {
          networkBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetricsOrBuilder>(
                  getNetwork(),
                  getParentForChildren(),
                  isClean());
          network_ = null;
        }
        return networkBuilder_;
      }

      private long timestamp_ ;
      /**
       * <pre>
       * Timestamp of the host metrics that shows when were the metrics collected last time.
       * </pre>
       *
       * <code>int64 timestamp = 5;</code>
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       * Timestamp of the host metrics that shows when were the metrics collected last time.
       * </pre>
       *
       * <code>int64 timestamp = 5;</code>
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Timestamp of the host metrics that shows when were the metrics collected last time.
       * </pre>
       *
       * <code>int64 timestamp = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails clusterDetails_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder> clusterDetailsBuilder_;
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
       * @return Whether the clusterDetails field is set.
       */
      public boolean hasClusterDetails() {
        return clusterDetailsBuilder_ != null || clusterDetails_ != null;
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
       * @return The clusterDetails.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getClusterDetails() {
        if (clusterDetailsBuilder_ == null) {
          return clusterDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance() : clusterDetails_;
        } else {
          return clusterDetailsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
       */
      public Builder setClusterDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails value) {
        if (clusterDetailsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clusterDetails_ = value;
          onChanged();
        } else {
          clusterDetailsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
       */
      public Builder setClusterDetails(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder builderForValue) {
        if (clusterDetailsBuilder_ == null) {
          clusterDetails_ = builderForValue.build();
          onChanged();
        } else {
          clusterDetailsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
       */
      public Builder mergeClusterDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails value) {
        if (clusterDetailsBuilder_ == null) {
          if (clusterDetails_ != null) {
            clusterDetails_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.newBuilder(clusterDetails_).mergeFrom(value).buildPartial();
          } else {
            clusterDetails_ = value;
          }
          onChanged();
        } else {
          clusterDetailsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
       */
      public Builder clearClusterDetails() {
        if (clusterDetailsBuilder_ == null) {
          clusterDetails_ = null;
          onChanged();
        } else {
          clusterDetails_ = null;
          clusterDetailsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder getClusterDetailsBuilder() {
        
        onChanged();
        return getClusterDetailsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder getClusterDetailsOrBuilder() {
        if (clusterDetailsBuilder_ != null) {
          return clusterDetailsBuilder_.getMessageOrBuilder();
        } else {
          return clusterDetails_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance() : clusterDetails_;
        }
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder> 
          getClusterDetailsFieldBuilder() {
        if (clusterDetailsBuilder_ == null) {
          clusterDetailsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder>(
                  getClusterDetails(),
                  getParentForChildren(),
                  isClean());
          clusterDetails_ = null;
        }
        return clusterDetailsBuilder_;
      }

      private java.lang.Object cdpTelemetryVersion_ = "";
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 7;</code>
       * @return The cdpTelemetryVersion.
       */
      public java.lang.String getCdpTelemetryVersion() {
        java.lang.Object ref = cdpTelemetryVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          cdpTelemetryVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 7;</code>
       * @return The bytes for cdpTelemetryVersion.
       */
      public com.google.protobuf.ByteString
          getCdpTelemetryVersionBytes() {
        java.lang.Object ref = cdpTelemetryVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          cdpTelemetryVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 7;</code>
       * @param value The cdpTelemetryVersion to set.
       * @return This builder for chaining.
       */
      public Builder setCdpTelemetryVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        cdpTelemetryVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearCdpTelemetryVersion() {
        
        cdpTelemetryVersion_ = getDefaultInstance().getCdpTelemetryVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 7;</code>
       * @param value The bytes for cdpTelemetryVersion to set.
       * @return This builder for chaining.
       */
      public Builder setCdpTelemetryVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        cdpTelemetryVersion_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.SystemMetrics)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.SystemMetrics)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SystemMetrics>
        PARSER = new com.google.protobuf.AbstractParser<SystemMetrics>() {
      @java.lang.Override
      public SystemMetrics parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SystemMetrics> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SystemMetrics> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SystemMetrics getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CmMetricsReportOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.CmMetricsReport)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * CM Service level metrics.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
     */
    java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent> 
        getMetricsList();
    /**
     * <pre>
     * CM Service level metrics.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent getMetrics(int index);
    /**
     * <pre>
     * CM Service level metrics.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
     */
    int getMetricsCount();
    /**
     * <pre>
     * CM Service level metrics.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
     */
    java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEventOrBuilder> 
        getMetricsOrBuilderList();
    /**
     * <pre>
     * CM Service level metrics.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEventOrBuilder getMetricsOrBuilder(
        int index);

    /**
     * <pre>
     * Common cluster related data.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
     * @return Whether the clusterDetails field is set.
     */
    boolean hasClusterDetails();
    /**
     * <pre>
     * Common cluster related data.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
     * @return The clusterDetails.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getClusterDetails();
    /**
     * <pre>
     * Common cluster related data.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder getClusterDetailsOrBuilder();

    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 3;</code>
     * @return The cdpTelemetryVersion.
     */
    java.lang.String getCdpTelemetryVersion();
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 3;</code>
     * @return The bytes for cdpTelemetryVersion.
     */
    com.google.protobuf.ByteString
        getCdpTelemetryVersionBytes();
  }
  /**
   * <pre>
   * Holds Cloudera Manager service level metrics.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.CmMetricsReport}
   */
  public static final class CmMetricsReport extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.CmMetricsReport)
      CmMetricsReportOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CmMetricsReport.newBuilder() to construct.
    private CmMetricsReport(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CmMetricsReport() {
      metrics_ = java.util.Collections.emptyList();
      cdpTelemetryVersion_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CmMetricsReport();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmMetricsReport_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmMetricsReport_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport.Builder.class);
    }

    public static final int METRICS_FIELD_NUMBER = 1;
    private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent> metrics_;
    /**
     * <pre>
     * CM Service level metrics.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent> getMetricsList() {
      return metrics_;
    }
    /**
     * <pre>
     * CM Service level metrics.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEventOrBuilder> 
        getMetricsOrBuilderList() {
      return metrics_;
    }
    /**
     * <pre>
     * CM Service level metrics.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
     */
    @java.lang.Override
    public int getMetricsCount() {
      return metrics_.size();
    }
    /**
     * <pre>
     * CM Service level metrics.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent getMetrics(int index) {
      return metrics_.get(index);
    }
    /**
     * <pre>
     * CM Service level metrics.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEventOrBuilder getMetricsOrBuilder(
        int index) {
      return metrics_.get(index);
    }

    public static final int CLUSTERDETAILS_FIELD_NUMBER = 2;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails clusterDetails_;
    /**
     * <pre>
     * Common cluster related data.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
     * @return Whether the clusterDetails field is set.
     */
    @java.lang.Override
    public boolean hasClusterDetails() {
      return clusterDetails_ != null;
    }
    /**
     * <pre>
     * Common cluster related data.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
     * @return The clusterDetails.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getClusterDetails() {
      return clusterDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance() : clusterDetails_;
    }
    /**
     * <pre>
     * Common cluster related data.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder getClusterDetailsOrBuilder() {
      return getClusterDetails();
    }

    public static final int CDPTELEMETRYVERSION_FIELD_NUMBER = 3;
    private volatile java.lang.Object cdpTelemetryVersion_;
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 3;</code>
     * @return The cdpTelemetryVersion.
     */
    @java.lang.Override
    public java.lang.String getCdpTelemetryVersion() {
      java.lang.Object ref = cdpTelemetryVersion_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        cdpTelemetryVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 3;</code>
     * @return The bytes for cdpTelemetryVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCdpTelemetryVersionBytes() {
      java.lang.Object ref = cdpTelemetryVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        cdpTelemetryVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < metrics_.size(); i++) {
        output.writeMessage(1, metrics_.get(i));
      }
      if (clusterDetails_ != null) {
        output.writeMessage(2, getClusterDetails());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cdpTelemetryVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, cdpTelemetryVersion_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < metrics_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, metrics_.get(i));
      }
      if (clusterDetails_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getClusterDetails());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cdpTelemetryVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, cdpTelemetryVersion_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport) obj;

      if (!getMetricsList()
          .equals(other.getMetricsList())) return false;
      if (hasClusterDetails() != other.hasClusterDetails()) return false;
      if (hasClusterDetails()) {
        if (!getClusterDetails()
            .equals(other.getClusterDetails())) return false;
      }
      if (!getCdpTelemetryVersion()
          .equals(other.getCdpTelemetryVersion())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getMetricsCount() > 0) {
        hash = (37 * hash) + METRICS_FIELD_NUMBER;
        hash = (53 * hash) + getMetricsList().hashCode();
      }
      if (hasClusterDetails()) {
        hash = (37 * hash) + CLUSTERDETAILS_FIELD_NUMBER;
        hash = (53 * hash) + getClusterDetails().hashCode();
      }
      hash = (37 * hash) + CDPTELEMETRYVERSION_FIELD_NUMBER;
      hash = (53 * hash) + getCdpTelemetryVersion().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds Cloudera Manager service level metrics.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.CmMetricsReport}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.CmMetricsReport)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReportOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmMetricsReport_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmMetricsReport_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (metricsBuilder_ == null) {
          metrics_ = java.util.Collections.emptyList();
        } else {
          metrics_ = null;
          metricsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (clusterDetailsBuilder_ == null) {
          clusterDetails_ = null;
        } else {
          clusterDetails_ = null;
          clusterDetailsBuilder_ = null;
        }
        cdpTelemetryVersion_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmMetricsReport_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport(this);
        int from_bitField0_ = bitField0_;
        if (metricsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            metrics_ = java.util.Collections.unmodifiableList(metrics_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.metrics_ = metrics_;
        } else {
          result.metrics_ = metricsBuilder_.build();
        }
        if (clusterDetailsBuilder_ == null) {
          result.clusterDetails_ = clusterDetails_;
        } else {
          result.clusterDetails_ = clusterDetailsBuilder_.build();
        }
        result.cdpTelemetryVersion_ = cdpTelemetryVersion_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport.getDefaultInstance()) return this;
        if (metricsBuilder_ == null) {
          if (!other.metrics_.isEmpty()) {
            if (metrics_.isEmpty()) {
              metrics_ = other.metrics_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureMetricsIsMutable();
              metrics_.addAll(other.metrics_);
            }
            onChanged();
          }
        } else {
          if (!other.metrics_.isEmpty()) {
            if (metricsBuilder_.isEmpty()) {
              metricsBuilder_.dispose();
              metricsBuilder_ = null;
              metrics_ = other.metrics_;
              bitField0_ = (bitField0_ & ~0x00000001);
              metricsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getMetricsFieldBuilder() : null;
            } else {
              metricsBuilder_.addAllMessages(other.metrics_);
            }
          }
        }
        if (other.hasClusterDetails()) {
          mergeClusterDetails(other.getClusterDetails());
        }
        if (!other.getCdpTelemetryVersion().isEmpty()) {
          cdpTelemetryVersion_ = other.cdpTelemetryVersion_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent m =
                    input.readMessage(
                        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.parser(),
                        extensionRegistry);
                if (metricsBuilder_ == null) {
                  ensureMetricsIsMutable();
                  metrics_.add(m);
                } else {
                  metricsBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getClusterDetailsFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 18
              case 26: {
                cdpTelemetryVersion_ = input.readStringRequireUtf8();

                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent> metrics_ =
        java.util.Collections.emptyList();
      private void ensureMetricsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          metrics_ = new java.util.ArrayList<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent>(metrics_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEventOrBuilder> metricsBuilder_;

      /**
       * <pre>
       * CM Service level metrics.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent> getMetricsList() {
        if (metricsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(metrics_);
        } else {
          return metricsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * CM Service level metrics.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
       */
      public int getMetricsCount() {
        if (metricsBuilder_ == null) {
          return metrics_.size();
        } else {
          return metricsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * CM Service level metrics.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent getMetrics(int index) {
        if (metricsBuilder_ == null) {
          return metrics_.get(index);
        } else {
          return metricsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * CM Service level metrics.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
       */
      public Builder setMetrics(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent value) {
        if (metricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMetricsIsMutable();
          metrics_.set(index, value);
          onChanged();
        } else {
          metricsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * CM Service level metrics.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
       */
      public Builder setMetrics(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.Builder builderForValue) {
        if (metricsBuilder_ == null) {
          ensureMetricsIsMutable();
          metrics_.set(index, builderForValue.build());
          onChanged();
        } else {
          metricsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * CM Service level metrics.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
       */
      public Builder addMetrics(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent value) {
        if (metricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMetricsIsMutable();
          metrics_.add(value);
          onChanged();
        } else {
          metricsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * CM Service level metrics.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
       */
      public Builder addMetrics(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent value) {
        if (metricsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureMetricsIsMutable();
          metrics_.add(index, value);
          onChanged();
        } else {
          metricsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * CM Service level metrics.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
       */
      public Builder addMetrics(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.Builder builderForValue) {
        if (metricsBuilder_ == null) {
          ensureMetricsIsMutable();
          metrics_.add(builderForValue.build());
          onChanged();
        } else {
          metricsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * CM Service level metrics.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
       */
      public Builder addMetrics(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.Builder builderForValue) {
        if (metricsBuilder_ == null) {
          ensureMetricsIsMutable();
          metrics_.add(index, builderForValue.build());
          onChanged();
        } else {
          metricsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * CM Service level metrics.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
       */
      public Builder addAllMetrics(
          java.lang.Iterable<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent> values) {
        if (metricsBuilder_ == null) {
          ensureMetricsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, metrics_);
          onChanged();
        } else {
          metricsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * CM Service level metrics.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
       */
      public Builder clearMetrics() {
        if (metricsBuilder_ == null) {
          metrics_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          metricsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * CM Service level metrics.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
       */
      public Builder removeMetrics(int index) {
        if (metricsBuilder_ == null) {
          ensureMetricsIsMutable();
          metrics_.remove(index);
          onChanged();
        } else {
          metricsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * CM Service level metrics.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.Builder getMetricsBuilder(
          int index) {
        return getMetricsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * CM Service level metrics.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEventOrBuilder getMetricsOrBuilder(
          int index) {
        if (metricsBuilder_ == null) {
          return metrics_.get(index);  } else {
          return metricsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * CM Service level metrics.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
       */
      public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEventOrBuilder> 
           getMetricsOrBuilderList() {
        if (metricsBuilder_ != null) {
          return metricsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(metrics_);
        }
      }
      /**
       * <pre>
       * CM Service level metrics.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.Builder addMetricsBuilder() {
        return getMetricsFieldBuilder().addBuilder(
            com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.getDefaultInstance());
      }
      /**
       * <pre>
       * CM Service level metrics.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.Builder addMetricsBuilder(
          int index) {
        return getMetricsFieldBuilder().addBuilder(
            index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.getDefaultInstance());
      }
      /**
       * <pre>
       * CM Service level metrics.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceMetricEvent metrics = 1;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.Builder> 
           getMetricsBuilderList() {
        return getMetricsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEventOrBuilder> 
          getMetricsFieldBuilder() {
        if (metricsBuilder_ == null) {
          metricsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEventOrBuilder>(
                  metrics_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          metrics_ = null;
        }
        return metricsBuilder_;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails clusterDetails_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder> clusterDetailsBuilder_;
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       * @return Whether the clusterDetails field is set.
       */
      public boolean hasClusterDetails() {
        return clusterDetailsBuilder_ != null || clusterDetails_ != null;
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       * @return The clusterDetails.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getClusterDetails() {
        if (clusterDetailsBuilder_ == null) {
          return clusterDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance() : clusterDetails_;
        } else {
          return clusterDetailsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      public Builder setClusterDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails value) {
        if (clusterDetailsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clusterDetails_ = value;
          onChanged();
        } else {
          clusterDetailsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      public Builder setClusterDetails(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder builderForValue) {
        if (clusterDetailsBuilder_ == null) {
          clusterDetails_ = builderForValue.build();
          onChanged();
        } else {
          clusterDetailsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      public Builder mergeClusterDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails value) {
        if (clusterDetailsBuilder_ == null) {
          if (clusterDetails_ != null) {
            clusterDetails_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.newBuilder(clusterDetails_).mergeFrom(value).buildPartial();
          } else {
            clusterDetails_ = value;
          }
          onChanged();
        } else {
          clusterDetailsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      public Builder clearClusterDetails() {
        if (clusterDetailsBuilder_ == null) {
          clusterDetails_ = null;
          onChanged();
        } else {
          clusterDetails_ = null;
          clusterDetailsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder getClusterDetailsBuilder() {
        
        onChanged();
        return getClusterDetailsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder getClusterDetailsOrBuilder() {
        if (clusterDetailsBuilder_ != null) {
          return clusterDetailsBuilder_.getMessageOrBuilder();
        } else {
          return clusterDetails_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance() : clusterDetails_;
        }
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder> 
          getClusterDetailsFieldBuilder() {
        if (clusterDetailsBuilder_ == null) {
          clusterDetailsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder>(
                  getClusterDetails(),
                  getParentForChildren(),
                  isClean());
          clusterDetails_ = null;
        }
        return clusterDetailsBuilder_;
      }

      private java.lang.Object cdpTelemetryVersion_ = "";
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 3;</code>
       * @return The cdpTelemetryVersion.
       */
      public java.lang.String getCdpTelemetryVersion() {
        java.lang.Object ref = cdpTelemetryVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          cdpTelemetryVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 3;</code>
       * @return The bytes for cdpTelemetryVersion.
       */
      public com.google.protobuf.ByteString
          getCdpTelemetryVersionBytes() {
        java.lang.Object ref = cdpTelemetryVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          cdpTelemetryVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 3;</code>
       * @param value The cdpTelemetryVersion to set.
       * @return This builder for chaining.
       */
      public Builder setCdpTelemetryVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        cdpTelemetryVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearCdpTelemetryVersion() {
        
        cdpTelemetryVersion_ = getDefaultInstance().getCdpTelemetryVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 3;</code>
       * @param value The bytes for cdpTelemetryVersion to set.
       * @return This builder for chaining.
       */
      public Builder setCdpTelemetryVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        cdpTelemetryVersion_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.CmMetricsReport)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.CmMetricsReport)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CmMetricsReport>
        PARSER = new com.google.protobuf.AbstractParser<CmMetricsReport>() {
      @java.lang.Override
      public CmMetricsReport parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CmMetricsReport> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CmMetricsReport> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmMetricsReport getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CmHealthChecksReportOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.CmHealthChecksReport)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * CM Service level health check details.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
     */
    java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent> 
        getHealthChecksList();
    /**
     * <pre>
     * CM Service level health check details.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent getHealthChecks(int index);
    /**
     * <pre>
     * CM Service level health check details.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
     */
    int getHealthChecksCount();
    /**
     * <pre>
     * CM Service level health check details.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
     */
    java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEventOrBuilder> 
        getHealthChecksOrBuilderList();
    /**
     * <pre>
     * CM Service level health check details.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEventOrBuilder getHealthChecksOrBuilder(
        int index);

    /**
     * <pre>
     * Common cluster related data.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
     * @return Whether the clusterDetails field is set.
     */
    boolean hasClusterDetails();
    /**
     * <pre>
     * Common cluster related data.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
     * @return The clusterDetails.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getClusterDetails();
    /**
     * <pre>
     * Common cluster related data.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder getClusterDetailsOrBuilder();

    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 3;</code>
     * @return The cdpTelemetryVersion.
     */
    java.lang.String getCdpTelemetryVersion();
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 3;</code>
     * @return The bytes for cdpTelemetryVersion.
     */
    com.google.protobuf.ByteString
        getCdpTelemetryVersionBytes();
  }
  /**
   * <pre>
   * Holds Cloudera Manager service health details.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.CmHealthChecksReport}
   */
  public static final class CmHealthChecksReport extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.CmHealthChecksReport)
      CmHealthChecksReportOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CmHealthChecksReport.newBuilder() to construct.
    private CmHealthChecksReport(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CmHealthChecksReport() {
      healthChecks_ = java.util.Collections.emptyList();
      cdpTelemetryVersion_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CmHealthChecksReport();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmHealthChecksReport_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmHealthChecksReport_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport.Builder.class);
    }

    public static final int HEALTHCHECKS_FIELD_NUMBER = 1;
    private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent> healthChecks_;
    /**
     * <pre>
     * CM Service level health check details.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent> getHealthChecksList() {
      return healthChecks_;
    }
    /**
     * <pre>
     * CM Service level health check details.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEventOrBuilder> 
        getHealthChecksOrBuilderList() {
      return healthChecks_;
    }
    /**
     * <pre>
     * CM Service level health check details.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
     */
    @java.lang.Override
    public int getHealthChecksCount() {
      return healthChecks_.size();
    }
    /**
     * <pre>
     * CM Service level health check details.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent getHealthChecks(int index) {
      return healthChecks_.get(index);
    }
    /**
     * <pre>
     * CM Service level health check details.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEventOrBuilder getHealthChecksOrBuilder(
        int index) {
      return healthChecks_.get(index);
    }

    public static final int CLUSTERDETAILS_FIELD_NUMBER = 2;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails clusterDetails_;
    /**
     * <pre>
     * Common cluster related data.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
     * @return Whether the clusterDetails field is set.
     */
    @java.lang.Override
    public boolean hasClusterDetails() {
      return clusterDetails_ != null;
    }
    /**
     * <pre>
     * Common cluster related data.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
     * @return The clusterDetails.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getClusterDetails() {
      return clusterDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance() : clusterDetails_;
    }
    /**
     * <pre>
     * Common cluster related data.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder getClusterDetailsOrBuilder() {
      return getClusterDetails();
    }

    public static final int CDPTELEMETRYVERSION_FIELD_NUMBER = 3;
    private volatile java.lang.Object cdpTelemetryVersion_;
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 3;</code>
     * @return The cdpTelemetryVersion.
     */
    @java.lang.Override
    public java.lang.String getCdpTelemetryVersion() {
      java.lang.Object ref = cdpTelemetryVersion_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        cdpTelemetryVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Version of the cdp-telemetry binary
     * </pre>
     *
     * <code>string cdpTelemetryVersion = 3;</code>
     * @return The bytes for cdpTelemetryVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCdpTelemetryVersionBytes() {
      java.lang.Object ref = cdpTelemetryVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        cdpTelemetryVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < healthChecks_.size(); i++) {
        output.writeMessage(1, healthChecks_.get(i));
      }
      if (clusterDetails_ != null) {
        output.writeMessage(2, getClusterDetails());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cdpTelemetryVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, cdpTelemetryVersion_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < healthChecks_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, healthChecks_.get(i));
      }
      if (clusterDetails_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getClusterDetails());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(cdpTelemetryVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, cdpTelemetryVersion_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport) obj;

      if (!getHealthChecksList()
          .equals(other.getHealthChecksList())) return false;
      if (hasClusterDetails() != other.hasClusterDetails()) return false;
      if (hasClusterDetails()) {
        if (!getClusterDetails()
            .equals(other.getClusterDetails())) return false;
      }
      if (!getCdpTelemetryVersion()
          .equals(other.getCdpTelemetryVersion())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getHealthChecksCount() > 0) {
        hash = (37 * hash) + HEALTHCHECKS_FIELD_NUMBER;
        hash = (53 * hash) + getHealthChecksList().hashCode();
      }
      if (hasClusterDetails()) {
        hash = (37 * hash) + CLUSTERDETAILS_FIELD_NUMBER;
        hash = (53 * hash) + getClusterDetails().hashCode();
      }
      hash = (37 * hash) + CDPTELEMETRYVERSION_FIELD_NUMBER;
      hash = (53 * hash) + getCdpTelemetryVersion().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds Cloudera Manager service health details.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.CmHealthChecksReport}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.CmHealthChecksReport)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReportOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmHealthChecksReport_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmHealthChecksReport_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (healthChecksBuilder_ == null) {
          healthChecks_ = java.util.Collections.emptyList();
        } else {
          healthChecks_ = null;
          healthChecksBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (clusterDetailsBuilder_ == null) {
          clusterDetails_ = null;
        } else {
          clusterDetails_ = null;
          clusterDetailsBuilder_ = null;
        }
        cdpTelemetryVersion_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmHealthChecksReport_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport(this);
        int from_bitField0_ = bitField0_;
        if (healthChecksBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            healthChecks_ = java.util.Collections.unmodifiableList(healthChecks_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.healthChecks_ = healthChecks_;
        } else {
          result.healthChecks_ = healthChecksBuilder_.build();
        }
        if (clusterDetailsBuilder_ == null) {
          result.clusterDetails_ = clusterDetails_;
        } else {
          result.clusterDetails_ = clusterDetailsBuilder_.build();
        }
        result.cdpTelemetryVersion_ = cdpTelemetryVersion_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport.getDefaultInstance()) return this;
        if (healthChecksBuilder_ == null) {
          if (!other.healthChecks_.isEmpty()) {
            if (healthChecks_.isEmpty()) {
              healthChecks_ = other.healthChecks_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureHealthChecksIsMutable();
              healthChecks_.addAll(other.healthChecks_);
            }
            onChanged();
          }
        } else {
          if (!other.healthChecks_.isEmpty()) {
            if (healthChecksBuilder_.isEmpty()) {
              healthChecksBuilder_.dispose();
              healthChecksBuilder_ = null;
              healthChecks_ = other.healthChecks_;
              bitField0_ = (bitField0_ & ~0x00000001);
              healthChecksBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getHealthChecksFieldBuilder() : null;
            } else {
              healthChecksBuilder_.addAllMessages(other.healthChecks_);
            }
          }
        }
        if (other.hasClusterDetails()) {
          mergeClusterDetails(other.getClusterDetails());
        }
        if (!other.getCdpTelemetryVersion().isEmpty()) {
          cdpTelemetryVersion_ = other.cdpTelemetryVersion_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent m =
                    input.readMessage(
                        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.parser(),
                        extensionRegistry);
                if (healthChecksBuilder_ == null) {
                  ensureHealthChecksIsMutable();
                  healthChecks_.add(m);
                } else {
                  healthChecksBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getClusterDetailsFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 18
              case 26: {
                cdpTelemetryVersion_ = input.readStringRequireUtf8();

                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent> healthChecks_ =
        java.util.Collections.emptyList();
      private void ensureHealthChecksIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          healthChecks_ = new java.util.ArrayList<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent>(healthChecks_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEventOrBuilder> healthChecksBuilder_;

      /**
       * <pre>
       * CM Service level health check details.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent> getHealthChecksList() {
        if (healthChecksBuilder_ == null) {
          return java.util.Collections.unmodifiableList(healthChecks_);
        } else {
          return healthChecksBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * CM Service level health check details.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
       */
      public int getHealthChecksCount() {
        if (healthChecksBuilder_ == null) {
          return healthChecks_.size();
        } else {
          return healthChecksBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * CM Service level health check details.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent getHealthChecks(int index) {
        if (healthChecksBuilder_ == null) {
          return healthChecks_.get(index);
        } else {
          return healthChecksBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * CM Service level health check details.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
       */
      public Builder setHealthChecks(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent value) {
        if (healthChecksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHealthChecksIsMutable();
          healthChecks_.set(index, value);
          onChanged();
        } else {
          healthChecksBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * CM Service level health check details.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
       */
      public Builder setHealthChecks(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.Builder builderForValue) {
        if (healthChecksBuilder_ == null) {
          ensureHealthChecksIsMutable();
          healthChecks_.set(index, builderForValue.build());
          onChanged();
        } else {
          healthChecksBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * CM Service level health check details.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
       */
      public Builder addHealthChecks(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent value) {
        if (healthChecksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHealthChecksIsMutable();
          healthChecks_.add(value);
          onChanged();
        } else {
          healthChecksBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * CM Service level health check details.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
       */
      public Builder addHealthChecks(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent value) {
        if (healthChecksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHealthChecksIsMutable();
          healthChecks_.add(index, value);
          onChanged();
        } else {
          healthChecksBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * CM Service level health check details.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
       */
      public Builder addHealthChecks(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.Builder builderForValue) {
        if (healthChecksBuilder_ == null) {
          ensureHealthChecksIsMutable();
          healthChecks_.add(builderForValue.build());
          onChanged();
        } else {
          healthChecksBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * CM Service level health check details.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
       */
      public Builder addHealthChecks(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.Builder builderForValue) {
        if (healthChecksBuilder_ == null) {
          ensureHealthChecksIsMutable();
          healthChecks_.add(index, builderForValue.build());
          onChanged();
        } else {
          healthChecksBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * CM Service level health check details.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
       */
      public Builder addAllHealthChecks(
          java.lang.Iterable<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent> values) {
        if (healthChecksBuilder_ == null) {
          ensureHealthChecksIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, healthChecks_);
          onChanged();
        } else {
          healthChecksBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * CM Service level health check details.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
       */
      public Builder clearHealthChecks() {
        if (healthChecksBuilder_ == null) {
          healthChecks_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          healthChecksBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * CM Service level health check details.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
       */
      public Builder removeHealthChecks(int index) {
        if (healthChecksBuilder_ == null) {
          ensureHealthChecksIsMutable();
          healthChecks_.remove(index);
          onChanged();
        } else {
          healthChecksBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * CM Service level health check details.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.Builder getHealthChecksBuilder(
          int index) {
        return getHealthChecksFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * CM Service level health check details.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEventOrBuilder getHealthChecksOrBuilder(
          int index) {
        if (healthChecksBuilder_ == null) {
          return healthChecks_.get(index);  } else {
          return healthChecksBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * CM Service level health check details.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
       */
      public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEventOrBuilder> 
           getHealthChecksOrBuilderList() {
        if (healthChecksBuilder_ != null) {
          return healthChecksBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(healthChecks_);
        }
      }
      /**
       * <pre>
       * CM Service level health check details.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.Builder addHealthChecksBuilder() {
        return getHealthChecksFieldBuilder().addBuilder(
            com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.getDefaultInstance());
      }
      /**
       * <pre>
       * CM Service level health check details.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.Builder addHealthChecksBuilder(
          int index) {
        return getHealthChecksFieldBuilder().addBuilder(
            index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.getDefaultInstance());
      }
      /**
       * <pre>
       * CM Service level health check details.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.CmServiceHealthCheckEvent healthChecks = 1;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.Builder> 
           getHealthChecksBuilderList() {
        return getHealthChecksFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEventOrBuilder> 
          getHealthChecksFieldBuilder() {
        if (healthChecksBuilder_ == null) {
          healthChecksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEventOrBuilder>(
                  healthChecks_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          healthChecks_ = null;
        }
        return healthChecksBuilder_;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails clusterDetails_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder> clusterDetailsBuilder_;
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       * @return Whether the clusterDetails field is set.
       */
      public boolean hasClusterDetails() {
        return clusterDetailsBuilder_ != null || clusterDetails_ != null;
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       * @return The clusterDetails.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getClusterDetails() {
        if (clusterDetailsBuilder_ == null) {
          return clusterDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance() : clusterDetails_;
        } else {
          return clusterDetailsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      public Builder setClusterDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails value) {
        if (clusterDetailsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clusterDetails_ = value;
          onChanged();
        } else {
          clusterDetailsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      public Builder setClusterDetails(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder builderForValue) {
        if (clusterDetailsBuilder_ == null) {
          clusterDetails_ = builderForValue.build();
          onChanged();
        } else {
          clusterDetailsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      public Builder mergeClusterDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails value) {
        if (clusterDetailsBuilder_ == null) {
          if (clusterDetails_ != null) {
            clusterDetails_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.newBuilder(clusterDetails_).mergeFrom(value).buildPartial();
          } else {
            clusterDetails_ = value;
          }
          onChanged();
        } else {
          clusterDetailsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      public Builder clearClusterDetails() {
        if (clusterDetailsBuilder_ == null) {
          clusterDetails_ = null;
          onChanged();
        } else {
          clusterDetails_ = null;
          clusterDetailsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder getClusterDetailsBuilder() {
        
        onChanged();
        return getClusterDetailsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder getClusterDetailsOrBuilder() {
        if (clusterDetailsBuilder_ != null) {
          return clusterDetailsBuilder_.getMessageOrBuilder();
        } else {
          return clusterDetails_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance() : clusterDetails_;
        }
      }
      /**
       * <pre>
       * Common cluster related data.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder> 
          getClusterDetailsFieldBuilder() {
        if (clusterDetailsBuilder_ == null) {
          clusterDetailsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder>(
                  getClusterDetails(),
                  getParentForChildren(),
                  isClean());
          clusterDetails_ = null;
        }
        return clusterDetailsBuilder_;
      }

      private java.lang.Object cdpTelemetryVersion_ = "";
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 3;</code>
       * @return The cdpTelemetryVersion.
       */
      public java.lang.String getCdpTelemetryVersion() {
        java.lang.Object ref = cdpTelemetryVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          cdpTelemetryVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 3;</code>
       * @return The bytes for cdpTelemetryVersion.
       */
      public com.google.protobuf.ByteString
          getCdpTelemetryVersionBytes() {
        java.lang.Object ref = cdpTelemetryVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          cdpTelemetryVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 3;</code>
       * @param value The cdpTelemetryVersion to set.
       * @return This builder for chaining.
       */
      public Builder setCdpTelemetryVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        cdpTelemetryVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearCdpTelemetryVersion() {
        
        cdpTelemetryVersion_ = getDefaultInstance().getCdpTelemetryVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Version of the cdp-telemetry binary
       * </pre>
       *
       * <code>string cdpTelemetryVersion = 3;</code>
       * @param value The bytes for cdpTelemetryVersion to set.
       * @return This builder for chaining.
       */
      public Builder setCdpTelemetryVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        cdpTelemetryVersion_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.CmHealthChecksReport)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.CmHealthChecksReport)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CmHealthChecksReport>
        PARSER = new com.google.protobuf.AbstractParser<CmHealthChecksReport>() {
      @java.lang.Override
      public CmHealthChecksReport parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CmHealthChecksReport> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CmHealthChecksReport> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmHealthChecksReport getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CpuMetricsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.CpuMetrics)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Number of CPUs.
     * </pre>
     *
     * <code>int32 count = 1;</code>
     * @return The count.
     */
    int getCount();

    /**
     * <pre>
     * Logical number of CPUs.
     * </pre>
     *
     * <code>int32 logical_count = 2;</code>
     * @return The logicalCount.
     */
    int getLogicalCount();

    /**
     * <pre>
     * Average load of CPUs - last 1 min, last 5 min and last 15 min.
     * </pre>
     *
     * <code>repeated float load_avg = 3;</code>
     * @return A list containing the loadAvg.
     */
    java.util.List<java.lang.Float> getLoadAvgList();
    /**
     * <pre>
     * Average load of CPUs - last 1 min, last 5 min and last 15 min.
     * </pre>
     *
     * <code>repeated float load_avg = 3;</code>
     * @return The count of loadAvg.
     */
    int getLoadAvgCount();
    /**
     * <pre>
     * Average load of CPUs - last 1 min, last 5 min and last 15 min.
     * </pre>
     *
     * <code>repeated float load_avg = 3;</code>
     * @param index The index of the element to return.
     * @return The loadAvg at the given index.
     */
    float getLoadAvg(int index);

    /**
     * <pre>
     * Percentage(s) of the CPU's capacity.
     * </pre>
     *
     * <code>.cdp.telemetry.CpuTimes times = 4;</code>
     * @return Whether the times field is set.
     */
    boolean hasTimes();
    /**
     * <pre>
     * Percentage(s) of the CPU's capacity.
     * </pre>
     *
     * <code>.cdp.telemetry.CpuTimes times = 4;</code>
     * @return The times.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes getTimes();
    /**
     * <pre>
     * Percentage(s) of the CPU's capacity.
     * </pre>
     *
     * <code>.cdp.telemetry.CpuTimes times = 4;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimesOrBuilder getTimesOrBuilder();

    /**
     * <pre>
     * CPU stats (e.g.: interrupts, syscalls).
     * </pre>
     *
     * <code>.cdp.telemetry.CpuStats stats = 5;</code>
     * @return Whether the stats field is set.
     */
    boolean hasStats();
    /**
     * <pre>
     * CPU stats (e.g.: interrupts, syscalls).
     * </pre>
     *
     * <code>.cdp.telemetry.CpuStats stats = 5;</code>
     * @return The stats.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats getStats();
    /**
     * <pre>
     * CPU stats (e.g.: interrupts, syscalls).
     * </pre>
     *
     * <code>.cdp.telemetry.CpuStats stats = 5;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStatsOrBuilder getStatsOrBuilder();

    /**
     * <pre>
     * CPU frequency.
     * </pre>
     *
     * <code>.cdp.telemetry.CpuFrequency freq = 6;</code>
     * @return Whether the freq field is set.
     */
    boolean hasFreq();
    /**
     * <pre>
     * CPU frequency.
     * </pre>
     *
     * <code>.cdp.telemetry.CpuFrequency freq = 6;</code>
     * @return The freq.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency getFreq();
    /**
     * <pre>
     * CPU frequency.
     * </pre>
     *
     * <code>.cdp.telemetry.CpuFrequency freq = 6;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequencyOrBuilder getFreqOrBuilder();
  }
  /**
   * <pre>
   * Holds CPU related system metrics.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.CpuMetrics}
   */
  public static final class CpuMetrics extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.CpuMetrics)
      CpuMetricsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CpuMetrics.newBuilder() to construct.
    private CpuMetrics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CpuMetrics() {
      loadAvg_ = emptyFloatList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CpuMetrics();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuMetrics_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuMetrics_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics.Builder.class);
    }

    public static final int COUNT_FIELD_NUMBER = 1;
    private int count_;
    /**
     * <pre>
     * Number of CPUs.
     * </pre>
     *
     * <code>int32 count = 1;</code>
     * @return The count.
     */
    @java.lang.Override
    public int getCount() {
      return count_;
    }

    public static final int LOGICAL_COUNT_FIELD_NUMBER = 2;
    private int logicalCount_;
    /**
     * <pre>
     * Logical number of CPUs.
     * </pre>
     *
     * <code>int32 logical_count = 2;</code>
     * @return The logicalCount.
     */
    @java.lang.Override
    public int getLogicalCount() {
      return logicalCount_;
    }

    public static final int LOAD_AVG_FIELD_NUMBER = 3;
    private com.google.protobuf.Internal.FloatList loadAvg_;
    /**
     * <pre>
     * Average load of CPUs - last 1 min, last 5 min and last 15 min.
     * </pre>
     *
     * <code>repeated float load_avg = 3;</code>
     * @return A list containing the loadAvg.
     */
    @java.lang.Override
    public java.util.List<java.lang.Float>
        getLoadAvgList() {
      return loadAvg_;
    }
    /**
     * <pre>
     * Average load of CPUs - last 1 min, last 5 min and last 15 min.
     * </pre>
     *
     * <code>repeated float load_avg = 3;</code>
     * @return The count of loadAvg.
     */
    public int getLoadAvgCount() {
      return loadAvg_.size();
    }
    /**
     * <pre>
     * Average load of CPUs - last 1 min, last 5 min and last 15 min.
     * </pre>
     *
     * <code>repeated float load_avg = 3;</code>
     * @param index The index of the element to return.
     * @return The loadAvg at the given index.
     */
    public float getLoadAvg(int index) {
      return loadAvg_.getFloat(index);
    }
    private int loadAvgMemoizedSerializedSize = -1;

    public static final int TIMES_FIELD_NUMBER = 4;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes times_;
    /**
     * <pre>
     * Percentage(s) of the CPU's capacity.
     * </pre>
     *
     * <code>.cdp.telemetry.CpuTimes times = 4;</code>
     * @return Whether the times field is set.
     */
    @java.lang.Override
    public boolean hasTimes() {
      return times_ != null;
    }
    /**
     * <pre>
     * Percentage(s) of the CPU's capacity.
     * </pre>
     *
     * <code>.cdp.telemetry.CpuTimes times = 4;</code>
     * @return The times.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes getTimes() {
      return times_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes.getDefaultInstance() : times_;
    }
    /**
     * <pre>
     * Percentage(s) of the CPU's capacity.
     * </pre>
     *
     * <code>.cdp.telemetry.CpuTimes times = 4;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimesOrBuilder getTimesOrBuilder() {
      return getTimes();
    }

    public static final int STATS_FIELD_NUMBER = 5;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats stats_;
    /**
     * <pre>
     * CPU stats (e.g.: interrupts, syscalls).
     * </pre>
     *
     * <code>.cdp.telemetry.CpuStats stats = 5;</code>
     * @return Whether the stats field is set.
     */
    @java.lang.Override
    public boolean hasStats() {
      return stats_ != null;
    }
    /**
     * <pre>
     * CPU stats (e.g.: interrupts, syscalls).
     * </pre>
     *
     * <code>.cdp.telemetry.CpuStats stats = 5;</code>
     * @return The stats.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats getStats() {
      return stats_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats.getDefaultInstance() : stats_;
    }
    /**
     * <pre>
     * CPU stats (e.g.: interrupts, syscalls).
     * </pre>
     *
     * <code>.cdp.telemetry.CpuStats stats = 5;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStatsOrBuilder getStatsOrBuilder() {
      return getStats();
    }

    public static final int FREQ_FIELD_NUMBER = 6;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency freq_;
    /**
     * <pre>
     * CPU frequency.
     * </pre>
     *
     * <code>.cdp.telemetry.CpuFrequency freq = 6;</code>
     * @return Whether the freq field is set.
     */
    @java.lang.Override
    public boolean hasFreq() {
      return freq_ != null;
    }
    /**
     * <pre>
     * CPU frequency.
     * </pre>
     *
     * <code>.cdp.telemetry.CpuFrequency freq = 6;</code>
     * @return The freq.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency getFreq() {
      return freq_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency.getDefaultInstance() : freq_;
    }
    /**
     * <pre>
     * CPU frequency.
     * </pre>
     *
     * <code>.cdp.telemetry.CpuFrequency freq = 6;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequencyOrBuilder getFreqOrBuilder() {
      return getFreq();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (count_ != 0) {
        output.writeInt32(1, count_);
      }
      if (logicalCount_ != 0) {
        output.writeInt32(2, logicalCount_);
      }
      if (getLoadAvgList().size() > 0) {
        output.writeUInt32NoTag(26);
        output.writeUInt32NoTag(loadAvgMemoizedSerializedSize);
      }
      for (int i = 0; i < loadAvg_.size(); i++) {
        output.writeFloatNoTag(loadAvg_.getFloat(i));
      }
      if (times_ != null) {
        output.writeMessage(4, getTimes());
      }
      if (stats_ != null) {
        output.writeMessage(5, getStats());
      }
      if (freq_ != null) {
        output.writeMessage(6, getFreq());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (count_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, count_);
      }
      if (logicalCount_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, logicalCount_);
      }
      {
        int dataSize = 0;
        dataSize = 4 * getLoadAvgList().size();
        size += dataSize;
        if (!getLoadAvgList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        loadAvgMemoizedSerializedSize = dataSize;
      }
      if (times_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, getTimes());
      }
      if (stats_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, getStats());
      }
      if (freq_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getFreq());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics) obj;

      if (getCount()
          != other.getCount()) return false;
      if (getLogicalCount()
          != other.getLogicalCount()) return false;
      if (!getLoadAvgList()
          .equals(other.getLoadAvgList())) return false;
      if (hasTimes() != other.hasTimes()) return false;
      if (hasTimes()) {
        if (!getTimes()
            .equals(other.getTimes())) return false;
      }
      if (hasStats() != other.hasStats()) return false;
      if (hasStats()) {
        if (!getStats()
            .equals(other.getStats())) return false;
      }
      if (hasFreq() != other.hasFreq()) return false;
      if (hasFreq()) {
        if (!getFreq()
            .equals(other.getFreq())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + COUNT_FIELD_NUMBER;
      hash = (53 * hash) + getCount();
      hash = (37 * hash) + LOGICAL_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + getLogicalCount();
      if (getLoadAvgCount() > 0) {
        hash = (37 * hash) + LOAD_AVG_FIELD_NUMBER;
        hash = (53 * hash) + getLoadAvgList().hashCode();
      }
      if (hasTimes()) {
        hash = (37 * hash) + TIMES_FIELD_NUMBER;
        hash = (53 * hash) + getTimes().hashCode();
      }
      if (hasStats()) {
        hash = (37 * hash) + STATS_FIELD_NUMBER;
        hash = (53 * hash) + getStats().hashCode();
      }
      if (hasFreq()) {
        hash = (37 * hash) + FREQ_FIELD_NUMBER;
        hash = (53 * hash) + getFreq().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds CPU related system metrics.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.CpuMetrics}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.CpuMetrics)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetricsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuMetrics_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuMetrics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        count_ = 0;

        logicalCount_ = 0;

        loadAvg_ = emptyFloatList();
        bitField0_ = (bitField0_ & ~0x00000001);
        if (timesBuilder_ == null) {
          times_ = null;
        } else {
          times_ = null;
          timesBuilder_ = null;
        }
        if (statsBuilder_ == null) {
          stats_ = null;
        } else {
          stats_ = null;
          statsBuilder_ = null;
        }
        if (freqBuilder_ == null) {
          freq_ = null;
        } else {
          freq_ = null;
          freqBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuMetrics_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics(this);
        int from_bitField0_ = bitField0_;
        result.count_ = count_;
        result.logicalCount_ = logicalCount_;
        if (((bitField0_ & 0x00000001) != 0)) {
          loadAvg_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.loadAvg_ = loadAvg_;
        if (timesBuilder_ == null) {
          result.times_ = times_;
        } else {
          result.times_ = timesBuilder_.build();
        }
        if (statsBuilder_ == null) {
          result.stats_ = stats_;
        } else {
          result.stats_ = statsBuilder_.build();
        }
        if (freqBuilder_ == null) {
          result.freq_ = freq_;
        } else {
          result.freq_ = freqBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics.getDefaultInstance()) return this;
        if (other.getCount() != 0) {
          setCount(other.getCount());
        }
        if (other.getLogicalCount() != 0) {
          setLogicalCount(other.getLogicalCount());
        }
        if (!other.loadAvg_.isEmpty()) {
          if (loadAvg_.isEmpty()) {
            loadAvg_ = other.loadAvg_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureLoadAvgIsMutable();
            loadAvg_.addAll(other.loadAvg_);
          }
          onChanged();
        }
        if (other.hasTimes()) {
          mergeTimes(other.getTimes());
        }
        if (other.hasStats()) {
          mergeStats(other.getStats());
        }
        if (other.hasFreq()) {
          mergeFreq(other.getFreq());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                count_ = input.readInt32();

                break;
              } // case 8
              case 16: {
                logicalCount_ = input.readInt32();

                break;
              } // case 16
              case 29: {
                float v = input.readFloat();
                ensureLoadAvgIsMutable();
                loadAvg_.addFloat(v);
                break;
              } // case 29
              case 26: {
                int length = input.readRawVarint32();
                int limit = input.pushLimit(length);
                ensureLoadAvgIsMutable();
                while (input.getBytesUntilLimit() > 0) {
                  loadAvg_.addFloat(input.readFloat());
                }
                input.popLimit(limit);
                break;
              } // case 26
              case 34: {
                input.readMessage(
                    getTimesFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 34
              case 42: {
                input.readMessage(
                    getStatsFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 42
              case 50: {
                input.readMessage(
                    getFreqFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 50
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private int count_ ;
      /**
       * <pre>
       * Number of CPUs.
       * </pre>
       *
       * <code>int32 count = 1;</code>
       * @return The count.
       */
      @java.lang.Override
      public int getCount() {
        return count_;
      }
      /**
       * <pre>
       * Number of CPUs.
       * </pre>
       *
       * <code>int32 count = 1;</code>
       * @param value The count to set.
       * @return This builder for chaining.
       */
      public Builder setCount(int value) {
        
        count_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of CPUs.
       * </pre>
       *
       * <code>int32 count = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearCount() {
        
        count_ = 0;
        onChanged();
        return this;
      }

      private int logicalCount_ ;
      /**
       * <pre>
       * Logical number of CPUs.
       * </pre>
       *
       * <code>int32 logical_count = 2;</code>
       * @return The logicalCount.
       */
      @java.lang.Override
      public int getLogicalCount() {
        return logicalCount_;
      }
      /**
       * <pre>
       * Logical number of CPUs.
       * </pre>
       *
       * <code>int32 logical_count = 2;</code>
       * @param value The logicalCount to set.
       * @return This builder for chaining.
       */
      public Builder setLogicalCount(int value) {
        
        logicalCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Logical number of CPUs.
       * </pre>
       *
       * <code>int32 logical_count = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearLogicalCount() {
        
        logicalCount_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.FloatList loadAvg_ = emptyFloatList();
      private void ensureLoadAvgIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          loadAvg_ = mutableCopy(loadAvg_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * Average load of CPUs - last 1 min, last 5 min and last 15 min.
       * </pre>
       *
       * <code>repeated float load_avg = 3;</code>
       * @return A list containing the loadAvg.
       */
      public java.util.List<java.lang.Float>
          getLoadAvgList() {
        return ((bitField0_ & 0x00000001) != 0) ?
                 java.util.Collections.unmodifiableList(loadAvg_) : loadAvg_;
      }
      /**
       * <pre>
       * Average load of CPUs - last 1 min, last 5 min and last 15 min.
       * </pre>
       *
       * <code>repeated float load_avg = 3;</code>
       * @return The count of loadAvg.
       */
      public int getLoadAvgCount() {
        return loadAvg_.size();
      }
      /**
       * <pre>
       * Average load of CPUs - last 1 min, last 5 min and last 15 min.
       * </pre>
       *
       * <code>repeated float load_avg = 3;</code>
       * @param index The index of the element to return.
       * @return The loadAvg at the given index.
       */
      public float getLoadAvg(int index) {
        return loadAvg_.getFloat(index);
      }
      /**
       * <pre>
       * Average load of CPUs - last 1 min, last 5 min and last 15 min.
       * </pre>
       *
       * <code>repeated float load_avg = 3;</code>
       * @param index The index to set the value at.
       * @param value The loadAvg to set.
       * @return This builder for chaining.
       */
      public Builder setLoadAvg(
          int index, float value) {
        ensureLoadAvgIsMutable();
        loadAvg_.setFloat(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Average load of CPUs - last 1 min, last 5 min and last 15 min.
       * </pre>
       *
       * <code>repeated float load_avg = 3;</code>
       * @param value The loadAvg to add.
       * @return This builder for chaining.
       */
      public Builder addLoadAvg(float value) {
        ensureLoadAvgIsMutable();
        loadAvg_.addFloat(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Average load of CPUs - last 1 min, last 5 min and last 15 min.
       * </pre>
       *
       * <code>repeated float load_avg = 3;</code>
       * @param values The loadAvg to add.
       * @return This builder for chaining.
       */
      public Builder addAllLoadAvg(
          java.lang.Iterable<? extends java.lang.Float> values) {
        ensureLoadAvgIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, loadAvg_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Average load of CPUs - last 1 min, last 5 min and last 15 min.
       * </pre>
       *
       * <code>repeated float load_avg = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearLoadAvg() {
        loadAvg_ = emptyFloatList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes times_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimesOrBuilder> timesBuilder_;
      /**
       * <pre>
       * Percentage(s) of the CPU's capacity.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuTimes times = 4;</code>
       * @return Whether the times field is set.
       */
      public boolean hasTimes() {
        return timesBuilder_ != null || times_ != null;
      }
      /**
       * <pre>
       * Percentage(s) of the CPU's capacity.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuTimes times = 4;</code>
       * @return The times.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes getTimes() {
        if (timesBuilder_ == null) {
          return times_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes.getDefaultInstance() : times_;
        } else {
          return timesBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Percentage(s) of the CPU's capacity.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuTimes times = 4;</code>
       */
      public Builder setTimes(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes value) {
        if (timesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          times_ = value;
          onChanged();
        } else {
          timesBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Percentage(s) of the CPU's capacity.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuTimes times = 4;</code>
       */
      public Builder setTimes(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes.Builder builderForValue) {
        if (timesBuilder_ == null) {
          times_ = builderForValue.build();
          onChanged();
        } else {
          timesBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Percentage(s) of the CPU's capacity.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuTimes times = 4;</code>
       */
      public Builder mergeTimes(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes value) {
        if (timesBuilder_ == null) {
          if (times_ != null) {
            times_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes.newBuilder(times_).mergeFrom(value).buildPartial();
          } else {
            times_ = value;
          }
          onChanged();
        } else {
          timesBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Percentage(s) of the CPU's capacity.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuTimes times = 4;</code>
       */
      public Builder clearTimes() {
        if (timesBuilder_ == null) {
          times_ = null;
          onChanged();
        } else {
          times_ = null;
          timesBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Percentage(s) of the CPU's capacity.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuTimes times = 4;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes.Builder getTimesBuilder() {
        
        onChanged();
        return getTimesFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Percentage(s) of the CPU's capacity.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuTimes times = 4;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimesOrBuilder getTimesOrBuilder() {
        if (timesBuilder_ != null) {
          return timesBuilder_.getMessageOrBuilder();
        } else {
          return times_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes.getDefaultInstance() : times_;
        }
      }
      /**
       * <pre>
       * Percentage(s) of the CPU's capacity.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuTimes times = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimesOrBuilder> 
          getTimesFieldBuilder() {
        if (timesBuilder_ == null) {
          timesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimesOrBuilder>(
                  getTimes(),
                  getParentForChildren(),
                  isClean());
          times_ = null;
        }
        return timesBuilder_;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats stats_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStatsOrBuilder> statsBuilder_;
      /**
       * <pre>
       * CPU stats (e.g.: interrupts, syscalls).
       * </pre>
       *
       * <code>.cdp.telemetry.CpuStats stats = 5;</code>
       * @return Whether the stats field is set.
       */
      public boolean hasStats() {
        return statsBuilder_ != null || stats_ != null;
      }
      /**
       * <pre>
       * CPU stats (e.g.: interrupts, syscalls).
       * </pre>
       *
       * <code>.cdp.telemetry.CpuStats stats = 5;</code>
       * @return The stats.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats getStats() {
        if (statsBuilder_ == null) {
          return stats_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats.getDefaultInstance() : stats_;
        } else {
          return statsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * CPU stats (e.g.: interrupts, syscalls).
       * </pre>
       *
       * <code>.cdp.telemetry.CpuStats stats = 5;</code>
       */
      public Builder setStats(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats value) {
        if (statsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          stats_ = value;
          onChanged();
        } else {
          statsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * CPU stats (e.g.: interrupts, syscalls).
       * </pre>
       *
       * <code>.cdp.telemetry.CpuStats stats = 5;</code>
       */
      public Builder setStats(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats.Builder builderForValue) {
        if (statsBuilder_ == null) {
          stats_ = builderForValue.build();
          onChanged();
        } else {
          statsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * CPU stats (e.g.: interrupts, syscalls).
       * </pre>
       *
       * <code>.cdp.telemetry.CpuStats stats = 5;</code>
       */
      public Builder mergeStats(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats value) {
        if (statsBuilder_ == null) {
          if (stats_ != null) {
            stats_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats.newBuilder(stats_).mergeFrom(value).buildPartial();
          } else {
            stats_ = value;
          }
          onChanged();
        } else {
          statsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * CPU stats (e.g.: interrupts, syscalls).
       * </pre>
       *
       * <code>.cdp.telemetry.CpuStats stats = 5;</code>
       */
      public Builder clearStats() {
        if (statsBuilder_ == null) {
          stats_ = null;
          onChanged();
        } else {
          stats_ = null;
          statsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * CPU stats (e.g.: interrupts, syscalls).
       * </pre>
       *
       * <code>.cdp.telemetry.CpuStats stats = 5;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats.Builder getStatsBuilder() {
        
        onChanged();
        return getStatsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * CPU stats (e.g.: interrupts, syscalls).
       * </pre>
       *
       * <code>.cdp.telemetry.CpuStats stats = 5;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStatsOrBuilder getStatsOrBuilder() {
        if (statsBuilder_ != null) {
          return statsBuilder_.getMessageOrBuilder();
        } else {
          return stats_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats.getDefaultInstance() : stats_;
        }
      }
      /**
       * <pre>
       * CPU stats (e.g.: interrupts, syscalls).
       * </pre>
       *
       * <code>.cdp.telemetry.CpuStats stats = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStatsOrBuilder> 
          getStatsFieldBuilder() {
        if (statsBuilder_ == null) {
          statsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStatsOrBuilder>(
                  getStats(),
                  getParentForChildren(),
                  isClean());
          stats_ = null;
        }
        return statsBuilder_;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency freq_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequencyOrBuilder> freqBuilder_;
      /**
       * <pre>
       * CPU frequency.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuFrequency freq = 6;</code>
       * @return Whether the freq field is set.
       */
      public boolean hasFreq() {
        return freqBuilder_ != null || freq_ != null;
      }
      /**
       * <pre>
       * CPU frequency.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuFrequency freq = 6;</code>
       * @return The freq.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency getFreq() {
        if (freqBuilder_ == null) {
          return freq_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency.getDefaultInstance() : freq_;
        } else {
          return freqBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * CPU frequency.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuFrequency freq = 6;</code>
       */
      public Builder setFreq(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency value) {
        if (freqBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          freq_ = value;
          onChanged();
        } else {
          freqBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * CPU frequency.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuFrequency freq = 6;</code>
       */
      public Builder setFreq(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency.Builder builderForValue) {
        if (freqBuilder_ == null) {
          freq_ = builderForValue.build();
          onChanged();
        } else {
          freqBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * CPU frequency.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuFrequency freq = 6;</code>
       */
      public Builder mergeFreq(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency value) {
        if (freqBuilder_ == null) {
          if (freq_ != null) {
            freq_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency.newBuilder(freq_).mergeFrom(value).buildPartial();
          } else {
            freq_ = value;
          }
          onChanged();
        } else {
          freqBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * CPU frequency.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuFrequency freq = 6;</code>
       */
      public Builder clearFreq() {
        if (freqBuilder_ == null) {
          freq_ = null;
          onChanged();
        } else {
          freq_ = null;
          freqBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * CPU frequency.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuFrequency freq = 6;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency.Builder getFreqBuilder() {
        
        onChanged();
        return getFreqFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * CPU frequency.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuFrequency freq = 6;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequencyOrBuilder getFreqOrBuilder() {
        if (freqBuilder_ != null) {
          return freqBuilder_.getMessageOrBuilder();
        } else {
          return freq_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency.getDefaultInstance() : freq_;
        }
      }
      /**
       * <pre>
       * CPU frequency.
       * </pre>
       *
       * <code>.cdp.telemetry.CpuFrequency freq = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequencyOrBuilder> 
          getFreqFieldBuilder() {
        if (freqBuilder_ == null) {
          freqBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequencyOrBuilder>(
                  getFreq(),
                  getParentForChildren(),
                  isClean());
          freq_ = null;
        }
        return freqBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.CpuMetrics)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.CpuMetrics)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CpuMetrics>
        PARSER = new com.google.protobuf.AbstractParser<CpuMetrics>() {
      @java.lang.Override
      public CpuMetrics parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CpuMetrics> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CpuMetrics> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuMetrics getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CpuStatsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.CpuStats)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Number of context switches.
     * </pre>
     *
     * <code>int64 ctx_switches = 1;</code>
     * @return The ctxSwitches.
     */
    long getCtxSwitches();

    /**
     * <pre>
     * Number of CPU interrupts.
     * </pre>
     *
     * <code>int64 interrupts = 2;</code>
     * @return The interrupts.
     */
    long getInterrupts();

    /**
     * <pre>
     * Number of CPU soft interrupts.
     * </pre>
     *
     * <code>int64 soft_interrupts = 3;</code>
     * @return The softInterrupts.
     */
    long getSoftInterrupts();

    /**
     * <pre>
     * Number of syscalls.
     * </pre>
     *
     * <code>int64 syscalls = 4;</code>
     * @return The syscalls.
     */
    long getSyscalls();
  }
  /**
   * <pre>
   * Holds CPU call statistics.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.CpuStats}
   */
  public static final class CpuStats extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.CpuStats)
      CpuStatsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CpuStats.newBuilder() to construct.
    private CpuStats(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CpuStats() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CpuStats();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuStats_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuStats_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats.Builder.class);
    }

    public static final int CTX_SWITCHES_FIELD_NUMBER = 1;
    private long ctxSwitches_;
    /**
     * <pre>
     * Number of context switches.
     * </pre>
     *
     * <code>int64 ctx_switches = 1;</code>
     * @return The ctxSwitches.
     */
    @java.lang.Override
    public long getCtxSwitches() {
      return ctxSwitches_;
    }

    public static final int INTERRUPTS_FIELD_NUMBER = 2;
    private long interrupts_;
    /**
     * <pre>
     * Number of CPU interrupts.
     * </pre>
     *
     * <code>int64 interrupts = 2;</code>
     * @return The interrupts.
     */
    @java.lang.Override
    public long getInterrupts() {
      return interrupts_;
    }

    public static final int SOFT_INTERRUPTS_FIELD_NUMBER = 3;
    private long softInterrupts_;
    /**
     * <pre>
     * Number of CPU soft interrupts.
     * </pre>
     *
     * <code>int64 soft_interrupts = 3;</code>
     * @return The softInterrupts.
     */
    @java.lang.Override
    public long getSoftInterrupts() {
      return softInterrupts_;
    }

    public static final int SYSCALLS_FIELD_NUMBER = 4;
    private long syscalls_;
    /**
     * <pre>
     * Number of syscalls.
     * </pre>
     *
     * <code>int64 syscalls = 4;</code>
     * @return The syscalls.
     */
    @java.lang.Override
    public long getSyscalls() {
      return syscalls_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (ctxSwitches_ != 0L) {
        output.writeInt64(1, ctxSwitches_);
      }
      if (interrupts_ != 0L) {
        output.writeInt64(2, interrupts_);
      }
      if (softInterrupts_ != 0L) {
        output.writeInt64(3, softInterrupts_);
      }
      if (syscalls_ != 0L) {
        output.writeInt64(4, syscalls_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (ctxSwitches_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, ctxSwitches_);
      }
      if (interrupts_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, interrupts_);
      }
      if (softInterrupts_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, softInterrupts_);
      }
      if (syscalls_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, syscalls_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats) obj;

      if (getCtxSwitches()
          != other.getCtxSwitches()) return false;
      if (getInterrupts()
          != other.getInterrupts()) return false;
      if (getSoftInterrupts()
          != other.getSoftInterrupts()) return false;
      if (getSyscalls()
          != other.getSyscalls()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + CTX_SWITCHES_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getCtxSwitches());
      hash = (37 * hash) + INTERRUPTS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getInterrupts());
      hash = (37 * hash) + SOFT_INTERRUPTS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getSoftInterrupts());
      hash = (37 * hash) + SYSCALLS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getSyscalls());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds CPU call statistics.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.CpuStats}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.CpuStats)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStatsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuStats_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuStats_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        ctxSwitches_ = 0L;

        interrupts_ = 0L;

        softInterrupts_ = 0L;

        syscalls_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuStats_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats(this);
        result.ctxSwitches_ = ctxSwitches_;
        result.interrupts_ = interrupts_;
        result.softInterrupts_ = softInterrupts_;
        result.syscalls_ = syscalls_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats.getDefaultInstance()) return this;
        if (other.getCtxSwitches() != 0L) {
          setCtxSwitches(other.getCtxSwitches());
        }
        if (other.getInterrupts() != 0L) {
          setInterrupts(other.getInterrupts());
        }
        if (other.getSoftInterrupts() != 0L) {
          setSoftInterrupts(other.getSoftInterrupts());
        }
        if (other.getSyscalls() != 0L) {
          setSyscalls(other.getSyscalls());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                ctxSwitches_ = input.readInt64();

                break;
              } // case 8
              case 16: {
                interrupts_ = input.readInt64();

                break;
              } // case 16
              case 24: {
                softInterrupts_ = input.readInt64();

                break;
              } // case 24
              case 32: {
                syscalls_ = input.readInt64();

                break;
              } // case 32
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private long ctxSwitches_ ;
      /**
       * <pre>
       * Number of context switches.
       * </pre>
       *
       * <code>int64 ctx_switches = 1;</code>
       * @return The ctxSwitches.
       */
      @java.lang.Override
      public long getCtxSwitches() {
        return ctxSwitches_;
      }
      /**
       * <pre>
       * Number of context switches.
       * </pre>
       *
       * <code>int64 ctx_switches = 1;</code>
       * @param value The ctxSwitches to set.
       * @return This builder for chaining.
       */
      public Builder setCtxSwitches(long value) {
        
        ctxSwitches_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of context switches.
       * </pre>
       *
       * <code>int64 ctx_switches = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearCtxSwitches() {
        
        ctxSwitches_ = 0L;
        onChanged();
        return this;
      }

      private long interrupts_ ;
      /**
       * <pre>
       * Number of CPU interrupts.
       * </pre>
       *
       * <code>int64 interrupts = 2;</code>
       * @return The interrupts.
       */
      @java.lang.Override
      public long getInterrupts() {
        return interrupts_;
      }
      /**
       * <pre>
       * Number of CPU interrupts.
       * </pre>
       *
       * <code>int64 interrupts = 2;</code>
       * @param value The interrupts to set.
       * @return This builder for chaining.
       */
      public Builder setInterrupts(long value) {
        
        interrupts_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of CPU interrupts.
       * </pre>
       *
       * <code>int64 interrupts = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearInterrupts() {
        
        interrupts_ = 0L;
        onChanged();
        return this;
      }

      private long softInterrupts_ ;
      /**
       * <pre>
       * Number of CPU soft interrupts.
       * </pre>
       *
       * <code>int64 soft_interrupts = 3;</code>
       * @return The softInterrupts.
       */
      @java.lang.Override
      public long getSoftInterrupts() {
        return softInterrupts_;
      }
      /**
       * <pre>
       * Number of CPU soft interrupts.
       * </pre>
       *
       * <code>int64 soft_interrupts = 3;</code>
       * @param value The softInterrupts to set.
       * @return This builder for chaining.
       */
      public Builder setSoftInterrupts(long value) {
        
        softInterrupts_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of CPU soft interrupts.
       * </pre>
       *
       * <code>int64 soft_interrupts = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearSoftInterrupts() {
        
        softInterrupts_ = 0L;
        onChanged();
        return this;
      }

      private long syscalls_ ;
      /**
       * <pre>
       * Number of syscalls.
       * </pre>
       *
       * <code>int64 syscalls = 4;</code>
       * @return The syscalls.
       */
      @java.lang.Override
      public long getSyscalls() {
        return syscalls_;
      }
      /**
       * <pre>
       * Number of syscalls.
       * </pre>
       *
       * <code>int64 syscalls = 4;</code>
       * @param value The syscalls to set.
       * @return This builder for chaining.
       */
      public Builder setSyscalls(long value) {
        
        syscalls_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of syscalls.
       * </pre>
       *
       * <code>int64 syscalls = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearSyscalls() {
        
        syscalls_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.CpuStats)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.CpuStats)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CpuStats>
        PARSER = new com.google.protobuf.AbstractParser<CpuStats>() {
      @java.lang.Override
      public CpuStats parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CpuStats> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CpuStats> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuStats getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CpuTimesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.CpuTimes)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * CPU time that is not actively being used.
     * </pre>
     *
     * <code>double idle = 1;</code>
     * @return The idle.
     */
    double getIdle();

    /**
     * <pre>
     * CPU time used by processes - with lower priority than other tasks.
     * </pre>
     *
     * <code>double nice = 2;</code>
     * @return The nice.
     */
    double getNice();

    /**
     * <pre>
     * CPU time used by the kernel.
     * </pre>
     *
     * <code>double system = 3;</code>
     * @return The system.
     */
    double getSystem();

    /**
     * <pre>
     * CPU time used by user space processes.
     * </pre>
     *
     * <code>double user = 4;</code>
     * @return The user.
     */
    double getUser();
  }
  /**
   * <pre>
   * Holds CPU time statistics.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.CpuTimes}
   */
  public static final class CpuTimes extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.CpuTimes)
      CpuTimesOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CpuTimes.newBuilder() to construct.
    private CpuTimes(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CpuTimes() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CpuTimes();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuTimes_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuTimes_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes.Builder.class);
    }

    public static final int IDLE_FIELD_NUMBER = 1;
    private double idle_;
    /**
     * <pre>
     * CPU time that is not actively being used.
     * </pre>
     *
     * <code>double idle = 1;</code>
     * @return The idle.
     */
    @java.lang.Override
    public double getIdle() {
      return idle_;
    }

    public static final int NICE_FIELD_NUMBER = 2;
    private double nice_;
    /**
     * <pre>
     * CPU time used by processes - with lower priority than other tasks.
     * </pre>
     *
     * <code>double nice = 2;</code>
     * @return The nice.
     */
    @java.lang.Override
    public double getNice() {
      return nice_;
    }

    public static final int SYSTEM_FIELD_NUMBER = 3;
    private double system_;
    /**
     * <pre>
     * CPU time used by the kernel.
     * </pre>
     *
     * <code>double system = 3;</code>
     * @return The system.
     */
    @java.lang.Override
    public double getSystem() {
      return system_;
    }

    public static final int USER_FIELD_NUMBER = 4;
    private double user_;
    /**
     * <pre>
     * CPU time used by user space processes.
     * </pre>
     *
     * <code>double user = 4;</code>
     * @return The user.
     */
    @java.lang.Override
    public double getUser() {
      return user_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (java.lang.Double.doubleToRawLongBits(idle_) != 0) {
        output.writeDouble(1, idle_);
      }
      if (java.lang.Double.doubleToRawLongBits(nice_) != 0) {
        output.writeDouble(2, nice_);
      }
      if (java.lang.Double.doubleToRawLongBits(system_) != 0) {
        output.writeDouble(3, system_);
      }
      if (java.lang.Double.doubleToRawLongBits(user_) != 0) {
        output.writeDouble(4, user_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (java.lang.Double.doubleToRawLongBits(idle_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(1, idle_);
      }
      if (java.lang.Double.doubleToRawLongBits(nice_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(2, nice_);
      }
      if (java.lang.Double.doubleToRawLongBits(system_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(3, system_);
      }
      if (java.lang.Double.doubleToRawLongBits(user_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(4, user_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes) obj;

      if (java.lang.Double.doubleToLongBits(getIdle())
          != java.lang.Double.doubleToLongBits(
              other.getIdle())) return false;
      if (java.lang.Double.doubleToLongBits(getNice())
          != java.lang.Double.doubleToLongBits(
              other.getNice())) return false;
      if (java.lang.Double.doubleToLongBits(getSystem())
          != java.lang.Double.doubleToLongBits(
              other.getSystem())) return false;
      if (java.lang.Double.doubleToLongBits(getUser())
          != java.lang.Double.doubleToLongBits(
              other.getUser())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + IDLE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getIdle()));
      hash = (37 * hash) + NICE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getNice()));
      hash = (37 * hash) + SYSTEM_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getSystem()));
      hash = (37 * hash) + USER_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getUser()));
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds CPU time statistics.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.CpuTimes}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.CpuTimes)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuTimes_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuTimes_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        idle_ = 0D;

        nice_ = 0D;

        system_ = 0D;

        user_ = 0D;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuTimes_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes(this);
        result.idle_ = idle_;
        result.nice_ = nice_;
        result.system_ = system_;
        result.user_ = user_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes.getDefaultInstance()) return this;
        if (other.getIdle() != 0D) {
          setIdle(other.getIdle());
        }
        if (other.getNice() != 0D) {
          setNice(other.getNice());
        }
        if (other.getSystem() != 0D) {
          setSystem(other.getSystem());
        }
        if (other.getUser() != 0D) {
          setUser(other.getUser());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 9: {
                idle_ = input.readDouble();

                break;
              } // case 9
              case 17: {
                nice_ = input.readDouble();

                break;
              } // case 17
              case 25: {
                system_ = input.readDouble();

                break;
              } // case 25
              case 33: {
                user_ = input.readDouble();

                break;
              } // case 33
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private double idle_ ;
      /**
       * <pre>
       * CPU time that is not actively being used.
       * </pre>
       *
       * <code>double idle = 1;</code>
       * @return The idle.
       */
      @java.lang.Override
      public double getIdle() {
        return idle_;
      }
      /**
       * <pre>
       * CPU time that is not actively being used.
       * </pre>
       *
       * <code>double idle = 1;</code>
       * @param value The idle to set.
       * @return This builder for chaining.
       */
      public Builder setIdle(double value) {
        
        idle_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * CPU time that is not actively being used.
       * </pre>
       *
       * <code>double idle = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearIdle() {
        
        idle_ = 0D;
        onChanged();
        return this;
      }

      private double nice_ ;
      /**
       * <pre>
       * CPU time used by processes - with lower priority than other tasks.
       * </pre>
       *
       * <code>double nice = 2;</code>
       * @return The nice.
       */
      @java.lang.Override
      public double getNice() {
        return nice_;
      }
      /**
       * <pre>
       * CPU time used by processes - with lower priority than other tasks.
       * </pre>
       *
       * <code>double nice = 2;</code>
       * @param value The nice to set.
       * @return This builder for chaining.
       */
      public Builder setNice(double value) {
        
        nice_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * CPU time used by processes - with lower priority than other tasks.
       * </pre>
       *
       * <code>double nice = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearNice() {
        
        nice_ = 0D;
        onChanged();
        return this;
      }

      private double system_ ;
      /**
       * <pre>
       * CPU time used by the kernel.
       * </pre>
       *
       * <code>double system = 3;</code>
       * @return The system.
       */
      @java.lang.Override
      public double getSystem() {
        return system_;
      }
      /**
       * <pre>
       * CPU time used by the kernel.
       * </pre>
       *
       * <code>double system = 3;</code>
       * @param value The system to set.
       * @return This builder for chaining.
       */
      public Builder setSystem(double value) {
        
        system_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * CPU time used by the kernel.
       * </pre>
       *
       * <code>double system = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearSystem() {
        
        system_ = 0D;
        onChanged();
        return this;
      }

      private double user_ ;
      /**
       * <pre>
       * CPU time used by user space processes.
       * </pre>
       *
       * <code>double user = 4;</code>
       * @return The user.
       */
      @java.lang.Override
      public double getUser() {
        return user_;
      }
      /**
       * <pre>
       * CPU time used by user space processes.
       * </pre>
       *
       * <code>double user = 4;</code>
       * @param value The user to set.
       * @return This builder for chaining.
       */
      public Builder setUser(double value) {
        
        user_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * CPU time used by user space processes.
       * </pre>
       *
       * <code>double user = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearUser() {
        
        user_ = 0D;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.CpuTimes)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.CpuTimes)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CpuTimes>
        PARSER = new com.google.protobuf.AbstractParser<CpuTimes>() {
      @java.lang.Override
      public CpuTimes parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CpuTimes> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CpuTimes> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuTimes getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CpuFrequencyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.CpuFrequency)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Current CPU frequency.
     * </pre>
     *
     * <code>int64 current = 1;</code>
     * @return The current.
     */
    long getCurrent();

    /**
     * <pre>
     * Minimum CPU frequency.
     * </pre>
     *
     * <code>int64 min = 2;</code>
     * @return The min.
     */
    long getMin();

    /**
     * <pre>
     * Maximum CPU frequency.
     * </pre>
     *
     * <code>int64 max = 3;</code>
     * @return The max.
     */
    long getMax();
  }
  /**
   * <pre>
   * Holds CPU frequency related data.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.CpuFrequency}
   */
  public static final class CpuFrequency extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.CpuFrequency)
      CpuFrequencyOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CpuFrequency.newBuilder() to construct.
    private CpuFrequency(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CpuFrequency() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CpuFrequency();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuFrequency_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuFrequency_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency.Builder.class);
    }

    public static final int CURRENT_FIELD_NUMBER = 1;
    private long current_;
    /**
     * <pre>
     * Current CPU frequency.
     * </pre>
     *
     * <code>int64 current = 1;</code>
     * @return The current.
     */
    @java.lang.Override
    public long getCurrent() {
      return current_;
    }

    public static final int MIN_FIELD_NUMBER = 2;
    private long min_;
    /**
     * <pre>
     * Minimum CPU frequency.
     * </pre>
     *
     * <code>int64 min = 2;</code>
     * @return The min.
     */
    @java.lang.Override
    public long getMin() {
      return min_;
    }

    public static final int MAX_FIELD_NUMBER = 3;
    private long max_;
    /**
     * <pre>
     * Maximum CPU frequency.
     * </pre>
     *
     * <code>int64 max = 3;</code>
     * @return The max.
     */
    @java.lang.Override
    public long getMax() {
      return max_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (current_ != 0L) {
        output.writeInt64(1, current_);
      }
      if (min_ != 0L) {
        output.writeInt64(2, min_);
      }
      if (max_ != 0L) {
        output.writeInt64(3, max_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (current_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, current_);
      }
      if (min_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, min_);
      }
      if (max_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, max_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency) obj;

      if (getCurrent()
          != other.getCurrent()) return false;
      if (getMin()
          != other.getMin()) return false;
      if (getMax()
          != other.getMax()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + CURRENT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getCurrent());
      hash = (37 * hash) + MIN_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getMin());
      hash = (37 * hash) + MAX_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getMax());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds CPU frequency related data.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.CpuFrequency}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.CpuFrequency)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequencyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuFrequency_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuFrequency_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        current_ = 0L;

        min_ = 0L;

        max_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CpuFrequency_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency(this);
        result.current_ = current_;
        result.min_ = min_;
        result.max_ = max_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency.getDefaultInstance()) return this;
        if (other.getCurrent() != 0L) {
          setCurrent(other.getCurrent());
        }
        if (other.getMin() != 0L) {
          setMin(other.getMin());
        }
        if (other.getMax() != 0L) {
          setMax(other.getMax());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                current_ = input.readInt64();

                break;
              } // case 8
              case 16: {
                min_ = input.readInt64();

                break;
              } // case 16
              case 24: {
                max_ = input.readInt64();

                break;
              } // case 24
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private long current_ ;
      /**
       * <pre>
       * Current CPU frequency.
       * </pre>
       *
       * <code>int64 current = 1;</code>
       * @return The current.
       */
      @java.lang.Override
      public long getCurrent() {
        return current_;
      }
      /**
       * <pre>
       * Current CPU frequency.
       * </pre>
       *
       * <code>int64 current = 1;</code>
       * @param value The current to set.
       * @return This builder for chaining.
       */
      public Builder setCurrent(long value) {
        
        current_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Current CPU frequency.
       * </pre>
       *
       * <code>int64 current = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearCurrent() {
        
        current_ = 0L;
        onChanged();
        return this;
      }

      private long min_ ;
      /**
       * <pre>
       * Minimum CPU frequency.
       * </pre>
       *
       * <code>int64 min = 2;</code>
       * @return The min.
       */
      @java.lang.Override
      public long getMin() {
        return min_;
      }
      /**
       * <pre>
       * Minimum CPU frequency.
       * </pre>
       *
       * <code>int64 min = 2;</code>
       * @param value The min to set.
       * @return This builder for chaining.
       */
      public Builder setMin(long value) {
        
        min_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Minimum CPU frequency.
       * </pre>
       *
       * <code>int64 min = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMin() {
        
        min_ = 0L;
        onChanged();
        return this;
      }

      private long max_ ;
      /**
       * <pre>
       * Maximum CPU frequency.
       * </pre>
       *
       * <code>int64 max = 3;</code>
       * @return The max.
       */
      @java.lang.Override
      public long getMax() {
        return max_;
      }
      /**
       * <pre>
       * Maximum CPU frequency.
       * </pre>
       *
       * <code>int64 max = 3;</code>
       * @param value The max to set.
       * @return This builder for chaining.
       */
      public Builder setMax(long value) {
        
        max_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Maximum CPU frequency.
       * </pre>
       *
       * <code>int64 max = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearMax() {
        
        max_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.CpuFrequency)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.CpuFrequency)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CpuFrequency>
        PARSER = new com.google.protobuf.AbstractParser<CpuFrequency>() {
      @java.lang.Override
      public CpuFrequency parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CpuFrequency> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CpuFrequency> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CpuFrequency getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DiskMetricsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.DiskMetrics)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Disk partitions on the VM.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
     */
    java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition> 
        getPartitionsList();
    /**
     * <pre>
     * Disk partitions on the VM.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition getPartitions(int index);
    /**
     * <pre>
     * Disk partitions on the VM.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
     */
    int getPartitionsCount();
    /**
     * <pre>
     * Disk partitions on the VM.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
     */
    java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartitionOrBuilder> 
        getPartitionsOrBuilderList();
    /**
     * <pre>
     * Disk partitions on the VM.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartitionOrBuilder getPartitionsOrBuilder(
        int index);

    /**
     * <pre>
     * Top log files (based on file size) in /var/log folder.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
     */
    java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog> 
        getTopVarlogList();
    /**
     * <pre>
     * Top log files (based on file size) in /var/log folder.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog getTopVarlog(int index);
    /**
     * <pre>
     * Top log files (based on file size) in /var/log folder.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
     */
    int getTopVarlogCount();
    /**
     * <pre>
     * Top log files (based on file size) in /var/log folder.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
     */
    java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLogOrBuilder> 
        getTopVarlogOrBuilderList();
    /**
     * <pre>
     * Top log files (based on file size) in /var/log folder.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLogOrBuilder getTopVarlogOrBuilder(
        int index);

    /**
     * <pre>
     * Disk I/O related system metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.DiskIO io = 3;</code>
     * @return Whether the io field is set.
     */
    boolean hasIo();
    /**
     * <pre>
     * Disk I/O related system metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.DiskIO io = 3;</code>
     * @return The io.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO getIo();
    /**
     * <pre>
     * Disk I/O related system metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.DiskIO io = 3;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIOOrBuilder getIoOrBuilder();
  }
  /**
   * <pre>
   * Disk related system metrics.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.DiskMetrics}
   */
  public static final class DiskMetrics extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.DiskMetrics)
      DiskMetricsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DiskMetrics.newBuilder() to construct.
    private DiskMetrics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DiskMetrics() {
      partitions_ = java.util.Collections.emptyList();
      topVarlog_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DiskMetrics();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskMetrics_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskMetrics_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics.Builder.class);
    }

    public static final int PARTITIONS_FIELD_NUMBER = 1;
    private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition> partitions_;
    /**
     * <pre>
     * Disk partitions on the VM.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition> getPartitionsList() {
      return partitions_;
    }
    /**
     * <pre>
     * Disk partitions on the VM.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartitionOrBuilder> 
        getPartitionsOrBuilderList() {
      return partitions_;
    }
    /**
     * <pre>
     * Disk partitions on the VM.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
     */
    @java.lang.Override
    public int getPartitionsCount() {
      return partitions_.size();
    }
    /**
     * <pre>
     * Disk partitions on the VM.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition getPartitions(int index) {
      return partitions_.get(index);
    }
    /**
     * <pre>
     * Disk partitions on the VM.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartitionOrBuilder getPartitionsOrBuilder(
        int index) {
      return partitions_.get(index);
    }

    public static final int TOP_VARLOG_FIELD_NUMBER = 2;
    private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog> topVarlog_;
    /**
     * <pre>
     * Top log files (based on file size) in /var/log folder.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
     */
    @java.lang.Override
    public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog> getTopVarlogList() {
      return topVarlog_;
    }
    /**
     * <pre>
     * Top log files (based on file size) in /var/log folder.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLogOrBuilder> 
        getTopVarlogOrBuilderList() {
      return topVarlog_;
    }
    /**
     * <pre>
     * Top log files (based on file size) in /var/log folder.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
     */
    @java.lang.Override
    public int getTopVarlogCount() {
      return topVarlog_.size();
    }
    /**
     * <pre>
     * Top log files (based on file size) in /var/log folder.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog getTopVarlog(int index) {
      return topVarlog_.get(index);
    }
    /**
     * <pre>
     * Top log files (based on file size) in /var/log folder.
     * </pre>
     *
     * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLogOrBuilder getTopVarlogOrBuilder(
        int index) {
      return topVarlog_.get(index);
    }

    public static final int IO_FIELD_NUMBER = 3;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO io_;
    /**
     * <pre>
     * Disk I/O related system metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.DiskIO io = 3;</code>
     * @return Whether the io field is set.
     */
    @java.lang.Override
    public boolean hasIo() {
      return io_ != null;
    }
    /**
     * <pre>
     * Disk I/O related system metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.DiskIO io = 3;</code>
     * @return The io.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO getIo() {
      return io_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO.getDefaultInstance() : io_;
    }
    /**
     * <pre>
     * Disk I/O related system metrics.
     * </pre>
     *
     * <code>.cdp.telemetry.DiskIO io = 3;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIOOrBuilder getIoOrBuilder() {
      return getIo();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < partitions_.size(); i++) {
        output.writeMessage(1, partitions_.get(i));
      }
      for (int i = 0; i < topVarlog_.size(); i++) {
        output.writeMessage(2, topVarlog_.get(i));
      }
      if (io_ != null) {
        output.writeMessage(3, getIo());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < partitions_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, partitions_.get(i));
      }
      for (int i = 0; i < topVarlog_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, topVarlog_.get(i));
      }
      if (io_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, getIo());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics) obj;

      if (!getPartitionsList()
          .equals(other.getPartitionsList())) return false;
      if (!getTopVarlogList()
          .equals(other.getTopVarlogList())) return false;
      if (hasIo() != other.hasIo()) return false;
      if (hasIo()) {
        if (!getIo()
            .equals(other.getIo())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getPartitionsCount() > 0) {
        hash = (37 * hash) + PARTITIONS_FIELD_NUMBER;
        hash = (53 * hash) + getPartitionsList().hashCode();
      }
      if (getTopVarlogCount() > 0) {
        hash = (37 * hash) + TOP_VARLOG_FIELD_NUMBER;
        hash = (53 * hash) + getTopVarlogList().hashCode();
      }
      if (hasIo()) {
        hash = (37 * hash) + IO_FIELD_NUMBER;
        hash = (53 * hash) + getIo().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Disk related system metrics.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.DiskMetrics}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.DiskMetrics)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetricsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskMetrics_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskMetrics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (partitionsBuilder_ == null) {
          partitions_ = java.util.Collections.emptyList();
        } else {
          partitions_ = null;
          partitionsBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        if (topVarlogBuilder_ == null) {
          topVarlog_ = java.util.Collections.emptyList();
        } else {
          topVarlog_ = null;
          topVarlogBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000002);
        if (ioBuilder_ == null) {
          io_ = null;
        } else {
          io_ = null;
          ioBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskMetrics_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics(this);
        int from_bitField0_ = bitField0_;
        if (partitionsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            partitions_ = java.util.Collections.unmodifiableList(partitions_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.partitions_ = partitions_;
        } else {
          result.partitions_ = partitionsBuilder_.build();
        }
        if (topVarlogBuilder_ == null) {
          if (((bitField0_ & 0x00000002) != 0)) {
            topVarlog_ = java.util.Collections.unmodifiableList(topVarlog_);
            bitField0_ = (bitField0_ & ~0x00000002);
          }
          result.topVarlog_ = topVarlog_;
        } else {
          result.topVarlog_ = topVarlogBuilder_.build();
        }
        if (ioBuilder_ == null) {
          result.io_ = io_;
        } else {
          result.io_ = ioBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics.getDefaultInstance()) return this;
        if (partitionsBuilder_ == null) {
          if (!other.partitions_.isEmpty()) {
            if (partitions_.isEmpty()) {
              partitions_ = other.partitions_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensurePartitionsIsMutable();
              partitions_.addAll(other.partitions_);
            }
            onChanged();
          }
        } else {
          if (!other.partitions_.isEmpty()) {
            if (partitionsBuilder_.isEmpty()) {
              partitionsBuilder_.dispose();
              partitionsBuilder_ = null;
              partitions_ = other.partitions_;
              bitField0_ = (bitField0_ & ~0x00000001);
              partitionsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getPartitionsFieldBuilder() : null;
            } else {
              partitionsBuilder_.addAllMessages(other.partitions_);
            }
          }
        }
        if (topVarlogBuilder_ == null) {
          if (!other.topVarlog_.isEmpty()) {
            if (topVarlog_.isEmpty()) {
              topVarlog_ = other.topVarlog_;
              bitField0_ = (bitField0_ & ~0x00000002);
            } else {
              ensureTopVarlogIsMutable();
              topVarlog_.addAll(other.topVarlog_);
            }
            onChanged();
          }
        } else {
          if (!other.topVarlog_.isEmpty()) {
            if (topVarlogBuilder_.isEmpty()) {
              topVarlogBuilder_.dispose();
              topVarlogBuilder_ = null;
              topVarlog_ = other.topVarlog_;
              bitField0_ = (bitField0_ & ~0x00000002);
              topVarlogBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getTopVarlogFieldBuilder() : null;
            } else {
              topVarlogBuilder_.addAllMessages(other.topVarlog_);
            }
          }
        }
        if (other.hasIo()) {
          mergeIo(other.getIo());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition m =
                    input.readMessage(
                        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.parser(),
                        extensionRegistry);
                if (partitionsBuilder_ == null) {
                  ensurePartitionsIsMutable();
                  partitions_.add(m);
                } else {
                  partitionsBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog m =
                    input.readMessage(
                        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.parser(),
                        extensionRegistry);
                if (topVarlogBuilder_ == null) {
                  ensureTopVarlogIsMutable();
                  topVarlog_.add(m);
                } else {
                  topVarlogBuilder_.addMessage(m);
                }
                break;
              } // case 18
              case 26: {
                input.readMessage(
                    getIoFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition> partitions_ =
        java.util.Collections.emptyList();
      private void ensurePartitionsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          partitions_ = new java.util.ArrayList<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition>(partitions_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartitionOrBuilder> partitionsBuilder_;

      /**
       * <pre>
       * Disk partitions on the VM.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition> getPartitionsList() {
        if (partitionsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(partitions_);
        } else {
          return partitionsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Disk partitions on the VM.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
       */
      public int getPartitionsCount() {
        if (partitionsBuilder_ == null) {
          return partitions_.size();
        } else {
          return partitionsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Disk partitions on the VM.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition getPartitions(int index) {
        if (partitionsBuilder_ == null) {
          return partitions_.get(index);
        } else {
          return partitionsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Disk partitions on the VM.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
       */
      public Builder setPartitions(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition value) {
        if (partitionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePartitionsIsMutable();
          partitions_.set(index, value);
          onChanged();
        } else {
          partitionsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Disk partitions on the VM.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
       */
      public Builder setPartitions(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.Builder builderForValue) {
        if (partitionsBuilder_ == null) {
          ensurePartitionsIsMutable();
          partitions_.set(index, builderForValue.build());
          onChanged();
        } else {
          partitionsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Disk partitions on the VM.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
       */
      public Builder addPartitions(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition value) {
        if (partitionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePartitionsIsMutable();
          partitions_.add(value);
          onChanged();
        } else {
          partitionsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Disk partitions on the VM.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
       */
      public Builder addPartitions(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition value) {
        if (partitionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensurePartitionsIsMutable();
          partitions_.add(index, value);
          onChanged();
        } else {
          partitionsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Disk partitions on the VM.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
       */
      public Builder addPartitions(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.Builder builderForValue) {
        if (partitionsBuilder_ == null) {
          ensurePartitionsIsMutable();
          partitions_.add(builderForValue.build());
          onChanged();
        } else {
          partitionsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Disk partitions on the VM.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
       */
      public Builder addPartitions(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.Builder builderForValue) {
        if (partitionsBuilder_ == null) {
          ensurePartitionsIsMutable();
          partitions_.add(index, builderForValue.build());
          onChanged();
        } else {
          partitionsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Disk partitions on the VM.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
       */
      public Builder addAllPartitions(
          java.lang.Iterable<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition> values) {
        if (partitionsBuilder_ == null) {
          ensurePartitionsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, partitions_);
          onChanged();
        } else {
          partitionsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Disk partitions on the VM.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
       */
      public Builder clearPartitions() {
        if (partitionsBuilder_ == null) {
          partitions_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          partitionsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Disk partitions on the VM.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
       */
      public Builder removePartitions(int index) {
        if (partitionsBuilder_ == null) {
          ensurePartitionsIsMutable();
          partitions_.remove(index);
          onChanged();
        } else {
          partitionsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Disk partitions on the VM.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.Builder getPartitionsBuilder(
          int index) {
        return getPartitionsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Disk partitions on the VM.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartitionOrBuilder getPartitionsOrBuilder(
          int index) {
        if (partitionsBuilder_ == null) {
          return partitions_.get(index);  } else {
          return partitionsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Disk partitions on the VM.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
       */
      public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartitionOrBuilder> 
           getPartitionsOrBuilderList() {
        if (partitionsBuilder_ != null) {
          return partitionsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(partitions_);
        }
      }
      /**
       * <pre>
       * Disk partitions on the VM.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.Builder addPartitionsBuilder() {
        return getPartitionsFieldBuilder().addBuilder(
            com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.getDefaultInstance());
      }
      /**
       * <pre>
       * Disk partitions on the VM.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.Builder addPartitionsBuilder(
          int index) {
        return getPartitionsFieldBuilder().addBuilder(
            index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.getDefaultInstance());
      }
      /**
       * <pre>
       * Disk partitions on the VM.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.DiskPartition partitions = 1;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.Builder> 
           getPartitionsBuilderList() {
        return getPartitionsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartitionOrBuilder> 
          getPartitionsFieldBuilder() {
        if (partitionsBuilder_ == null) {
          partitionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartitionOrBuilder>(
                  partitions_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          partitions_ = null;
        }
        return partitionsBuilder_;
      }

      private java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog> topVarlog_ =
        java.util.Collections.emptyList();
      private void ensureTopVarlogIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          topVarlog_ = new java.util.ArrayList<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog>(topVarlog_);
          bitField0_ |= 0x00000002;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLogOrBuilder> topVarlogBuilder_;

      /**
       * <pre>
       * Top log files (based on file size) in /var/log folder.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog> getTopVarlogList() {
        if (topVarlogBuilder_ == null) {
          return java.util.Collections.unmodifiableList(topVarlog_);
        } else {
          return topVarlogBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * Top log files (based on file size) in /var/log folder.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
       */
      public int getTopVarlogCount() {
        if (topVarlogBuilder_ == null) {
          return topVarlog_.size();
        } else {
          return topVarlogBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * Top log files (based on file size) in /var/log folder.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog getTopVarlog(int index) {
        if (topVarlogBuilder_ == null) {
          return topVarlog_.get(index);
        } else {
          return topVarlogBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * Top log files (based on file size) in /var/log folder.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
       */
      public Builder setTopVarlog(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog value) {
        if (topVarlogBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTopVarlogIsMutable();
          topVarlog_.set(index, value);
          onChanged();
        } else {
          topVarlogBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Top log files (based on file size) in /var/log folder.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
       */
      public Builder setTopVarlog(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.Builder builderForValue) {
        if (topVarlogBuilder_ == null) {
          ensureTopVarlogIsMutable();
          topVarlog_.set(index, builderForValue.build());
          onChanged();
        } else {
          topVarlogBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Top log files (based on file size) in /var/log folder.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
       */
      public Builder addTopVarlog(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog value) {
        if (topVarlogBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTopVarlogIsMutable();
          topVarlog_.add(value);
          onChanged();
        } else {
          topVarlogBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * Top log files (based on file size) in /var/log folder.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
       */
      public Builder addTopVarlog(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog value) {
        if (topVarlogBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureTopVarlogIsMutable();
          topVarlog_.add(index, value);
          onChanged();
        } else {
          topVarlogBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * Top log files (based on file size) in /var/log folder.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
       */
      public Builder addTopVarlog(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.Builder builderForValue) {
        if (topVarlogBuilder_ == null) {
          ensureTopVarlogIsMutable();
          topVarlog_.add(builderForValue.build());
          onChanged();
        } else {
          topVarlogBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Top log files (based on file size) in /var/log folder.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
       */
      public Builder addTopVarlog(
          int index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.Builder builderForValue) {
        if (topVarlogBuilder_ == null) {
          ensureTopVarlogIsMutable();
          topVarlog_.add(index, builderForValue.build());
          onChanged();
        } else {
          topVarlogBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * Top log files (based on file size) in /var/log folder.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
       */
      public Builder addAllTopVarlog(
          java.lang.Iterable<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog> values) {
        if (topVarlogBuilder_ == null) {
          ensureTopVarlogIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, topVarlog_);
          onChanged();
        } else {
          topVarlogBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * Top log files (based on file size) in /var/log folder.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
       */
      public Builder clearTopVarlog() {
        if (topVarlogBuilder_ == null) {
          topVarlog_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000002);
          onChanged();
        } else {
          topVarlogBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Top log files (based on file size) in /var/log folder.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
       */
      public Builder removeTopVarlog(int index) {
        if (topVarlogBuilder_ == null) {
          ensureTopVarlogIsMutable();
          topVarlog_.remove(index);
          onChanged();
        } else {
          topVarlogBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * Top log files (based on file size) in /var/log folder.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.Builder getTopVarlogBuilder(
          int index) {
        return getTopVarlogFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * Top log files (based on file size) in /var/log folder.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLogOrBuilder getTopVarlogOrBuilder(
          int index) {
        if (topVarlogBuilder_ == null) {
          return topVarlog_.get(index);  } else {
          return topVarlogBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * Top log files (based on file size) in /var/log folder.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
       */
      public java.util.List<? extends com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLogOrBuilder> 
           getTopVarlogOrBuilderList() {
        if (topVarlogBuilder_ != null) {
          return topVarlogBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(topVarlog_);
        }
      }
      /**
       * <pre>
       * Top log files (based on file size) in /var/log folder.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.Builder addTopVarlogBuilder() {
        return getTopVarlogFieldBuilder().addBuilder(
            com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.getDefaultInstance());
      }
      /**
       * <pre>
       * Top log files (based on file size) in /var/log folder.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.Builder addTopVarlogBuilder(
          int index) {
        return getTopVarlogFieldBuilder().addBuilder(
            index, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.getDefaultInstance());
      }
      /**
       * <pre>
       * Top log files (based on file size) in /var/log folder.
       * </pre>
       *
       * <code>repeated .cdp.telemetry.VmLog top_varlog = 2;</code>
       */
      public java.util.List<com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.Builder> 
           getTopVarlogBuilderList() {
        return getTopVarlogFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLogOrBuilder> 
          getTopVarlogFieldBuilder() {
        if (topVarlogBuilder_ == null) {
          topVarlogBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLogOrBuilder>(
                  topVarlog_,
                  ((bitField0_ & 0x00000002) != 0),
                  getParentForChildren(),
                  isClean());
          topVarlog_ = null;
        }
        return topVarlogBuilder_;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO io_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIOOrBuilder> ioBuilder_;
      /**
       * <pre>
       * Disk I/O related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.DiskIO io = 3;</code>
       * @return Whether the io field is set.
       */
      public boolean hasIo() {
        return ioBuilder_ != null || io_ != null;
      }
      /**
       * <pre>
       * Disk I/O related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.DiskIO io = 3;</code>
       * @return The io.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO getIo() {
        if (ioBuilder_ == null) {
          return io_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO.getDefaultInstance() : io_;
        } else {
          return ioBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Disk I/O related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.DiskIO io = 3;</code>
       */
      public Builder setIo(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO value) {
        if (ioBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          io_ = value;
          onChanged();
        } else {
          ioBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Disk I/O related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.DiskIO io = 3;</code>
       */
      public Builder setIo(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO.Builder builderForValue) {
        if (ioBuilder_ == null) {
          io_ = builderForValue.build();
          onChanged();
        } else {
          ioBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Disk I/O related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.DiskIO io = 3;</code>
       */
      public Builder mergeIo(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO value) {
        if (ioBuilder_ == null) {
          if (io_ != null) {
            io_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO.newBuilder(io_).mergeFrom(value).buildPartial();
          } else {
            io_ = value;
          }
          onChanged();
        } else {
          ioBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Disk I/O related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.DiskIO io = 3;</code>
       */
      public Builder clearIo() {
        if (ioBuilder_ == null) {
          io_ = null;
          onChanged();
        } else {
          io_ = null;
          ioBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Disk I/O related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.DiskIO io = 3;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO.Builder getIoBuilder() {
        
        onChanged();
        return getIoFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Disk I/O related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.DiskIO io = 3;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIOOrBuilder getIoOrBuilder() {
        if (ioBuilder_ != null) {
          return ioBuilder_.getMessageOrBuilder();
        } else {
          return io_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO.getDefaultInstance() : io_;
        }
      }
      /**
       * <pre>
       * Disk I/O related system metrics.
       * </pre>
       *
       * <code>.cdp.telemetry.DiskIO io = 3;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIOOrBuilder> 
          getIoFieldBuilder() {
        if (ioBuilder_ == null) {
          ioBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIOOrBuilder>(
                  getIo(),
                  getParentForChildren(),
                  isClean());
          io_ = null;
        }
        return ioBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.DiskMetrics)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.DiskMetrics)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DiskMetrics>
        PARSER = new com.google.protobuf.AbstractParser<DiskMetrics>() {
      @java.lang.Override
      public DiskMetrics parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<DiskMetrics> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DiskMetrics> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskMetrics getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface VmLogOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.VmLog)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Path of the log file.
     * </pre>
     *
     * <code>string path = 1;</code>
     * @return The path.
     */
    java.lang.String getPath();
    /**
     * <pre>
     * Path of the log file.
     * </pre>
     *
     * <code>string path = 1;</code>
     * @return The bytes for path.
     */
    com.google.protobuf.ByteString
        getPathBytes();

    /**
     * <pre>
     * Size of the log file.
     * </pre>
     *
     * <code>string size = 2;</code>
     * @return The size.
     */
    java.lang.String getSize();
    /**
     * <pre>
     * Size of the log file.
     * </pre>
     *
     * <code>string size = 2;</code>
     * @return The bytes for size.
     */
    com.google.protobuf.ByteString
        getSizeBytes();
  }
  /**
   * <pre>
   * Holds data about a log file on the VM.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.VmLog}
   */
  public static final class VmLog extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.VmLog)
      VmLogOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use VmLog.newBuilder() to construct.
    private VmLog(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private VmLog() {
      path_ = "";
      size_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new VmLog();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_VmLog_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_VmLog_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.Builder.class);
    }

    public static final int PATH_FIELD_NUMBER = 1;
    private volatile java.lang.Object path_;
    /**
     * <pre>
     * Path of the log file.
     * </pre>
     *
     * <code>string path = 1;</code>
     * @return The path.
     */
    @java.lang.Override
    public java.lang.String getPath() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        path_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Path of the log file.
     * </pre>
     *
     * <code>string path = 1;</code>
     * @return The bytes for path.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPathBytes() {
      java.lang.Object ref = path_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        path_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SIZE_FIELD_NUMBER = 2;
    private volatile java.lang.Object size_;
    /**
     * <pre>
     * Size of the log file.
     * </pre>
     *
     * <code>string size = 2;</code>
     * @return The size.
     */
    @java.lang.Override
    public java.lang.String getSize() {
      java.lang.Object ref = size_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        size_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Size of the log file.
     * </pre>
     *
     * <code>string size = 2;</code>
     * @return The bytes for size.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSizeBytes() {
      java.lang.Object ref = size_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        size_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(path_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, path_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(size_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, size_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(path_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, path_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(size_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, size_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog) obj;

      if (!getPath()
          .equals(other.getPath())) return false;
      if (!getSize()
          .equals(other.getSize())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + PATH_FIELD_NUMBER;
      hash = (53 * hash) + getPath().hashCode();
      hash = (37 * hash) + SIZE_FIELD_NUMBER;
      hash = (53 * hash) + getSize().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds data about a log file on the VM.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.VmLog}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.VmLog)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLogOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_VmLog_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_VmLog_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        path_ = "";

        size_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_VmLog_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog(this);
        result.path_ = path_;
        result.size_ = size_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog.getDefaultInstance()) return this;
        if (!other.getPath().isEmpty()) {
          path_ = other.path_;
          onChanged();
        }
        if (!other.getSize().isEmpty()) {
          size_ = other.size_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                path_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 18: {
                size_ = input.readStringRequireUtf8();

                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private java.lang.Object path_ = "";
      /**
       * <pre>
       * Path of the log file.
       * </pre>
       *
       * <code>string path = 1;</code>
       * @return The path.
       */
      public java.lang.String getPath() {
        java.lang.Object ref = path_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          path_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Path of the log file.
       * </pre>
       *
       * <code>string path = 1;</code>
       * @return The bytes for path.
       */
      public com.google.protobuf.ByteString
          getPathBytes() {
        java.lang.Object ref = path_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          path_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Path of the log file.
       * </pre>
       *
       * <code>string path = 1;</code>
       * @param value The path to set.
       * @return This builder for chaining.
       */
      public Builder setPath(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        path_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path of the log file.
       * </pre>
       *
       * <code>string path = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPath() {
        
        path_ = getDefaultInstance().getPath();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Path of the log file.
       * </pre>
       *
       * <code>string path = 1;</code>
       * @param value The bytes for path to set.
       * @return This builder for chaining.
       */
      public Builder setPathBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        path_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object size_ = "";
      /**
       * <pre>
       * Size of the log file.
       * </pre>
       *
       * <code>string size = 2;</code>
       * @return The size.
       */
      public java.lang.String getSize() {
        java.lang.Object ref = size_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          size_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Size of the log file.
       * </pre>
       *
       * <code>string size = 2;</code>
       * @return The bytes for size.
       */
      public com.google.protobuf.ByteString
          getSizeBytes() {
        java.lang.Object ref = size_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          size_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Size of the log file.
       * </pre>
       *
       * <code>string size = 2;</code>
       * @param value The size to set.
       * @return This builder for chaining.
       */
      public Builder setSize(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        size_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Size of the log file.
       * </pre>
       *
       * <code>string size = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearSize() {
        
        size_ = getDefaultInstance().getSize();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Size of the log file.
       * </pre>
       *
       * <code>string size = 2;</code>
       * @param value The bytes for size to set.
       * @return This builder for chaining.
       */
      public Builder setSizeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        size_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.VmLog)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.VmLog)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<VmLog>
        PARSER = new com.google.protobuf.AbstractParser<VmLog>() {
      @java.lang.Override
      public VmLog parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<VmLog> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<VmLog> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VmLog getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DiskPartitionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.DiskPartition)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Usage of the disk partition.
     * </pre>
     *
     * <code>.cdp.telemetry.DiskUsage usage = 1;</code>
     * @return Whether the usage field is set.
     */
    boolean hasUsage();
    /**
     * <pre>
     * Usage of the disk partition.
     * </pre>
     *
     * <code>.cdp.telemetry.DiskUsage usage = 1;</code>
     * @return The usage.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage getUsage();
    /**
     * <pre>
     * Usage of the disk partition.
     * </pre>
     *
     * <code>.cdp.telemetry.DiskUsage usage = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsageOrBuilder getUsageOrBuilder();

    /**
     * <pre>
     * The device path
     * </pre>
     *
     * <code>string device = 2;</code>
     * @return The device.
     */
    java.lang.String getDevice();
    /**
     * <pre>
     * The device path
     * </pre>
     *
     * <code>string device = 2;</code>
     * @return The bytes for device.
     */
    com.google.protobuf.ByteString
        getDeviceBytes();

    /**
     * <pre>
     * Type of the filesystem
     * </pre>
     *
     * <code>string fstype = 3;</code>
     * @return The fstype.
     */
    java.lang.String getFstype();
    /**
     * <pre>
     * Type of the filesystem
     * </pre>
     *
     * <code>string fstype = 3;</code>
     * @return The bytes for fstype.
     */
    com.google.protobuf.ByteString
        getFstypeBytes();

    /**
     * <pre>
     * The maximum length a file name can have.
     * </pre>
     *
     * <code>int32 maxfile = 4;</code>
     * @return The maxfile.
     */
    int getMaxfile();

    /**
     * <pre>
     * The maximum length a path name (directory name and base filename together) can have.
     * </pre>
     *
     * <code>int32 maxpath = 5;</code>
     * @return The maxpath.
     */
    int getMaxpath();

    /**
     * <pre>
     * Mounted path for the disk partition.
     * </pre>
     *
     * <code>string mountpoint = 6;</code>
     * @return The mountpoint.
     */
    java.lang.String getMountpoint();
    /**
     * <pre>
     * Mounted path for the disk partition.
     * </pre>
     *
     * <code>string mountpoint = 6;</code>
     * @return The bytes for mountpoint.
     */
    com.google.protobuf.ByteString
        getMountpointBytes();

    /**
     * <pre>
     * Comma-separated string indicating different mount options for the drive/partition.
     * </pre>
     *
     * <code>string opts = 7;</code>
     * @return The opts.
     */
    java.lang.String getOpts();
    /**
     * <pre>
     * Comma-separated string indicating different mount options for the drive/partition.
     * </pre>
     *
     * <code>string opts = 7;</code>
     * @return The bytes for opts.
     */
    com.google.protobuf.ByteString
        getOptsBytes();
  }
  /**
   * <pre>
   * Holds disk partition data.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.DiskPartition}
   */
  public static final class DiskPartition extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.DiskPartition)
      DiskPartitionOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DiskPartition.newBuilder() to construct.
    private DiskPartition(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DiskPartition() {
      device_ = "";
      fstype_ = "";
      mountpoint_ = "";
      opts_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DiskPartition();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskPartition_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskPartition_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.Builder.class);
    }

    public static final int USAGE_FIELD_NUMBER = 1;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage usage_;
    /**
     * <pre>
     * Usage of the disk partition.
     * </pre>
     *
     * <code>.cdp.telemetry.DiskUsage usage = 1;</code>
     * @return Whether the usage field is set.
     */
    @java.lang.Override
    public boolean hasUsage() {
      return usage_ != null;
    }
    /**
     * <pre>
     * Usage of the disk partition.
     * </pre>
     *
     * <code>.cdp.telemetry.DiskUsage usage = 1;</code>
     * @return The usage.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage getUsage() {
      return usage_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage.getDefaultInstance() : usage_;
    }
    /**
     * <pre>
     * Usage of the disk partition.
     * </pre>
     *
     * <code>.cdp.telemetry.DiskUsage usage = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsageOrBuilder getUsageOrBuilder() {
      return getUsage();
    }

    public static final int DEVICE_FIELD_NUMBER = 2;
    private volatile java.lang.Object device_;
    /**
     * <pre>
     * The device path
     * </pre>
     *
     * <code>string device = 2;</code>
     * @return The device.
     */
    @java.lang.Override
    public java.lang.String getDevice() {
      java.lang.Object ref = device_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        device_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The device path
     * </pre>
     *
     * <code>string device = 2;</code>
     * @return The bytes for device.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDeviceBytes() {
      java.lang.Object ref = device_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        device_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FSTYPE_FIELD_NUMBER = 3;
    private volatile java.lang.Object fstype_;
    /**
     * <pre>
     * Type of the filesystem
     * </pre>
     *
     * <code>string fstype = 3;</code>
     * @return The fstype.
     */
    @java.lang.Override
    public java.lang.String getFstype() {
      java.lang.Object ref = fstype_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        fstype_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Type of the filesystem
     * </pre>
     *
     * <code>string fstype = 3;</code>
     * @return The bytes for fstype.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFstypeBytes() {
      java.lang.Object ref = fstype_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        fstype_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MAXFILE_FIELD_NUMBER = 4;
    private int maxfile_;
    /**
     * <pre>
     * The maximum length a file name can have.
     * </pre>
     *
     * <code>int32 maxfile = 4;</code>
     * @return The maxfile.
     */
    @java.lang.Override
    public int getMaxfile() {
      return maxfile_;
    }

    public static final int MAXPATH_FIELD_NUMBER = 5;
    private int maxpath_;
    /**
     * <pre>
     * The maximum length a path name (directory name and base filename together) can have.
     * </pre>
     *
     * <code>int32 maxpath = 5;</code>
     * @return The maxpath.
     */
    @java.lang.Override
    public int getMaxpath() {
      return maxpath_;
    }

    public static final int MOUNTPOINT_FIELD_NUMBER = 6;
    private volatile java.lang.Object mountpoint_;
    /**
     * <pre>
     * Mounted path for the disk partition.
     * </pre>
     *
     * <code>string mountpoint = 6;</code>
     * @return The mountpoint.
     */
    @java.lang.Override
    public java.lang.String getMountpoint() {
      java.lang.Object ref = mountpoint_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        mountpoint_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Mounted path for the disk partition.
     * </pre>
     *
     * <code>string mountpoint = 6;</code>
     * @return The bytes for mountpoint.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getMountpointBytes() {
      java.lang.Object ref = mountpoint_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        mountpoint_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int OPTS_FIELD_NUMBER = 7;
    private volatile java.lang.Object opts_;
    /**
     * <pre>
     * Comma-separated string indicating different mount options for the drive/partition.
     * </pre>
     *
     * <code>string opts = 7;</code>
     * @return The opts.
     */
    @java.lang.Override
    public java.lang.String getOpts() {
      java.lang.Object ref = opts_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        opts_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Comma-separated string indicating different mount options for the drive/partition.
     * </pre>
     *
     * <code>string opts = 7;</code>
     * @return The bytes for opts.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getOptsBytes() {
      java.lang.Object ref = opts_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        opts_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (usage_ != null) {
        output.writeMessage(1, getUsage());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(device_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, device_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fstype_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, fstype_);
      }
      if (maxfile_ != 0) {
        output.writeInt32(4, maxfile_);
      }
      if (maxpath_ != 0) {
        output.writeInt32(5, maxpath_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mountpoint_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, mountpoint_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(opts_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, opts_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (usage_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getUsage());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(device_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, device_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(fstype_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, fstype_);
      }
      if (maxfile_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, maxfile_);
      }
      if (maxpath_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, maxpath_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(mountpoint_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, mountpoint_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(opts_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, opts_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition) obj;

      if (hasUsage() != other.hasUsage()) return false;
      if (hasUsage()) {
        if (!getUsage()
            .equals(other.getUsage())) return false;
      }
      if (!getDevice()
          .equals(other.getDevice())) return false;
      if (!getFstype()
          .equals(other.getFstype())) return false;
      if (getMaxfile()
          != other.getMaxfile()) return false;
      if (getMaxpath()
          != other.getMaxpath()) return false;
      if (!getMountpoint()
          .equals(other.getMountpoint())) return false;
      if (!getOpts()
          .equals(other.getOpts())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasUsage()) {
        hash = (37 * hash) + USAGE_FIELD_NUMBER;
        hash = (53 * hash) + getUsage().hashCode();
      }
      hash = (37 * hash) + DEVICE_FIELD_NUMBER;
      hash = (53 * hash) + getDevice().hashCode();
      hash = (37 * hash) + FSTYPE_FIELD_NUMBER;
      hash = (53 * hash) + getFstype().hashCode();
      hash = (37 * hash) + MAXFILE_FIELD_NUMBER;
      hash = (53 * hash) + getMaxfile();
      hash = (37 * hash) + MAXPATH_FIELD_NUMBER;
      hash = (53 * hash) + getMaxpath();
      hash = (37 * hash) + MOUNTPOINT_FIELD_NUMBER;
      hash = (53 * hash) + getMountpoint().hashCode();
      hash = (37 * hash) + OPTS_FIELD_NUMBER;
      hash = (53 * hash) + getOpts().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds disk partition data.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.DiskPartition}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.DiskPartition)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartitionOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskPartition_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskPartition_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (usageBuilder_ == null) {
          usage_ = null;
        } else {
          usage_ = null;
          usageBuilder_ = null;
        }
        device_ = "";

        fstype_ = "";

        maxfile_ = 0;

        maxpath_ = 0;

        mountpoint_ = "";

        opts_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskPartition_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition(this);
        if (usageBuilder_ == null) {
          result.usage_ = usage_;
        } else {
          result.usage_ = usageBuilder_.build();
        }
        result.device_ = device_;
        result.fstype_ = fstype_;
        result.maxfile_ = maxfile_;
        result.maxpath_ = maxpath_;
        result.mountpoint_ = mountpoint_;
        result.opts_ = opts_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition.getDefaultInstance()) return this;
        if (other.hasUsage()) {
          mergeUsage(other.getUsage());
        }
        if (!other.getDevice().isEmpty()) {
          device_ = other.device_;
          onChanged();
        }
        if (!other.getFstype().isEmpty()) {
          fstype_ = other.fstype_;
          onChanged();
        }
        if (other.getMaxfile() != 0) {
          setMaxfile(other.getMaxfile());
        }
        if (other.getMaxpath() != 0) {
          setMaxpath(other.getMaxpath());
        }
        if (!other.getMountpoint().isEmpty()) {
          mountpoint_ = other.mountpoint_;
          onChanged();
        }
        if (!other.getOpts().isEmpty()) {
          opts_ = other.opts_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getUsageFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 10
              case 18: {
                device_ = input.readStringRequireUtf8();

                break;
              } // case 18
              case 26: {
                fstype_ = input.readStringRequireUtf8();

                break;
              } // case 26
              case 32: {
                maxfile_ = input.readInt32();

                break;
              } // case 32
              case 40: {
                maxpath_ = input.readInt32();

                break;
              } // case 40
              case 50: {
                mountpoint_ = input.readStringRequireUtf8();

                break;
              } // case 50
              case 58: {
                opts_ = input.readStringRequireUtf8();

                break;
              } // case 58
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage usage_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsageOrBuilder> usageBuilder_;
      /**
       * <pre>
       * Usage of the disk partition.
       * </pre>
       *
       * <code>.cdp.telemetry.DiskUsage usage = 1;</code>
       * @return Whether the usage field is set.
       */
      public boolean hasUsage() {
        return usageBuilder_ != null || usage_ != null;
      }
      /**
       * <pre>
       * Usage of the disk partition.
       * </pre>
       *
       * <code>.cdp.telemetry.DiskUsage usage = 1;</code>
       * @return The usage.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage getUsage() {
        if (usageBuilder_ == null) {
          return usage_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage.getDefaultInstance() : usage_;
        } else {
          return usageBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Usage of the disk partition.
       * </pre>
       *
       * <code>.cdp.telemetry.DiskUsage usage = 1;</code>
       */
      public Builder setUsage(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage value) {
        if (usageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          usage_ = value;
          onChanged();
        } else {
          usageBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Usage of the disk partition.
       * </pre>
       *
       * <code>.cdp.telemetry.DiskUsage usage = 1;</code>
       */
      public Builder setUsage(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage.Builder builderForValue) {
        if (usageBuilder_ == null) {
          usage_ = builderForValue.build();
          onChanged();
        } else {
          usageBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Usage of the disk partition.
       * </pre>
       *
       * <code>.cdp.telemetry.DiskUsage usage = 1;</code>
       */
      public Builder mergeUsage(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage value) {
        if (usageBuilder_ == null) {
          if (usage_ != null) {
            usage_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage.newBuilder(usage_).mergeFrom(value).buildPartial();
          } else {
            usage_ = value;
          }
          onChanged();
        } else {
          usageBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Usage of the disk partition.
       * </pre>
       *
       * <code>.cdp.telemetry.DiskUsage usage = 1;</code>
       */
      public Builder clearUsage() {
        if (usageBuilder_ == null) {
          usage_ = null;
          onChanged();
        } else {
          usage_ = null;
          usageBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Usage of the disk partition.
       * </pre>
       *
       * <code>.cdp.telemetry.DiskUsage usage = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage.Builder getUsageBuilder() {
        
        onChanged();
        return getUsageFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Usage of the disk partition.
       * </pre>
       *
       * <code>.cdp.telemetry.DiskUsage usage = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsageOrBuilder getUsageOrBuilder() {
        if (usageBuilder_ != null) {
          return usageBuilder_.getMessageOrBuilder();
        } else {
          return usage_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage.getDefaultInstance() : usage_;
        }
      }
      /**
       * <pre>
       * Usage of the disk partition.
       * </pre>
       *
       * <code>.cdp.telemetry.DiskUsage usage = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsageOrBuilder> 
          getUsageFieldBuilder() {
        if (usageBuilder_ == null) {
          usageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsageOrBuilder>(
                  getUsage(),
                  getParentForChildren(),
                  isClean());
          usage_ = null;
        }
        return usageBuilder_;
      }

      private java.lang.Object device_ = "";
      /**
       * <pre>
       * The device path
       * </pre>
       *
       * <code>string device = 2;</code>
       * @return The device.
       */
      public java.lang.String getDevice() {
        java.lang.Object ref = device_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          device_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The device path
       * </pre>
       *
       * <code>string device = 2;</code>
       * @return The bytes for device.
       */
      public com.google.protobuf.ByteString
          getDeviceBytes() {
        java.lang.Object ref = device_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          device_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The device path
       * </pre>
       *
       * <code>string device = 2;</code>
       * @param value The device to set.
       * @return This builder for chaining.
       */
      public Builder setDevice(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        device_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The device path
       * </pre>
       *
       * <code>string device = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDevice() {
        
        device_ = getDefaultInstance().getDevice();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The device path
       * </pre>
       *
       * <code>string device = 2;</code>
       * @param value The bytes for device to set.
       * @return This builder for chaining.
       */
      public Builder setDeviceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        device_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object fstype_ = "";
      /**
       * <pre>
       * Type of the filesystem
       * </pre>
       *
       * <code>string fstype = 3;</code>
       * @return The fstype.
       */
      public java.lang.String getFstype() {
        java.lang.Object ref = fstype_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          fstype_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Type of the filesystem
       * </pre>
       *
       * <code>string fstype = 3;</code>
       * @return The bytes for fstype.
       */
      public com.google.protobuf.ByteString
          getFstypeBytes() {
        java.lang.Object ref = fstype_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          fstype_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Type of the filesystem
       * </pre>
       *
       * <code>string fstype = 3;</code>
       * @param value The fstype to set.
       * @return This builder for chaining.
       */
      public Builder setFstype(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        fstype_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Type of the filesystem
       * </pre>
       *
       * <code>string fstype = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearFstype() {
        
        fstype_ = getDefaultInstance().getFstype();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Type of the filesystem
       * </pre>
       *
       * <code>string fstype = 3;</code>
       * @param value The bytes for fstype to set.
       * @return This builder for chaining.
       */
      public Builder setFstypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        fstype_ = value;
        onChanged();
        return this;
      }

      private int maxfile_ ;
      /**
       * <pre>
       * The maximum length a file name can have.
       * </pre>
       *
       * <code>int32 maxfile = 4;</code>
       * @return The maxfile.
       */
      @java.lang.Override
      public int getMaxfile() {
        return maxfile_;
      }
      /**
       * <pre>
       * The maximum length a file name can have.
       * </pre>
       *
       * <code>int32 maxfile = 4;</code>
       * @param value The maxfile to set.
       * @return This builder for chaining.
       */
      public Builder setMaxfile(int value) {
        
        maxfile_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The maximum length a file name can have.
       * </pre>
       *
       * <code>int32 maxfile = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearMaxfile() {
        
        maxfile_ = 0;
        onChanged();
        return this;
      }

      private int maxpath_ ;
      /**
       * <pre>
       * The maximum length a path name (directory name and base filename together) can have.
       * </pre>
       *
       * <code>int32 maxpath = 5;</code>
       * @return The maxpath.
       */
      @java.lang.Override
      public int getMaxpath() {
        return maxpath_;
      }
      /**
       * <pre>
       * The maximum length a path name (directory name and base filename together) can have.
       * </pre>
       *
       * <code>int32 maxpath = 5;</code>
       * @param value The maxpath to set.
       * @return This builder for chaining.
       */
      public Builder setMaxpath(int value) {
        
        maxpath_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The maximum length a path name (directory name and base filename together) can have.
       * </pre>
       *
       * <code>int32 maxpath = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearMaxpath() {
        
        maxpath_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object mountpoint_ = "";
      /**
       * <pre>
       * Mounted path for the disk partition.
       * </pre>
       *
       * <code>string mountpoint = 6;</code>
       * @return The mountpoint.
       */
      public java.lang.String getMountpoint() {
        java.lang.Object ref = mountpoint_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          mountpoint_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Mounted path for the disk partition.
       * </pre>
       *
       * <code>string mountpoint = 6;</code>
       * @return The bytes for mountpoint.
       */
      public com.google.protobuf.ByteString
          getMountpointBytes() {
        java.lang.Object ref = mountpoint_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          mountpoint_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Mounted path for the disk partition.
       * </pre>
       *
       * <code>string mountpoint = 6;</code>
       * @param value The mountpoint to set.
       * @return This builder for chaining.
       */
      public Builder setMountpoint(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        mountpoint_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Mounted path for the disk partition.
       * </pre>
       *
       * <code>string mountpoint = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearMountpoint() {
        
        mountpoint_ = getDefaultInstance().getMountpoint();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Mounted path for the disk partition.
       * </pre>
       *
       * <code>string mountpoint = 6;</code>
       * @param value The bytes for mountpoint to set.
       * @return This builder for chaining.
       */
      public Builder setMountpointBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        mountpoint_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object opts_ = "";
      /**
       * <pre>
       * Comma-separated string indicating different mount options for the drive/partition.
       * </pre>
       *
       * <code>string opts = 7;</code>
       * @return The opts.
       */
      public java.lang.String getOpts() {
        java.lang.Object ref = opts_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          opts_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Comma-separated string indicating different mount options for the drive/partition.
       * </pre>
       *
       * <code>string opts = 7;</code>
       * @return The bytes for opts.
       */
      public com.google.protobuf.ByteString
          getOptsBytes() {
        java.lang.Object ref = opts_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          opts_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Comma-separated string indicating different mount options for the drive/partition.
       * </pre>
       *
       * <code>string opts = 7;</code>
       * @param value The opts to set.
       * @return This builder for chaining.
       */
      public Builder setOpts(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        opts_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Comma-separated string indicating different mount options for the drive/partition.
       * </pre>
       *
       * <code>string opts = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearOpts() {
        
        opts_ = getDefaultInstance().getOpts();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Comma-separated string indicating different mount options for the drive/partition.
       * </pre>
       *
       * <code>string opts = 7;</code>
       * @param value The bytes for opts to set.
       * @return This builder for chaining.
       */
      public Builder setOptsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        opts_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.DiskPartition)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.DiskPartition)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DiskPartition>
        PARSER = new com.google.protobuf.AbstractParser<DiskPartition>() {
      @java.lang.Override
      public DiskPartition parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<DiskPartition> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DiskPartition> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskPartition getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DiskUsageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.DiskUsage)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Disk size (bytes) that is not in use.
     * </pre>
     *
     * <code>int64 free = 1;</code>
     * @return The free.
     */
    long getFree();

    /**
     * <pre>
     * Total amount of disk size (bytes).
     * </pre>
     *
     * <code>int64 total = 2;</code>
     * @return The total.
     */
    long getTotal();

    /**
     * <pre>
     * Amount of disk size (bytes) that is in use.
     * </pre>
     *
     * <code>int64 used = 3;</code>
     * @return The used.
     */
    long getUsed();

    /**
     * <pre>
     * Percentage of the disk size that is in use against the total disk size.
     * </pre>
     *
     * <code>double percent = 4;</code>
     * @return The percent.
     */
    double getPercent();
  }
  /**
   * <pre>
   * Disk usage related metrics.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.DiskUsage}
   */
  public static final class DiskUsage extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.DiskUsage)
      DiskUsageOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DiskUsage.newBuilder() to construct.
    private DiskUsage(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DiskUsage() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DiskUsage();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskUsage_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskUsage_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage.Builder.class);
    }

    public static final int FREE_FIELD_NUMBER = 1;
    private long free_;
    /**
     * <pre>
     * Disk size (bytes) that is not in use.
     * </pre>
     *
     * <code>int64 free = 1;</code>
     * @return The free.
     */
    @java.lang.Override
    public long getFree() {
      return free_;
    }

    public static final int TOTAL_FIELD_NUMBER = 2;
    private long total_;
    /**
     * <pre>
     * Total amount of disk size (bytes).
     * </pre>
     *
     * <code>int64 total = 2;</code>
     * @return The total.
     */
    @java.lang.Override
    public long getTotal() {
      return total_;
    }

    public static final int USED_FIELD_NUMBER = 3;
    private long used_;
    /**
     * <pre>
     * Amount of disk size (bytes) that is in use.
     * </pre>
     *
     * <code>int64 used = 3;</code>
     * @return The used.
     */
    @java.lang.Override
    public long getUsed() {
      return used_;
    }

    public static final int PERCENT_FIELD_NUMBER = 4;
    private double percent_;
    /**
     * <pre>
     * Percentage of the disk size that is in use against the total disk size.
     * </pre>
     *
     * <code>double percent = 4;</code>
     * @return The percent.
     */
    @java.lang.Override
    public double getPercent() {
      return percent_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (free_ != 0L) {
        output.writeInt64(1, free_);
      }
      if (total_ != 0L) {
        output.writeInt64(2, total_);
      }
      if (used_ != 0L) {
        output.writeInt64(3, used_);
      }
      if (java.lang.Double.doubleToRawLongBits(percent_) != 0) {
        output.writeDouble(4, percent_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (free_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, free_);
      }
      if (total_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, total_);
      }
      if (used_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, used_);
      }
      if (java.lang.Double.doubleToRawLongBits(percent_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(4, percent_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage) obj;

      if (getFree()
          != other.getFree()) return false;
      if (getTotal()
          != other.getTotal()) return false;
      if (getUsed()
          != other.getUsed()) return false;
      if (java.lang.Double.doubleToLongBits(getPercent())
          != java.lang.Double.doubleToLongBits(
              other.getPercent())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + FREE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getFree());
      hash = (37 * hash) + TOTAL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTotal());
      hash = (37 * hash) + USED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getUsed());
      hash = (37 * hash) + PERCENT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getPercent()));
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Disk usage related metrics.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.DiskUsage}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.DiskUsage)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskUsage_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskUsage_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        free_ = 0L;

        total_ = 0L;

        used_ = 0L;

        percent_ = 0D;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskUsage_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage(this);
        result.free_ = free_;
        result.total_ = total_;
        result.used_ = used_;
        result.percent_ = percent_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage.getDefaultInstance()) return this;
        if (other.getFree() != 0L) {
          setFree(other.getFree());
        }
        if (other.getTotal() != 0L) {
          setTotal(other.getTotal());
        }
        if (other.getUsed() != 0L) {
          setUsed(other.getUsed());
        }
        if (other.getPercent() != 0D) {
          setPercent(other.getPercent());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                free_ = input.readInt64();

                break;
              } // case 8
              case 16: {
                total_ = input.readInt64();

                break;
              } // case 16
              case 24: {
                used_ = input.readInt64();

                break;
              } // case 24
              case 33: {
                percent_ = input.readDouble();

                break;
              } // case 33
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private long free_ ;
      /**
       * <pre>
       * Disk size (bytes) that is not in use.
       * </pre>
       *
       * <code>int64 free = 1;</code>
       * @return The free.
       */
      @java.lang.Override
      public long getFree() {
        return free_;
      }
      /**
       * <pre>
       * Disk size (bytes) that is not in use.
       * </pre>
       *
       * <code>int64 free = 1;</code>
       * @param value The free to set.
       * @return This builder for chaining.
       */
      public Builder setFree(long value) {
        
        free_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Disk size (bytes) that is not in use.
       * </pre>
       *
       * <code>int64 free = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearFree() {
        
        free_ = 0L;
        onChanged();
        return this;
      }

      private long total_ ;
      /**
       * <pre>
       * Total amount of disk size (bytes).
       * </pre>
       *
       * <code>int64 total = 2;</code>
       * @return The total.
       */
      @java.lang.Override
      public long getTotal() {
        return total_;
      }
      /**
       * <pre>
       * Total amount of disk size (bytes).
       * </pre>
       *
       * <code>int64 total = 2;</code>
       * @param value The total to set.
       * @return This builder for chaining.
       */
      public Builder setTotal(long value) {
        
        total_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Total amount of disk size (bytes).
       * </pre>
       *
       * <code>int64 total = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTotal() {
        
        total_ = 0L;
        onChanged();
        return this;
      }

      private long used_ ;
      /**
       * <pre>
       * Amount of disk size (bytes) that is in use.
       * </pre>
       *
       * <code>int64 used = 3;</code>
       * @return The used.
       */
      @java.lang.Override
      public long getUsed() {
        return used_;
      }
      /**
       * <pre>
       * Amount of disk size (bytes) that is in use.
       * </pre>
       *
       * <code>int64 used = 3;</code>
       * @param value The used to set.
       * @return This builder for chaining.
       */
      public Builder setUsed(long value) {
        
        used_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Amount of disk size (bytes) that is in use.
       * </pre>
       *
       * <code>int64 used = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearUsed() {
        
        used_ = 0L;
        onChanged();
        return this;
      }

      private double percent_ ;
      /**
       * <pre>
       * Percentage of the disk size that is in use against the total disk size.
       * </pre>
       *
       * <code>double percent = 4;</code>
       * @return The percent.
       */
      @java.lang.Override
      public double getPercent() {
        return percent_;
      }
      /**
       * <pre>
       * Percentage of the disk size that is in use against the total disk size.
       * </pre>
       *
       * <code>double percent = 4;</code>
       * @param value The percent to set.
       * @return This builder for chaining.
       */
      public Builder setPercent(double value) {
        
        percent_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Percentage of the disk size that is in use against the total disk size.
       * </pre>
       *
       * <code>double percent = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearPercent() {
        
        percent_ = 0D;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.DiskUsage)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.DiskUsage)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DiskUsage>
        PARSER = new com.google.protobuf.AbstractParser<DiskUsage>() {
      @java.lang.Override
      public DiskUsage parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<DiskUsage> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DiskUsage> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskUsage getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DiskIOOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.DiskIO)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Disk reads in bytes.
     * </pre>
     *
     * <code>int64 read_bytes = 1;</code>
     * @return The readBytes.
     */
    long getReadBytes();

    /**
     * <pre>
     * Number of disk read operations.
     * </pre>
     *
     * <code>int64 read_count = 2;</code>
     * @return The readCount.
     */
    long getReadCount();

    /**
     * <pre>
     * Time spent reading from disk (in milliseconds).
     * </pre>
     *
     * <code>int64 read_time = 3;</code>
     * @return The readTime.
     */
    long getReadTime();

    /**
     * <pre>
     * Disk writes in bytes.
     * </pre>
     *
     * <code>int64 write_bytes = 4;</code>
     * @return The writeBytes.
     */
    long getWriteBytes();

    /**
     * <pre>
     * Number of disk write operations.
     * </pre>
     *
     * <code>int64 write_count = 5;</code>
     * @return The writeCount.
     */
    long getWriteCount();

    /**
     * <pre>
     * Time spent writing to disk (in milliseconds).
     * </pre>
     *
     * <code>int64 write_time = 6;</code>
     * @return The writeTime.
     */
    long getWriteTime();
  }
  /**
   * <pre>
   * Holds disk I/O (activity) related metrics.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.DiskIO}
   */
  public static final class DiskIO extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.DiskIO)
      DiskIOOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DiskIO.newBuilder() to construct.
    private DiskIO(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DiskIO() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new DiskIO();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskIO_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskIO_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO.Builder.class);
    }

    public static final int READ_BYTES_FIELD_NUMBER = 1;
    private long readBytes_;
    /**
     * <pre>
     * Disk reads in bytes.
     * </pre>
     *
     * <code>int64 read_bytes = 1;</code>
     * @return The readBytes.
     */
    @java.lang.Override
    public long getReadBytes() {
      return readBytes_;
    }

    public static final int READ_COUNT_FIELD_NUMBER = 2;
    private long readCount_;
    /**
     * <pre>
     * Number of disk read operations.
     * </pre>
     *
     * <code>int64 read_count = 2;</code>
     * @return The readCount.
     */
    @java.lang.Override
    public long getReadCount() {
      return readCount_;
    }

    public static final int READ_TIME_FIELD_NUMBER = 3;
    private long readTime_;
    /**
     * <pre>
     * Time spent reading from disk (in milliseconds).
     * </pre>
     *
     * <code>int64 read_time = 3;</code>
     * @return The readTime.
     */
    @java.lang.Override
    public long getReadTime() {
      return readTime_;
    }

    public static final int WRITE_BYTES_FIELD_NUMBER = 4;
    private long writeBytes_;
    /**
     * <pre>
     * Disk writes in bytes.
     * </pre>
     *
     * <code>int64 write_bytes = 4;</code>
     * @return The writeBytes.
     */
    @java.lang.Override
    public long getWriteBytes() {
      return writeBytes_;
    }

    public static final int WRITE_COUNT_FIELD_NUMBER = 5;
    private long writeCount_;
    /**
     * <pre>
     * Number of disk write operations.
     * </pre>
     *
     * <code>int64 write_count = 5;</code>
     * @return The writeCount.
     */
    @java.lang.Override
    public long getWriteCount() {
      return writeCount_;
    }

    public static final int WRITE_TIME_FIELD_NUMBER = 6;
    private long writeTime_;
    /**
     * <pre>
     * Time spent writing to disk (in milliseconds).
     * </pre>
     *
     * <code>int64 write_time = 6;</code>
     * @return The writeTime.
     */
    @java.lang.Override
    public long getWriteTime() {
      return writeTime_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (readBytes_ != 0L) {
        output.writeInt64(1, readBytes_);
      }
      if (readCount_ != 0L) {
        output.writeInt64(2, readCount_);
      }
      if (readTime_ != 0L) {
        output.writeInt64(3, readTime_);
      }
      if (writeBytes_ != 0L) {
        output.writeInt64(4, writeBytes_);
      }
      if (writeCount_ != 0L) {
        output.writeInt64(5, writeCount_);
      }
      if (writeTime_ != 0L) {
        output.writeInt64(6, writeTime_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (readBytes_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, readBytes_);
      }
      if (readCount_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, readCount_);
      }
      if (readTime_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, readTime_);
      }
      if (writeBytes_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, writeBytes_);
      }
      if (writeCount_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, writeCount_);
      }
      if (writeTime_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(6, writeTime_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO) obj;

      if (getReadBytes()
          != other.getReadBytes()) return false;
      if (getReadCount()
          != other.getReadCount()) return false;
      if (getReadTime()
          != other.getReadTime()) return false;
      if (getWriteBytes()
          != other.getWriteBytes()) return false;
      if (getWriteCount()
          != other.getWriteCount()) return false;
      if (getWriteTime()
          != other.getWriteTime()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + READ_BYTES_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getReadBytes());
      hash = (37 * hash) + READ_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getReadCount());
      hash = (37 * hash) + READ_TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getReadTime());
      hash = (37 * hash) + WRITE_BYTES_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getWriteBytes());
      hash = (37 * hash) + WRITE_COUNT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getWriteCount());
      hash = (37 * hash) + WRITE_TIME_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getWriteTime());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds disk I/O (activity) related metrics.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.DiskIO}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.DiskIO)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIOOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskIO_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskIO_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        readBytes_ = 0L;

        readCount_ = 0L;

        readTime_ = 0L;

        writeBytes_ = 0L;

        writeCount_ = 0L;

        writeTime_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_DiskIO_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO(this);
        result.readBytes_ = readBytes_;
        result.readCount_ = readCount_;
        result.readTime_ = readTime_;
        result.writeBytes_ = writeBytes_;
        result.writeCount_ = writeCount_;
        result.writeTime_ = writeTime_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO.getDefaultInstance()) return this;
        if (other.getReadBytes() != 0L) {
          setReadBytes(other.getReadBytes());
        }
        if (other.getReadCount() != 0L) {
          setReadCount(other.getReadCount());
        }
        if (other.getReadTime() != 0L) {
          setReadTime(other.getReadTime());
        }
        if (other.getWriteBytes() != 0L) {
          setWriteBytes(other.getWriteBytes());
        }
        if (other.getWriteCount() != 0L) {
          setWriteCount(other.getWriteCount());
        }
        if (other.getWriteTime() != 0L) {
          setWriteTime(other.getWriteTime());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                readBytes_ = input.readInt64();

                break;
              } // case 8
              case 16: {
                readCount_ = input.readInt64();

                break;
              } // case 16
              case 24: {
                readTime_ = input.readInt64();

                break;
              } // case 24
              case 32: {
                writeBytes_ = input.readInt64();

                break;
              } // case 32
              case 40: {
                writeCount_ = input.readInt64();

                break;
              } // case 40
              case 48: {
                writeTime_ = input.readInt64();

                break;
              } // case 48
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private long readBytes_ ;
      /**
       * <pre>
       * Disk reads in bytes.
       * </pre>
       *
       * <code>int64 read_bytes = 1;</code>
       * @return The readBytes.
       */
      @java.lang.Override
      public long getReadBytes() {
        return readBytes_;
      }
      /**
       * <pre>
       * Disk reads in bytes.
       * </pre>
       *
       * <code>int64 read_bytes = 1;</code>
       * @param value The readBytes to set.
       * @return This builder for chaining.
       */
      public Builder setReadBytes(long value) {
        
        readBytes_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Disk reads in bytes.
       * </pre>
       *
       * <code>int64 read_bytes = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadBytes() {
        
        readBytes_ = 0L;
        onChanged();
        return this;
      }

      private long readCount_ ;
      /**
       * <pre>
       * Number of disk read operations.
       * </pre>
       *
       * <code>int64 read_count = 2;</code>
       * @return The readCount.
       */
      @java.lang.Override
      public long getReadCount() {
        return readCount_;
      }
      /**
       * <pre>
       * Number of disk read operations.
       * </pre>
       *
       * <code>int64 read_count = 2;</code>
       * @param value The readCount to set.
       * @return This builder for chaining.
       */
      public Builder setReadCount(long value) {
        
        readCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of disk read operations.
       * </pre>
       *
       * <code>int64 read_count = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadCount() {
        
        readCount_ = 0L;
        onChanged();
        return this;
      }

      private long readTime_ ;
      /**
       * <pre>
       * Time spent reading from disk (in milliseconds).
       * </pre>
       *
       * <code>int64 read_time = 3;</code>
       * @return The readTime.
       */
      @java.lang.Override
      public long getReadTime() {
        return readTime_;
      }
      /**
       * <pre>
       * Time spent reading from disk (in milliseconds).
       * </pre>
       *
       * <code>int64 read_time = 3;</code>
       * @param value The readTime to set.
       * @return This builder for chaining.
       */
      public Builder setReadTime(long value) {
        
        readTime_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time spent reading from disk (in milliseconds).
       * </pre>
       *
       * <code>int64 read_time = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearReadTime() {
        
        readTime_ = 0L;
        onChanged();
        return this;
      }

      private long writeBytes_ ;
      /**
       * <pre>
       * Disk writes in bytes.
       * </pre>
       *
       * <code>int64 write_bytes = 4;</code>
       * @return The writeBytes.
       */
      @java.lang.Override
      public long getWriteBytes() {
        return writeBytes_;
      }
      /**
       * <pre>
       * Disk writes in bytes.
       * </pre>
       *
       * <code>int64 write_bytes = 4;</code>
       * @param value The writeBytes to set.
       * @return This builder for chaining.
       */
      public Builder setWriteBytes(long value) {
        
        writeBytes_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Disk writes in bytes.
       * </pre>
       *
       * <code>int64 write_bytes = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearWriteBytes() {
        
        writeBytes_ = 0L;
        onChanged();
        return this;
      }

      private long writeCount_ ;
      /**
       * <pre>
       * Number of disk write operations.
       * </pre>
       *
       * <code>int64 write_count = 5;</code>
       * @return The writeCount.
       */
      @java.lang.Override
      public long getWriteCount() {
        return writeCount_;
      }
      /**
       * <pre>
       * Number of disk write operations.
       * </pre>
       *
       * <code>int64 write_count = 5;</code>
       * @param value The writeCount to set.
       * @return This builder for chaining.
       */
      public Builder setWriteCount(long value) {
        
        writeCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of disk write operations.
       * </pre>
       *
       * <code>int64 write_count = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearWriteCount() {
        
        writeCount_ = 0L;
        onChanged();
        return this;
      }

      private long writeTime_ ;
      /**
       * <pre>
       * Time spent writing to disk (in milliseconds).
       * </pre>
       *
       * <code>int64 write_time = 6;</code>
       * @return The writeTime.
       */
      @java.lang.Override
      public long getWriteTime() {
        return writeTime_;
      }
      /**
       * <pre>
       * Time spent writing to disk (in milliseconds).
       * </pre>
       *
       * <code>int64 write_time = 6;</code>
       * @param value The writeTime to set.
       * @return This builder for chaining.
       */
      public Builder setWriteTime(long value) {
        
        writeTime_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Time spent writing to disk (in milliseconds).
       * </pre>
       *
       * <code>int64 write_time = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearWriteTime() {
        
        writeTime_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.DiskIO)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.DiskIO)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<DiskIO>
        PARSER = new com.google.protobuf.AbstractParser<DiskIO>() {
      @java.lang.Override
      public DiskIO parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<DiskIO> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<DiskIO> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.DiskIO getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NetworkMetricsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.NetworkMetrics)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Holds network connection states.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkConnections connections = 1;</code>
     * @return Whether the connections field is set.
     */
    boolean hasConnections();
    /**
     * <pre>
     * Holds network connection states.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkConnections connections = 1;</code>
     * @return The connections.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections getConnections();
    /**
     * <pre>
     * Holds network connection states.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkConnections connections = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnectionsOrBuilder getConnectionsOrBuilder();

    /**
     * <pre>
     * Network I/O statistics.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkIO io = 2;</code>
     * @return Whether the io field is set.
     */
    boolean hasIo();
    /**
     * <pre>
     * Network I/O statistics.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkIO io = 2;</code>
     * @return The io.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO getIo();
    /**
     * <pre>
     * Network I/O statistics.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkIO io = 2;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIOOrBuilder getIoOrBuilder();
  }
  /**
   * <pre>
   * Holds network related host metrics.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.NetworkMetrics}
   */
  public static final class NetworkMetrics extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.NetworkMetrics)
      NetworkMetricsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use NetworkMetrics.newBuilder() to construct.
    private NetworkMetrics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private NetworkMetrics() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new NetworkMetrics();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkMetrics_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkMetrics_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics.Builder.class);
    }

    public static final int CONNECTIONS_FIELD_NUMBER = 1;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections connections_;
    /**
     * <pre>
     * Holds network connection states.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkConnections connections = 1;</code>
     * @return Whether the connections field is set.
     */
    @java.lang.Override
    public boolean hasConnections() {
      return connections_ != null;
    }
    /**
     * <pre>
     * Holds network connection states.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkConnections connections = 1;</code>
     * @return The connections.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections getConnections() {
      return connections_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections.getDefaultInstance() : connections_;
    }
    /**
     * <pre>
     * Holds network connection states.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkConnections connections = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnectionsOrBuilder getConnectionsOrBuilder() {
      return getConnections();
    }

    public static final int IO_FIELD_NUMBER = 2;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO io_;
    /**
     * <pre>
     * Network I/O statistics.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkIO io = 2;</code>
     * @return Whether the io field is set.
     */
    @java.lang.Override
    public boolean hasIo() {
      return io_ != null;
    }
    /**
     * <pre>
     * Network I/O statistics.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkIO io = 2;</code>
     * @return The io.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO getIo() {
      return io_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO.getDefaultInstance() : io_;
    }
    /**
     * <pre>
     * Network I/O statistics.
     * </pre>
     *
     * <code>.cdp.telemetry.NetworkIO io = 2;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIOOrBuilder getIoOrBuilder() {
      return getIo();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (connections_ != null) {
        output.writeMessage(1, getConnections());
      }
      if (io_ != null) {
        output.writeMessage(2, getIo());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (connections_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getConnections());
      }
      if (io_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getIo());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics) obj;

      if (hasConnections() != other.hasConnections()) return false;
      if (hasConnections()) {
        if (!getConnections()
            .equals(other.getConnections())) return false;
      }
      if (hasIo() != other.hasIo()) return false;
      if (hasIo()) {
        if (!getIo()
            .equals(other.getIo())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasConnections()) {
        hash = (37 * hash) + CONNECTIONS_FIELD_NUMBER;
        hash = (53 * hash) + getConnections().hashCode();
      }
      if (hasIo()) {
        hash = (37 * hash) + IO_FIELD_NUMBER;
        hash = (53 * hash) + getIo().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds network related host metrics.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.NetworkMetrics}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.NetworkMetrics)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetricsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkMetrics_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkMetrics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (connectionsBuilder_ == null) {
          connections_ = null;
        } else {
          connections_ = null;
          connectionsBuilder_ = null;
        }
        if (ioBuilder_ == null) {
          io_ = null;
        } else {
          io_ = null;
          ioBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkMetrics_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics(this);
        if (connectionsBuilder_ == null) {
          result.connections_ = connections_;
        } else {
          result.connections_ = connectionsBuilder_.build();
        }
        if (ioBuilder_ == null) {
          result.io_ = io_;
        } else {
          result.io_ = ioBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics.getDefaultInstance()) return this;
        if (other.hasConnections()) {
          mergeConnections(other.getConnections());
        }
        if (other.hasIo()) {
          mergeIo(other.getIo());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getConnectionsFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getIoFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections connections_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnectionsOrBuilder> connectionsBuilder_;
      /**
       * <pre>
       * Holds network connection states.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkConnections connections = 1;</code>
       * @return Whether the connections field is set.
       */
      public boolean hasConnections() {
        return connectionsBuilder_ != null || connections_ != null;
      }
      /**
       * <pre>
       * Holds network connection states.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkConnections connections = 1;</code>
       * @return The connections.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections getConnections() {
        if (connectionsBuilder_ == null) {
          return connections_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections.getDefaultInstance() : connections_;
        } else {
          return connectionsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Holds network connection states.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkConnections connections = 1;</code>
       */
      public Builder setConnections(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections value) {
        if (connectionsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          connections_ = value;
          onChanged();
        } else {
          connectionsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Holds network connection states.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkConnections connections = 1;</code>
       */
      public Builder setConnections(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections.Builder builderForValue) {
        if (connectionsBuilder_ == null) {
          connections_ = builderForValue.build();
          onChanged();
        } else {
          connectionsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Holds network connection states.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkConnections connections = 1;</code>
       */
      public Builder mergeConnections(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections value) {
        if (connectionsBuilder_ == null) {
          if (connections_ != null) {
            connections_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections.newBuilder(connections_).mergeFrom(value).buildPartial();
          } else {
            connections_ = value;
          }
          onChanged();
        } else {
          connectionsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Holds network connection states.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkConnections connections = 1;</code>
       */
      public Builder clearConnections() {
        if (connectionsBuilder_ == null) {
          connections_ = null;
          onChanged();
        } else {
          connections_ = null;
          connectionsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Holds network connection states.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkConnections connections = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections.Builder getConnectionsBuilder() {
        
        onChanged();
        return getConnectionsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Holds network connection states.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkConnections connections = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnectionsOrBuilder getConnectionsOrBuilder() {
        if (connectionsBuilder_ != null) {
          return connectionsBuilder_.getMessageOrBuilder();
        } else {
          return connections_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections.getDefaultInstance() : connections_;
        }
      }
      /**
       * <pre>
       * Holds network connection states.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkConnections connections = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnectionsOrBuilder> 
          getConnectionsFieldBuilder() {
        if (connectionsBuilder_ == null) {
          connectionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnectionsOrBuilder>(
                  getConnections(),
                  getParentForChildren(),
                  isClean());
          connections_ = null;
        }
        return connectionsBuilder_;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO io_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIOOrBuilder> ioBuilder_;
      /**
       * <pre>
       * Network I/O statistics.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkIO io = 2;</code>
       * @return Whether the io field is set.
       */
      public boolean hasIo() {
        return ioBuilder_ != null || io_ != null;
      }
      /**
       * <pre>
       * Network I/O statistics.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkIO io = 2;</code>
       * @return The io.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO getIo() {
        if (ioBuilder_ == null) {
          return io_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO.getDefaultInstance() : io_;
        } else {
          return ioBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Network I/O statistics.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkIO io = 2;</code>
       */
      public Builder setIo(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO value) {
        if (ioBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          io_ = value;
          onChanged();
        } else {
          ioBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Network I/O statistics.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkIO io = 2;</code>
       */
      public Builder setIo(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO.Builder builderForValue) {
        if (ioBuilder_ == null) {
          io_ = builderForValue.build();
          onChanged();
        } else {
          ioBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Network I/O statistics.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkIO io = 2;</code>
       */
      public Builder mergeIo(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO value) {
        if (ioBuilder_ == null) {
          if (io_ != null) {
            io_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO.newBuilder(io_).mergeFrom(value).buildPartial();
          } else {
            io_ = value;
          }
          onChanged();
        } else {
          ioBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Network I/O statistics.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkIO io = 2;</code>
       */
      public Builder clearIo() {
        if (ioBuilder_ == null) {
          io_ = null;
          onChanged();
        } else {
          io_ = null;
          ioBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Network I/O statistics.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkIO io = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO.Builder getIoBuilder() {
        
        onChanged();
        return getIoFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Network I/O statistics.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkIO io = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIOOrBuilder getIoOrBuilder() {
        if (ioBuilder_ != null) {
          return ioBuilder_.getMessageOrBuilder();
        } else {
          return io_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO.getDefaultInstance() : io_;
        }
      }
      /**
       * <pre>
       * Network I/O statistics.
       * </pre>
       *
       * <code>.cdp.telemetry.NetworkIO io = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIOOrBuilder> 
          getIoFieldBuilder() {
        if (ioBuilder_ == null) {
          ioBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIOOrBuilder>(
                  getIo(),
                  getParentForChildren(),
                  isClean());
          io_ = null;
        }
        return ioBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.NetworkMetrics)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.NetworkMetrics)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NetworkMetrics>
        PARSER = new com.google.protobuf.AbstractParser<NetworkMetrics>() {
      @java.lang.Override
      public NetworkMetrics parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<NetworkMetrics> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NetworkMetrics> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkMetrics getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NetworkIOOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.NetworkIO)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Number of bytes received.
     * </pre>
     *
     * <code>int64 bytes_recv = 1;</code>
     * @return The bytesRecv.
     */
    long getBytesRecv();

    /**
     * <pre>
     * Number of bytes sent.
     * </pre>
     *
     * <code>int64 bytes_sent = 2;</code>
     * @return The bytesSent.
     */
    long getBytesSent();

    /**
     * <pre>
     * Total number of incoming packets which were dropped
     * </pre>
     *
     * <code>int64 dropin = 3;</code>
     * @return The dropin.
     */
    long getDropin();

    /**
     * <pre>
     * Total number of outgoing packets which were dropped
     * </pre>
     *
     * <code>int64 dropout = 4;</code>
     * @return The dropout.
     */
    long getDropout();

    /**
     * <pre>
     * Total number of errors while receiving.
     * </pre>
     *
     * <code>int64 errin = 5;</code>
     * @return The errin.
     */
    long getErrin();

    /**
     * <pre>
     * Total number of errors while sending.
     * </pre>
     *
     * <code>int64 errout = 6;</code>
     * @return The errout.
     */
    long getErrout();

    /**
     * <pre>
     * Number of packets recieved.
     * </pre>
     *
     * <code>int64 packets_recv = 7;</code>
     * @return The packetsRecv.
     */
    long getPacketsRecv();

    /**
     * <pre>
     * Number of packets sent.
     * </pre>
     *
     * <code>int64 packets_sent = 8;</code>
     * @return The packetsSent.
     */
    long getPacketsSent();
  }
  /**
   * <pre>
   * Holds network I/O (activity) related statistics.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.NetworkIO}
   */
  public static final class NetworkIO extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.NetworkIO)
      NetworkIOOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use NetworkIO.newBuilder() to construct.
    private NetworkIO(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private NetworkIO() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new NetworkIO();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkIO_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkIO_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO.Builder.class);
    }

    public static final int BYTES_RECV_FIELD_NUMBER = 1;
    private long bytesRecv_;
    /**
     * <pre>
     * Number of bytes received.
     * </pre>
     *
     * <code>int64 bytes_recv = 1;</code>
     * @return The bytesRecv.
     */
    @java.lang.Override
    public long getBytesRecv() {
      return bytesRecv_;
    }

    public static final int BYTES_SENT_FIELD_NUMBER = 2;
    private long bytesSent_;
    /**
     * <pre>
     * Number of bytes sent.
     * </pre>
     *
     * <code>int64 bytes_sent = 2;</code>
     * @return The bytesSent.
     */
    @java.lang.Override
    public long getBytesSent() {
      return bytesSent_;
    }

    public static final int DROPIN_FIELD_NUMBER = 3;
    private long dropin_;
    /**
     * <pre>
     * Total number of incoming packets which were dropped
     * </pre>
     *
     * <code>int64 dropin = 3;</code>
     * @return The dropin.
     */
    @java.lang.Override
    public long getDropin() {
      return dropin_;
    }

    public static final int DROPOUT_FIELD_NUMBER = 4;
    private long dropout_;
    /**
     * <pre>
     * Total number of outgoing packets which were dropped
     * </pre>
     *
     * <code>int64 dropout = 4;</code>
     * @return The dropout.
     */
    @java.lang.Override
    public long getDropout() {
      return dropout_;
    }

    public static final int ERRIN_FIELD_NUMBER = 5;
    private long errin_;
    /**
     * <pre>
     * Total number of errors while receiving.
     * </pre>
     *
     * <code>int64 errin = 5;</code>
     * @return The errin.
     */
    @java.lang.Override
    public long getErrin() {
      return errin_;
    }

    public static final int ERROUT_FIELD_NUMBER = 6;
    private long errout_;
    /**
     * <pre>
     * Total number of errors while sending.
     * </pre>
     *
     * <code>int64 errout = 6;</code>
     * @return The errout.
     */
    @java.lang.Override
    public long getErrout() {
      return errout_;
    }

    public static final int PACKETS_RECV_FIELD_NUMBER = 7;
    private long packetsRecv_;
    /**
     * <pre>
     * Number of packets recieved.
     * </pre>
     *
     * <code>int64 packets_recv = 7;</code>
     * @return The packetsRecv.
     */
    @java.lang.Override
    public long getPacketsRecv() {
      return packetsRecv_;
    }

    public static final int PACKETS_SENT_FIELD_NUMBER = 8;
    private long packetsSent_;
    /**
     * <pre>
     * Number of packets sent.
     * </pre>
     *
     * <code>int64 packets_sent = 8;</code>
     * @return The packetsSent.
     */
    @java.lang.Override
    public long getPacketsSent() {
      return packetsSent_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (bytesRecv_ != 0L) {
        output.writeInt64(1, bytesRecv_);
      }
      if (bytesSent_ != 0L) {
        output.writeInt64(2, bytesSent_);
      }
      if (dropin_ != 0L) {
        output.writeInt64(3, dropin_);
      }
      if (dropout_ != 0L) {
        output.writeInt64(4, dropout_);
      }
      if (errin_ != 0L) {
        output.writeInt64(5, errin_);
      }
      if (errout_ != 0L) {
        output.writeInt64(6, errout_);
      }
      if (packetsRecv_ != 0L) {
        output.writeInt64(7, packetsRecv_);
      }
      if (packetsSent_ != 0L) {
        output.writeInt64(8, packetsSent_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (bytesRecv_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, bytesRecv_);
      }
      if (bytesSent_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, bytesSent_);
      }
      if (dropin_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, dropin_);
      }
      if (dropout_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, dropout_);
      }
      if (errin_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, errin_);
      }
      if (errout_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(6, errout_);
      }
      if (packetsRecv_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, packetsRecv_);
      }
      if (packetsSent_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(8, packetsSent_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO) obj;

      if (getBytesRecv()
          != other.getBytesRecv()) return false;
      if (getBytesSent()
          != other.getBytesSent()) return false;
      if (getDropin()
          != other.getDropin()) return false;
      if (getDropout()
          != other.getDropout()) return false;
      if (getErrin()
          != other.getErrin()) return false;
      if (getErrout()
          != other.getErrout()) return false;
      if (getPacketsRecv()
          != other.getPacketsRecv()) return false;
      if (getPacketsSent()
          != other.getPacketsSent()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + BYTES_RECV_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getBytesRecv());
      hash = (37 * hash) + BYTES_SENT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getBytesSent());
      hash = (37 * hash) + DROPIN_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getDropin());
      hash = (37 * hash) + DROPOUT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getDropout());
      hash = (37 * hash) + ERRIN_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getErrin());
      hash = (37 * hash) + ERROUT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getErrout());
      hash = (37 * hash) + PACKETS_RECV_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getPacketsRecv());
      hash = (37 * hash) + PACKETS_SENT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getPacketsSent());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds network I/O (activity) related statistics.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.NetworkIO}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.NetworkIO)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIOOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkIO_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkIO_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        bytesRecv_ = 0L;

        bytesSent_ = 0L;

        dropin_ = 0L;

        dropout_ = 0L;

        errin_ = 0L;

        errout_ = 0L;

        packetsRecv_ = 0L;

        packetsSent_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkIO_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO(this);
        result.bytesRecv_ = bytesRecv_;
        result.bytesSent_ = bytesSent_;
        result.dropin_ = dropin_;
        result.dropout_ = dropout_;
        result.errin_ = errin_;
        result.errout_ = errout_;
        result.packetsRecv_ = packetsRecv_;
        result.packetsSent_ = packetsSent_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO.getDefaultInstance()) return this;
        if (other.getBytesRecv() != 0L) {
          setBytesRecv(other.getBytesRecv());
        }
        if (other.getBytesSent() != 0L) {
          setBytesSent(other.getBytesSent());
        }
        if (other.getDropin() != 0L) {
          setDropin(other.getDropin());
        }
        if (other.getDropout() != 0L) {
          setDropout(other.getDropout());
        }
        if (other.getErrin() != 0L) {
          setErrin(other.getErrin());
        }
        if (other.getErrout() != 0L) {
          setErrout(other.getErrout());
        }
        if (other.getPacketsRecv() != 0L) {
          setPacketsRecv(other.getPacketsRecv());
        }
        if (other.getPacketsSent() != 0L) {
          setPacketsSent(other.getPacketsSent());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                bytesRecv_ = input.readInt64();

                break;
              } // case 8
              case 16: {
                bytesSent_ = input.readInt64();

                break;
              } // case 16
              case 24: {
                dropin_ = input.readInt64();

                break;
              } // case 24
              case 32: {
                dropout_ = input.readInt64();

                break;
              } // case 32
              case 40: {
                errin_ = input.readInt64();

                break;
              } // case 40
              case 48: {
                errout_ = input.readInt64();

                break;
              } // case 48
              case 56: {
                packetsRecv_ = input.readInt64();

                break;
              } // case 56
              case 64: {
                packetsSent_ = input.readInt64();

                break;
              } // case 64
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private long bytesRecv_ ;
      /**
       * <pre>
       * Number of bytes received.
       * </pre>
       *
       * <code>int64 bytes_recv = 1;</code>
       * @return The bytesRecv.
       */
      @java.lang.Override
      public long getBytesRecv() {
        return bytesRecv_;
      }
      /**
       * <pre>
       * Number of bytes received.
       * </pre>
       *
       * <code>int64 bytes_recv = 1;</code>
       * @param value The bytesRecv to set.
       * @return This builder for chaining.
       */
      public Builder setBytesRecv(long value) {
        
        bytesRecv_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of bytes received.
       * </pre>
       *
       * <code>int64 bytes_recv = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearBytesRecv() {
        
        bytesRecv_ = 0L;
        onChanged();
        return this;
      }

      private long bytesSent_ ;
      /**
       * <pre>
       * Number of bytes sent.
       * </pre>
       *
       * <code>int64 bytes_sent = 2;</code>
       * @return The bytesSent.
       */
      @java.lang.Override
      public long getBytesSent() {
        return bytesSent_;
      }
      /**
       * <pre>
       * Number of bytes sent.
       * </pre>
       *
       * <code>int64 bytes_sent = 2;</code>
       * @param value The bytesSent to set.
       * @return This builder for chaining.
       */
      public Builder setBytesSent(long value) {
        
        bytesSent_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of bytes sent.
       * </pre>
       *
       * <code>int64 bytes_sent = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearBytesSent() {
        
        bytesSent_ = 0L;
        onChanged();
        return this;
      }

      private long dropin_ ;
      /**
       * <pre>
       * Total number of incoming packets which were dropped
       * </pre>
       *
       * <code>int64 dropin = 3;</code>
       * @return The dropin.
       */
      @java.lang.Override
      public long getDropin() {
        return dropin_;
      }
      /**
       * <pre>
       * Total number of incoming packets which were dropped
       * </pre>
       *
       * <code>int64 dropin = 3;</code>
       * @param value The dropin to set.
       * @return This builder for chaining.
       */
      public Builder setDropin(long value) {
        
        dropin_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Total number of incoming packets which were dropped
       * </pre>
       *
       * <code>int64 dropin = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDropin() {
        
        dropin_ = 0L;
        onChanged();
        return this;
      }

      private long dropout_ ;
      /**
       * <pre>
       * Total number of outgoing packets which were dropped
       * </pre>
       *
       * <code>int64 dropout = 4;</code>
       * @return The dropout.
       */
      @java.lang.Override
      public long getDropout() {
        return dropout_;
      }
      /**
       * <pre>
       * Total number of outgoing packets which were dropped
       * </pre>
       *
       * <code>int64 dropout = 4;</code>
       * @param value The dropout to set.
       * @return This builder for chaining.
       */
      public Builder setDropout(long value) {
        
        dropout_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Total number of outgoing packets which were dropped
       * </pre>
       *
       * <code>int64 dropout = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearDropout() {
        
        dropout_ = 0L;
        onChanged();
        return this;
      }

      private long errin_ ;
      /**
       * <pre>
       * Total number of errors while receiving.
       * </pre>
       *
       * <code>int64 errin = 5;</code>
       * @return The errin.
       */
      @java.lang.Override
      public long getErrin() {
        return errin_;
      }
      /**
       * <pre>
       * Total number of errors while receiving.
       * </pre>
       *
       * <code>int64 errin = 5;</code>
       * @param value The errin to set.
       * @return This builder for chaining.
       */
      public Builder setErrin(long value) {
        
        errin_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Total number of errors while receiving.
       * </pre>
       *
       * <code>int64 errin = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearErrin() {
        
        errin_ = 0L;
        onChanged();
        return this;
      }

      private long errout_ ;
      /**
       * <pre>
       * Total number of errors while sending.
       * </pre>
       *
       * <code>int64 errout = 6;</code>
       * @return The errout.
       */
      @java.lang.Override
      public long getErrout() {
        return errout_;
      }
      /**
       * <pre>
       * Total number of errors while sending.
       * </pre>
       *
       * <code>int64 errout = 6;</code>
       * @param value The errout to set.
       * @return This builder for chaining.
       */
      public Builder setErrout(long value) {
        
        errout_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Total number of errors while sending.
       * </pre>
       *
       * <code>int64 errout = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearErrout() {
        
        errout_ = 0L;
        onChanged();
        return this;
      }

      private long packetsRecv_ ;
      /**
       * <pre>
       * Number of packets recieved.
       * </pre>
       *
       * <code>int64 packets_recv = 7;</code>
       * @return The packetsRecv.
       */
      @java.lang.Override
      public long getPacketsRecv() {
        return packetsRecv_;
      }
      /**
       * <pre>
       * Number of packets recieved.
       * </pre>
       *
       * <code>int64 packets_recv = 7;</code>
       * @param value The packetsRecv to set.
       * @return This builder for chaining.
       */
      public Builder setPacketsRecv(long value) {
        
        packetsRecv_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of packets recieved.
       * </pre>
       *
       * <code>int64 packets_recv = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearPacketsRecv() {
        
        packetsRecv_ = 0L;
        onChanged();
        return this;
      }

      private long packetsSent_ ;
      /**
       * <pre>
       * Number of packets sent.
       * </pre>
       *
       * <code>int64 packets_sent = 8;</code>
       * @return The packetsSent.
       */
      @java.lang.Override
      public long getPacketsSent() {
        return packetsSent_;
      }
      /**
       * <pre>
       * Number of packets sent.
       * </pre>
       *
       * <code>int64 packets_sent = 8;</code>
       * @param value The packetsSent to set.
       * @return This builder for chaining.
       */
      public Builder setPacketsSent(long value) {
        
        packetsSent_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of packets sent.
       * </pre>
       *
       * <code>int64 packets_sent = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearPacketsSent() {
        
        packetsSent_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.NetworkIO)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.NetworkIO)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NetworkIO>
        PARSER = new com.google.protobuf.AbstractParser<NetworkIO>() {
      @java.lang.Override
      public NetworkIO parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<NetworkIO> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NetworkIO> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkIO getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface NetworkConnectionsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.NetworkConnections)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Waiting for connection request.
     * </pre>
     *
     * <code>int32 LISTEN = 1;</code>
     * @return The lISTEN.
     */
    int getLISTEN();

    /**
     * <pre>
     * Represents a fully established connection.
     * </pre>
     *
     * <code>int32 ESTABLISHED = 2;</code>
     * @return The eSTABLISHED.
     */
    int getESTABLISHED();

    /**
     * <pre>
     * Waiting for ACK about the connection termination request has been sent.
     * </pre>
     *
     * <code>int32 TIME_WAIT = 3;</code>
     * @return The tIMEWAIT.
     */
    int getTIMEWAIT();

    /**
     * <pre>
     * Waiting for the connection termination request (close request already happened).
     * </pre>
     *
     * <code>int32 CLOSE_WAIT = 4;</code>
     * @return The cLOSEWAIT.
     */
    int getCLOSEWAIT();

    /**
     * <pre>
     * Represents no connection state at all.
     * </pre>
     *
     * <code>int32 CLOSED = 5;</code>
     * @return The cLOSED.
     */
    int getCLOSED();

    /**
     * <pre>
     * Waiting acknowledgment after a connection request has been sent.
     * </pre>
     *
     * <code>int32 SYN_SEND = 6;</code>
     * @return The sYNSEND.
     */
    int getSYNSEND();

    /**
     * <pre>
     * Acknowledgment recieved after the connection request. Waiting for final acknowledgment.
     * </pre>
     *
     * <code>int32 SYN_RECEIVED = 7;</code>
     * @return The sYNRECEIVED.
     */
    int getSYNRECEIVED();

    /**
     * <pre>
     * Waiting for an acknowledgment of the connection termination request.
     * </pre>
     *
     * <code>int32 FIN_WAIT_1 = 8;</code>
     * @return The fINWAIT1.
     */
    int getFINWAIT1();

    /**
     * <pre>
     * Waiting for a connection termination request. (If socket is not closed shortly, It can indicate an error in the coding of the remote application).
     * </pre>
     *
     * <code>int32 FIN_WAIT_2 = 9;</code>
     * @return The fINWAIT2.
     */
    int getFINWAIT2();

    /**
     * <pre>
     * Waiting for an acknowledgment of the connection termination request.
     * </pre>
     *
     * <code>int32 LAST_ACK = 10;</code>
     * @return The lASTACK.
     */
    int getLASTACK();
  }
  /**
   * <pre>
   * Holds TCP network connection states.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.NetworkConnections}
   */
  public static final class NetworkConnections extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.NetworkConnections)
      NetworkConnectionsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use NetworkConnections.newBuilder() to construct.
    private NetworkConnections(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private NetworkConnections() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new NetworkConnections();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkConnections_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkConnections_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections.Builder.class);
    }

    public static final int LISTEN_FIELD_NUMBER = 1;
    private int lISTEN_;
    /**
     * <pre>
     * Waiting for connection request.
     * </pre>
     *
     * <code>int32 LISTEN = 1;</code>
     * @return The lISTEN.
     */
    @java.lang.Override
    public int getLISTEN() {
      return lISTEN_;
    }

    public static final int ESTABLISHED_FIELD_NUMBER = 2;
    private int eSTABLISHED_;
    /**
     * <pre>
     * Represents a fully established connection.
     * </pre>
     *
     * <code>int32 ESTABLISHED = 2;</code>
     * @return The eSTABLISHED.
     */
    @java.lang.Override
    public int getESTABLISHED() {
      return eSTABLISHED_;
    }

    public static final int TIME_WAIT_FIELD_NUMBER = 3;
    private int tIMEWAIT_;
    /**
     * <pre>
     * Waiting for ACK about the connection termination request has been sent.
     * </pre>
     *
     * <code>int32 TIME_WAIT = 3;</code>
     * @return The tIMEWAIT.
     */
    @java.lang.Override
    public int getTIMEWAIT() {
      return tIMEWAIT_;
    }

    public static final int CLOSE_WAIT_FIELD_NUMBER = 4;
    private int cLOSEWAIT_;
    /**
     * <pre>
     * Waiting for the connection termination request (close request already happened).
     * </pre>
     *
     * <code>int32 CLOSE_WAIT = 4;</code>
     * @return The cLOSEWAIT.
     */
    @java.lang.Override
    public int getCLOSEWAIT() {
      return cLOSEWAIT_;
    }

    public static final int CLOSED_FIELD_NUMBER = 5;
    private int cLOSED_;
    /**
     * <pre>
     * Represents no connection state at all.
     * </pre>
     *
     * <code>int32 CLOSED = 5;</code>
     * @return The cLOSED.
     */
    @java.lang.Override
    public int getCLOSED() {
      return cLOSED_;
    }

    public static final int SYN_SEND_FIELD_NUMBER = 6;
    private int sYNSEND_;
    /**
     * <pre>
     * Waiting acknowledgment after a connection request has been sent.
     * </pre>
     *
     * <code>int32 SYN_SEND = 6;</code>
     * @return The sYNSEND.
     */
    @java.lang.Override
    public int getSYNSEND() {
      return sYNSEND_;
    }

    public static final int SYN_RECEIVED_FIELD_NUMBER = 7;
    private int sYNRECEIVED_;
    /**
     * <pre>
     * Acknowledgment recieved after the connection request. Waiting for final acknowledgment.
     * </pre>
     *
     * <code>int32 SYN_RECEIVED = 7;</code>
     * @return The sYNRECEIVED.
     */
    @java.lang.Override
    public int getSYNRECEIVED() {
      return sYNRECEIVED_;
    }

    public static final int FIN_WAIT_1_FIELD_NUMBER = 8;
    private int fINWAIT1_;
    /**
     * <pre>
     * Waiting for an acknowledgment of the connection termination request.
     * </pre>
     *
     * <code>int32 FIN_WAIT_1 = 8;</code>
     * @return The fINWAIT1.
     */
    @java.lang.Override
    public int getFINWAIT1() {
      return fINWAIT1_;
    }

    public static final int FIN_WAIT_2_FIELD_NUMBER = 9;
    private int fINWAIT2_;
    /**
     * <pre>
     * Waiting for a connection termination request. (If socket is not closed shortly, It can indicate an error in the coding of the remote application).
     * </pre>
     *
     * <code>int32 FIN_WAIT_2 = 9;</code>
     * @return The fINWAIT2.
     */
    @java.lang.Override
    public int getFINWAIT2() {
      return fINWAIT2_;
    }

    public static final int LAST_ACK_FIELD_NUMBER = 10;
    private int lASTACK_;
    /**
     * <pre>
     * Waiting for an acknowledgment of the connection termination request.
     * </pre>
     *
     * <code>int32 LAST_ACK = 10;</code>
     * @return The lASTACK.
     */
    @java.lang.Override
    public int getLASTACK() {
      return lASTACK_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (lISTEN_ != 0) {
        output.writeInt32(1, lISTEN_);
      }
      if (eSTABLISHED_ != 0) {
        output.writeInt32(2, eSTABLISHED_);
      }
      if (tIMEWAIT_ != 0) {
        output.writeInt32(3, tIMEWAIT_);
      }
      if (cLOSEWAIT_ != 0) {
        output.writeInt32(4, cLOSEWAIT_);
      }
      if (cLOSED_ != 0) {
        output.writeInt32(5, cLOSED_);
      }
      if (sYNSEND_ != 0) {
        output.writeInt32(6, sYNSEND_);
      }
      if (sYNRECEIVED_ != 0) {
        output.writeInt32(7, sYNRECEIVED_);
      }
      if (fINWAIT1_ != 0) {
        output.writeInt32(8, fINWAIT1_);
      }
      if (fINWAIT2_ != 0) {
        output.writeInt32(9, fINWAIT2_);
      }
      if (lASTACK_ != 0) {
        output.writeInt32(10, lASTACK_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (lISTEN_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, lISTEN_);
      }
      if (eSTABLISHED_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, eSTABLISHED_);
      }
      if (tIMEWAIT_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, tIMEWAIT_);
      }
      if (cLOSEWAIT_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, cLOSEWAIT_);
      }
      if (cLOSED_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(5, cLOSED_);
      }
      if (sYNSEND_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(6, sYNSEND_);
      }
      if (sYNRECEIVED_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(7, sYNRECEIVED_);
      }
      if (fINWAIT1_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(8, fINWAIT1_);
      }
      if (fINWAIT2_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(9, fINWAIT2_);
      }
      if (lASTACK_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(10, lASTACK_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections) obj;

      if (getLISTEN()
          != other.getLISTEN()) return false;
      if (getESTABLISHED()
          != other.getESTABLISHED()) return false;
      if (getTIMEWAIT()
          != other.getTIMEWAIT()) return false;
      if (getCLOSEWAIT()
          != other.getCLOSEWAIT()) return false;
      if (getCLOSED()
          != other.getCLOSED()) return false;
      if (getSYNSEND()
          != other.getSYNSEND()) return false;
      if (getSYNRECEIVED()
          != other.getSYNRECEIVED()) return false;
      if (getFINWAIT1()
          != other.getFINWAIT1()) return false;
      if (getFINWAIT2()
          != other.getFINWAIT2()) return false;
      if (getLASTACK()
          != other.getLASTACK()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + LISTEN_FIELD_NUMBER;
      hash = (53 * hash) + getLISTEN();
      hash = (37 * hash) + ESTABLISHED_FIELD_NUMBER;
      hash = (53 * hash) + getESTABLISHED();
      hash = (37 * hash) + TIME_WAIT_FIELD_NUMBER;
      hash = (53 * hash) + getTIMEWAIT();
      hash = (37 * hash) + CLOSE_WAIT_FIELD_NUMBER;
      hash = (53 * hash) + getCLOSEWAIT();
      hash = (37 * hash) + CLOSED_FIELD_NUMBER;
      hash = (53 * hash) + getCLOSED();
      hash = (37 * hash) + SYN_SEND_FIELD_NUMBER;
      hash = (53 * hash) + getSYNSEND();
      hash = (37 * hash) + SYN_RECEIVED_FIELD_NUMBER;
      hash = (53 * hash) + getSYNRECEIVED();
      hash = (37 * hash) + FIN_WAIT_1_FIELD_NUMBER;
      hash = (53 * hash) + getFINWAIT1();
      hash = (37 * hash) + FIN_WAIT_2_FIELD_NUMBER;
      hash = (53 * hash) + getFINWAIT2();
      hash = (37 * hash) + LAST_ACK_FIELD_NUMBER;
      hash = (53 * hash) + getLASTACK();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds TCP network connection states.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.NetworkConnections}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.NetworkConnections)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnectionsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkConnections_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkConnections_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        lISTEN_ = 0;

        eSTABLISHED_ = 0;

        tIMEWAIT_ = 0;

        cLOSEWAIT_ = 0;

        cLOSED_ = 0;

        sYNSEND_ = 0;

        sYNRECEIVED_ = 0;

        fINWAIT1_ = 0;

        fINWAIT2_ = 0;

        lASTACK_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_NetworkConnections_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections(this);
        result.lISTEN_ = lISTEN_;
        result.eSTABLISHED_ = eSTABLISHED_;
        result.tIMEWAIT_ = tIMEWAIT_;
        result.cLOSEWAIT_ = cLOSEWAIT_;
        result.cLOSED_ = cLOSED_;
        result.sYNSEND_ = sYNSEND_;
        result.sYNRECEIVED_ = sYNRECEIVED_;
        result.fINWAIT1_ = fINWAIT1_;
        result.fINWAIT2_ = fINWAIT2_;
        result.lASTACK_ = lASTACK_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections.getDefaultInstance()) return this;
        if (other.getLISTEN() != 0) {
          setLISTEN(other.getLISTEN());
        }
        if (other.getESTABLISHED() != 0) {
          setESTABLISHED(other.getESTABLISHED());
        }
        if (other.getTIMEWAIT() != 0) {
          setTIMEWAIT(other.getTIMEWAIT());
        }
        if (other.getCLOSEWAIT() != 0) {
          setCLOSEWAIT(other.getCLOSEWAIT());
        }
        if (other.getCLOSED() != 0) {
          setCLOSED(other.getCLOSED());
        }
        if (other.getSYNSEND() != 0) {
          setSYNSEND(other.getSYNSEND());
        }
        if (other.getSYNRECEIVED() != 0) {
          setSYNRECEIVED(other.getSYNRECEIVED());
        }
        if (other.getFINWAIT1() != 0) {
          setFINWAIT1(other.getFINWAIT1());
        }
        if (other.getFINWAIT2() != 0) {
          setFINWAIT2(other.getFINWAIT2());
        }
        if (other.getLASTACK() != 0) {
          setLASTACK(other.getLASTACK());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                lISTEN_ = input.readInt32();

                break;
              } // case 8
              case 16: {
                eSTABLISHED_ = input.readInt32();

                break;
              } // case 16
              case 24: {
                tIMEWAIT_ = input.readInt32();

                break;
              } // case 24
              case 32: {
                cLOSEWAIT_ = input.readInt32();

                break;
              } // case 32
              case 40: {
                cLOSED_ = input.readInt32();

                break;
              } // case 40
              case 48: {
                sYNSEND_ = input.readInt32();

                break;
              } // case 48
              case 56: {
                sYNRECEIVED_ = input.readInt32();

                break;
              } // case 56
              case 64: {
                fINWAIT1_ = input.readInt32();

                break;
              } // case 64
              case 72: {
                fINWAIT2_ = input.readInt32();

                break;
              } // case 72
              case 80: {
                lASTACK_ = input.readInt32();

                break;
              } // case 80
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private int lISTEN_ ;
      /**
       * <pre>
       * Waiting for connection request.
       * </pre>
       *
       * <code>int32 LISTEN = 1;</code>
       * @return The lISTEN.
       */
      @java.lang.Override
      public int getLISTEN() {
        return lISTEN_;
      }
      /**
       * <pre>
       * Waiting for connection request.
       * </pre>
       *
       * <code>int32 LISTEN = 1;</code>
       * @param value The lISTEN to set.
       * @return This builder for chaining.
       */
      public Builder setLISTEN(int value) {
        
        lISTEN_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Waiting for connection request.
       * </pre>
       *
       * <code>int32 LISTEN = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearLISTEN() {
        
        lISTEN_ = 0;
        onChanged();
        return this;
      }

      private int eSTABLISHED_ ;
      /**
       * <pre>
       * Represents a fully established connection.
       * </pre>
       *
       * <code>int32 ESTABLISHED = 2;</code>
       * @return The eSTABLISHED.
       */
      @java.lang.Override
      public int getESTABLISHED() {
        return eSTABLISHED_;
      }
      /**
       * <pre>
       * Represents a fully established connection.
       * </pre>
       *
       * <code>int32 ESTABLISHED = 2;</code>
       * @param value The eSTABLISHED to set.
       * @return This builder for chaining.
       */
      public Builder setESTABLISHED(int value) {
        
        eSTABLISHED_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Represents a fully established connection.
       * </pre>
       *
       * <code>int32 ESTABLISHED = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearESTABLISHED() {
        
        eSTABLISHED_ = 0;
        onChanged();
        return this;
      }

      private int tIMEWAIT_ ;
      /**
       * <pre>
       * Waiting for ACK about the connection termination request has been sent.
       * </pre>
       *
       * <code>int32 TIME_WAIT = 3;</code>
       * @return The tIMEWAIT.
       */
      @java.lang.Override
      public int getTIMEWAIT() {
        return tIMEWAIT_;
      }
      /**
       * <pre>
       * Waiting for ACK about the connection termination request has been sent.
       * </pre>
       *
       * <code>int32 TIME_WAIT = 3;</code>
       * @param value The tIMEWAIT to set.
       * @return This builder for chaining.
       */
      public Builder setTIMEWAIT(int value) {
        
        tIMEWAIT_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Waiting for ACK about the connection termination request has been sent.
       * </pre>
       *
       * <code>int32 TIME_WAIT = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearTIMEWAIT() {
        
        tIMEWAIT_ = 0;
        onChanged();
        return this;
      }

      private int cLOSEWAIT_ ;
      /**
       * <pre>
       * Waiting for the connection termination request (close request already happened).
       * </pre>
       *
       * <code>int32 CLOSE_WAIT = 4;</code>
       * @return The cLOSEWAIT.
       */
      @java.lang.Override
      public int getCLOSEWAIT() {
        return cLOSEWAIT_;
      }
      /**
       * <pre>
       * Waiting for the connection termination request (close request already happened).
       * </pre>
       *
       * <code>int32 CLOSE_WAIT = 4;</code>
       * @param value The cLOSEWAIT to set.
       * @return This builder for chaining.
       */
      public Builder setCLOSEWAIT(int value) {
        
        cLOSEWAIT_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Waiting for the connection termination request (close request already happened).
       * </pre>
       *
       * <code>int32 CLOSE_WAIT = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearCLOSEWAIT() {
        
        cLOSEWAIT_ = 0;
        onChanged();
        return this;
      }

      private int cLOSED_ ;
      /**
       * <pre>
       * Represents no connection state at all.
       * </pre>
       *
       * <code>int32 CLOSED = 5;</code>
       * @return The cLOSED.
       */
      @java.lang.Override
      public int getCLOSED() {
        return cLOSED_;
      }
      /**
       * <pre>
       * Represents no connection state at all.
       * </pre>
       *
       * <code>int32 CLOSED = 5;</code>
       * @param value The cLOSED to set.
       * @return This builder for chaining.
       */
      public Builder setCLOSED(int value) {
        
        cLOSED_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Represents no connection state at all.
       * </pre>
       *
       * <code>int32 CLOSED = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearCLOSED() {
        
        cLOSED_ = 0;
        onChanged();
        return this;
      }

      private int sYNSEND_ ;
      /**
       * <pre>
       * Waiting acknowledgment after a connection request has been sent.
       * </pre>
       *
       * <code>int32 SYN_SEND = 6;</code>
       * @return The sYNSEND.
       */
      @java.lang.Override
      public int getSYNSEND() {
        return sYNSEND_;
      }
      /**
       * <pre>
       * Waiting acknowledgment after a connection request has been sent.
       * </pre>
       *
       * <code>int32 SYN_SEND = 6;</code>
       * @param value The sYNSEND to set.
       * @return This builder for chaining.
       */
      public Builder setSYNSEND(int value) {
        
        sYNSEND_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Waiting acknowledgment after a connection request has been sent.
       * </pre>
       *
       * <code>int32 SYN_SEND = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearSYNSEND() {
        
        sYNSEND_ = 0;
        onChanged();
        return this;
      }

      private int sYNRECEIVED_ ;
      /**
       * <pre>
       * Acknowledgment recieved after the connection request. Waiting for final acknowledgment.
       * </pre>
       *
       * <code>int32 SYN_RECEIVED = 7;</code>
       * @return The sYNRECEIVED.
       */
      @java.lang.Override
      public int getSYNRECEIVED() {
        return sYNRECEIVED_;
      }
      /**
       * <pre>
       * Acknowledgment recieved after the connection request. Waiting for final acknowledgment.
       * </pre>
       *
       * <code>int32 SYN_RECEIVED = 7;</code>
       * @param value The sYNRECEIVED to set.
       * @return This builder for chaining.
       */
      public Builder setSYNRECEIVED(int value) {
        
        sYNRECEIVED_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Acknowledgment recieved after the connection request. Waiting for final acknowledgment.
       * </pre>
       *
       * <code>int32 SYN_RECEIVED = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearSYNRECEIVED() {
        
        sYNRECEIVED_ = 0;
        onChanged();
        return this;
      }

      private int fINWAIT1_ ;
      /**
       * <pre>
       * Waiting for an acknowledgment of the connection termination request.
       * </pre>
       *
       * <code>int32 FIN_WAIT_1 = 8;</code>
       * @return The fINWAIT1.
       */
      @java.lang.Override
      public int getFINWAIT1() {
        return fINWAIT1_;
      }
      /**
       * <pre>
       * Waiting for an acknowledgment of the connection termination request.
       * </pre>
       *
       * <code>int32 FIN_WAIT_1 = 8;</code>
       * @param value The fINWAIT1 to set.
       * @return This builder for chaining.
       */
      public Builder setFINWAIT1(int value) {
        
        fINWAIT1_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Waiting for an acknowledgment of the connection termination request.
       * </pre>
       *
       * <code>int32 FIN_WAIT_1 = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearFINWAIT1() {
        
        fINWAIT1_ = 0;
        onChanged();
        return this;
      }

      private int fINWAIT2_ ;
      /**
       * <pre>
       * Waiting for a connection termination request. (If socket is not closed shortly, It can indicate an error in the coding of the remote application).
       * </pre>
       *
       * <code>int32 FIN_WAIT_2 = 9;</code>
       * @return The fINWAIT2.
       */
      @java.lang.Override
      public int getFINWAIT2() {
        return fINWAIT2_;
      }
      /**
       * <pre>
       * Waiting for a connection termination request. (If socket is not closed shortly, It can indicate an error in the coding of the remote application).
       * </pre>
       *
       * <code>int32 FIN_WAIT_2 = 9;</code>
       * @param value The fINWAIT2 to set.
       * @return This builder for chaining.
       */
      public Builder setFINWAIT2(int value) {
        
        fINWAIT2_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Waiting for a connection termination request. (If socket is not closed shortly, It can indicate an error in the coding of the remote application).
       * </pre>
       *
       * <code>int32 FIN_WAIT_2 = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearFINWAIT2() {
        
        fINWAIT2_ = 0;
        onChanged();
        return this;
      }

      private int lASTACK_ ;
      /**
       * <pre>
       * Waiting for an acknowledgment of the connection termination request.
       * </pre>
       *
       * <code>int32 LAST_ACK = 10;</code>
       * @return The lASTACK.
       */
      @java.lang.Override
      public int getLASTACK() {
        return lASTACK_;
      }
      /**
       * <pre>
       * Waiting for an acknowledgment of the connection termination request.
       * </pre>
       *
       * <code>int32 LAST_ACK = 10;</code>
       * @param value The lASTACK to set.
       * @return This builder for chaining.
       */
      public Builder setLASTACK(int value) {
        
        lASTACK_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Waiting for an acknowledgment of the connection termination request.
       * </pre>
       *
       * <code>int32 LAST_ACK = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearLASTACK() {
        
        lASTACK_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.NetworkConnections)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.NetworkConnections)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<NetworkConnections>
        PARSER = new com.google.protobuf.AbstractParser<NetworkConnections>() {
      @java.lang.Override
      public NetworkConnections parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<NetworkConnections> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<NetworkConnections> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.NetworkConnections getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface MemoryMetricsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.MemoryMetrics)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Represents virtual memory related data.
     * </pre>
     *
     * <code>.cdp.telemetry.VirtualMemory virtual_memory = 1;</code>
     * @return Whether the virtualMemory field is set.
     */
    boolean hasVirtualMemory();
    /**
     * <pre>
     * Represents virtual memory related data.
     * </pre>
     *
     * <code>.cdp.telemetry.VirtualMemory virtual_memory = 1;</code>
     * @return The virtualMemory.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory getVirtualMemory();
    /**
     * <pre>
     * Represents virtual memory related data.
     * </pre>
     *
     * <code>.cdp.telemetry.VirtualMemory virtual_memory = 1;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemoryOrBuilder getVirtualMemoryOrBuilder();

    /**
     * <pre>
     * Represents swap memory related data.
     * </pre>
     *
     * <code>.cdp.telemetry.SwapMemory swap_memory = 2;</code>
     * @return Whether the swapMemory field is set.
     */
    boolean hasSwapMemory();
    /**
     * <pre>
     * Represents swap memory related data.
     * </pre>
     *
     * <code>.cdp.telemetry.SwapMemory swap_memory = 2;</code>
     * @return The swapMemory.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory getSwapMemory();
    /**
     * <pre>
     * Represents swap memory related data.
     * </pre>
     *
     * <code>.cdp.telemetry.SwapMemory swap_memory = 2;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemoryOrBuilder getSwapMemoryOrBuilder();
  }
  /**
   * <pre>
   * Holds virtual/swap memory data.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.MemoryMetrics}
   */
  public static final class MemoryMetrics extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.MemoryMetrics)
      MemoryMetricsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use MemoryMetrics.newBuilder() to construct.
    private MemoryMetrics(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private MemoryMetrics() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new MemoryMetrics();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_MemoryMetrics_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_MemoryMetrics_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics.Builder.class);
    }

    public static final int VIRTUAL_MEMORY_FIELD_NUMBER = 1;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory virtualMemory_;
    /**
     * <pre>
     * Represents virtual memory related data.
     * </pre>
     *
     * <code>.cdp.telemetry.VirtualMemory virtual_memory = 1;</code>
     * @return Whether the virtualMemory field is set.
     */
    @java.lang.Override
    public boolean hasVirtualMemory() {
      return virtualMemory_ != null;
    }
    /**
     * <pre>
     * Represents virtual memory related data.
     * </pre>
     *
     * <code>.cdp.telemetry.VirtualMemory virtual_memory = 1;</code>
     * @return The virtualMemory.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory getVirtualMemory() {
      return virtualMemory_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory.getDefaultInstance() : virtualMemory_;
    }
    /**
     * <pre>
     * Represents virtual memory related data.
     * </pre>
     *
     * <code>.cdp.telemetry.VirtualMemory virtual_memory = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemoryOrBuilder getVirtualMemoryOrBuilder() {
      return getVirtualMemory();
    }

    public static final int SWAP_MEMORY_FIELD_NUMBER = 2;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory swapMemory_;
    /**
     * <pre>
     * Represents swap memory related data.
     * </pre>
     *
     * <code>.cdp.telemetry.SwapMemory swap_memory = 2;</code>
     * @return Whether the swapMemory field is set.
     */
    @java.lang.Override
    public boolean hasSwapMemory() {
      return swapMemory_ != null;
    }
    /**
     * <pre>
     * Represents swap memory related data.
     * </pre>
     *
     * <code>.cdp.telemetry.SwapMemory swap_memory = 2;</code>
     * @return The swapMemory.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory getSwapMemory() {
      return swapMemory_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory.getDefaultInstance() : swapMemory_;
    }
    /**
     * <pre>
     * Represents swap memory related data.
     * </pre>
     *
     * <code>.cdp.telemetry.SwapMemory swap_memory = 2;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemoryOrBuilder getSwapMemoryOrBuilder() {
      return getSwapMemory();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (virtualMemory_ != null) {
        output.writeMessage(1, getVirtualMemory());
      }
      if (swapMemory_ != null) {
        output.writeMessage(2, getSwapMemory());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (virtualMemory_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getVirtualMemory());
      }
      if (swapMemory_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, getSwapMemory());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics) obj;

      if (hasVirtualMemory() != other.hasVirtualMemory()) return false;
      if (hasVirtualMemory()) {
        if (!getVirtualMemory()
            .equals(other.getVirtualMemory())) return false;
      }
      if (hasSwapMemory() != other.hasSwapMemory()) return false;
      if (hasSwapMemory()) {
        if (!getSwapMemory()
            .equals(other.getSwapMemory())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasVirtualMemory()) {
        hash = (37 * hash) + VIRTUAL_MEMORY_FIELD_NUMBER;
        hash = (53 * hash) + getVirtualMemory().hashCode();
      }
      if (hasSwapMemory()) {
        hash = (37 * hash) + SWAP_MEMORY_FIELD_NUMBER;
        hash = (53 * hash) + getSwapMemory().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds virtual/swap memory data.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.MemoryMetrics}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.MemoryMetrics)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetricsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_MemoryMetrics_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_MemoryMetrics_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (virtualMemoryBuilder_ == null) {
          virtualMemory_ = null;
        } else {
          virtualMemory_ = null;
          virtualMemoryBuilder_ = null;
        }
        if (swapMemoryBuilder_ == null) {
          swapMemory_ = null;
        } else {
          swapMemory_ = null;
          swapMemoryBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_MemoryMetrics_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics(this);
        if (virtualMemoryBuilder_ == null) {
          result.virtualMemory_ = virtualMemory_;
        } else {
          result.virtualMemory_ = virtualMemoryBuilder_.build();
        }
        if (swapMemoryBuilder_ == null) {
          result.swapMemory_ = swapMemory_;
        } else {
          result.swapMemory_ = swapMemoryBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics.getDefaultInstance()) return this;
        if (other.hasVirtualMemory()) {
          mergeVirtualMemory(other.getVirtualMemory());
        }
        if (other.hasSwapMemory()) {
          mergeSwapMemory(other.getSwapMemory());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getVirtualMemoryFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 10
              case 18: {
                input.readMessage(
                    getSwapMemoryFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory virtualMemory_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemoryOrBuilder> virtualMemoryBuilder_;
      /**
       * <pre>
       * Represents virtual memory related data.
       * </pre>
       *
       * <code>.cdp.telemetry.VirtualMemory virtual_memory = 1;</code>
       * @return Whether the virtualMemory field is set.
       */
      public boolean hasVirtualMemory() {
        return virtualMemoryBuilder_ != null || virtualMemory_ != null;
      }
      /**
       * <pre>
       * Represents virtual memory related data.
       * </pre>
       *
       * <code>.cdp.telemetry.VirtualMemory virtual_memory = 1;</code>
       * @return The virtualMemory.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory getVirtualMemory() {
        if (virtualMemoryBuilder_ == null) {
          return virtualMemory_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory.getDefaultInstance() : virtualMemory_;
        } else {
          return virtualMemoryBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Represents virtual memory related data.
       * </pre>
       *
       * <code>.cdp.telemetry.VirtualMemory virtual_memory = 1;</code>
       */
      public Builder setVirtualMemory(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory value) {
        if (virtualMemoryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          virtualMemory_ = value;
          onChanged();
        } else {
          virtualMemoryBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Represents virtual memory related data.
       * </pre>
       *
       * <code>.cdp.telemetry.VirtualMemory virtual_memory = 1;</code>
       */
      public Builder setVirtualMemory(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory.Builder builderForValue) {
        if (virtualMemoryBuilder_ == null) {
          virtualMemory_ = builderForValue.build();
          onChanged();
        } else {
          virtualMemoryBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Represents virtual memory related data.
       * </pre>
       *
       * <code>.cdp.telemetry.VirtualMemory virtual_memory = 1;</code>
       */
      public Builder mergeVirtualMemory(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory value) {
        if (virtualMemoryBuilder_ == null) {
          if (virtualMemory_ != null) {
            virtualMemory_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory.newBuilder(virtualMemory_).mergeFrom(value).buildPartial();
          } else {
            virtualMemory_ = value;
          }
          onChanged();
        } else {
          virtualMemoryBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Represents virtual memory related data.
       * </pre>
       *
       * <code>.cdp.telemetry.VirtualMemory virtual_memory = 1;</code>
       */
      public Builder clearVirtualMemory() {
        if (virtualMemoryBuilder_ == null) {
          virtualMemory_ = null;
          onChanged();
        } else {
          virtualMemory_ = null;
          virtualMemoryBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Represents virtual memory related data.
       * </pre>
       *
       * <code>.cdp.telemetry.VirtualMemory virtual_memory = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory.Builder getVirtualMemoryBuilder() {
        
        onChanged();
        return getVirtualMemoryFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Represents virtual memory related data.
       * </pre>
       *
       * <code>.cdp.telemetry.VirtualMemory virtual_memory = 1;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemoryOrBuilder getVirtualMemoryOrBuilder() {
        if (virtualMemoryBuilder_ != null) {
          return virtualMemoryBuilder_.getMessageOrBuilder();
        } else {
          return virtualMemory_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory.getDefaultInstance() : virtualMemory_;
        }
      }
      /**
       * <pre>
       * Represents virtual memory related data.
       * </pre>
       *
       * <code>.cdp.telemetry.VirtualMemory virtual_memory = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemoryOrBuilder> 
          getVirtualMemoryFieldBuilder() {
        if (virtualMemoryBuilder_ == null) {
          virtualMemoryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemoryOrBuilder>(
                  getVirtualMemory(),
                  getParentForChildren(),
                  isClean());
          virtualMemory_ = null;
        }
        return virtualMemoryBuilder_;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory swapMemory_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemoryOrBuilder> swapMemoryBuilder_;
      /**
       * <pre>
       * Represents swap memory related data.
       * </pre>
       *
       * <code>.cdp.telemetry.SwapMemory swap_memory = 2;</code>
       * @return Whether the swapMemory field is set.
       */
      public boolean hasSwapMemory() {
        return swapMemoryBuilder_ != null || swapMemory_ != null;
      }
      /**
       * <pre>
       * Represents swap memory related data.
       * </pre>
       *
       * <code>.cdp.telemetry.SwapMemory swap_memory = 2;</code>
       * @return The swapMemory.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory getSwapMemory() {
        if (swapMemoryBuilder_ == null) {
          return swapMemory_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory.getDefaultInstance() : swapMemory_;
        } else {
          return swapMemoryBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Represents swap memory related data.
       * </pre>
       *
       * <code>.cdp.telemetry.SwapMemory swap_memory = 2;</code>
       */
      public Builder setSwapMemory(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory value) {
        if (swapMemoryBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          swapMemory_ = value;
          onChanged();
        } else {
          swapMemoryBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Represents swap memory related data.
       * </pre>
       *
       * <code>.cdp.telemetry.SwapMemory swap_memory = 2;</code>
       */
      public Builder setSwapMemory(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory.Builder builderForValue) {
        if (swapMemoryBuilder_ == null) {
          swapMemory_ = builderForValue.build();
          onChanged();
        } else {
          swapMemoryBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Represents swap memory related data.
       * </pre>
       *
       * <code>.cdp.telemetry.SwapMemory swap_memory = 2;</code>
       */
      public Builder mergeSwapMemory(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory value) {
        if (swapMemoryBuilder_ == null) {
          if (swapMemory_ != null) {
            swapMemory_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory.newBuilder(swapMemory_).mergeFrom(value).buildPartial();
          } else {
            swapMemory_ = value;
          }
          onChanged();
        } else {
          swapMemoryBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Represents swap memory related data.
       * </pre>
       *
       * <code>.cdp.telemetry.SwapMemory swap_memory = 2;</code>
       */
      public Builder clearSwapMemory() {
        if (swapMemoryBuilder_ == null) {
          swapMemory_ = null;
          onChanged();
        } else {
          swapMemory_ = null;
          swapMemoryBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Represents swap memory related data.
       * </pre>
       *
       * <code>.cdp.telemetry.SwapMemory swap_memory = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory.Builder getSwapMemoryBuilder() {
        
        onChanged();
        return getSwapMemoryFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Represents swap memory related data.
       * </pre>
       *
       * <code>.cdp.telemetry.SwapMemory swap_memory = 2;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemoryOrBuilder getSwapMemoryOrBuilder() {
        if (swapMemoryBuilder_ != null) {
          return swapMemoryBuilder_.getMessageOrBuilder();
        } else {
          return swapMemory_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory.getDefaultInstance() : swapMemory_;
        }
      }
      /**
       * <pre>
       * Represents swap memory related data.
       * </pre>
       *
       * <code>.cdp.telemetry.SwapMemory swap_memory = 2;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemoryOrBuilder> 
          getSwapMemoryFieldBuilder() {
        if (swapMemoryBuilder_ == null) {
          swapMemoryBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemoryOrBuilder>(
                  getSwapMemory(),
                  getParentForChildren(),
                  isClean());
          swapMemory_ = null;
        }
        return swapMemoryBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.MemoryMetrics)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.MemoryMetrics)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<MemoryMetrics>
        PARSER = new com.google.protobuf.AbstractParser<MemoryMetrics>() {
      @java.lang.Override
      public MemoryMetrics parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<MemoryMetrics> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<MemoryMetrics> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.MemoryMetrics getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface VirtualMemoryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.VirtualMemory)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Total (physical) RAM (bytes) - exclusive swap.
     * </pre>
     *
     * <code>int64 total = 1;</code>
     * @return The total.
     */
    long getTotal();

    /**
     * <pre>
     * Abount of virtual memory in use.
     * </pre>
     *
     * <code>int64 used = 2;</code>
     * @return The used.
     */
    long getUsed();

    /**
     * <pre>
     * Memory (bytes) that is not in use.
     * </pre>
     *
     * <code>int64 free = 3;</code>
     * @return The free.
     */
    long getFree();

    /**
     * <pre>
     * Percentage of the memory usage.
     * </pre>
     *
     * <code>double percent = 4;</code>
     * @return The percent.
     */
    double getPercent();

    /**
     * <pre>
     * Available memory (bytes) for starting new applications, without swapping.
     * </pre>
     *
     * <code>int64 available = 5;</code>
     * @return The available.
     */
    long getAvailable();

    /**
     * <pre>
     * Memory currently in use or very recently used (bytes).
     * </pre>
     *
     * <code>int64 active = 6;</code>
     * @return The active.
     */
    long getActive();

    /**
     * <pre>
     * Inactive virtual memory (bytes).
     * </pre>
     *
     * <code>int64 inactive = 7;</code>
     * @return The inactive.
     */
    long getInactive();

    /**
     * <pre>
     * Memory used by kernel buffers.
     * </pre>
     *
     * <code>int64 buffers = 8;</code>
     * @return The buffers.
     */
    long getBuffers();

    /**
     * <pre>
     * Memory used by the page cache and slabs.
     * </pre>
     *
     * <code>int64 cached = 9;</code>
     * @return The cached.
     */
    long getCached();

    /**
     * <pre>
     * Memory that may be simultaneously accessed by multiple processes (tmpfs).
     * </pre>
     *
     * <code>int64 shared = 10;</code>
     * @return The shared.
     */
    long getShared();

    /**
     * <pre>
     * Combination of caches for kernel objects.
     * </pre>
     *
     * <code>int64 slab = 11;</code>
     * @return The slab.
     */
    long getSlab();
  }
  /**
   * <pre>
   * Holds virtual memory related metrics.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.VirtualMemory}
   */
  public static final class VirtualMemory extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.VirtualMemory)
      VirtualMemoryOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use VirtualMemory.newBuilder() to construct.
    private VirtualMemory(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private VirtualMemory() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new VirtualMemory();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_VirtualMemory_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_VirtualMemory_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory.Builder.class);
    }

    public static final int TOTAL_FIELD_NUMBER = 1;
    private long total_;
    /**
     * <pre>
     * Total (physical) RAM (bytes) - exclusive swap.
     * </pre>
     *
     * <code>int64 total = 1;</code>
     * @return The total.
     */
    @java.lang.Override
    public long getTotal() {
      return total_;
    }

    public static final int USED_FIELD_NUMBER = 2;
    private long used_;
    /**
     * <pre>
     * Abount of virtual memory in use.
     * </pre>
     *
     * <code>int64 used = 2;</code>
     * @return The used.
     */
    @java.lang.Override
    public long getUsed() {
      return used_;
    }

    public static final int FREE_FIELD_NUMBER = 3;
    private long free_;
    /**
     * <pre>
     * Memory (bytes) that is not in use.
     * </pre>
     *
     * <code>int64 free = 3;</code>
     * @return The free.
     */
    @java.lang.Override
    public long getFree() {
      return free_;
    }

    public static final int PERCENT_FIELD_NUMBER = 4;
    private double percent_;
    /**
     * <pre>
     * Percentage of the memory usage.
     * </pre>
     *
     * <code>double percent = 4;</code>
     * @return The percent.
     */
    @java.lang.Override
    public double getPercent() {
      return percent_;
    }

    public static final int AVAILABLE_FIELD_NUMBER = 5;
    private long available_;
    /**
     * <pre>
     * Available memory (bytes) for starting new applications, without swapping.
     * </pre>
     *
     * <code>int64 available = 5;</code>
     * @return The available.
     */
    @java.lang.Override
    public long getAvailable() {
      return available_;
    }

    public static final int ACTIVE_FIELD_NUMBER = 6;
    private long active_;
    /**
     * <pre>
     * Memory currently in use or very recently used (bytes).
     * </pre>
     *
     * <code>int64 active = 6;</code>
     * @return The active.
     */
    @java.lang.Override
    public long getActive() {
      return active_;
    }

    public static final int INACTIVE_FIELD_NUMBER = 7;
    private long inactive_;
    /**
     * <pre>
     * Inactive virtual memory (bytes).
     * </pre>
     *
     * <code>int64 inactive = 7;</code>
     * @return The inactive.
     */
    @java.lang.Override
    public long getInactive() {
      return inactive_;
    }

    public static final int BUFFERS_FIELD_NUMBER = 8;
    private long buffers_;
    /**
     * <pre>
     * Memory used by kernel buffers.
     * </pre>
     *
     * <code>int64 buffers = 8;</code>
     * @return The buffers.
     */
    @java.lang.Override
    public long getBuffers() {
      return buffers_;
    }

    public static final int CACHED_FIELD_NUMBER = 9;
    private long cached_;
    /**
     * <pre>
     * Memory used by the page cache and slabs.
     * </pre>
     *
     * <code>int64 cached = 9;</code>
     * @return The cached.
     */
    @java.lang.Override
    public long getCached() {
      return cached_;
    }

    public static final int SHARED_FIELD_NUMBER = 10;
    private long shared_;
    /**
     * <pre>
     * Memory that may be simultaneously accessed by multiple processes (tmpfs).
     * </pre>
     *
     * <code>int64 shared = 10;</code>
     * @return The shared.
     */
    @java.lang.Override
    public long getShared() {
      return shared_;
    }

    public static final int SLAB_FIELD_NUMBER = 11;
    private long slab_;
    /**
     * <pre>
     * Combination of caches for kernel objects.
     * </pre>
     *
     * <code>int64 slab = 11;</code>
     * @return The slab.
     */
    @java.lang.Override
    public long getSlab() {
      return slab_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (total_ != 0L) {
        output.writeInt64(1, total_);
      }
      if (used_ != 0L) {
        output.writeInt64(2, used_);
      }
      if (free_ != 0L) {
        output.writeInt64(3, free_);
      }
      if (java.lang.Double.doubleToRawLongBits(percent_) != 0) {
        output.writeDouble(4, percent_);
      }
      if (available_ != 0L) {
        output.writeInt64(5, available_);
      }
      if (active_ != 0L) {
        output.writeInt64(6, active_);
      }
      if (inactive_ != 0L) {
        output.writeInt64(7, inactive_);
      }
      if (buffers_ != 0L) {
        output.writeInt64(8, buffers_);
      }
      if (cached_ != 0L) {
        output.writeInt64(9, cached_);
      }
      if (shared_ != 0L) {
        output.writeInt64(10, shared_);
      }
      if (slab_ != 0L) {
        output.writeInt64(11, slab_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (total_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, total_);
      }
      if (used_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, used_);
      }
      if (free_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, free_);
      }
      if (java.lang.Double.doubleToRawLongBits(percent_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(4, percent_);
      }
      if (available_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, available_);
      }
      if (active_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(6, active_);
      }
      if (inactive_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(7, inactive_);
      }
      if (buffers_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(8, buffers_);
      }
      if (cached_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(9, cached_);
      }
      if (shared_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(10, shared_);
      }
      if (slab_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(11, slab_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory) obj;

      if (getTotal()
          != other.getTotal()) return false;
      if (getUsed()
          != other.getUsed()) return false;
      if (getFree()
          != other.getFree()) return false;
      if (java.lang.Double.doubleToLongBits(getPercent())
          != java.lang.Double.doubleToLongBits(
              other.getPercent())) return false;
      if (getAvailable()
          != other.getAvailable()) return false;
      if (getActive()
          != other.getActive()) return false;
      if (getInactive()
          != other.getInactive()) return false;
      if (getBuffers()
          != other.getBuffers()) return false;
      if (getCached()
          != other.getCached()) return false;
      if (getShared()
          != other.getShared()) return false;
      if (getSlab()
          != other.getSlab()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + TOTAL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTotal());
      hash = (37 * hash) + USED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getUsed());
      hash = (37 * hash) + FREE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getFree());
      hash = (37 * hash) + PERCENT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getPercent()));
      hash = (37 * hash) + AVAILABLE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getAvailable());
      hash = (37 * hash) + ACTIVE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getActive());
      hash = (37 * hash) + INACTIVE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getInactive());
      hash = (37 * hash) + BUFFERS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getBuffers());
      hash = (37 * hash) + CACHED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getCached());
      hash = (37 * hash) + SHARED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getShared());
      hash = (37 * hash) + SLAB_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getSlab());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds virtual memory related metrics.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.VirtualMemory}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.VirtualMemory)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemoryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_VirtualMemory_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_VirtualMemory_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        total_ = 0L;

        used_ = 0L;

        free_ = 0L;

        percent_ = 0D;

        available_ = 0L;

        active_ = 0L;

        inactive_ = 0L;

        buffers_ = 0L;

        cached_ = 0L;

        shared_ = 0L;

        slab_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_VirtualMemory_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory(this);
        result.total_ = total_;
        result.used_ = used_;
        result.free_ = free_;
        result.percent_ = percent_;
        result.available_ = available_;
        result.active_ = active_;
        result.inactive_ = inactive_;
        result.buffers_ = buffers_;
        result.cached_ = cached_;
        result.shared_ = shared_;
        result.slab_ = slab_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory.getDefaultInstance()) return this;
        if (other.getTotal() != 0L) {
          setTotal(other.getTotal());
        }
        if (other.getUsed() != 0L) {
          setUsed(other.getUsed());
        }
        if (other.getFree() != 0L) {
          setFree(other.getFree());
        }
        if (other.getPercent() != 0D) {
          setPercent(other.getPercent());
        }
        if (other.getAvailable() != 0L) {
          setAvailable(other.getAvailable());
        }
        if (other.getActive() != 0L) {
          setActive(other.getActive());
        }
        if (other.getInactive() != 0L) {
          setInactive(other.getInactive());
        }
        if (other.getBuffers() != 0L) {
          setBuffers(other.getBuffers());
        }
        if (other.getCached() != 0L) {
          setCached(other.getCached());
        }
        if (other.getShared() != 0L) {
          setShared(other.getShared());
        }
        if (other.getSlab() != 0L) {
          setSlab(other.getSlab());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                total_ = input.readInt64();

                break;
              } // case 8
              case 16: {
                used_ = input.readInt64();

                break;
              } // case 16
              case 24: {
                free_ = input.readInt64();

                break;
              } // case 24
              case 33: {
                percent_ = input.readDouble();

                break;
              } // case 33
              case 40: {
                available_ = input.readInt64();

                break;
              } // case 40
              case 48: {
                active_ = input.readInt64();

                break;
              } // case 48
              case 56: {
                inactive_ = input.readInt64();

                break;
              } // case 56
              case 64: {
                buffers_ = input.readInt64();

                break;
              } // case 64
              case 72: {
                cached_ = input.readInt64();

                break;
              } // case 72
              case 80: {
                shared_ = input.readInt64();

                break;
              } // case 80
              case 88: {
                slab_ = input.readInt64();

                break;
              } // case 88
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private long total_ ;
      /**
       * <pre>
       * Total (physical) RAM (bytes) - exclusive swap.
       * </pre>
       *
       * <code>int64 total = 1;</code>
       * @return The total.
       */
      @java.lang.Override
      public long getTotal() {
        return total_;
      }
      /**
       * <pre>
       * Total (physical) RAM (bytes) - exclusive swap.
       * </pre>
       *
       * <code>int64 total = 1;</code>
       * @param value The total to set.
       * @return This builder for chaining.
       */
      public Builder setTotal(long value) {
        
        total_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Total (physical) RAM (bytes) - exclusive swap.
       * </pre>
       *
       * <code>int64 total = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearTotal() {
        
        total_ = 0L;
        onChanged();
        return this;
      }

      private long used_ ;
      /**
       * <pre>
       * Abount of virtual memory in use.
       * </pre>
       *
       * <code>int64 used = 2;</code>
       * @return The used.
       */
      @java.lang.Override
      public long getUsed() {
        return used_;
      }
      /**
       * <pre>
       * Abount of virtual memory in use.
       * </pre>
       *
       * <code>int64 used = 2;</code>
       * @param value The used to set.
       * @return This builder for chaining.
       */
      public Builder setUsed(long value) {
        
        used_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Abount of virtual memory in use.
       * </pre>
       *
       * <code>int64 used = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearUsed() {
        
        used_ = 0L;
        onChanged();
        return this;
      }

      private long free_ ;
      /**
       * <pre>
       * Memory (bytes) that is not in use.
       * </pre>
       *
       * <code>int64 free = 3;</code>
       * @return The free.
       */
      @java.lang.Override
      public long getFree() {
        return free_;
      }
      /**
       * <pre>
       * Memory (bytes) that is not in use.
       * </pre>
       *
       * <code>int64 free = 3;</code>
       * @param value The free to set.
       * @return This builder for chaining.
       */
      public Builder setFree(long value) {
        
        free_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Memory (bytes) that is not in use.
       * </pre>
       *
       * <code>int64 free = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearFree() {
        
        free_ = 0L;
        onChanged();
        return this;
      }

      private double percent_ ;
      /**
       * <pre>
       * Percentage of the memory usage.
       * </pre>
       *
       * <code>double percent = 4;</code>
       * @return The percent.
       */
      @java.lang.Override
      public double getPercent() {
        return percent_;
      }
      /**
       * <pre>
       * Percentage of the memory usage.
       * </pre>
       *
       * <code>double percent = 4;</code>
       * @param value The percent to set.
       * @return This builder for chaining.
       */
      public Builder setPercent(double value) {
        
        percent_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Percentage of the memory usage.
       * </pre>
       *
       * <code>double percent = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearPercent() {
        
        percent_ = 0D;
        onChanged();
        return this;
      }

      private long available_ ;
      /**
       * <pre>
       * Available memory (bytes) for starting new applications, without swapping.
       * </pre>
       *
       * <code>int64 available = 5;</code>
       * @return The available.
       */
      @java.lang.Override
      public long getAvailable() {
        return available_;
      }
      /**
       * <pre>
       * Available memory (bytes) for starting new applications, without swapping.
       * </pre>
       *
       * <code>int64 available = 5;</code>
       * @param value The available to set.
       * @return This builder for chaining.
       */
      public Builder setAvailable(long value) {
        
        available_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Available memory (bytes) for starting new applications, without swapping.
       * </pre>
       *
       * <code>int64 available = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearAvailable() {
        
        available_ = 0L;
        onChanged();
        return this;
      }

      private long active_ ;
      /**
       * <pre>
       * Memory currently in use or very recently used (bytes).
       * </pre>
       *
       * <code>int64 active = 6;</code>
       * @return The active.
       */
      @java.lang.Override
      public long getActive() {
        return active_;
      }
      /**
       * <pre>
       * Memory currently in use or very recently used (bytes).
       * </pre>
       *
       * <code>int64 active = 6;</code>
       * @param value The active to set.
       * @return This builder for chaining.
       */
      public Builder setActive(long value) {
        
        active_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Memory currently in use or very recently used (bytes).
       * </pre>
       *
       * <code>int64 active = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearActive() {
        
        active_ = 0L;
        onChanged();
        return this;
      }

      private long inactive_ ;
      /**
       * <pre>
       * Inactive virtual memory (bytes).
       * </pre>
       *
       * <code>int64 inactive = 7;</code>
       * @return The inactive.
       */
      @java.lang.Override
      public long getInactive() {
        return inactive_;
      }
      /**
       * <pre>
       * Inactive virtual memory (bytes).
       * </pre>
       *
       * <code>int64 inactive = 7;</code>
       * @param value The inactive to set.
       * @return This builder for chaining.
       */
      public Builder setInactive(long value) {
        
        inactive_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Inactive virtual memory (bytes).
       * </pre>
       *
       * <code>int64 inactive = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearInactive() {
        
        inactive_ = 0L;
        onChanged();
        return this;
      }

      private long buffers_ ;
      /**
       * <pre>
       * Memory used by kernel buffers.
       * </pre>
       *
       * <code>int64 buffers = 8;</code>
       * @return The buffers.
       */
      @java.lang.Override
      public long getBuffers() {
        return buffers_;
      }
      /**
       * <pre>
       * Memory used by kernel buffers.
       * </pre>
       *
       * <code>int64 buffers = 8;</code>
       * @param value The buffers to set.
       * @return This builder for chaining.
       */
      public Builder setBuffers(long value) {
        
        buffers_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Memory used by kernel buffers.
       * </pre>
       *
       * <code>int64 buffers = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearBuffers() {
        
        buffers_ = 0L;
        onChanged();
        return this;
      }

      private long cached_ ;
      /**
       * <pre>
       * Memory used by the page cache and slabs.
       * </pre>
       *
       * <code>int64 cached = 9;</code>
       * @return The cached.
       */
      @java.lang.Override
      public long getCached() {
        return cached_;
      }
      /**
       * <pre>
       * Memory used by the page cache and slabs.
       * </pre>
       *
       * <code>int64 cached = 9;</code>
       * @param value The cached to set.
       * @return This builder for chaining.
       */
      public Builder setCached(long value) {
        
        cached_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Memory used by the page cache and slabs.
       * </pre>
       *
       * <code>int64 cached = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearCached() {
        
        cached_ = 0L;
        onChanged();
        return this;
      }

      private long shared_ ;
      /**
       * <pre>
       * Memory that may be simultaneously accessed by multiple processes (tmpfs).
       * </pre>
       *
       * <code>int64 shared = 10;</code>
       * @return The shared.
       */
      @java.lang.Override
      public long getShared() {
        return shared_;
      }
      /**
       * <pre>
       * Memory that may be simultaneously accessed by multiple processes (tmpfs).
       * </pre>
       *
       * <code>int64 shared = 10;</code>
       * @param value The shared to set.
       * @return This builder for chaining.
       */
      public Builder setShared(long value) {
        
        shared_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Memory that may be simultaneously accessed by multiple processes (tmpfs).
       * </pre>
       *
       * <code>int64 shared = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearShared() {
        
        shared_ = 0L;
        onChanged();
        return this;
      }

      private long slab_ ;
      /**
       * <pre>
       * Combination of caches for kernel objects.
       * </pre>
       *
       * <code>int64 slab = 11;</code>
       * @return The slab.
       */
      @java.lang.Override
      public long getSlab() {
        return slab_;
      }
      /**
       * <pre>
       * Combination of caches for kernel objects.
       * </pre>
       *
       * <code>int64 slab = 11;</code>
       * @param value The slab to set.
       * @return This builder for chaining.
       */
      public Builder setSlab(long value) {
        
        slab_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Combination of caches for kernel objects.
       * </pre>
       *
       * <code>int64 slab = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearSlab() {
        
        slab_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.VirtualMemory)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.VirtualMemory)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<VirtualMemory>
        PARSER = new com.google.protobuf.AbstractParser<VirtualMemory>() {
      @java.lang.Override
      public VirtualMemory parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<VirtualMemory> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<VirtualMemory> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.VirtualMemory getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface SwapMemoryOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.SwapMemory)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Amount of swap memory (bytes) that is not used.
     * </pre>
     *
     * <code>int64 free = 1;</code>
     * @return The free.
     */
    long getFree();

    /**
     * <pre>
     * Percentage of swap memory (bytes) that is in use.
     * </pre>
     *
     * <code>double percent = 2;</code>
     * @return The percent.
     */
    double getPercent();

    /**
     * <pre>
     * Number of bytes the system has swapped in.
     * </pre>
     *
     * <code>int64 sin = 3;</code>
     * @return The sin.
     */
    long getSin();

    /**
     * <pre>
     * Number of bytes the system has swapped out.
     * </pre>
     *
     * <code>int64 sout = 4;</code>
     * @return The sout.
     */
    long getSout();

    /**
     * <pre>
     * Total amount of swap memory (bytes).
     * </pre>
     *
     * <code>int64 total = 5;</code>
     * @return The total.
     */
    long getTotal();

    /**
     * <pre>
     * Amount of swam memory (bytes) that is in use.
     * </pre>
     *
     * <code>int64 used = 6;</code>
     * @return The used.
     */
    long getUsed();
  }
  /**
   * <pre>
   * Holds swap memory related metrics.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.SwapMemory}
   */
  public static final class SwapMemory extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.SwapMemory)
      SwapMemoryOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use SwapMemory.newBuilder() to construct.
    private SwapMemory(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private SwapMemory() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new SwapMemory();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SwapMemory_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SwapMemory_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory.Builder.class);
    }

    public static final int FREE_FIELD_NUMBER = 1;
    private long free_;
    /**
     * <pre>
     * Amount of swap memory (bytes) that is not used.
     * </pre>
     *
     * <code>int64 free = 1;</code>
     * @return The free.
     */
    @java.lang.Override
    public long getFree() {
      return free_;
    }

    public static final int PERCENT_FIELD_NUMBER = 2;
    private double percent_;
    /**
     * <pre>
     * Percentage of swap memory (bytes) that is in use.
     * </pre>
     *
     * <code>double percent = 2;</code>
     * @return The percent.
     */
    @java.lang.Override
    public double getPercent() {
      return percent_;
    }

    public static final int SIN_FIELD_NUMBER = 3;
    private long sin_;
    /**
     * <pre>
     * Number of bytes the system has swapped in.
     * </pre>
     *
     * <code>int64 sin = 3;</code>
     * @return The sin.
     */
    @java.lang.Override
    public long getSin() {
      return sin_;
    }

    public static final int SOUT_FIELD_NUMBER = 4;
    private long sout_;
    /**
     * <pre>
     * Number of bytes the system has swapped out.
     * </pre>
     *
     * <code>int64 sout = 4;</code>
     * @return The sout.
     */
    @java.lang.Override
    public long getSout() {
      return sout_;
    }

    public static final int TOTAL_FIELD_NUMBER = 5;
    private long total_;
    /**
     * <pre>
     * Total amount of swap memory (bytes).
     * </pre>
     *
     * <code>int64 total = 5;</code>
     * @return The total.
     */
    @java.lang.Override
    public long getTotal() {
      return total_;
    }

    public static final int USED_FIELD_NUMBER = 6;
    private long used_;
    /**
     * <pre>
     * Amount of swam memory (bytes) that is in use.
     * </pre>
     *
     * <code>int64 used = 6;</code>
     * @return The used.
     */
    @java.lang.Override
    public long getUsed() {
      return used_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (free_ != 0L) {
        output.writeInt64(1, free_);
      }
      if (java.lang.Double.doubleToRawLongBits(percent_) != 0) {
        output.writeDouble(2, percent_);
      }
      if (sin_ != 0L) {
        output.writeInt64(3, sin_);
      }
      if (sout_ != 0L) {
        output.writeInt64(4, sout_);
      }
      if (total_ != 0L) {
        output.writeInt64(5, total_);
      }
      if (used_ != 0L) {
        output.writeInt64(6, used_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (free_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, free_);
      }
      if (java.lang.Double.doubleToRawLongBits(percent_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(2, percent_);
      }
      if (sin_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, sin_);
      }
      if (sout_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, sout_);
      }
      if (total_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, total_);
      }
      if (used_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(6, used_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory) obj;

      if (getFree()
          != other.getFree()) return false;
      if (java.lang.Double.doubleToLongBits(getPercent())
          != java.lang.Double.doubleToLongBits(
              other.getPercent())) return false;
      if (getSin()
          != other.getSin()) return false;
      if (getSout()
          != other.getSout()) return false;
      if (getTotal()
          != other.getTotal()) return false;
      if (getUsed()
          != other.getUsed()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + FREE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getFree());
      hash = (37 * hash) + PERCENT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getPercent()));
      hash = (37 * hash) + SIN_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getSin());
      hash = (37 * hash) + SOUT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getSout());
      hash = (37 * hash) + TOTAL_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTotal());
      hash = (37 * hash) + USED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getUsed());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds swap memory related metrics.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.SwapMemory}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.SwapMemory)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemoryOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SwapMemory_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SwapMemory_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        free_ = 0L;

        percent_ = 0D;

        sin_ = 0L;

        sout_ = 0L;

        total_ = 0L;

        used_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_SwapMemory_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory(this);
        result.free_ = free_;
        result.percent_ = percent_;
        result.sin_ = sin_;
        result.sout_ = sout_;
        result.total_ = total_;
        result.used_ = used_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory.getDefaultInstance()) return this;
        if (other.getFree() != 0L) {
          setFree(other.getFree());
        }
        if (other.getPercent() != 0D) {
          setPercent(other.getPercent());
        }
        if (other.getSin() != 0L) {
          setSin(other.getSin());
        }
        if (other.getSout() != 0L) {
          setSout(other.getSout());
        }
        if (other.getTotal() != 0L) {
          setTotal(other.getTotal());
        }
        if (other.getUsed() != 0L) {
          setUsed(other.getUsed());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                free_ = input.readInt64();

                break;
              } // case 8
              case 17: {
                percent_ = input.readDouble();

                break;
              } // case 17
              case 24: {
                sin_ = input.readInt64();

                break;
              } // case 24
              case 32: {
                sout_ = input.readInt64();

                break;
              } // case 32
              case 40: {
                total_ = input.readInt64();

                break;
              } // case 40
              case 48: {
                used_ = input.readInt64();

                break;
              } // case 48
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private long free_ ;
      /**
       * <pre>
       * Amount of swap memory (bytes) that is not used.
       * </pre>
       *
       * <code>int64 free = 1;</code>
       * @return The free.
       */
      @java.lang.Override
      public long getFree() {
        return free_;
      }
      /**
       * <pre>
       * Amount of swap memory (bytes) that is not used.
       * </pre>
       *
       * <code>int64 free = 1;</code>
       * @param value The free to set.
       * @return This builder for chaining.
       */
      public Builder setFree(long value) {
        
        free_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Amount of swap memory (bytes) that is not used.
       * </pre>
       *
       * <code>int64 free = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearFree() {
        
        free_ = 0L;
        onChanged();
        return this;
      }

      private double percent_ ;
      /**
       * <pre>
       * Percentage of swap memory (bytes) that is in use.
       * </pre>
       *
       * <code>double percent = 2;</code>
       * @return The percent.
       */
      @java.lang.Override
      public double getPercent() {
        return percent_;
      }
      /**
       * <pre>
       * Percentage of swap memory (bytes) that is in use.
       * </pre>
       *
       * <code>double percent = 2;</code>
       * @param value The percent to set.
       * @return This builder for chaining.
       */
      public Builder setPercent(double value) {
        
        percent_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Percentage of swap memory (bytes) that is in use.
       * </pre>
       *
       * <code>double percent = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPercent() {
        
        percent_ = 0D;
        onChanged();
        return this;
      }

      private long sin_ ;
      /**
       * <pre>
       * Number of bytes the system has swapped in.
       * </pre>
       *
       * <code>int64 sin = 3;</code>
       * @return The sin.
       */
      @java.lang.Override
      public long getSin() {
        return sin_;
      }
      /**
       * <pre>
       * Number of bytes the system has swapped in.
       * </pre>
       *
       * <code>int64 sin = 3;</code>
       * @param value The sin to set.
       * @return This builder for chaining.
       */
      public Builder setSin(long value) {
        
        sin_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of bytes the system has swapped in.
       * </pre>
       *
       * <code>int64 sin = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearSin() {
        
        sin_ = 0L;
        onChanged();
        return this;
      }

      private long sout_ ;
      /**
       * <pre>
       * Number of bytes the system has swapped out.
       * </pre>
       *
       * <code>int64 sout = 4;</code>
       * @return The sout.
       */
      @java.lang.Override
      public long getSout() {
        return sout_;
      }
      /**
       * <pre>
       * Number of bytes the system has swapped out.
       * </pre>
       *
       * <code>int64 sout = 4;</code>
       * @param value The sout to set.
       * @return This builder for chaining.
       */
      public Builder setSout(long value) {
        
        sout_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of bytes the system has swapped out.
       * </pre>
       *
       * <code>int64 sout = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearSout() {
        
        sout_ = 0L;
        onChanged();
        return this;
      }

      private long total_ ;
      /**
       * <pre>
       * Total amount of swap memory (bytes).
       * </pre>
       *
       * <code>int64 total = 5;</code>
       * @return The total.
       */
      @java.lang.Override
      public long getTotal() {
        return total_;
      }
      /**
       * <pre>
       * Total amount of swap memory (bytes).
       * </pre>
       *
       * <code>int64 total = 5;</code>
       * @param value The total to set.
       * @return This builder for chaining.
       */
      public Builder setTotal(long value) {
        
        total_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Total amount of swap memory (bytes).
       * </pre>
       *
       * <code>int64 total = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTotal() {
        
        total_ = 0L;
        onChanged();
        return this;
      }

      private long used_ ;
      /**
       * <pre>
       * Amount of swam memory (bytes) that is in use.
       * </pre>
       *
       * <code>int64 used = 6;</code>
       * @return The used.
       */
      @java.lang.Override
      public long getUsed() {
        return used_;
      }
      /**
       * <pre>
       * Amount of swam memory (bytes) that is in use.
       * </pre>
       *
       * <code>int64 used = 6;</code>
       * @param value The used to set.
       * @return This builder for chaining.
       */
      public Builder setUsed(long value) {
        
        used_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Amount of swam memory (bytes) that is in use.
       * </pre>
       *
       * <code>int64 used = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearUsed() {
        
        used_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.SwapMemory)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.SwapMemory)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<SwapMemory>
        PARSER = new com.google.protobuf.AbstractParser<SwapMemory>() {
      @java.lang.Override
      public SwapMemory parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<SwapMemory> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<SwapMemory> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.SwapMemory getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CmServiceHealthCheckEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.CmServiceHealthCheckEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Name of the CM service.
     * </pre>
     *
     * <code>string serviceName = 1;</code>
     * @return The serviceName.
     */
    java.lang.String getServiceName();
    /**
     * <pre>
     * Name of the CM service.
     * </pre>
     *
     * <code>string serviceName = 1;</code>
     * @return The bytes for serviceName.
     */
    com.google.protobuf.ByteString
        getServiceNameBytes();

    /**
     * <pre>
     * Type of the CM service.
     * </pre>
     *
     * <code>string serviceType = 2;</code>
     * @return The serviceType.
     */
    java.lang.String getServiceType();
    /**
     * <pre>
     * Type of the CM service.
     * </pre>
     *
     * <code>string serviceType = 2;</code>
     * @return The bytes for serviceType.
     */
    com.google.protobuf.ByteString
        getServiceTypeBytes();

    /**
     * <pre>
     * Name of the health status check.
     * </pre>
     *
     * <code>string name = 3;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name of the health status check.
     * </pre>
     *
     * <code>string name = 3;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Health status.
     * </pre>
     *
     * <code>string value = 4;</code>
     * @return The value.
     */
    java.lang.String getValue();
    /**
     * <pre>
     * Health status.
     * </pre>
     *
     * <code>string value = 4;</code>
     * @return The bytes for value.
     */
    com.google.protobuf.ByteString
        getValueBytes();

    /**
     * <pre>
     * Explanation for health status.
     * </pre>
     *
     * <code>string explanation = 5;</code>
     * @return The explanation.
     */
    java.lang.String getExplanation();
    /**
     * <pre>
     * Explanation for health status.
     * </pre>
     *
     * <code>string explanation = 5;</code>
     * @return The bytes for explanation.
     */
    com.google.protobuf.ByteString
        getExplanationBytes();

    /**
     * <pre>
     * Timestamp of the CM service health record.
     * </pre>
     *
     * <code>int64 timestamp = 6;</code>
     * @return The timestamp.
     */
    long getTimestamp();

    /**
     * <pre>
     * Common cluster related data (optional - can be filled from NodeStatusReport as well).
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 7;</code>
     * @return Whether the clusterDetails field is set.
     */
    boolean hasClusterDetails();
    /**
     * <pre>
     * Common cluster related data (optional - can be filled from NodeStatusReport as well).
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 7;</code>
     * @return The clusterDetails.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getClusterDetails();
    /**
     * <pre>
     * Common cluster related data (optional - can be filled from NodeStatusReport as well).
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 7;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder getClusterDetailsOrBuilder();
  }
  /**
   * <pre>
   * Holds CM service related health status.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.CmServiceHealthCheckEvent}
   */
  public static final class CmServiceHealthCheckEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.CmServiceHealthCheckEvent)
      CmServiceHealthCheckEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CmServiceHealthCheckEvent.newBuilder() to construct.
    private CmServiceHealthCheckEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CmServiceHealthCheckEvent() {
      serviceName_ = "";
      serviceType_ = "";
      name_ = "";
      value_ = "";
      explanation_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CmServiceHealthCheckEvent();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmServiceHealthCheckEvent_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmServiceHealthCheckEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.Builder.class);
    }

    public static final int SERVICENAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object serviceName_;
    /**
     * <pre>
     * Name of the CM service.
     * </pre>
     *
     * <code>string serviceName = 1;</code>
     * @return The serviceName.
     */
    @java.lang.Override
    public java.lang.String getServiceName() {
      java.lang.Object ref = serviceName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        serviceName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Name of the CM service.
     * </pre>
     *
     * <code>string serviceName = 1;</code>
     * @return The bytes for serviceName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getServiceNameBytes() {
      java.lang.Object ref = serviceName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        serviceName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SERVICETYPE_FIELD_NUMBER = 2;
    private volatile java.lang.Object serviceType_;
    /**
     * <pre>
     * Type of the CM service.
     * </pre>
     *
     * <code>string serviceType = 2;</code>
     * @return The serviceType.
     */
    @java.lang.Override
    public java.lang.String getServiceType() {
      java.lang.Object ref = serviceType_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        serviceType_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Type of the CM service.
     * </pre>
     *
     * <code>string serviceType = 2;</code>
     * @return The bytes for serviceType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getServiceTypeBytes() {
      java.lang.Object ref = serviceType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        serviceType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NAME_FIELD_NUMBER = 3;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * Name of the health status check.
     * </pre>
     *
     * <code>string name = 3;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Name of the health status check.
     * </pre>
     *
     * <code>string name = 3;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_FIELD_NUMBER = 4;
    private volatile java.lang.Object value_;
    /**
     * <pre>
     * Health status.
     * </pre>
     *
     * <code>string value = 4;</code>
     * @return The value.
     */
    @java.lang.Override
    public java.lang.String getValue() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        value_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Health status.
     * </pre>
     *
     * <code>string value = 4;</code>
     * @return The bytes for value.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getValueBytes() {
      java.lang.Object ref = value_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        value_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EXPLANATION_FIELD_NUMBER = 5;
    private volatile java.lang.Object explanation_;
    /**
     * <pre>
     * Explanation for health status.
     * </pre>
     *
     * <code>string explanation = 5;</code>
     * @return The explanation.
     */
    @java.lang.Override
    public java.lang.String getExplanation() {
      java.lang.Object ref = explanation_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        explanation_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Explanation for health status.
     * </pre>
     *
     * <code>string explanation = 5;</code>
     * @return The bytes for explanation.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getExplanationBytes() {
      java.lang.Object ref = explanation_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        explanation_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 6;
    private long timestamp_;
    /**
     * <pre>
     * Timestamp of the CM service health record.
     * </pre>
     *
     * <code>int64 timestamp = 6;</code>
     * @return The timestamp.
     */
    @java.lang.Override
    public long getTimestamp() {
      return timestamp_;
    }

    public static final int CLUSTERDETAILS_FIELD_NUMBER = 7;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails clusterDetails_;
    /**
     * <pre>
     * Common cluster related data (optional - can be filled from NodeStatusReport as well).
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 7;</code>
     * @return Whether the clusterDetails field is set.
     */
    @java.lang.Override
    public boolean hasClusterDetails() {
      return clusterDetails_ != null;
    }
    /**
     * <pre>
     * Common cluster related data (optional - can be filled from NodeStatusReport as well).
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 7;</code>
     * @return The clusterDetails.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getClusterDetails() {
      return clusterDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance() : clusterDetails_;
    }
    /**
     * <pre>
     * Common cluster related data (optional - can be filled from NodeStatusReport as well).
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 7;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder getClusterDetailsOrBuilder() {
      return getClusterDetails();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, serviceName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceType_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, serviceType_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(value_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, value_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(explanation_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, explanation_);
      }
      if (timestamp_ != 0L) {
        output.writeInt64(6, timestamp_);
      }
      if (clusterDetails_ != null) {
        output.writeMessage(7, getClusterDetails());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, serviceName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceType_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, serviceType_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(value_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, value_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(explanation_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, explanation_);
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(6, timestamp_);
      }
      if (clusterDetails_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(7, getClusterDetails());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent) obj;

      if (!getServiceName()
          .equals(other.getServiceName())) return false;
      if (!getServiceType()
          .equals(other.getServiceType())) return false;
      if (!getName()
          .equals(other.getName())) return false;
      if (!getValue()
          .equals(other.getValue())) return false;
      if (!getExplanation()
          .equals(other.getExplanation())) return false;
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (hasClusterDetails() != other.hasClusterDetails()) return false;
      if (hasClusterDetails()) {
        if (!getClusterDetails()
            .equals(other.getClusterDetails())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SERVICENAME_FIELD_NUMBER;
      hash = (53 * hash) + getServiceName().hashCode();
      hash = (37 * hash) + SERVICETYPE_FIELD_NUMBER;
      hash = (53 * hash) + getServiceType().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + VALUE_FIELD_NUMBER;
      hash = (53 * hash) + getValue().hashCode();
      hash = (37 * hash) + EXPLANATION_FIELD_NUMBER;
      hash = (53 * hash) + getExplanation().hashCode();
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      if (hasClusterDetails()) {
        hash = (37 * hash) + CLUSTERDETAILS_FIELD_NUMBER;
        hash = (53 * hash) + getClusterDetails().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds CM service related health status.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.CmServiceHealthCheckEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.CmServiceHealthCheckEvent)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmServiceHealthCheckEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmServiceHealthCheckEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        serviceName_ = "";

        serviceType_ = "";

        name_ = "";

        value_ = "";

        explanation_ = "";

        timestamp_ = 0L;

        if (clusterDetailsBuilder_ == null) {
          clusterDetails_ = null;
        } else {
          clusterDetails_ = null;
          clusterDetailsBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmServiceHealthCheckEvent_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent(this);
        result.serviceName_ = serviceName_;
        result.serviceType_ = serviceType_;
        result.name_ = name_;
        result.value_ = value_;
        result.explanation_ = explanation_;
        result.timestamp_ = timestamp_;
        if (clusterDetailsBuilder_ == null) {
          result.clusterDetails_ = clusterDetails_;
        } else {
          result.clusterDetails_ = clusterDetailsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent.getDefaultInstance()) return this;
        if (!other.getServiceName().isEmpty()) {
          serviceName_ = other.serviceName_;
          onChanged();
        }
        if (!other.getServiceType().isEmpty()) {
          serviceType_ = other.serviceType_;
          onChanged();
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getValue().isEmpty()) {
          value_ = other.value_;
          onChanged();
        }
        if (!other.getExplanation().isEmpty()) {
          explanation_ = other.explanation_;
          onChanged();
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        if (other.hasClusterDetails()) {
          mergeClusterDetails(other.getClusterDetails());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                serviceName_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 18: {
                serviceType_ = input.readStringRequireUtf8();

                break;
              } // case 18
              case 26: {
                name_ = input.readStringRequireUtf8();

                break;
              } // case 26
              case 34: {
                value_ = input.readStringRequireUtf8();

                break;
              } // case 34
              case 42: {
                explanation_ = input.readStringRequireUtf8();

                break;
              } // case 42
              case 48: {
                timestamp_ = input.readInt64();

                break;
              } // case 48
              case 58: {
                input.readMessage(
                    getClusterDetailsFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 58
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private java.lang.Object serviceName_ = "";
      /**
       * <pre>
       * Name of the CM service.
       * </pre>
       *
       * <code>string serviceName = 1;</code>
       * @return The serviceName.
       */
      public java.lang.String getServiceName() {
        java.lang.Object ref = serviceName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          serviceName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Name of the CM service.
       * </pre>
       *
       * <code>string serviceName = 1;</code>
       * @return The bytes for serviceName.
       */
      public com.google.protobuf.ByteString
          getServiceNameBytes() {
        java.lang.Object ref = serviceName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          serviceName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Name of the CM service.
       * </pre>
       *
       * <code>string serviceName = 1;</code>
       * @param value The serviceName to set.
       * @return This builder for chaining.
       */
      public Builder setServiceName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        serviceName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the CM service.
       * </pre>
       *
       * <code>string serviceName = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearServiceName() {
        
        serviceName_ = getDefaultInstance().getServiceName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the CM service.
       * </pre>
       *
       * <code>string serviceName = 1;</code>
       * @param value The bytes for serviceName to set.
       * @return This builder for chaining.
       */
      public Builder setServiceNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        serviceName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object serviceType_ = "";
      /**
       * <pre>
       * Type of the CM service.
       * </pre>
       *
       * <code>string serviceType = 2;</code>
       * @return The serviceType.
       */
      public java.lang.String getServiceType() {
        java.lang.Object ref = serviceType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          serviceType_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Type of the CM service.
       * </pre>
       *
       * <code>string serviceType = 2;</code>
       * @return The bytes for serviceType.
       */
      public com.google.protobuf.ByteString
          getServiceTypeBytes() {
        java.lang.Object ref = serviceType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          serviceType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Type of the CM service.
       * </pre>
       *
       * <code>string serviceType = 2;</code>
       * @param value The serviceType to set.
       * @return This builder for chaining.
       */
      public Builder setServiceType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        serviceType_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Type of the CM service.
       * </pre>
       *
       * <code>string serviceType = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearServiceType() {
        
        serviceType_ = getDefaultInstance().getServiceType();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Type of the CM service.
       * </pre>
       *
       * <code>string serviceType = 2;</code>
       * @param value The bytes for serviceType to set.
       * @return This builder for chaining.
       */
      public Builder setServiceTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        serviceType_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * Name of the health status check.
       * </pre>
       *
       * <code>string name = 3;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Name of the health status check.
       * </pre>
       *
       * <code>string name = 3;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Name of the health status check.
       * </pre>
       *
       * <code>string name = 3;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the health status check.
       * </pre>
       *
       * <code>string name = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the health status check.
       * </pre>
       *
       * <code>string name = 3;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object value_ = "";
      /**
       * <pre>
       * Health status.
       * </pre>
       *
       * <code>string value = 4;</code>
       * @return The value.
       */
      public java.lang.String getValue() {
        java.lang.Object ref = value_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          value_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Health status.
       * </pre>
       *
       * <code>string value = 4;</code>
       * @return The bytes for value.
       */
      public com.google.protobuf.ByteString
          getValueBytes() {
        java.lang.Object ref = value_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          value_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Health status.
       * </pre>
       *
       * <code>string value = 4;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Health status.
       * </pre>
       *
       * <code>string value = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        
        value_ = getDefaultInstance().getValue();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Health status.
       * </pre>
       *
       * <code>string value = 4;</code>
       * @param value The bytes for value to set.
       * @return This builder for chaining.
       */
      public Builder setValueBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        value_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object explanation_ = "";
      /**
       * <pre>
       * Explanation for health status.
       * </pre>
       *
       * <code>string explanation = 5;</code>
       * @return The explanation.
       */
      public java.lang.String getExplanation() {
        java.lang.Object ref = explanation_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          explanation_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Explanation for health status.
       * </pre>
       *
       * <code>string explanation = 5;</code>
       * @return The bytes for explanation.
       */
      public com.google.protobuf.ByteString
          getExplanationBytes() {
        java.lang.Object ref = explanation_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          explanation_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Explanation for health status.
       * </pre>
       *
       * <code>string explanation = 5;</code>
       * @param value The explanation to set.
       * @return This builder for chaining.
       */
      public Builder setExplanation(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        explanation_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Explanation for health status.
       * </pre>
       *
       * <code>string explanation = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearExplanation() {
        
        explanation_ = getDefaultInstance().getExplanation();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Explanation for health status.
       * </pre>
       *
       * <code>string explanation = 5;</code>
       * @param value The bytes for explanation to set.
       * @return This builder for chaining.
       */
      public Builder setExplanationBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        explanation_ = value;
        onChanged();
        return this;
      }

      private long timestamp_ ;
      /**
       * <pre>
       * Timestamp of the CM service health record.
       * </pre>
       *
       * <code>int64 timestamp = 6;</code>
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       * Timestamp of the CM service health record.
       * </pre>
       *
       * <code>int64 timestamp = 6;</code>
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Timestamp of the CM service health record.
       * </pre>
       *
       * <code>int64 timestamp = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails clusterDetails_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder> clusterDetailsBuilder_;
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 7;</code>
       * @return Whether the clusterDetails field is set.
       */
      public boolean hasClusterDetails() {
        return clusterDetailsBuilder_ != null || clusterDetails_ != null;
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 7;</code>
       * @return The clusterDetails.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getClusterDetails() {
        if (clusterDetailsBuilder_ == null) {
          return clusterDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance() : clusterDetails_;
        } else {
          return clusterDetailsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 7;</code>
       */
      public Builder setClusterDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails value) {
        if (clusterDetailsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clusterDetails_ = value;
          onChanged();
        } else {
          clusterDetailsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 7;</code>
       */
      public Builder setClusterDetails(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder builderForValue) {
        if (clusterDetailsBuilder_ == null) {
          clusterDetails_ = builderForValue.build();
          onChanged();
        } else {
          clusterDetailsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 7;</code>
       */
      public Builder mergeClusterDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails value) {
        if (clusterDetailsBuilder_ == null) {
          if (clusterDetails_ != null) {
            clusterDetails_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.newBuilder(clusterDetails_).mergeFrom(value).buildPartial();
          } else {
            clusterDetails_ = value;
          }
          onChanged();
        } else {
          clusterDetailsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 7;</code>
       */
      public Builder clearClusterDetails() {
        if (clusterDetailsBuilder_ == null) {
          clusterDetails_ = null;
          onChanged();
        } else {
          clusterDetails_ = null;
          clusterDetailsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 7;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder getClusterDetailsBuilder() {
        
        onChanged();
        return getClusterDetailsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 7;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder getClusterDetailsOrBuilder() {
        if (clusterDetailsBuilder_ != null) {
          return clusterDetailsBuilder_.getMessageOrBuilder();
        } else {
          return clusterDetails_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance() : clusterDetails_;
        }
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 7;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder> 
          getClusterDetailsFieldBuilder() {
        if (clusterDetailsBuilder_ == null) {
          clusterDetailsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder>(
                  getClusterDetails(),
                  getParentForChildren(),
                  isClean());
          clusterDetails_ = null;
        }
        return clusterDetailsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.CmServiceHealthCheckEvent)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.CmServiceHealthCheckEvent)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CmServiceHealthCheckEvent>
        PARSER = new com.google.protobuf.AbstractParser<CmServiceHealthCheckEvent>() {
      @java.lang.Override
      public CmServiceHealthCheckEvent parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CmServiceHealthCheckEvent> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CmServiceHealthCheckEvent> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceHealthCheckEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CmServiceMetricEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.CmServiceMetricEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Name of the CM service.
     * </pre>
     *
     * <code>string serviceName = 1;</code>
     * @return The serviceName.
     */
    java.lang.String getServiceName();
    /**
     * <pre>
     * Name of the CM service.
     * </pre>
     *
     * <code>string serviceName = 1;</code>
     * @return The bytes for serviceName.
     */
    com.google.protobuf.ByteString
        getServiceNameBytes();

    /**
     * <pre>
     * Type of the CM service.
     * </pre>
     *
     * <code>string serviceType = 2;</code>
     * @return The serviceType.
     */
    java.lang.String getServiceType();
    /**
     * <pre>
     * Type of the CM service.
     * </pre>
     *
     * <code>string serviceType = 2;</code>
     * @return The bytes for serviceType.
     */
    com.google.protobuf.ByteString
        getServiceTypeBytes();

    /**
     * <pre>
     * Name of the CM metric.
     * </pre>
     *
     * <code>string name = 3;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name of the CM metric.
     * </pre>
     *
     * <code>string name = 3;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Floating point value of the CM metric.
     * </pre>
     *
     * <code>double value = 4;</code>
     * @return The value.
     */
    double getValue();

    /**
     * <pre>
     * Timestamp of the CM service metric record.
     * </pre>
     *
     * <code>int64 timestamp = 5;</code>
     * @return The timestamp.
     */
    long getTimestamp();

    /**
     * <pre>
     * Common cluster related data (optional - can be filled from NodeStatusReport as well).
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
     * @return Whether the clusterDetails field is set.
     */
    boolean hasClusterDetails();
    /**
     * <pre>
     * Common cluster related data (optional - can be filled from NodeStatusReport as well).
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
     * @return The clusterDetails.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getClusterDetails();
    /**
     * <pre>
     * Common cluster related data (optional - can be filled from NodeStatusReport as well).
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder getClusterDetailsOrBuilder();
  }
  /**
   * <pre>
   * Holds CM service related metric record.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.CmServiceMetricEvent}
   */
  public static final class CmServiceMetricEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.CmServiceMetricEvent)
      CmServiceMetricEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CmServiceMetricEvent.newBuilder() to construct.
    private CmServiceMetricEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CmServiceMetricEvent() {
      serviceName_ = "";
      serviceType_ = "";
      name_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CmServiceMetricEvent();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmServiceMetricEvent_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmServiceMetricEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.Builder.class);
    }

    public static final int SERVICENAME_FIELD_NUMBER = 1;
    private volatile java.lang.Object serviceName_;
    /**
     * <pre>
     * Name of the CM service.
     * </pre>
     *
     * <code>string serviceName = 1;</code>
     * @return The serviceName.
     */
    @java.lang.Override
    public java.lang.String getServiceName() {
      java.lang.Object ref = serviceName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        serviceName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Name of the CM service.
     * </pre>
     *
     * <code>string serviceName = 1;</code>
     * @return The bytes for serviceName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getServiceNameBytes() {
      java.lang.Object ref = serviceName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        serviceName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SERVICETYPE_FIELD_NUMBER = 2;
    private volatile java.lang.Object serviceType_;
    /**
     * <pre>
     * Type of the CM service.
     * </pre>
     *
     * <code>string serviceType = 2;</code>
     * @return The serviceType.
     */
    @java.lang.Override
    public java.lang.String getServiceType() {
      java.lang.Object ref = serviceType_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        serviceType_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Type of the CM service.
     * </pre>
     *
     * <code>string serviceType = 2;</code>
     * @return The bytes for serviceType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getServiceTypeBytes() {
      java.lang.Object ref = serviceType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        serviceType_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NAME_FIELD_NUMBER = 3;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * Name of the CM metric.
     * </pre>
     *
     * <code>string name = 3;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Name of the CM metric.
     * </pre>
     *
     * <code>string name = 3;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VALUE_FIELD_NUMBER = 4;
    private double value_;
    /**
     * <pre>
     * Floating point value of the CM metric.
     * </pre>
     *
     * <code>double value = 4;</code>
     * @return The value.
     */
    @java.lang.Override
    public double getValue() {
      return value_;
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 5;
    private long timestamp_;
    /**
     * <pre>
     * Timestamp of the CM service metric record.
     * </pre>
     *
     * <code>int64 timestamp = 5;</code>
     * @return The timestamp.
     */
    @java.lang.Override
    public long getTimestamp() {
      return timestamp_;
    }

    public static final int CLUSTERDETAILS_FIELD_NUMBER = 6;
    private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails clusterDetails_;
    /**
     * <pre>
     * Common cluster related data (optional - can be filled from NodeStatusReport as well).
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
     * @return Whether the clusterDetails field is set.
     */
    @java.lang.Override
    public boolean hasClusterDetails() {
      return clusterDetails_ != null;
    }
    /**
     * <pre>
     * Common cluster related data (optional - can be filled from NodeStatusReport as well).
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
     * @return The clusterDetails.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getClusterDetails() {
      return clusterDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance() : clusterDetails_;
    }
    /**
     * <pre>
     * Common cluster related data (optional - can be filled from NodeStatusReport as well).
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder getClusterDetailsOrBuilder() {
      return getClusterDetails();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, serviceName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceType_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, serviceType_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, name_);
      }
      if (java.lang.Double.doubleToRawLongBits(value_) != 0) {
        output.writeDouble(4, value_);
      }
      if (timestamp_ != 0L) {
        output.writeInt64(5, timestamp_);
      }
      if (clusterDetails_ != null) {
        output.writeMessage(6, getClusterDetails());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, serviceName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(serviceType_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, serviceType_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, name_);
      }
      if (java.lang.Double.doubleToRawLongBits(value_) != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeDoubleSize(4, value_);
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, timestamp_);
      }
      if (clusterDetails_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getClusterDetails());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent) obj;

      if (!getServiceName()
          .equals(other.getServiceName())) return false;
      if (!getServiceType()
          .equals(other.getServiceType())) return false;
      if (!getName()
          .equals(other.getName())) return false;
      if (java.lang.Double.doubleToLongBits(getValue())
          != java.lang.Double.doubleToLongBits(
              other.getValue())) return false;
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (hasClusterDetails() != other.hasClusterDetails()) return false;
      if (hasClusterDetails()) {
        if (!getClusterDetails()
            .equals(other.getClusterDetails())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + SERVICENAME_FIELD_NUMBER;
      hash = (53 * hash) + getServiceName().hashCode();
      hash = (37 * hash) + SERVICETYPE_FIELD_NUMBER;
      hash = (53 * hash) + getServiceType().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + VALUE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          java.lang.Double.doubleToLongBits(getValue()));
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      if (hasClusterDetails()) {
        hash = (37 * hash) + CLUSTERDETAILS_FIELD_NUMBER;
        hash = (53 * hash) + getClusterDetails().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds CM service related metric record.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.CmServiceMetricEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.CmServiceMetricEvent)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmServiceMetricEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmServiceMetricEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        serviceName_ = "";

        serviceType_ = "";

        name_ = "";

        value_ = 0D;

        timestamp_ = 0L;

        if (clusterDetailsBuilder_ == null) {
          clusterDetails_ = null;
        } else {
          clusterDetails_ = null;
          clusterDetailsBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_CmServiceMetricEvent_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent(this);
        result.serviceName_ = serviceName_;
        result.serviceType_ = serviceType_;
        result.name_ = name_;
        result.value_ = value_;
        result.timestamp_ = timestamp_;
        if (clusterDetailsBuilder_ == null) {
          result.clusterDetails_ = clusterDetails_;
        } else {
          result.clusterDetails_ = clusterDetailsBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent.getDefaultInstance()) return this;
        if (!other.getServiceName().isEmpty()) {
          serviceName_ = other.serviceName_;
          onChanged();
        }
        if (!other.getServiceType().isEmpty()) {
          serviceType_ = other.serviceType_;
          onChanged();
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.getValue() != 0D) {
          setValue(other.getValue());
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        if (other.hasClusterDetails()) {
          mergeClusterDetails(other.getClusterDetails());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                serviceName_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 18: {
                serviceType_ = input.readStringRequireUtf8();

                break;
              } // case 18
              case 26: {
                name_ = input.readStringRequireUtf8();

                break;
              } // case 26
              case 33: {
                value_ = input.readDouble();

                break;
              } // case 33
              case 40: {
                timestamp_ = input.readInt64();

                break;
              } // case 40
              case 50: {
                input.readMessage(
                    getClusterDetailsFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 50
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private java.lang.Object serviceName_ = "";
      /**
       * <pre>
       * Name of the CM service.
       * </pre>
       *
       * <code>string serviceName = 1;</code>
       * @return The serviceName.
       */
      public java.lang.String getServiceName() {
        java.lang.Object ref = serviceName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          serviceName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Name of the CM service.
       * </pre>
       *
       * <code>string serviceName = 1;</code>
       * @return The bytes for serviceName.
       */
      public com.google.protobuf.ByteString
          getServiceNameBytes() {
        java.lang.Object ref = serviceName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          serviceName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Name of the CM service.
       * </pre>
       *
       * <code>string serviceName = 1;</code>
       * @param value The serviceName to set.
       * @return This builder for chaining.
       */
      public Builder setServiceName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        serviceName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the CM service.
       * </pre>
       *
       * <code>string serviceName = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearServiceName() {
        
        serviceName_ = getDefaultInstance().getServiceName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the CM service.
       * </pre>
       *
       * <code>string serviceName = 1;</code>
       * @param value The bytes for serviceName to set.
       * @return This builder for chaining.
       */
      public Builder setServiceNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        serviceName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object serviceType_ = "";
      /**
       * <pre>
       * Type of the CM service.
       * </pre>
       *
       * <code>string serviceType = 2;</code>
       * @return The serviceType.
       */
      public java.lang.String getServiceType() {
        java.lang.Object ref = serviceType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          serviceType_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Type of the CM service.
       * </pre>
       *
       * <code>string serviceType = 2;</code>
       * @return The bytes for serviceType.
       */
      public com.google.protobuf.ByteString
          getServiceTypeBytes() {
        java.lang.Object ref = serviceType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          serviceType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Type of the CM service.
       * </pre>
       *
       * <code>string serviceType = 2;</code>
       * @param value The serviceType to set.
       * @return This builder for chaining.
       */
      public Builder setServiceType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        serviceType_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Type of the CM service.
       * </pre>
       *
       * <code>string serviceType = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearServiceType() {
        
        serviceType_ = getDefaultInstance().getServiceType();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Type of the CM service.
       * </pre>
       *
       * <code>string serviceType = 2;</code>
       * @param value The bytes for serviceType to set.
       * @return This builder for chaining.
       */
      public Builder setServiceTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        serviceType_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * Name of the CM metric.
       * </pre>
       *
       * <code>string name = 3;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Name of the CM metric.
       * </pre>
       *
       * <code>string name = 3;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Name of the CM metric.
       * </pre>
       *
       * <code>string name = 3;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the CM metric.
       * </pre>
       *
       * <code>string name = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the CM metric.
       * </pre>
       *
       * <code>string name = 3;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private double value_ ;
      /**
       * <pre>
       * Floating point value of the CM metric.
       * </pre>
       *
       * <code>double value = 4;</code>
       * @return The value.
       */
      @java.lang.Override
      public double getValue() {
        return value_;
      }
      /**
       * <pre>
       * Floating point value of the CM metric.
       * </pre>
       *
       * <code>double value = 4;</code>
       * @param value The value to set.
       * @return This builder for chaining.
       */
      public Builder setValue(double value) {
        
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Floating point value of the CM metric.
       * </pre>
       *
       * <code>double value = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearValue() {
        
        value_ = 0D;
        onChanged();
        return this;
      }

      private long timestamp_ ;
      /**
       * <pre>
       * Timestamp of the CM service metric record.
       * </pre>
       *
       * <code>int64 timestamp = 5;</code>
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       * Timestamp of the CM service metric record.
       * </pre>
       *
       * <code>int64 timestamp = 5;</code>
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Timestamp of the CM service metric record.
       * </pre>
       *
       * <code>int64 timestamp = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      private com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails clusterDetails_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder> clusterDetailsBuilder_;
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
       * @return Whether the clusterDetails field is set.
       */
      public boolean hasClusterDetails() {
        return clusterDetailsBuilder_ != null || clusterDetails_ != null;
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
       * @return The clusterDetails.
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getClusterDetails() {
        if (clusterDetailsBuilder_ == null) {
          return clusterDetails_ == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance() : clusterDetails_;
        } else {
          return clusterDetailsBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
       */
      public Builder setClusterDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails value) {
        if (clusterDetailsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          clusterDetails_ = value;
          onChanged();
        } else {
          clusterDetailsBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
       */
      public Builder setClusterDetails(
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder builderForValue) {
        if (clusterDetailsBuilder_ == null) {
          clusterDetails_ = builderForValue.build();
          onChanged();
        } else {
          clusterDetailsBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
       */
      public Builder mergeClusterDetails(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails value) {
        if (clusterDetailsBuilder_ == null) {
          if (clusterDetails_ != null) {
            clusterDetails_ =
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.newBuilder(clusterDetails_).mergeFrom(value).buildPartial();
          } else {
            clusterDetails_ = value;
          }
          onChanged();
        } else {
          clusterDetailsBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
       */
      public Builder clearClusterDetails() {
        if (clusterDetailsBuilder_ == null) {
          clusterDetails_ = null;
          onChanged();
        } else {
          clusterDetails_ = null;
          clusterDetailsBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder getClusterDetailsBuilder() {
        
        onChanged();
        return getClusterDetailsFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
       */
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder getClusterDetailsOrBuilder() {
        if (clusterDetailsBuilder_ != null) {
          return clusterDetailsBuilder_.getMessageOrBuilder();
        } else {
          return clusterDetails_ == null ?
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance() : clusterDetails_;
        }
      }
      /**
       * <pre>
       * Common cluster related data (optional - can be filled from NodeStatusReport as well).
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails clusterDetails = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder> 
          getClusterDetailsFieldBuilder() {
        if (clusterDetailsBuilder_ == null) {
          clusterDetailsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder>(
                  getClusterDetails(),
                  getParentForChildren(),
                  isClean());
          clusterDetails_ = null;
        }
        return clusterDetailsBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.CmServiceMetricEvent)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.CmServiceMetricEvent)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CmServiceMetricEvent>
        PARSER = new com.google.protobuf.AbstractParser<CmServiceMetricEvent>() {
      @java.lang.Override
      public CmServiceMetricEvent parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CmServiceMetricEvent> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CmServiceMetricEvent> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.CmServiceMetricEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ClusterDetailsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cdp.telemetry.ClusterDetails)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Resource crn of the cluster.
     * </pre>
     *
     * <code>string crn = 1;</code>
     * @return The crn.
     */
    java.lang.String getCrn();
    /**
     * <pre>
     * Resource crn of the cluster.
     * </pre>
     *
     * <code>string crn = 1;</code>
     * @return The bytes for crn.
     */
    com.google.protobuf.ByteString
        getCrnBytes();

    /**
     * <pre>
     * Name of the cluster.
     * </pre>
     *
     * <code>string name = 2;</code>
     * @return The name.
     */
    java.lang.String getName();
    /**
     * <pre>
     * Name of the cluster.
     * </pre>
     *
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * <pre>
     * Cluster version - can be different per cluster shape.
     * </pre>
     *
     * <code>string version = 3;</code>
     * @return The version.
     */
    java.lang.String getVersion();
    /**
     * <pre>
     * Cluster version - can be different per cluster shape.
     * </pre>
     *
     * <code>string version = 3;</code>
     * @return The bytes for version.
     */
    com.google.protobuf.ByteString
        getVersionBytes();

    /**
     * <pre>
     * Type of the cluster.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails.ClusterType type = 4;</code>
     * @return The enum numeric value on the wire for type.
     */
    int getTypeValue();
    /**
     * <pre>
     * Type of the cluster.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails.ClusterType type = 4;</code>
     * @return The type.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.ClusterType getType();

    /**
     * <pre>
     * Cloud Platform of the cluster.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails.CloudPlatform platform = 5;</code>
     * @return The enum numeric value on the wire for platform.
     */
    int getPlatformValue();
    /**
     * <pre>
     * Cloud Platform of the cluster.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails.CloudPlatform platform = 5;</code>
     * @return The platform.
     */
    com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.CloudPlatform getPlatform();
  }
  /**
   * <pre>
   * Holds common cluster related data.
   * </pre>
   *
   * Protobuf type {@code cdp.telemetry.ClusterDetails}
   */
  public static final class ClusterDetails extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cdp.telemetry.ClusterDetails)
      ClusterDetailsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ClusterDetails.newBuilder() to construct.
    private ClusterDetails(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ClusterDetails() {
      crn_ = "";
      name_ = "";
      version_ = "";
      type_ = 0;
      platform_ = 0;
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ClusterDetails();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_ClusterDetails_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_ClusterDetails_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder.class);
    }

    /**
     * <pre>
     * Type of the cluster.
     * </pre>
     *
     * Protobuf enum {@code cdp.telemetry.ClusterDetails.ClusterType}
     */
    public enum ClusterType
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <pre>
       * Workload type.
       * </pre>
       *
       * <code>DATAHUB = 0;</code>
       */
      DATAHUB(0),
      /**
       * <pre>
       * Datalake type.
       * </pre>
       *
       * <code>DATALAKE = 1;</code>
       */
      DATALAKE(1),
      /**
       * <pre>
       * FreeIpa type.
       * </pre>
       *
       * <code>FREEIPA = 2;</code>
       */
      FREEIPA(2),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Workload type.
       * </pre>
       *
       * <code>DATAHUB = 0;</code>
       */
      public static final int DATAHUB_VALUE = 0;
      /**
       * <pre>
       * Datalake type.
       * </pre>
       *
       * <code>DATALAKE = 1;</code>
       */
      public static final int DATALAKE_VALUE = 1;
      /**
       * <pre>
       * FreeIpa type.
       * </pre>
       *
       * <code>FREEIPA = 2;</code>
       */
      public static final int FREEIPA_VALUE = 2;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ClusterType valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static ClusterType forNumber(int value) {
        switch (value) {
          case 0: return DATAHUB;
          case 1: return DATALAKE;
          case 2: return FREEIPA;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<ClusterType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          ClusterType> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<ClusterType>() {
              public ClusterType findValueByNumber(int number) {
                return ClusterType.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDescriptor().getEnumTypes().get(0);
      }

      private static final ClusterType[] VALUES = values();

      public static ClusterType valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private ClusterType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:cdp.telemetry.ClusterDetails.ClusterType)
    }

    /**
     * <pre>
     * Cloloud platform types.
     * </pre>
     *
     * Protobuf enum {@code cdp.telemetry.ClusterDetails.CloudPlatform}
     */
    public enum CloudPlatform
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <pre>
       * Amazon cloud platform.
       * </pre>
       *
       * <code>AWS = 1;</code>
       */
      AWS(1),
      /**
       * <pre>
       * Azure cloud platform.
       * </pre>
       *
       * <code>AZURE = 2;</code>
       */
      AZURE(2),
      /**
       * <pre>
       * Google cloud platform.
       * </pre>
       *
       * <code>GCP = 3;</code>
       */
      GCP(3),
      /**
       * <pre>
       * YCloud cloud platform.
       * </pre>
       *
       * <code>YCLOUD = 4;</code>
       */
      YCLOUD(4),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <pre>
       * Amazon cloud platform.
       * </pre>
       *
       * <code>AWS = 1;</code>
       */
      public static final int AWS_VALUE = 1;
      /**
       * <pre>
       * Azure cloud platform.
       * </pre>
       *
       * <code>AZURE = 2;</code>
       */
      public static final int AZURE_VALUE = 2;
      /**
       * <pre>
       * Google cloud platform.
       * </pre>
       *
       * <code>GCP = 3;</code>
       */
      public static final int GCP_VALUE = 3;
      /**
       * <pre>
       * YCloud cloud platform.
       * </pre>
       *
       * <code>YCLOUD = 4;</code>
       */
      public static final int YCLOUD_VALUE = 4;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static CloudPlatform valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static CloudPlatform forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 1: return AWS;
          case 2: return AZURE;
          case 3: return GCP;
          case 4: return YCLOUD;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<CloudPlatform>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          CloudPlatform> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<CloudPlatform>() {
              public CloudPlatform findValueByNumber(int number) {
                return CloudPlatform.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalStateException(
              "Can't get the descriptor of an unrecognized enum value.");
        }
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDescriptor().getEnumTypes().get(1);
      }

      private static final CloudPlatform[] VALUES = values();

      public static CloudPlatform valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private CloudPlatform(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:cdp.telemetry.ClusterDetails.CloudPlatform)
    }

    public static final int CRN_FIELD_NUMBER = 1;
    private volatile java.lang.Object crn_;
    /**
     * <pre>
     * Resource crn of the cluster.
     * </pre>
     *
     * <code>string crn = 1;</code>
     * @return The crn.
     */
    @java.lang.Override
    public java.lang.String getCrn() {
      java.lang.Object ref = crn_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        crn_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Resource crn of the cluster.
     * </pre>
     *
     * <code>string crn = 1;</code>
     * @return The bytes for crn.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCrnBytes() {
      java.lang.Object ref = crn_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        crn_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * <pre>
     * Name of the cluster.
     * </pre>
     *
     * <code>string name = 2;</code>
     * @return The name.
     */
    @java.lang.Override
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        name_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Name of the cluster.
     * </pre>
     *
     * <code>string name = 2;</code>
     * @return The bytes for name.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERSION_FIELD_NUMBER = 3;
    private volatile java.lang.Object version_;
    /**
     * <pre>
     * Cluster version - can be different per cluster shape.
     * </pre>
     *
     * <code>string version = 3;</code>
     * @return The version.
     */
    @java.lang.Override
    public java.lang.String getVersion() {
      java.lang.Object ref = version_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        version_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Cluster version - can be different per cluster shape.
     * </pre>
     *
     * <code>string version = 3;</code>
     * @return The bytes for version.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVersionBytes() {
      java.lang.Object ref = version_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        version_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TYPE_FIELD_NUMBER = 4;
    private int type_;
    /**
     * <pre>
     * Type of the cluster.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails.ClusterType type = 4;</code>
     * @return The enum numeric value on the wire for type.
     */
    @java.lang.Override public int getTypeValue() {
      return type_;
    }
    /**
     * <pre>
     * Type of the cluster.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails.ClusterType type = 4;</code>
     * @return The type.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.ClusterType getType() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.ClusterType result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.ClusterType.valueOf(type_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.ClusterType.UNRECOGNIZED : result;
    }

    public static final int PLATFORM_FIELD_NUMBER = 5;
    private int platform_;
    /**
     * <pre>
     * Cloud Platform of the cluster.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails.CloudPlatform platform = 5;</code>
     * @return The enum numeric value on the wire for platform.
     */
    @java.lang.Override public int getPlatformValue() {
      return platform_;
    }
    /**
     * <pre>
     * Cloud Platform of the cluster.
     * </pre>
     *
     * <code>.cdp.telemetry.ClusterDetails.CloudPlatform platform = 5;</code>
     * @return The platform.
     */
    @java.lang.Override public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.CloudPlatform getPlatform() {
      @SuppressWarnings("deprecation")
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.CloudPlatform result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.CloudPlatform.valueOf(platform_);
      return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.CloudPlatform.UNRECOGNIZED : result;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(crn_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, crn_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(version_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, version_);
      }
      if (type_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.ClusterType.DATAHUB.getNumber()) {
        output.writeEnum(4, type_);
      }
      if (platform_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.CloudPlatform.UNKNOWN.getNumber()) {
        output.writeEnum(5, platform_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(crn_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, crn_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(version_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, version_);
      }
      if (type_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.ClusterType.DATAHUB.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(4, type_);
      }
      if (platform_ != com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.CloudPlatform.UNKNOWN.getNumber()) {
        size += com.google.protobuf.CodedOutputStream
          .computeEnumSize(5, platform_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails other = (com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails) obj;

      if (!getCrn()
          .equals(other.getCrn())) return false;
      if (!getName()
          .equals(other.getName())) return false;
      if (!getVersion()
          .equals(other.getVersion())) return false;
      if (type_ != other.type_) return false;
      if (platform_ != other.platform_) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + CRN_FIELD_NUMBER;
      hash = (53 * hash) + getCrn().hashCode();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion().hashCode();
      hash = (37 * hash) + TYPE_FIELD_NUMBER;
      hash = (53 * hash) + type_;
      hash = (37 * hash) + PLATFORM_FIELD_NUMBER;
      hash = (53 * hash) + platform_;
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Holds common cluster related data.
     * </pre>
     *
     * Protobuf type {@code cdp.telemetry.ClusterDetails}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cdp.telemetry.ClusterDetails)
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetailsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_ClusterDetails_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_ClusterDetails_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.class, com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        crn_ = "";

        name_ = "";

        version_ = "";

        type_ = 0;

        platform_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.internal_static_cdp_telemetry_ClusterDetails_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getDefaultInstanceForType() {
        return com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails build() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails buildPartial() {
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails result = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails(this);
        result.crn_ = crn_;
        result.name_ = name_;
        result.version_ = version_;
        result.type_ = type_;
        result.platform_ = platform_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails) {
          return mergeFrom((com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails other) {
        if (other == com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.getDefaultInstance()) return this;
        if (!other.getCrn().isEmpty()) {
          crn_ = other.crn_;
          onChanged();
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (!other.getVersion().isEmpty()) {
          version_ = other.version_;
          onChanged();
        }
        if (other.type_ != 0) {
          setTypeValue(other.getTypeValue());
        }
        if (other.platform_ != 0) {
          setPlatformValue(other.getPlatformValue());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                crn_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 18: {
                name_ = input.readStringRequireUtf8();

                break;
              } // case 18
              case 26: {
                version_ = input.readStringRequireUtf8();

                break;
              } // case 26
              case 32: {
                type_ = input.readEnum();

                break;
              } // case 32
              case 40: {
                platform_ = input.readEnum();

                break;
              } // case 40
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private java.lang.Object crn_ = "";
      /**
       * <pre>
       * Resource crn of the cluster.
       * </pre>
       *
       * <code>string crn = 1;</code>
       * @return The crn.
       */
      public java.lang.String getCrn() {
        java.lang.Object ref = crn_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          crn_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Resource crn of the cluster.
       * </pre>
       *
       * <code>string crn = 1;</code>
       * @return The bytes for crn.
       */
      public com.google.protobuf.ByteString
          getCrnBytes() {
        java.lang.Object ref = crn_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          crn_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Resource crn of the cluster.
       * </pre>
       *
       * <code>string crn = 1;</code>
       * @param value The crn to set.
       * @return This builder for chaining.
       */
      public Builder setCrn(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        crn_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Resource crn of the cluster.
       * </pre>
       *
       * <code>string crn = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearCrn() {
        
        crn_ = getDefaultInstance().getCrn();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Resource crn of the cluster.
       * </pre>
       *
       * <code>string crn = 1;</code>
       * @param value The bytes for crn to set.
       * @return This builder for chaining.
       */
      public Builder setCrnBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        crn_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * <pre>
       * Name of the cluster.
       * </pre>
       *
       * <code>string name = 2;</code>
       * @return The name.
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Name of the cluster.
       * </pre>
       *
       * <code>string name = 2;</code>
       * @return The bytes for name.
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Name of the cluster.
       * </pre>
       *
       * <code>string name = 2;</code>
       * @param value The name to set.
       * @return This builder for chaining.
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the cluster.
       * </pre>
       *
       * <code>string name = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Name of the cluster.
       * </pre>
       *
       * <code>string name = 2;</code>
       * @param value The bytes for name to set.
       * @return This builder for chaining.
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object version_ = "";
      /**
       * <pre>
       * Cluster version - can be different per cluster shape.
       * </pre>
       *
       * <code>string version = 3;</code>
       * @return The version.
       */
      public java.lang.String getVersion() {
        java.lang.Object ref = version_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          version_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Cluster version - can be different per cluster shape.
       * </pre>
       *
       * <code>string version = 3;</code>
       * @return The bytes for version.
       */
      public com.google.protobuf.ByteString
          getVersionBytes() {
        java.lang.Object ref = version_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          version_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Cluster version - can be different per cluster shape.
       * </pre>
       *
       * <code>string version = 3;</code>
       * @param value The version to set.
       * @return This builder for chaining.
       */
      public Builder setVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Cluster version - can be different per cluster shape.
       * </pre>
       *
       * <code>string version = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearVersion() {
        
        version_ = getDefaultInstance().getVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Cluster version - can be different per cluster shape.
       * </pre>
       *
       * <code>string version = 3;</code>
       * @param value The bytes for version to set.
       * @return This builder for chaining.
       */
      public Builder setVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        version_ = value;
        onChanged();
        return this;
      }

      private int type_ = 0;
      /**
       * <pre>
       * Type of the cluster.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails.ClusterType type = 4;</code>
       * @return The enum numeric value on the wire for type.
       */
      @java.lang.Override public int getTypeValue() {
        return type_;
      }
      /**
       * <pre>
       * Type of the cluster.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails.ClusterType type = 4;</code>
       * @param value The enum numeric value on the wire for type to set.
       * @return This builder for chaining.
       */
      public Builder setTypeValue(int value) {
        
        type_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Type of the cluster.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails.ClusterType type = 4;</code>
       * @return The type.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.ClusterType getType() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.ClusterType result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.ClusterType.valueOf(type_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.ClusterType.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Type of the cluster.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails.ClusterType type = 4;</code>
       * @param value The type to set.
       * @return This builder for chaining.
       */
      public Builder setType(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.ClusterType value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        type_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Type of the cluster.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails.ClusterType type = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearType() {
        
        type_ = 0;
        onChanged();
        return this;
      }

      private int platform_ = 0;
      /**
       * <pre>
       * Cloud Platform of the cluster.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails.CloudPlatform platform = 5;</code>
       * @return The enum numeric value on the wire for platform.
       */
      @java.lang.Override public int getPlatformValue() {
        return platform_;
      }
      /**
       * <pre>
       * Cloud Platform of the cluster.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails.CloudPlatform platform = 5;</code>
       * @param value The enum numeric value on the wire for platform to set.
       * @return This builder for chaining.
       */
      public Builder setPlatformValue(int value) {
        
        platform_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Cloud Platform of the cluster.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails.CloudPlatform platform = 5;</code>
       * @return The platform.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.CloudPlatform getPlatform() {
        @SuppressWarnings("deprecation")
        com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.CloudPlatform result = com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.CloudPlatform.valueOf(platform_);
        return result == null ? com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.CloudPlatform.UNRECOGNIZED : result;
      }
      /**
       * <pre>
       * Cloud Platform of the cluster.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails.CloudPlatform platform = 5;</code>
       * @param value The platform to set.
       * @return This builder for chaining.
       */
      public Builder setPlatform(com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails.CloudPlatform value) {
        if (value == null) {
          throw new NullPointerException();
        }
        
        platform_ = value.getNumber();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Cloud Platform of the cluster.
       * </pre>
       *
       * <code>.cdp.telemetry.ClusterDetails.CloudPlatform platform = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearPlatform() {
        
        platform_ = 0;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:cdp.telemetry.ClusterDetails)
    }

    // @@protoc_insertion_point(class_scope:cdp.telemetry.ClusterDetails)
    private static final com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails();
    }

    public static com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ClusterDetails>
        PARSER = new com.google.protobuf.AbstractParser<ClusterDetails>() {
      @java.lang.Override
      public ClusterDetails parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ClusterDetails> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ClusterDetails> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.telemetry.nodestatus.NodeStatusProto.ClusterDetails getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_NodeStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_NodeStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_NodeStatusReport_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_NodeStatusReport_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_ServiceStatus_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_ServiceStatus_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_ServicesDetails_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_ServicesDetails_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_SaltMasterHealth_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_SaltMasterHealth_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_SaltMinionsHealth_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_SaltMinionsHealth_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_SaltKeys_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_SaltKeys_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_SaltHealthReport_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_SaltHealthReport_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_StatusDetails_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_StatusDetails_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_MeteringDetails_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_MeteringDetails_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_MeteringDetails_DatabusDetailsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_MeteringDetails_DatabusDetailsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_MeteringDetails_EventDetailsEntry_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_MeteringDetails_EventDetailsEntry_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_NetworkDetails_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_NetworkDetails_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_SystemMetrics_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_SystemMetrics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_CmMetricsReport_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_CmMetricsReport_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_CmHealthChecksReport_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_CmHealthChecksReport_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_CpuMetrics_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_CpuMetrics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_CpuStats_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_CpuStats_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_CpuTimes_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_CpuTimes_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_CpuFrequency_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_CpuFrequency_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_DiskMetrics_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_DiskMetrics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_VmLog_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_VmLog_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_DiskPartition_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_DiskPartition_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_DiskUsage_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_DiskUsage_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_DiskIO_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_DiskIO_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_NetworkMetrics_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_NetworkMetrics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_NetworkIO_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_NetworkIO_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_NetworkConnections_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_NetworkConnections_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_MemoryMetrics_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_MemoryMetrics_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_VirtualMemory_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_VirtualMemory_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_SwapMemory_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_SwapMemory_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_CmServiceHealthCheckEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_CmServiceHealthCheckEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_CmServiceMetricEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_CmServiceMetricEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cdp_telemetry_ClusterDetails_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cdp_telemetry_ClusterDetails_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\020nodestatus.proto\022\rcdp.telemetry\"\237\002\n\nNo" +
      "deStatus\0223\n\rstatusDetails\030\001 \001(\0132\034.cdp.te" +
      "lemetry.StatusDetails\0227\n\017servicesDetails" +
      "\030\002 \001(\0132\036.cdp.telemetry.ServicesDetails\0225" +
      "\n\016networkDetails\030\003 \001(\0132\035.cdp.telemetry.N" +
      "etworkDetails\0227\n\017meteringDetails\030\004 \001(\0132\036" +
      ".cdp.telemetry.MeteringDetails\0223\n\rsystem" +
      "Metrics\030\005 \001(\0132\034.cdp.telemetry.SystemMetr" +
      "ics\"\243\001\n\020NodeStatusReport\022(\n\005nodes\030\001 \003(\0132" +
      "\031.cdp.telemetry.NodeStatus\0225\n\016clusterDet" +
      "ails\030\002 \001(\0132\035.cdp.telemetry.ClusterDetail" +
      "s\022\021\n\ttimestamp\030\003 \001(\003\022\033\n\023cdpTelemetryVers" +
      "ion\030\004 \001(\t\"J\n\rServiceStatus\022\014\n\004name\030\001 \001(\t" +
      "\022+\n\006status\030\002 \001(\0162\033.cdp.telemetry.HealthS" +
      "tatus\"\217\002\n\017ServicesDetails\022.\n\010services\030\001 " +
      "\003(\0132\034.cdp.telemetry.ServiceStatus\0223\n\rinf" +
      "raServices\030\002 \003(\0132\034.cdp.telemetry.Service" +
      "Status\0220\n\ncmServices\030\003 \003(\0132\034.cdp.telemet" +
      "ry.ServiceStatus\0225\n\017freeipaServices\030\004 \003(" +
      "\0132\034.cdp.telemetry.ServiceStatus\022\021\n\ttimes" +
      "tamp\030\005 \001(\003\022\033\n\023cdpTelemetryVersion\030\006 \001(\t\"" +
      "U\n\020SaltMasterHealth\022.\n\010services\030\001 \003(\0132\034." +
      "cdp.telemetry.ServiceStatus\022\021\n\ttimestamp" +
      "\030\002 \001(\003\"[\n\021SaltMinionsHealth\0223\n\rpingRespo" +
      "nses\030\001 \003(\0132\034.cdp.telemetry.StatusDetails" +
      "\022\021\n\ttimestamp\030\002 \001(\003\"e\n\010SaltKeys\022\022\n\nunacc" +
      "epted\030\001 \003(\t\022\020\n\010accepted\030\002 \003(\t\022\020\n\010rejecte" +
      "d\030\003 \003(\t\022\016\n\006denied\030\004 \003(\t\022\021\n\ttimestamp\030\005 \001" +
      "(\003\"\315\001\n\020SaltHealthReport\022/\n\006master\030\001 \001(\0132" +
      "\037.cdp.telemetry.SaltMasterHealth\0221\n\007mini" +
      "ons\030\002 \001(\0132 .cdp.telemetry.SaltMinionsHea" +
      "lth\022\021\n\ttimestamp\030\003 \001(\003\022%\n\004keys\030\004 \001(\0132\027.c" +
      "dp.telemetry.SaltKeys\022\033\n\023cdpTelemetryVer" +
      "sion\030\005 \001(\t\"s\n\rStatusDetails\022\014\n\004host\030\001 \001(" +
      "\t\022+\n\006status\030\002 \001(\0162\033.cdp.telemetry.Health" +
      "Status\022\024\n\014statusReason\030\003 \001(\t\022\021\n\ttimestam" +
      "p\030\004 \001(\003\"\371\005\n\017MeteringDetails\022J\n\016databusDe" +
      "tails\030\001 \003(\01322.cdp.telemetry.MeteringDeta" +
      "ils.DatabusDetailsEntry\022F\n\014eventDetails\030" +
      "\002 \003(\01320.cdp.telemetry.MeteringDetails.Ev" +
      "entDetailsEntry\022$\n\034firstHeartbeatEventTi" +
      "mestamp\030\003 \001(\003\022\033\n\023systemBootTimestamp\030\004 \001" +
      "(\003\022\033\n\023heartbeatEventCount\030\005 \001(\005\022:\n\025heart" +
      "beatAgentRunning\030\006 \001(\0162\033.cdp.telemetry.H" +
      "ealthStatus\0224\n\017heartbeatConfig\030\007 \001(\0162\033.c" +
      "dp.telemetry.HealthStatus\0225\n\020databusReac" +
      "hable\030\010 \001(\0162\033.cdp.telemetry.HealthStatus" +
      "\0228\n\023databusTestResponse\030\t \001(\0162\033.cdp.tele" +
      "metry.HealthStatus\0227\n\022loggingAgentConfig" +
      "\030\n \001(\0162\033.cdp.telemetry.HealthStatus\022:\n\025l" +
      "oggingServiceRunning\030\013 \001(\0162\033.cdp.telemet" +
      "ry.HealthStatus\022\021\n\ttimestamp\030\014 \001(\003\022\033\n\023cd" +
      "pTelemetryVersion\030\r \001(\t\0325\n\023DatabusDetail" +
      "sEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\0323" +
      "\n\021EventDetailsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005valu" +
      "e\030\002 \001(\t:\0028\001\"\275\007\n\016NetworkDetails\022\014\n\004host\030\001" +
      " \001(\t\022\022\n\nccmEnabled\030\002 \001(\010\022\024\n\014dnsResolvers" +
      "\030\003 \003(\t\022\025\n\rneighbourScan\030\004 \001(\010\022\022\n\nneighbo" +
      "urs\030\005 \003(\t\022<\n\027anyNeighboursAccessible\030\006 \001" +
      "(\0162\033.cdp.telemetry.HealthStatus\022\032\n\022numbe" +
      "rOfNeighbours\030\007 \001(\005\022\021\n\ttimestamp\030\010 \001(\003\0222" +
      "\n\rccmAccessible\030\t \001(\0162\033.cdp.telemetry.He" +
      "althStatus\022:\n\025clouderaComAccessible\030\n \001(" +
      "\0162\033.cdp.telemetry.HealthStatus\0226\n\021databu" +
      "sAccessible\030\013 \001(\0162\033.cdp.telemetry.Health" +
      "Status\0228\n\023databusS3Accessible\030\014 \001(\0162\033.cd" +
      "p.telemetry.HealthStatus\0221\n\014s3Accessible" +
      "\030\r \001(\0162\033.cdp.telemetry.HealthStatus\0225\n\020a" +
      "dlsV2Accessible\030\016 \001(\0162\033.cdp.telemetry.He" +
      "althStatus\0222\n\rgcsAccessible\030\017 \001(\0162\033.cdp." +
      "telemetry.HealthStatus\0222\n\rstsAccessible\030" +
      "\020 \001(\0162\033.cdp.telemetry.HealthStatus\022>\n\031az" +
      "ureManagementAccessible\030\021 \001(\0162\033.cdp.tele" +
      "metry.HealthStatus\022\033\n\023cdpTelemetryVersio" +
      "n\030\022 \001(\t\022A\n\034archiveClouderaComAccessible\030" +
      "\023 \001(\0162\033.cdp.telemetry.HealthStatus\022E\n se" +
      "rviceDeliveryCacheS3Accessible\030\024 \001(\0162\033.c" +
      "dp.telemetry.HealthStatus\022@\n\033computeMoni" +
      "toringAccessible\030\025 \001(\0162\033.cdp.telemetry.H" +
      "ealthStatus\"\246\002\n\rSystemMetrics\022&\n\003cpu\030\001 \001" +
      "(\0132\031.cdp.telemetry.CpuMetrics\022(\n\004disk\030\002 " +
      "\001(\0132\032.cdp.telemetry.DiskMetrics\022,\n\006memor" +
      "y\030\003 \001(\0132\034.cdp.telemetry.MemoryMetrics\022.\n" +
      "\007network\030\004 \001(\0132\035.cdp.telemetry.NetworkMe" +
      "trics\022\021\n\ttimestamp\030\005 \001(\003\0225\n\016clusterDetai" +
      "ls\030\006 \001(\0132\035.cdp.telemetry.ClusterDetails\022" +
      "\033\n\023cdpTelemetryVersion\030\007 \001(\t\"\233\001\n\017CmMetri" +
      "csReport\0224\n\007metrics\030\001 \003(\0132#.cdp.telemetr" +
      "y.CmServiceMetricEvent\0225\n\016clusterDetails" +
      "\030\002 \001(\0132\035.cdp.telemetry.ClusterDetails\022\033\n" +
      "\023cdpTelemetryVersion\030\003 \001(\t\"\252\001\n\024CmHealthC" +
      "hecksReport\022>\n\014healthChecks\030\001 \003(\0132(.cdp." +
      "telemetry.CmServiceHealthCheckEvent\0225\n\016c" +
      "lusterDetails\030\002 \001(\0132\035.cdp.telemetry.Clus" +
      "terDetails\022\033\n\023cdpTelemetryVersion\030\003 \001(\t\"" +
      "\277\001\n\nCpuMetrics\022\r\n\005count\030\001 \001(\005\022\025\n\rlogical" +
      "_count\030\002 \001(\005\022\020\n\010load_avg\030\003 \003(\002\022&\n\005times\030" +
      "\004 \001(\0132\027.cdp.telemetry.CpuTimes\022&\n\005stats\030" +
      "\005 \001(\0132\027.cdp.telemetry.CpuStats\022)\n\004freq\030\006" +
      " \001(\0132\033.cdp.telemetry.CpuFrequency\"_\n\010Cpu" +
      "Stats\022\024\n\014ctx_switches\030\001 \001(\003\022\022\n\ninterrupt" +
      "s\030\002 \001(\003\022\027\n\017soft_interrupts\030\003 \001(\003\022\020\n\010sysc" +
      "alls\030\004 \001(\003\"D\n\010CpuTimes\022\014\n\004idle\030\001 \001(\001\022\014\n\004" +
      "nice\030\002 \001(\001\022\016\n\006system\030\003 \001(\001\022\014\n\004user\030\004 \001(\001" +
      "\"9\n\014CpuFrequency\022\017\n\007current\030\001 \001(\003\022\013\n\003min" +
      "\030\002 \001(\003\022\013\n\003max\030\003 \001(\003\"\214\001\n\013DiskMetrics\0220\n\np" +
      "artitions\030\001 \003(\0132\034.cdp.telemetry.DiskPart" +
      "ition\022(\n\ntop_varlog\030\002 \003(\0132\024.cdp.telemetr" +
      "y.VmLog\022!\n\002io\030\003 \001(\0132\025.cdp.telemetry.Disk" +
      "IO\"#\n\005VmLog\022\014\n\004path\030\001 \001(\t\022\014\n\004size\030\002 \001(\t\"" +
      "\234\001\n\rDiskPartition\022\'\n\005usage\030\001 \001(\0132\030.cdp.t" +
      "elemetry.DiskUsage\022\016\n\006device\030\002 \001(\t\022\016\n\006fs" +
      "type\030\003 \001(\t\022\017\n\007maxfile\030\004 \001(\005\022\017\n\007maxpath\030\005" +
      " \001(\005\022\022\n\nmountpoint\030\006 \001(\t\022\014\n\004opts\030\007 \001(\t\"G" +
      "\n\tDiskUsage\022\014\n\004free\030\001 \001(\003\022\r\n\005total\030\002 \001(\003" +
      "\022\014\n\004used\030\003 \001(\003\022\017\n\007percent\030\004 \001(\001\"\201\001\n\006Disk" +
      "IO\022\022\n\nread_bytes\030\001 \001(\003\022\022\n\nread_count\030\002 \001" +
      "(\003\022\021\n\tread_time\030\003 \001(\003\022\023\n\013write_bytes\030\004 \001" +
      "(\003\022\023\n\013write_count\030\005 \001(\003\022\022\n\nwrite_time\030\006 " +
      "\001(\003\"n\n\016NetworkMetrics\0226\n\013connections\030\001 \001" +
      "(\0132!.cdp.telemetry.NetworkConnections\022$\n" +
      "\002io\030\002 \001(\0132\030.cdp.telemetry.NetworkIO\"\237\001\n\t" +
      "NetworkIO\022\022\n\nbytes_recv\030\001 \001(\003\022\022\n\nbytes_s" +
      "ent\030\002 \001(\003\022\016\n\006dropin\030\003 \001(\003\022\017\n\007dropout\030\004 \001" +
      "(\003\022\r\n\005errin\030\005 \001(\003\022\016\n\006errout\030\006 \001(\003\022\024\n\014pac" +
      "kets_recv\030\007 \001(\003\022\024\n\014packets_sent\030\010 \001(\003\"\322\001" +
      "\n\022NetworkConnections\022\016\n\006LISTEN\030\001 \001(\005\022\023\n\013" +
      "ESTABLISHED\030\002 \001(\005\022\021\n\tTIME_WAIT\030\003 \001(\005\022\022\n\n" +
      "CLOSE_WAIT\030\004 \001(\005\022\016\n\006CLOSED\030\005 \001(\005\022\020\n\010SYN_" +
      "SEND\030\006 \001(\005\022\024\n\014SYN_RECEIVED\030\007 \001(\005\022\022\n\nFIN_" +
      "WAIT_1\030\010 \001(\005\022\022\n\nFIN_WAIT_2\030\t \001(\005\022\020\n\010LAST" +
      "_ACK\030\n \001(\005\"u\n\rMemoryMetrics\0224\n\016virtual_m" +
      "emory\030\001 \001(\0132\034.cdp.telemetry.VirtualMemor" +
      "y\022.\n\013swap_memory\030\002 \001(\0132\031.cdp.telemetry.S" +
      "wapMemory\"\277\001\n\rVirtualMemory\022\r\n\005total\030\001 \001" +
      "(\003\022\014\n\004used\030\002 \001(\003\022\014\n\004free\030\003 \001(\003\022\017\n\007percen" +
      "t\030\004 \001(\001\022\021\n\tavailable\030\005 \001(\003\022\016\n\006active\030\006 \001" +
      "(\003\022\020\n\010inactive\030\007 \001(\003\022\017\n\007buffers\030\010 \001(\003\022\016\n" +
      "\006cached\030\t \001(\003\022\016\n\006shared\030\n \001(\003\022\014\n\004slab\030\013 " +
      "\001(\003\"c\n\nSwapMemory\022\014\n\004free\030\001 \001(\003\022\017\n\007perce" +
      "nt\030\002 \001(\001\022\013\n\003sin\030\003 \001(\003\022\014\n\004sout\030\004 \001(\003\022\r\n\005t" +
      "otal\030\005 \001(\003\022\014\n\004used\030\006 \001(\003\"\301\001\n\031CmServiceHe" +
      "althCheckEvent\022\023\n\013serviceName\030\001 \001(\t\022\023\n\013s" +
      "erviceType\030\002 \001(\t\022\014\n\004name\030\003 \001(\t\022\r\n\005value\030" +
      "\004 \001(\t\022\023\n\013explanation\030\005 \001(\t\022\021\n\ttimestamp\030" +
      "\006 \001(\003\0225\n\016clusterDetails\030\007 \001(\0132\035.cdp.tele" +
      "metry.ClusterDetails\"\247\001\n\024CmServiceMetric" +
      "Event\022\023\n\013serviceName\030\001 \001(\t\022\023\n\013serviceTyp" +
      "e\030\002 \001(\t\022\014\n\004name\030\003 \001(\t\022\r\n\005value\030\004 \001(\001\022\021\n\t" +
      "timestamp\030\005 \001(\003\0225\n\016clusterDetails\030\006 \001(\0132" +
      "\035.cdp.telemetry.ClusterDetails\"\262\002\n\016Clust" +
      "erDetails\022\013\n\003crn\030\001 \001(\t\022\014\n\004name\030\002 \001(\t\022\017\n\007" +
      "version\030\003 \001(\t\0227\n\004type\030\004 \001(\0162).cdp.teleme" +
      "try.ClusterDetails.ClusterType\022=\n\010platfo" +
      "rm\030\005 \001(\0162+.cdp.telemetry.ClusterDetails." +
      "CloudPlatform\"5\n\013ClusterType\022\013\n\007DATAHUB\020" +
      "\000\022\014\n\010DATALAKE\020\001\022\013\n\007FREEIPA\020\002\"E\n\rCloudPla" +
      "tform\022\013\n\007UNKNOWN\020\000\022\007\n\003AWS\020\001\022\t\n\005AZURE\020\002\022\007" +
      "\n\003GCP\020\003\022\n\n\006YCLOUD\020\004*,\n\014HealthStatus\022\013\n\007U" +
      "NKNOWN\020\000\022\006\n\002OK\020\001\022\007\n\003NOK\020\002B[\n-com.clouder" +
      "a.thunderhead.telemetry.nodestatusB\017Node" +
      "StatusProtoZ\031com/cloudera/cdp/protobufb\006" +
      "proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_cdp_telemetry_NodeStatus_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_cdp_telemetry_NodeStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_NodeStatus_descriptor,
        new java.lang.String[] { "StatusDetails", "ServicesDetails", "NetworkDetails", "MeteringDetails", "SystemMetrics", });
    internal_static_cdp_telemetry_NodeStatusReport_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_cdp_telemetry_NodeStatusReport_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_NodeStatusReport_descriptor,
        new java.lang.String[] { "Nodes", "ClusterDetails", "Timestamp", "CdpTelemetryVersion", });
    internal_static_cdp_telemetry_ServiceStatus_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_cdp_telemetry_ServiceStatus_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_ServiceStatus_descriptor,
        new java.lang.String[] { "Name", "Status", });
    internal_static_cdp_telemetry_ServicesDetails_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_cdp_telemetry_ServicesDetails_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_ServicesDetails_descriptor,
        new java.lang.String[] { "Services", "InfraServices", "CmServices", "FreeipaServices", "Timestamp", "CdpTelemetryVersion", });
    internal_static_cdp_telemetry_SaltMasterHealth_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_cdp_telemetry_SaltMasterHealth_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_SaltMasterHealth_descriptor,
        new java.lang.String[] { "Services", "Timestamp", });
    internal_static_cdp_telemetry_SaltMinionsHealth_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_cdp_telemetry_SaltMinionsHealth_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_SaltMinionsHealth_descriptor,
        new java.lang.String[] { "PingResponses", "Timestamp", });
    internal_static_cdp_telemetry_SaltKeys_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_cdp_telemetry_SaltKeys_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_SaltKeys_descriptor,
        new java.lang.String[] { "Unaccepted", "Accepted", "Rejected", "Denied", "Timestamp", });
    internal_static_cdp_telemetry_SaltHealthReport_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_cdp_telemetry_SaltHealthReport_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_SaltHealthReport_descriptor,
        new java.lang.String[] { "Master", "Minions", "Timestamp", "Keys", "CdpTelemetryVersion", });
    internal_static_cdp_telemetry_StatusDetails_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_cdp_telemetry_StatusDetails_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_StatusDetails_descriptor,
        new java.lang.String[] { "Host", "Status", "StatusReason", "Timestamp", });
    internal_static_cdp_telemetry_MeteringDetails_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_cdp_telemetry_MeteringDetails_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_MeteringDetails_descriptor,
        new java.lang.String[] { "DatabusDetails", "EventDetails", "FirstHeartbeatEventTimestamp", "SystemBootTimestamp", "HeartbeatEventCount", "HeartbeatAgentRunning", "HeartbeatConfig", "DatabusReachable", "DatabusTestResponse", "LoggingAgentConfig", "LoggingServiceRunning", "Timestamp", "CdpTelemetryVersion", });
    internal_static_cdp_telemetry_MeteringDetails_DatabusDetailsEntry_descriptor =
      internal_static_cdp_telemetry_MeteringDetails_descriptor.getNestedTypes().get(0);
    internal_static_cdp_telemetry_MeteringDetails_DatabusDetailsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_MeteringDetails_DatabusDetailsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_cdp_telemetry_MeteringDetails_EventDetailsEntry_descriptor =
      internal_static_cdp_telemetry_MeteringDetails_descriptor.getNestedTypes().get(1);
    internal_static_cdp_telemetry_MeteringDetails_EventDetailsEntry_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_MeteringDetails_EventDetailsEntry_descriptor,
        new java.lang.String[] { "Key", "Value", });
    internal_static_cdp_telemetry_NetworkDetails_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_cdp_telemetry_NetworkDetails_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_NetworkDetails_descriptor,
        new java.lang.String[] { "Host", "CcmEnabled", "DnsResolvers", "NeighbourScan", "Neighbours", "AnyNeighboursAccessible", "NumberOfNeighbours", "Timestamp", "CcmAccessible", "ClouderaComAccessible", "DatabusAccessible", "DatabusS3Accessible", "S3Accessible", "AdlsV2Accessible", "GcsAccessible", "StsAccessible", "AzureManagementAccessible", "CdpTelemetryVersion", "ArchiveClouderaComAccessible", "ServiceDeliveryCacheS3Accessible", "ComputeMonitoringAccessible", });
    internal_static_cdp_telemetry_SystemMetrics_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_cdp_telemetry_SystemMetrics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_SystemMetrics_descriptor,
        new java.lang.String[] { "Cpu", "Disk", "Memory", "Network", "Timestamp", "ClusterDetails", "CdpTelemetryVersion", });
    internal_static_cdp_telemetry_CmMetricsReport_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_cdp_telemetry_CmMetricsReport_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_CmMetricsReport_descriptor,
        new java.lang.String[] { "Metrics", "ClusterDetails", "CdpTelemetryVersion", });
    internal_static_cdp_telemetry_CmHealthChecksReport_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_cdp_telemetry_CmHealthChecksReport_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_CmHealthChecksReport_descriptor,
        new java.lang.String[] { "HealthChecks", "ClusterDetails", "CdpTelemetryVersion", });
    internal_static_cdp_telemetry_CpuMetrics_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_cdp_telemetry_CpuMetrics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_CpuMetrics_descriptor,
        new java.lang.String[] { "Count", "LogicalCount", "LoadAvg", "Times", "Stats", "Freq", });
    internal_static_cdp_telemetry_CpuStats_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_cdp_telemetry_CpuStats_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_CpuStats_descriptor,
        new java.lang.String[] { "CtxSwitches", "Interrupts", "SoftInterrupts", "Syscalls", });
    internal_static_cdp_telemetry_CpuTimes_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_cdp_telemetry_CpuTimes_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_CpuTimes_descriptor,
        new java.lang.String[] { "Idle", "Nice", "System", "User", });
    internal_static_cdp_telemetry_CpuFrequency_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_cdp_telemetry_CpuFrequency_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_CpuFrequency_descriptor,
        new java.lang.String[] { "Current", "Min", "Max", });
    internal_static_cdp_telemetry_DiskMetrics_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_cdp_telemetry_DiskMetrics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_DiskMetrics_descriptor,
        new java.lang.String[] { "Partitions", "TopVarlog", "Io", });
    internal_static_cdp_telemetry_VmLog_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_cdp_telemetry_VmLog_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_VmLog_descriptor,
        new java.lang.String[] { "Path", "Size", });
    internal_static_cdp_telemetry_DiskPartition_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_cdp_telemetry_DiskPartition_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_DiskPartition_descriptor,
        new java.lang.String[] { "Usage", "Device", "Fstype", "Maxfile", "Maxpath", "Mountpoint", "Opts", });
    internal_static_cdp_telemetry_DiskUsage_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_cdp_telemetry_DiskUsage_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_DiskUsage_descriptor,
        new java.lang.String[] { "Free", "Total", "Used", "Percent", });
    internal_static_cdp_telemetry_DiskIO_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_cdp_telemetry_DiskIO_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_DiskIO_descriptor,
        new java.lang.String[] { "ReadBytes", "ReadCount", "ReadTime", "WriteBytes", "WriteCount", "WriteTime", });
    internal_static_cdp_telemetry_NetworkMetrics_descriptor =
      getDescriptor().getMessageTypes().get(23);
    internal_static_cdp_telemetry_NetworkMetrics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_NetworkMetrics_descriptor,
        new java.lang.String[] { "Connections", "Io", });
    internal_static_cdp_telemetry_NetworkIO_descriptor =
      getDescriptor().getMessageTypes().get(24);
    internal_static_cdp_telemetry_NetworkIO_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_NetworkIO_descriptor,
        new java.lang.String[] { "BytesRecv", "BytesSent", "Dropin", "Dropout", "Errin", "Errout", "PacketsRecv", "PacketsSent", });
    internal_static_cdp_telemetry_NetworkConnections_descriptor =
      getDescriptor().getMessageTypes().get(25);
    internal_static_cdp_telemetry_NetworkConnections_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_NetworkConnections_descriptor,
        new java.lang.String[] { "LISTEN", "ESTABLISHED", "TIMEWAIT", "CLOSEWAIT", "CLOSED", "SYNSEND", "SYNRECEIVED", "FINWAIT1", "FINWAIT2", "LASTACK", });
    internal_static_cdp_telemetry_MemoryMetrics_descriptor =
      getDescriptor().getMessageTypes().get(26);
    internal_static_cdp_telemetry_MemoryMetrics_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_MemoryMetrics_descriptor,
        new java.lang.String[] { "VirtualMemory", "SwapMemory", });
    internal_static_cdp_telemetry_VirtualMemory_descriptor =
      getDescriptor().getMessageTypes().get(27);
    internal_static_cdp_telemetry_VirtualMemory_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_VirtualMemory_descriptor,
        new java.lang.String[] { "Total", "Used", "Free", "Percent", "Available", "Active", "Inactive", "Buffers", "Cached", "Shared", "Slab", });
    internal_static_cdp_telemetry_SwapMemory_descriptor =
      getDescriptor().getMessageTypes().get(28);
    internal_static_cdp_telemetry_SwapMemory_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_SwapMemory_descriptor,
        new java.lang.String[] { "Free", "Percent", "Sin", "Sout", "Total", "Used", });
    internal_static_cdp_telemetry_CmServiceHealthCheckEvent_descriptor =
      getDescriptor().getMessageTypes().get(29);
    internal_static_cdp_telemetry_CmServiceHealthCheckEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_CmServiceHealthCheckEvent_descriptor,
        new java.lang.String[] { "ServiceName", "ServiceType", "Name", "Value", "Explanation", "Timestamp", "ClusterDetails", });
    internal_static_cdp_telemetry_CmServiceMetricEvent_descriptor =
      getDescriptor().getMessageTypes().get(30);
    internal_static_cdp_telemetry_CmServiceMetricEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_CmServiceMetricEvent_descriptor,
        new java.lang.String[] { "ServiceName", "ServiceType", "Name", "Value", "Timestamp", "ClusterDetails", });
    internal_static_cdp_telemetry_ClusterDetails_descriptor =
      getDescriptor().getMessageTypes().get(31);
    internal_static_cdp_telemetry_ClusterDetails_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cdp_telemetry_ClusterDetails_descriptor,
        new java.lang.String[] { "Crn", "Name", "Version", "Type", "Platform", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
