org.apache.hadoop.yarn.api.records.impl.pb.ProtoUtils.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.hadoop.yarn.api.records.impl.pb.ProtoUtils.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.api.records.impl.pb;

import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.hadoop.classification.InterfaceAudience.Private;
import org.apache.hadoop.classification.InterfaceStability.Unstable;
import org.apache.hadoop.yarn.api.protocolrecords.ApplicationsRequestScope;
import org.apache.hadoop.yarn.api.protocolrecords.ResourceTypes;
import org.apache.hadoop.yarn.api.records.AMCommand;
import org.apache.hadoop.yarn.api.records.ApplicationAccessType;
import org.apache.hadoop.yarn.api.records.ApplicationResourceUsageReport;
import org.apache.hadoop.yarn.api.records.ApplicationTimeoutType;
import org.apache.hadoop.yarn.api.records.Container;
import org.apache.hadoop.yarn.api.records.ContainerId;
import org.apache.hadoop.yarn.api.records.ContainerRetryPolicy;
import org.apache.hadoop.yarn.api.records.ContainerState;
import org.apache.hadoop.yarn.api.records.ContainerSubState;
import org.apache.hadoop.yarn.api.records.ContainerUpdateType;
import org.apache.hadoop.yarn.api.records.ExecutionTypeRequest;
import org.apache.hadoop.yarn.api.records.ExecutionType;
import org.apache.hadoop.yarn.api.records.FinalApplicationStatus;
import org.apache.hadoop.yarn.api.records.LocalResourceType;
import org.apache.hadoop.yarn.api.records.LocalResourceVisibility;
import org.apache.hadoop.yarn.api.records.LogAggregationStatus;
import org.apache.hadoop.yarn.api.records.NodeId;
import org.apache.hadoop.yarn.api.records.NodeState;
import org.apache.hadoop.yarn.api.records.NodeUpdateType;
import org.apache.hadoop.yarn.api.records.QueueACL;
import org.apache.hadoop.yarn.api.records.QueueState;
import org.apache.hadoop.yarn.api.records.RejectionReason;
import org.apache.hadoop.yarn.api.records.ReservationRequestInterpreter;
import org.apache.hadoop.yarn.api.records.Resource;
import org.apache.hadoop.yarn.api.records.ResourceInformation;
import org.apache.hadoop.yarn.api.records.UpdateContainerError;
import org.apache.hadoop.yarn.api.records.UpdateContainerRequest;
import org.apache.hadoop.yarn.api.records.YarnApplicationAttemptState;
import org.apache.hadoop.yarn.api.records.YarnApplicationState;
import org.apache.hadoop.yarn.api.resource.PlacementConstraint.TargetExpression;
import org.apache.hadoop.yarn.api.resource.PlacementConstraint.TimedPlacementConstraint;
import org.apache.hadoop.yarn.proto.YarnProtos;
import org.apache.hadoop.yarn.proto.YarnProtos.AMCommandProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ApplicationAccessTypeProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ApplicationResourceUsageReportProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ApplicationTimeoutTypeProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ContainerIdProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ContainerStateProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ContainerSubStateProto;
import org.apache.hadoop.yarn.proto.YarnProtos.FinalApplicationStatusProto;
import org.apache.hadoop.yarn.proto.YarnProtos.LocalResourceTypeProto;
import org.apache.hadoop.yarn.proto.YarnProtos.LocalResourceVisibilityProto;
import org.apache.hadoop.yarn.proto.YarnProtos.LogAggregationStatusProto;
import org.apache.hadoop.yarn.proto.YarnProtos.NodeIdProto;
import org.apache.hadoop.yarn.proto.YarnProtos.NodeStateProto;
import org.apache.hadoop.yarn.proto.YarnProtos.PlacementConstraintTargetProto;
import org.apache.hadoop.yarn.proto.YarnProtos.QueueACLProto;
import org.apache.hadoop.yarn.proto.YarnProtos.QueueStateProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ReservationRequestInterpreterProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ResourceProto;
import org.apache.hadoop.yarn.proto.YarnProtos.TimedPlacementConstraintProto;
import org.apache.hadoop.yarn.proto.YarnProtos.YarnApplicationAttemptStateProto;
import org.apache.hadoop.yarn.proto.YarnProtos.YarnApplicationStateProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ContainerRetryPolicyProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ContainerTypeProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ExecutionTypeProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ExecutionTypeRequestProto;
import org.apache.hadoop.yarn.proto.YarnProtos.ResourceTypesProto;
import org.apache.hadoop.yarn.proto.YarnProtos.NodeUpdateTypeProto;
import org.apache.hadoop.yarn.proto.YarnServiceProtos;
import org.apache.hadoop.yarn.proto.YarnServiceProtos.ContainerUpdateTypeProto;
import org.apache.hadoop.yarn.server.api.ContainerType;

