org.apache.hadoop.yarn.util.ConverterUtils.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.hadoop.yarn.util.ConverterUtils.java

Source

/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements.  See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership.  The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package org.apache.hadoop.yarn.util;

import java.net.InetSocketAddress;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.classification.InterfaceAudience.Private;
import org.apache.hadoop.classification.InterfaceAudience.Public;
import org.apache.hadoop.classification.InterfaceStability;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.security.SecurityUtil;
import org.apache.hadoop.security.token.Token;
import org.apache.hadoop.security.token.TokenIdentifier;
import org.apache.hadoop.yarn.api.records.ApplicationAttemptId;
import org.apache.hadoop.yarn.api.records.ApplicationId;
import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.URL;
import org.apache.hadoop.yarn.factories.RecordFactory;

/**
 * This class contains a set of utilities which help converting data structures
 * from/to 'serializableFormat' to/from hadoop/nativejava data structures.
 *
 */
@Public
public class ConverterUtils {

    public static final String APPLICATION_PREFIX = "application";
    public static final String CONTAINER_PREFIX = "container";
    public static final String APPLICATION_ATTEMPT_PREFIX = "appattempt";

    /**
     * return a hadoop path from a given url
     * This method is deprecated, use {@link URL#toPath()} instead.
     * 
     * @param url
     *          url to convert
     * @return path from {@link URL}
     * @throws URISyntaxException
     */
    @Public
    @Deprecated
    public static Path getPathFromYarnURL(URL url) throws URISyntaxException {
        return url.toPath();
    }

    /*
     * This method is deprecated, use {@link URL#fromPath(Path)} instead.
     */
    @Public
    @Deprecated
    public static URL getYarnUrlFromPath(Path path) {
        return URL.fromPath(path);
    }

    /*
     * This method is deprecated, use {@link URL#fromURI(URI)} instead.
     */
    @Public
    @Deprecated
    public static URL getYarnUrlFromURI(URI uri) {
        return URL.fromURI(uri);
    }

    /*
     * This method is deprecated, use {@link ApplicationId#toString()} instead.
     */
    @Public
    @Deprecated
    public static String toString(ApplicationId appId) {
        return appId.toString();
    }

    /*
     * This method is deprecated, use {@link ApplicationId#fromString(String)}
     * instead.
     */
    @Public
    @Deprecated
    public static ApplicationId toApplicationId(RecordFactory recordFactory, String applicationIdStr) {
        return ApplicationId.fromString(applicationIdStr);
    }

    /*
     * This method is deprecated, use {@link ContainerId#toString()} instead.
     */
    @Public
    @Deprecated
    public static String toString(ContainerId cId) {
        return cId == null ? null : cId.toString();
    }

    @Private
    @InterfaceStability.Unstable
    public static NodeId toNodeIdWithDefaultPort(String nodeIdStr) {
        if (nodeIdStr.indexOf(":") < 0) {
            return NodeId.fromString(nodeIdStr + ":0");
        }
        return NodeId.fromString(nodeIdStr);
    }

    /*
     * This method is deprecated, use {@link NodeId#fromString(String)} instead.
     */
    @Public
    @Deprecated
    public static NodeId toNodeId(String nodeIdStr) {
        return NodeId.fromString(nodeIdStr);
    }

    /*
     * This method is deprecated, use {@link ContainerId#fromString(String)}
     * instead.
     */
    @Public
    @Deprecated
    public static ContainerId toContainerId(String containerIdStr) {
        return ContainerId.fromString(containerIdStr);
    }

    /*
     * This method is deprecated, use {@link ApplicationAttemptId#toString()}
     * instead.
     */
    @Public
    @Deprecated
    public static ApplicationAttemptId toApplicationAttemptId(String applicationAttemptIdStr) {
        return ApplicationAttemptId.fromString(applicationAttemptIdStr);
    }

    /*
     * This method is deprecated, use {@link ApplicationId#fromString(String)}
     * instead.
     */
    @Public
    @Deprecated
    public static ApplicationId toApplicationId(String appIdStr) {
        return ApplicationId.fromString(appIdStr);
    }

    /**
     * Convert a protobuf token into a rpc token and set its service. Supposed
     * to be used for tokens other than RMDelegationToken. For
     * RMDelegationToken, use
     * {@link #convertFromYarn(org.apache.hadoop.yarn.api.records.Token,
     * org.apache.hadoop.io.Text)} instead.
     *
     * @param protoToken the yarn token
     * @param serviceAddr the connect address for the service
     * @return rpc token
     */
    public static <T extends TokenIdentifier> Token<T> convertFromYarn(
            org.apache.hadoop.yarn.api.records.Token protoToken, InetSocketAddress serviceAddr) {
        Token<T> token = new Token<T>(protoToken.getIdentifier().array(), protoToken.getPassword().array(),
                new Text(protoToken.getKind()), new Text(protoToken.getService()));
        if (serviceAddr != null) {
            SecurityUtil.setTokenService(token, serviceAddr);
        }
        return token;
    }

    /**
     * Convert a protobuf token into a rpc token and set its service.
     *
     * @param protoToken the yarn token
     * @param service the service for the token
     */
    public static <T extends TokenIdentifier> Token<T> convertFromYarn(
            org.apache.hadoop.yarn.api.records.Token protoToken, Text service) {
        Token<T> token = new Token<T>(protoToken.getIdentifier().array(), protoToken.getPassword().array(),
                new Text(protoToken.getKind()), new Text(protoToken.getService()));

        if (service != null) {
            token.setService(service);
        }
        return token;
    }
}