
package org.apache.hadoop.hdfs.server.federation.resolver;

import org.apache.hadoop.ha.HAServiceProtocol.HAServiceState;

/**
 * Namenode state in the federation. The order of this enum is used to evaluate
 * NN priority for RPC calls.
 */
public enum FederationNamenodeServiceState {
  ACTIVE, // HAServiceState.ACTIVE or operational.
  STANDBY, // HAServiceState.STANDBY.
  UNAVAILABLE, // When the namenode cannot be reached.
  EXPIRED, // When the last update is too old.
  DISABLED; // When the nameservice is disabled.

  public static FederationNamenodeServiceState getState(HAServiceState state) {
    switch(state) {
    case ACTIVE:
      return FederationNamenodeServiceState.ACTIVE;
    case STANDBY:
      return FederationNamenodeServiceState.STANDBY;
    case INITIALIZING:
      return FederationNamenodeServiceState.UNAVAILABLE;
    case STOPPING:
      return FederationNamenodeServiceState.UNAVAILABLE;
    default:
      return FederationNamenodeServiceState.UNAVAILABLE;
    }
  }
}