import com.google.protobuf.ByteString;

@Private
@Unstable
public class ProtoUtils {

    /*
     * ContainerState
     */
    private final static String CONTAINER_STATE_PREFIX = "C_";

    public static ContainerStateProto convertToProtoFormat(ContainerState e) {
        return ContainerStateProto.valueOf(CONTAINER_STATE_PREFIX + e.name());
    }

    public static ContainerState convertFromProtoFormat(ContainerStateProto e) {
        return ContainerState.valueOf(e.name().replace(CONTAINER_STATE_PREFIX, ""));
    }

    /*
     * Container SubState
     */
    private final static String CONTAINER_SUB_STATE_PREFIX = "CSS_";

    public static ContainerSubStateProto convertToProtoFormat(ContainerSubState e) {
        return ContainerSubStateProto.valueOf(CONTAINER_SUB_STATE_PREFIX + e.name());
    }

    public static ContainerSubState convertFromProtoFormat(ContainerSubStateProto e) {
        return ContainerSubState.valueOf(e.name().substring(CONTAINER_SUB_STATE_PREFIX.length()));
    }

    /*
     * NodeState
     */
    private final static String NODE_STATE_PREFIX = "NS_";

    public static NodeStateProto convertToProtoFormat(NodeState e) {
        return NodeStateProto.valueOf(NODE_STATE_PREFIX + e.name());
    }

    public static NodeState convertFromProtoFormat(NodeStateProto e) {
        return NodeState.valueOf(e.name().replace(NODE_STATE_PREFIX, ""));
    }

    /*
     * NodeId
     */
    public static NodeIdProto convertToProtoFormat(NodeId e) {
        return ((NodeIdPBImpl) e).getProto();
    }

    public static NodeId convertFromProtoFormat(NodeIdProto e) {
        return new NodeIdPBImpl(e);
    }

    /*
     * YarnApplicationState
     */
    public static YarnApplicationStateProto convertToProtoFormat(YarnApplicationState e) {
        return YarnApplicationStateProto.valueOf(e.name());
    }

    public static YarnApplicationState convertFromProtoFormat(YarnApplicationStateProto e) {
        return YarnApplicationState.valueOf(e.name());
    }

    /*
     * YarnApplicationAttemptState
     */
    private static String YARN_APPLICATION_ATTEMPT_STATE_PREFIX = "APP_ATTEMPT_";

    public static YarnApplicationAttemptStateProto convertToProtoFormat(YarnApplicationAttemptState e) {
        return YarnApplicationAttemptStateProto.valueOf(YARN_APPLICATION_ATTEMPT_STATE_PREFIX + e.name());
    }

    public static YarnApplicationAttemptState convertFromProtoFormat(YarnApplicationAttemptStateProto e) {
        return YarnApplicationAttemptState.valueOf(e.name().replace(YARN_APPLICATION_ATTEMPT_STATE_PREFIX, ""));
    }

    /*
     * ApplicationsRequestScope
     */
    public static YarnServiceProtos.ApplicationsRequestScopeProto convertToProtoFormat(ApplicationsRequestScope e) {
        return YarnServiceProtos.ApplicationsRequestScopeProto.valueOf(e.name());
    }

    public static ApplicationsRequestScope convertFromProtoFormat(
            YarnServiceProtos.ApplicationsRequestScopeProto e) {
        return ApplicationsRequestScope.valueOf(e.name());
    }

    /*
     * ApplicationResourceUsageReport
     */
    public static ApplicationResourceUsageReportProto convertToProtoFormat(ApplicationResourceUsageReport e) {
        return ((ApplicationResourceUsageReportPBImpl) e).getProto();
    }

