001/*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements.  See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership.  The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License.  You may obtain a copy of the License at
009 *
010 *     http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019package org.apache.hadoop.registry.client.types;
020
021import org.apache.hadoop.classification.InterfaceAudience;
022import org.apache.hadoop.classification.InterfaceStability;
023
024/**
025 * Enum of address types -as integers.
026 * Why integers and not enums? Cross platform serialization as JSON
027 */
028@InterfaceAudience.Public
029@InterfaceStability.Evolving
030public interface AddressTypes {
031
032  /**
033   * hostname/FQDN and port pair: {@value}.
034   * The host/domain name and port are set as separate strings in the address
035   * list, e.g.
036   * <pre>
037   *   ["namenode.example.org", "50070"]
038   * </pre>
039   */
040  public static final String ADDRESS_HOSTNAME_AND_PORT = "host/port";
041  public static final String ADDRESS_HOSTNAME_FIELD = "host";
042  public static final String ADDRESS_PORT_FIELD = "port";
043
044
045  /**
046   * Path <code>/a/b/c</code> style: {@value}.
047   * The entire path is encoded in a single entry
048   *
049   * <pre>
050   *   ["/users/example/dataset"]
051   * </pre>
052   */
053  public static final String ADDRESS_PATH = "path";
054
055
056
057  /**
058   * URI entries: {@value}.
059   * <pre>
060   *   ["http://example.org"]
061   * </pre>
062   */
063  public static final String ADDRESS_URI = "uri";
064
065  /**
066   * Zookeeper addresses as a triple : {@value}.
067   * <p>
068   * These are provide as a 3 element tuple of: hostname, port
069   * and optionally path (depending on the application)
070   * <p>
071   *   A single element would be
072   * <pre>
073   *   ["zk1","2181","/registry"]
074   * </pre>
075   *  An endpoint with multiple elements would list them as
076   * <pre>
077   *   [
078   *    ["zk1","2181","/registry"]
079   *    ["zk2","1600","/registry"]
080   *   ]
081   * </pre>
082   *
083   * the third element in each entry , the path, MUST be the same in each entry.
084   * A client reading the addresses of an endpoint is free to pick any
085   * of the set, so they must be the same.
086   *
087   */
088  public static final String ADDRESS_ZOOKEEPER = "zktriple";
089
090  /**
091   * Any other address: {@value}.
092   */
093  public static final String ADDRESS_OTHER = "";
094}