    public static ApplicationResourceUsageReport convertFromProtoFormat(ApplicationResourceUsageReportProto e) {
        return new ApplicationResourceUsageReportPBImpl(e);
    }

    /*
     * FinalApplicationStatus
     */
    private static String FINAL_APPLICATION_STATUS_PREFIX = "APP_";

    public static FinalApplicationStatusProto convertToProtoFormat(FinalApplicationStatus e) {
        return FinalApplicationStatusProto.valueOf(FINAL_APPLICATION_STATUS_PREFIX + e.name());
    }

    public static FinalApplicationStatus convertFromProtoFormat(FinalApplicationStatusProto e) {
        return FinalApplicationStatus.valueOf(e.name().replace(FINAL_APPLICATION_STATUS_PREFIX, ""));
    }

    /*
     * LocalResourceType
     */
    public static LocalResourceTypeProto convertToProtoFormat(LocalResourceType e) {
        return LocalResourceTypeProto.valueOf(e.name());
    }

    public static LocalResourceType convertFromProtoFormat(LocalResourceTypeProto e) {
        return LocalResourceType.valueOf(e.name());
    }

    /*
     * LocalResourceVisibility
     */
    public static LocalResourceVisibilityProto convertToProtoFormat(LocalResourceVisibility e) {
        return LocalResourceVisibilityProto.valueOf(e.name());
    }

    public static LocalResourceVisibility convertFromProtoFormat(LocalResourceVisibilityProto e) {
        return LocalResourceVisibility.valueOf(e.name());
    }

    /*
     * AMCommand
     */
    public static AMCommandProto convertToProtoFormat(AMCommand e) {
        return AMCommandProto.valueOf(e.name());
    }

    public static AMCommand convertFromProtoFormat(AMCommandProto e) {
        return AMCommand.valueOf(e.name());
    }

    /*
     * RejectionReason
     */
    private static final String REJECTION_REASON_PREFIX = "RRP_";

    public static YarnProtos.RejectionReasonProto convertToProtoFormat(RejectionReason e) {
        return YarnProtos.RejectionReasonProto.valueOf(REJECTION_REASON_PREFIX + e.name());
    }

    public static RejectionReason convertFromProtoFormat(YarnProtos.RejectionReasonProto e) {
        return RejectionReason.valueOf(e.name().replace(REJECTION_REASON_PREFIX, ""));
    }

    /*
     * ByteBuffer
     */
    public static ByteBuffer convertFromProtoFormat(ByteString byteString) {
        int capacity = byteString.asReadOnlyByteBuffer().rewind().remaining();
        byte[] b = new byte[capacity];
        byteString.asReadOnlyByteBuffer().get(b, 0, capacity);
        return ByteBuffer.wrap(b);
    }

    public static ByteString convertToProtoFormat(ByteBuffer byteBuffer) {
        //    return ByteString.copyFrom((ByteBuffer)byteBuffer.duplicate().rewind());
        int oldPos = byteBuffer.position();
        byteBuffer.rewind();
        ByteString bs = ByteString.copyFrom(byteBuffer);
        byteBuffer.position(oldPos);
        return bs;
    }

    /*
     * QueueState
     */
    private static String QUEUE_STATE_PREFIX = "Q_";

    public static QueueStateProto convertToProtoFormat(QueueState e) {
        return QueueStateProto.valueOf(QUEUE_STATE_PREFIX + e.name());
    }

    public static QueueState convertFromProtoFormat(QueueStateProto e) {
        return QueueState.valueOf(e.name().replace(QUEUE_STATE_PREFIX, ""));
    }

    /*
     * QueueACL
     */
    private static String QUEUE_ACL_PREFIX = "QACL_";

    public static QueueACLProto convertToProtoFormat(QueueACL e) {
        return QueueACLProto.valueOf(QUEUE_ACL_PREFIX + e.name());
    }

    public static QueueACL convertFromProtoFormat(QueueACLProto e) {
        return QueueACL.valueOf(e.name().replace(QUEUE_ACL_PREFIX, ""));
    }

    /*
     * ApplicationAccessType
     */
    private static String APP_ACCESS_TYPE_PREFIX = "APPACCESS_";

    public static ApplicationAccessTypeProto convertToProtoFormat(ApplicationAccessType e) {
        return ApplicationAccessTypeProto.valueOf(APP_ACCESS_TYPE_PREFIX + e.name());
    }

    public static ApplicationAccessType convertFromProtoFormat(ApplicationAccessTypeProto e) {
        return ApplicationAccessType.valueOf(e.name().replace(APP_ACCESS_TYPE_PREFIX, ""));
    }

    /*
     * ApplicationTimeoutType
     */
    private static String APP_TIMEOUT_TYPE_PREFIX = "APP_TIMEOUT_";

    public static ApplicationTimeoutTypeProto convertToProtoFormat(ApplicationTimeoutType e) {
        return ApplicationTimeoutTypeProto.valueOf(APP_TIMEOUT_TYPE_PREFIX + e.name());
    }

    public static ApplicationTimeoutType convertFromProtoFormat(ApplicationTimeoutTypeProto e) {
        return ApplicationTimeoutType.valueOf(e.name().replace(APP_TIMEOUT_TYPE_PREFIX, ""));
    }

    /*
     * Reservation Request interpreter type
     */
    public static ReservationRequestInterpreterProto convertToProtoFormat(ReservationRequestInterpreter e) {
        return ReservationRequestInterpreterProto.valueOf(e.name());
    }

    public static ReservationRequestInterpreter convertFromProtoFormat(ReservationRequestInterpreterProto e) {
        return ReservationRequestInterpreter.valueOf(e.name());
    }

    /*
     * Log Aggregation Status
     */
    private static final String LOG_AGGREGATION_STATUS_PREFIX = "LOG_";
    private static final int LOG_AGGREGATION_STATUS_PREFIX_LEN = LOG_AGGREGATION_STATUS_PREFIX.length();

    public static LogAggregationStatusProto convertToProtoFormat(LogAggregationStatus e) {
        return LogAggregationStatusProto.valueOf(LOG_AGGREGATION_STATUS_PREFIX + e.name());
    }

    public static LogAggregationStatus convertFromProtoFormat(LogAggregationStatusProto e) {
        return LogAggregationStatus.valueOf(e.name().substring(LOG_AGGREGATION_STATUS_PREFIX_LEN));
    }

    /*
     * ContainerType
     */
    public static ContainerTypeProto convertToProtoFormat(ContainerType e) {
        return ContainerTypeProto.valueOf(e.name());
    }

    public static ContainerType convertFromProtoFormat(ContainerTypeProto e) {
        return ContainerType.valueOf(e.name());
    }

    /*
    * NodeUpdateType
    */
    public static NodeUpdateTypeProto convertToProtoFormat(NodeUpdateType e) {
        return NodeUpdateTypeProto.valueOf(e.name());
    }

    public static NodeUpdateType convertFromProtoFormat(NodeUpdateTypeProto e) {
        return NodeUpdateType.valueOf(e.name());
    }

    /*
     * ExecutionType
     */
    public static ExecutionTypeProto convertToProtoFormat(ExecutionType e) {
        return ExecutionTypeProto.valueOf(e.name());
    }

    public static ExecutionType convertFromProtoFormat(ExecutionTypeProto e) {
        return ExecutionType.valueOf(e.name());
    }

    /*
     * ContainerUpdateType
     */
    public static ContainerUpdateTypeProto convertToProtoFormat(ContainerUpdateType e) {
        return ContainerUpdateTypeProto.valueOf(e.name());
    }

    public static ContainerUpdateType convertFromProtoFormat(ContainerUpdateTypeProto e) {
        return ContainerUpdateType.valueOf(e.name());
    }

    /*
     * Resource
     */
    public static synchronized ResourceProto convertToProtoFormat(Resource r) {
        return ResourcePBImpl.getProto(r);
    }

    public static Resource convertFromProtoFormat(ResourceProto resource) {
        return new ResourcePBImpl(resource);
    }

    /*
     * ContainerRetryPolicy
     */
    public static ContainerRetryPolicyProto convertToProtoFormat(ContainerRetryPolicy e) {
        return ContainerRetryPolicyProto.valueOf(e.name());
    }

    public static ContainerRetryPolicy convertFromProtoFormat(ContainerRetryPolicyProto e) {
        return ContainerRetryPolicy.valueOf(e.name());
    }

    /*
     * ExecutionTypeRequest
     */
    public static ExecutionTypeRequestProto convertToProtoFormat(ExecutionTypeRequest e) {
        return ((ExecutionTypeRequestPBImpl) e).getProto();
    }

    public static ExecutionTypeRequest convertFromProtoFormat(ExecutionTypeRequestProto e) {
        return new ExecutionTypeRequestPBImpl(e);
    }

    /*
     * Container
     */
    public static YarnProtos.ContainerProto convertToProtoFormat(Container t) {
        return ((ContainerPBImpl) t).getProto();
    }

    public static ContainerPBImpl convertFromProtoFormat(YarnProtos.ContainerProto t) {
        return new ContainerPBImpl(t);
    }

    public static ContainerStatusPBImpl convertFromProtoFormat(YarnProtos.ContainerStatusProto p) {
        return new ContainerStatusPBImpl(p);
    }

    /*
     * ContainerId
     */
    public static ContainerIdPBImpl convertFromProtoFormat(ContainerIdProto p) {
        return new ContainerIdPBImpl(p);
    }

    public static ContainerIdProto convertToProtoFormat(ContainerId t) {
        return ((ContainerIdPBImpl) t).getProto();
    }

    /*
     * UpdateContainerRequest
     */
    public static UpdateContainerRequestPBImpl convertFromProtoFormat(
            YarnServiceProtos.UpdateContainerRequestProto p) {
        return new UpdateContainerRequestPBImpl(p);
    }

    public static YarnServiceProtos.UpdateContainerRequestProto convertToProtoFormat(UpdateContainerRequest t) {
        return ((UpdateContainerRequestPBImpl) t).getProto();
    }

    /*
     * UpdateContainerError
     */
    public static UpdateContainerErrorPBImpl convertFromProtoFormat(YarnServiceProtos.UpdateContainerErrorProto p) {
        return new UpdateContainerErrorPBImpl(p);
    }

    public static YarnServiceProtos.UpdateContainerErrorProto convertToProtoFormat(UpdateContainerError t) {
        return ((UpdateContainerErrorPBImpl) t).getProto();
    }

    /*
     * ResourceTypes
     */
    public static ResourceTypesProto converToProtoFormat(ResourceTypes e) {
        return ResourceTypesProto.valueOf(e.name());
    }

    public static ResourceTypes convertFromProtoFormat(ResourceTypesProto e) {
        return ResourceTypes.valueOf(e.name());
    }

    public static Map<String, Long> convertStringLongMapProtoListToMap(List<YarnProtos.StringLongMapProto> pList) {
        Resource tmp = Resource.newInstance(0, 0);
        Map<String, Long> ret = new HashMap<>();
        for (ResourceInformation entry : tmp.getResources()) {
            ret.put(entry.getName(), 0L);
        }
        if (pList != null) {
            for (YarnProtos.StringLongMapProto p : pList) {
                ret.put(p.getKey(), p.getValue());
            }
        }
        return ret;
    }

    public static List<YarnProtos.StringLongMapProto> convertMapToStringLongMapProtoList(Map<String, Long> map) {
        List<YarnProtos.StringLongMapProto> ret = new ArrayList<>();
        for (Map.Entry<String, Long> entry : map.entrySet()) {
            YarnProtos.StringLongMapProto.Builder tmp = YarnProtos.StringLongMapProto.newBuilder();
            tmp.setKey(entry.getKey());
            tmp.setValue(entry.getValue());
            ret.add(tmp.build());
        }
        return ret;
    }

    public static PlacementConstraintTargetProto.TargetType convertToProtoFormat(TargetExpression.TargetType t) {
        return PlacementConstraintTargetProto.TargetType.valueOf(t.name());
    }

    public static TargetExpression.TargetType convertFromProtoFormat(PlacementConstraintTargetProto.TargetType t) {
        return TargetExpression.TargetType.valueOf(t.name());
    }

    /*
     * TimedPlacementConstraint.DelayUnit
     */
    public static TimedPlacementConstraintProto.DelayUnit convertToProtoFormat(
            TimedPlacementConstraint.DelayUnit u) {
        return TimedPlacementConstraintProto.DelayUnit.valueOf(u.name());
    }

    public static TimedPlacementConstraint.DelayUnit convertFromProtoFormat(
            TimedPlacementConstraintProto.DelayUnit u) {
        return TimedPlacementConstraint.DelayUnit.valueOf(u.name());
    }
}