/**
 * 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.
 */

/**
 * These .proto interfaces are public and stable.
 * Please see http://wiki.apache.org/hadoop/Compatibility
 * for what changes are allowed for a *stable* .proto interface.
 */

option java_package = "org.apache.hadoop.yarn.proto";
option java_outer_classname = "YarnProtos";
option java_generic_services = true;
option java_generate_equals_and_hash = true;
package hadoop.yarn;

import "Security.proto";

message SerializedExceptionProto {
  optional string message = 1;
  optional string trace = 2;
  optional string class_name = 3;
  optional SerializedExceptionProto cause = 4;
}

message ApplicationIdProto {
  optional int32 id = 1;
  optional int64 cluster_timestamp = 2;
}

message ApplicationAttemptIdProto {
  optional ApplicationIdProto application_id = 1;
  optional int32 attemptId = 2;
}

message ContainerIdProto {
  optional ApplicationIdProto app_id = 1;
  optional ApplicationAttemptIdProto app_attempt_id = 2;
  optional int64 id = 3;
}

enum ResourceTypesProto {
  COUNTABLE = 0;
}

message ResourceInformationProto {
  required string key = 1;
  optional int64 value = 2;
  optional string units = 3;
  optional ResourceTypesProto type = 4;
}

message ResourceTypeInfoProto {
  required string name = 1;
  optional string units = 2;
  optional ResourceTypesProto type = 3;
}

message ResourceProto {
  optional int64 memory = 1;
  optional int32 virtual_cores = 2;
  repeated ResourceInformationProto resource_value_map = 3;
}

message ResourceUtilizationProto {
  optional int32 pmem = 1;
  optional int32 vmem = 2;
  optional float cpu = 3;
}

message ResourceOptionProto {
  optional ResourceProto resource = 1;
  optional int32 over_commit_timeout = 2;
}

message ResourceProfileEntry {
  required string name = 1;
  required ResourceProto resources = 2;
}

message ResourceProfilesProto {
  repeated ResourceProfileEntry resource_profiles_map = 1;
}

message NodeResourceMapProto {
  optional NodeIdProto node_id = 1;
  optional ResourceOptionProto resource_option = 2;
}

message PriorityProto {
  optional int32 priority = 1;
}

enum ContainerStateProto {
  C_NEW = 1;
  C_RUNNING = 2;
  C_COMPLETE = 3;
}

enum ContainerSubStateProto {
 /**
  * NEW, LOCALIZING, SCHEDULED,
  * REINITIALIZING_AWAITING_KILL, RELAUNCHING,
  */
  CSS_SCHEDULED = 1;

 /**
  * RUNNING, REINITIALIZING, PAUSING, KILLING
  */
  CSS_RUNNING = 2;

 /**
  * PAUSED, RESUMING
  */
  CSS_PAUSED = 3;

 /**
  * LOCALIZATION_FAILED, EXITED_WITH_SUCCESS,
  * EXITED_WITH_FAILURE,
  * CONTAINER_CLEANEDUP_AFTER_KILL,
  * CONTAINER_RESOURCES_CLEANINGUP
  */
  CSS_COMPLETING = 4;

 /**
  * DONE
  */
  CSS_DONE = 5;
}

message ContainerProto {
  optional ContainerIdProto id = 1;
  optional NodeIdProto nodeId = 2;
  optional string node_http_address = 3;
  optional ResourceProto resource = 4;
  optional PriorityProto priority = 5;
  optional hadoop.common.TokenProto container_token = 6;
  optional ExecutionTypeProto execution_type = 7 [default = GUARANTEED];
  optional int64 allocation_request_id = 8 [default = -1];
  optional int32 version = 9 [default = 0];
  repeated string allocation_tags = 10;
}

message ContainerReportProto {
  optional ContainerIdProto container_id = 1;
  optional ResourceProto resource = 2;
  optional NodeIdProto node_id = 3;
  optional PriorityProto priority = 4;
  optional int64 creation_time = 5;
  optional int64 finish_time = 6;
  optional string diagnostics_info = 7 [default = "N/A"];
  optional string log_url = 8;
  optional int32 container_exit_status = 9;
  optional ContainerStateProto container_state = 10;
  optional string node_http_address = 11;
  optional ExecutionTypeProto executionType = 12 [default = GUARANTEED];
}

enum YarnApplicationStateProto {
  NEW = 1;
  NEW_SAVING = 2;
  SUBMITTED = 3;
  ACCEPTED = 4;
  RUNNING = 5;
  FINISHED = 6;
  FAILED = 7;
  KILLED = 8;
}

enum YarnApplicationAttemptStateProto {
  APP_ATTEMPT_NEW = 1;
  APP_ATTEMPT_SUBMITTED = 2;
  APP_ATTEMPT_SCHEDULED = 3;
  APP_ATTEMPT_ALLOCATED_SAVING = 4;
  APP_ATTEMPT_ALLOCATED = 5;
  APP_ATTEMPT_LAUNCHED = 6;
  APP_ATTEMPT_FAILED = 7;
  APP_ATTEMPT_RUNNING = 8;
  APP_ATTEMPT_FINISHING = 9;
  APP_ATTEMPT_FINISHED = 10;
  APP_ATTEMPT_KILLED = 11;
}

enum FinalApplicationStatusProto {
  APP_UNDEFINED = 0;
  APP_SUCCEEDED = 1;
  APP_FAILED = 2;
  APP_KILLED = 3;
  APP_ENDED = 4;
}

message URLProto {
  optional string scheme = 1;
  optional string host = 2;
  optional int32 port = 3;
  optional string file = 4;
  optional string userInfo = 5;
}

enum LocalResourceVisibilityProto {
  PUBLIC = 1;
  PRIVATE = 2;
  APPLICATION = 3;
}

enum LocalResourceTypeProto {
  ARCHIVE = 1;
  FILE = 2;
  PATTERN = 3;
}

message LocalResourceProto {
  optional URLProto resource = 1;
  optional int64 size = 2;
  optional int64 timestamp = 3;
  optional LocalResourceTypeProto type = 4;
  optional LocalResourceVisibilityProto visibility = 5;
  optional string pattern = 6;
  optional bool should_be_uploaded_to_shared_cache = 7;
}

message StringLongMapProto {
  required string key  = 1;
  required int64 value = 2;
}

message ApplicationResourceUsageReportProto {
  optional int32 num_used_containers = 1;
  optional int32 num_reserved_containers = 2;
  optional ResourceProto used_resources = 3;
  optional ResourceProto reserved_resources = 4;
  optional ResourceProto needed_resources = 5;
  optional int64 memory_seconds = 6;
  optional int64 vcore_seconds = 7;
  optional float queue_usage_percentage = 8;
  optional float cluster_usage_percentage = 9;
  optional int64 preempted_memory_seconds = 10;
  optional int64 preempted_vcore_seconds = 11;
  repeated StringLongMapProto application_resource_usage_map = 12;
  repeated StringLongMapProto application_preempted_resource_usage_map = 13;
}

message ApplicationReportProto {
  optional ApplicationIdProto applicationId = 1;
  optional string user = 2;
  optional string queue = 3;
  optional string name = 4;
  optional string host = 5;
  optional int32 rpc_port = 6;
  optional hadoop.common.TokenProto client_to_am_token = 7;
  optional YarnApplicationStateProto yarn_application_state = 8;
  optional string trackingUrl = 9;
  optional string diagnostics = 10 [default = "N/A"];
  optional int64 startTime = 11;
  optional int64 finishTime = 12;
  optional FinalApplicationStatusProto final_application_status = 13;
  optional ApplicationResourceUsageReportProto app_resource_Usage = 14;
  optional string originalTrackingUrl = 15;
  optional ApplicationAttemptIdProto currentApplicationAttemptId = 16;
  optional float progress = 17;
  optional string applicationType = 18;
  optional hadoop.common.TokenProto am_rm_token = 19;
  repeated string applicationTags = 20;
  optional LogAggregationStatusProto log_aggregation_status = 21;
  optional bool unmanaged_application = 22 [default = false];
  optional PriorityProto priority = 23;
  optional string appNodeLabelExpression = 24;
  optional string amNodeLabelExpression = 25;
  repeated AppTimeoutsMapProto appTimeouts = 26;
  optional int64 launchTime = 27;
}

message AppTimeoutsMapProto {
  optional ApplicationTimeoutTypeProto application_timeout_type = 1;
  optional ApplicationTimeoutProto application_timeout = 2;
}

message ApplicationTimeoutProto {
  required ApplicationTimeoutTypeProto application_timeout_type = 1;
  optional string expire_time = 2;
  optional int64 remaining_time = 3;
}

enum LogAggregationStatusProto {
  LOG_DISABLED = 1;
  LOG_NOT_START = 2;
  LOG_RUNNING = 3;
  LOG_SUCCEEDED = 4;
  LOG_FAILED = 5;
  LOG_TIME_OUT = 6;
  LOG_RUNNING_WITH_FAILURE = 7;
}

message ApplicationAttemptReportProto {
  optional ApplicationAttemptIdProto application_attempt_id = 1;
  optional string host = 2;
  optional int32 rpc_port = 3;
  optional string tracking_url = 4;
  optional string diagnostics = 5 [default = "N/A"];
  optional YarnApplicationAttemptStateProto yarn_application_attempt_state = 6;
  optional ContainerIdProto am_container_id = 7;
  optional string original_tracking_url = 8;
  optional int64 startTime = 9;
  optional int64 finishTime = 10;
}

enum NodeStateProto {
  NS_NEW = 1; 
  NS_RUNNING = 2; 
  NS_UNHEALTHY = 3;
  NS_DECOMMISSIONED = 4; 
  NS_LOST = 5;
  NS_REBOOTED = 6;
  NS_DECOMMISSIONING = 7;
  NS_SHUTDOWN = 8;
}

message NodeIdProto {
  optional string host = 1;
  optional int32 port = 2;
}

enum NodeUpdateTypeProto {
  NODE_USABLE = 0;
  NODE_UNUSABLE = 1;
  NODE_DECOMMISSIONING = 2;
}

message NodeReportProto {
  optional NodeIdProto nodeId = 1;
  optional string httpAddress = 2;
  optional string rackName = 3;
  optional ResourceProto used = 4;
  optional ResourceProto capability = 5;
  optional int32 numContainers = 6;
  optional NodeStateProto node_state = 7;
  optional string health_report = 8;
  optional int64 last_health_report_time = 9;
  repeated string node_labels = 10;
  optional ResourceUtilizationProto containers_utilization = 11;
  optional ResourceUtilizationProto node_utilization = 12;
  optional uint32 decommissioning_timeout = 13;
  optional NodeUpdateTypeProto node_update_type = 14;
}

message NodeIdToLabelsProto {
  optional NodeIdProto nodeId = 1;
  repeated string nodeLabels = 2;
}

message LabelsToNodeIdsProto {
  optional string nodeLabels = 1;
  repeated NodeIdProto nodeId = 2;
}

message NodeLabelProto {
  optional string name = 1;
  optional bool isExclusive = 2 [default = true]; 
}

enum ContainerTypeProto {
  APPLICATION_MASTER = 1;
  TASK = 2;
}

enum ExecutionTypeProto {
  GUARANTEED = 1;
  OPPORTUNISTIC = 2;
}

////////////////////////////////////////////////////////////////////////
////// From AM_RM_Protocol /////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
message ResourceRequestProto {
  optional PriorityProto priority = 1;
  optional string resource_name = 2;
  optional ResourceProto capability = 3;
  optional int32 num_containers = 4;
  optional bool relax_locality = 5 [default = true];
  optional string node_label_expression = 6;
  optional ExecutionTypeRequestProto execution_type_request = 7;
  optional int64 allocation_request_id = 8 [default = -1];
}

message ExecutionTypeRequestProto {
  optional ExecutionTypeProto execution_type = 1 [default = GUARANTEED];
  optional bool enforce_execution_type = 2 [default = false];
}

message SchedulingRequestProto {
  optional int64 allocationRequestId = 1 [default = 0];
  optional PriorityProto priority = 2;
  optional ExecutionTypeRequestProto executionType = 3;
  repeated string allocationTags = 4;
  optional ResourceSizingProto resourceSizing = 5;
  optional PlacementConstraintProto placementConstraint = 6;
}

message ResourceSizingProto {
  optional int32 numAllocations = 1;
  optional ResourceProto resources = 2;
}

enum AMCommandProto {
  AM_RESYNC = 1;
  AM_SHUTDOWN = 2;
}

enum RejectionReasonProto {
  RRP_COULD_NOT_PLACE_ON_NODE = 1;
  RRP_COULD_NOT_SCHEDULE_ON_NODE = 2;
}

message RejectedSchedulingRequestProto {
  required RejectionReasonProto reason = 1;
  required SchedulingRequestProto request = 2;
}

message PreemptionMessageProto {
  optional StrictPreemptionContractProto strictContract = 1;
  optional PreemptionContractProto contract = 2;
}

message StrictPreemptionContractProto {
  repeated PreemptionContainerProto container = 1;
}

message PreemptionContractProto {
  repeated PreemptionResourceRequestProto resource = 1;
  repeated PreemptionContainerProto container = 2;
}

message PreemptionContainerProto {
  optional ContainerIdProto id = 1;
}

message PreemptionResourceRequestProto {
  optional ResourceRequestProto resource = 1;
}

message ResourceBlacklistRequestProto {
  repeated string blacklist_additions = 1; 
  repeated string blacklist_removals = 2; 
}

////////////////////////////////////////////////////////////////////////
////// From client_RM_Protocol /////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
message ApplicationSubmissionContextProto {
  optional ApplicationIdProto application_id = 1;
  optional string application_name = 2 [default = "N/A"];
  optional string queue = 3 [default = "default"];
  optional PriorityProto priority = 4;
  optional ContainerLaunchContextProto am_container_spec = 5;
  optional bool cancel_tokens_when_complete = 6 [default = true];
  optional bool unmanaged_am = 7 [default = false];
  optional int32 maxAppAttempts = 8 [default = 0];
  optional ResourceProto resource = 9;
  optional string applicationType = 10 [default = "YARN"];
  optional bool keep_containers_across_application_attempts = 11 [default = false];
  repeated string applicationTags = 12;
  optional int64 attempt_failures_validity_interval = 13 [default = -1];
  optional LogAggregationContextProto log_aggregation_context = 14;
  optional ReservationIdProto reservation_id = 15;
  optional string node_label_expression = 16;
  repeated ResourceRequestProto am_container_resource_request = 17;
  repeated ApplicationTimeoutMapProto application_timeouts = 18;
  repeated StringStringMapProto application_scheduling_properties = 19;
}

enum ApplicationTimeoutTypeProto {
  APP_TIMEOUT_LIFETIME = 1;
}

message ApplicationTimeoutMapProto {
  optional ApplicationTimeoutTypeProto application_timeout_type = 1;
  optional int64 timeout = 2;
}

message ApplicationUpdateTimeoutMapProto {
  optional ApplicationTimeoutTypeProto application_timeout_type = 1;
  optional string expire_time = 2;
}

message LogAggregationContextProto {
 optional string include_pattern = 1 [default = ".*"];
 optional string exclude_pattern = 2 [default = ""];
 optional string rolled_logs_include_pattern = 3 [default = ""];
 optional string rolled_logs_exclude_pattern = 4 [default = ".*"];
 optional string log_aggregation_policy_class_name = 5;
 optional string log_aggregation_policy_parameters = 6;
}

enum ApplicationAccessTypeProto {
  APPACCESS_VIEW_APP = 1;
  APPACCESS_MODIFY_APP = 2;
}

message ApplicationACLMapProto {
  optional ApplicationAccessTypeProto accessType = 1;
  optional string acl = 2 [default = " "];
}

message YarnClusterMetricsProto {
  optional int32 num_node_managers = 1;
  optional int32 num_decommissioned_nms = 2;
  optional int32 num_active_nms = 3;
  optional int32 num_lost_nms = 4;
  optional int32 num_unhealthy_nms = 5;
  optional int32 num_rebooted_nms = 6;
}

enum QueueStateProto {
  Q_STOPPED = 1;
  Q_RUNNING = 2;
  Q_DRAINING = 3;
}

message QueueStatisticsProto {
  optional int64 numAppsSubmitted = 1;
  optional int64 numAppsRunning = 2;
  optional int64 numAppsPending = 3;
  optional int64 numAppsCompleted = 4;
  optional int64 numAppsKilled = 5;
  optional int64 numAppsFailed = 6;
  optional int64 numActiveUsers = 7;
  optional int64 availableMemoryMB = 8;
  optional int64 allocatedMemoryMB = 9;
  optional int64 pendingMemoryMB = 10;
  optional int64 reservedMemoryMB = 11;
  optional int64 availableVCores = 12;
  optional int64 allocatedVCores = 13;
  optional int64 pendingVCores = 14;
  optional int64 reservedVCores = 15;
  optional int64 allocatedContainers = 16;
  optional int64 pendingContainers = 17;
  optional int64 reservedContainers = 18;
}

message QueueInfoProto {
  optional string queueName = 1;
  optional float capacity = 2;
  optional float maximumCapacity = 3;
  optional float currentCapacity = 4;
  optional QueueStateProto state = 5;
  repeated QueueInfoProto childQueues = 6;
  repeated ApplicationReportProto applications = 7;
  repeated string accessibleNodeLabels = 8;
  optional string defaultNodeLabelExpression = 9;
  optional QueueStatisticsProto queueStatistics = 10;
  optional bool preemptionDisabled = 11;
  repeated QueueConfigurationsMapProto queueConfigurationsMap = 12;
  optional bool intraQueuePreemptionDisabled = 13;
}

message QueueConfigurationsProto {
    optional float capacity = 1;
    optional float absoluteCapacity = 2;
    optional float maxCapacity = 3;
    optional float absoluteMaxCapacity = 4;
    optional float maxAMPercentage = 5;
    optional ResourceProto effectiveMinCapacity = 6;
    optional ResourceProto effectiveMaxCapacity = 7;
    optional ResourceProto configuredMinCapacity = 8;
    optional ResourceProto configuredMaxCapacity = 9;
}

message QueueConfigurationsMapProto {
    required string partitionName = 1;
    optional QueueConfigurationsProto queueConfigurations = 2;
}

enum QueueACLProto {
  QACL_SUBMIT_APPLICATIONS = 1;
  QACL_ADMINISTER_QUEUE = 2;
}

message QueueUserACLInfoProto {
  optional string queueName = 1;
  repeated QueueACLProto userAcls = 2;
}

enum SignalContainerCommandProto {
  OUTPUT_THREAD_DUMP = 1;
  GRACEFUL_SHUTDOWN = 2;
  FORCEFUL_SHUTDOWN = 3;
}

////////////////////////////////////////////////////////////////////////
////// Placement constraints ///////////////////////////////////////////
////////////////////////////////////////////////////////////////////////

message PlacementConstraintProto {
  optional SimplePlacementConstraintProto simpleConstraint = 1;
  optional CompositePlacementConstraintProto compositeConstraint = 2;
}

message SimplePlacementConstraintProto {
  required string scope = 1;
  repeated PlacementConstraintTargetProto targetExpressions = 2;
  optional int32 minCardinality = 3;
  optional int32 maxCardinality = 4;
}

message PlacementConstraintTargetProto {
  enum TargetType {
    NODE_ATTRIBUTE = 1;
    ALLOCATION_TAG = 2;
    SELF = 3;
  }

  required TargetType targetType = 1;
  optional string targetKey = 2;
  repeated string targetValues = 3;
}

message TimedPlacementConstraintProto {
  enum DelayUnit {
    MILLISECONDS = 1;
    OPPORTUNITIES = 2;
  }

  required PlacementConstraintProto placementConstraint = 1;
  required int64 schedulingDelay = 2;
  optional DelayUnit delayUnit = 3 [ default = MILLISECONDS ];
}

message CompositePlacementConstraintProto {
  enum CompositeType {
    // All children constraints have to be satisfied.
    AND = 1;
    // One of the children constraints has to be satisfied.
    OR = 2;
    // Attempt to satisfy the first child constraint for delays[0] units (e.g.,
    // millisec or heartbeats). If this fails, try to satisfy the second child
    // constraint for delays[1] units and so on.
    DELAYED_OR = 3;
  }

  required CompositeType compositeType = 1;
  repeated PlacementConstraintProto childConstraints = 2;
  repeated TimedPlacementConstraintProto timedChildConstraints = 3;
}

// This associates a set of allocation tags to a Placement Constraint.
message PlacementConstraintMapEntryProto {
  repeated string allocation_tags = 1;
  optional PlacementConstraintProto placement_constraint = 2;
}

////////////////////////////////////////////////////////////////////////
////// From reservation_protocol /////////////////////////////////////
////////////////////////////////////////////////////////////////////////

message ReservationIdProto {
  optional int64 id = 1;
  optional int64 cluster_timestamp = 2;
}

message ReservationRequestProto {
  optional ResourceProto capability = 1;
  optional int32 num_containers = 2 [default = 1];
  optional int32 concurrency = 3 [default = 1];
  optional int64 duration = 4 [default = -1];
}

message ReservationRequestsProto {
  repeated ReservationRequestProto reservation_resources = 1;
  optional ReservationRequestInterpreterProto interpreter = 2 [default = R_ALL];
}

message ReservationDefinitionProto {
  optional ReservationRequestsProto reservation_requests = 1;
  optional int64 arrival = 2;
  optional int64 deadline = 3;
  optional string reservation_name = 4;
  optional string recurrence_expression = 5 [default = "0"];
  optional PriorityProto priority = 6;
}

message ResourceAllocationRequestProto {
  optional int64 start_time = 1;
  optional int64 end_time = 2;
  optional ResourceProto resource = 3;
}

message ReservationAllocationStateProto {
  optional ReservationDefinitionProto reservation_definition = 1;
  repeated ResourceAllocationRequestProto allocation_requests = 2;
  optional int64 start_time = 3;
  optional int64 end_time = 4;
  optional string user = 5;
  optional bool contains_gangs = 6;
  optional int64 acceptance_time = 7;
  optional ReservationIdProto reservation_id = 8;
}

enum ReservationRequestInterpreterProto {
  R_ANY = 0;
  R_ALL = 1;
  R_ORDER = 2;
  R_ORDER_NO_GAP = 3;
 }

////////////////////////////////////////////////////////////////////////
////// From container_manager //////////////////////////////////////////
////////////////////////////////////////////////////////////////////////

message ContainerLaunchContextProto {
  repeated StringLocalResourceMapProto localResources = 1;
  optional bytes tokens = 2;
  repeated StringBytesMapProto service_data = 3;
  repeated StringStringMapProto environment = 4;
  repeated string command = 5;
  repeated ApplicationACLMapProto application_ACLs = 6;
  optional ContainerRetryContextProto container_retry_context = 7;
  optional bytes tokens_conf = 8;

}

message ContainerStatusProto {
  optional ContainerIdProto container_id = 1;
  optional ContainerStateProto state = 2;
  optional string diagnostics = 3 [default = "N/A"];
  optional int32 exit_status = 4 [default = -1000];
  optional ResourceProto capability = 5;
  optional ExecutionTypeProto executionType = 6 [default = GUARANTEED];
  repeated StringStringMapProto container_attributes = 7;
  optional ContainerSubStateProto container_sub_state = 8;
}

enum ContainerExitStatusProto {
  SUCCESS = 0;
  INVALID = -1000;
  ABORTED = -100;
  DISKS_FAILED = -101;
}

message ContainerRetryContextProto {
  optional ContainerRetryPolicyProto retry_policy = 1 [default = NEVER_RETRY];
  repeated int32 error_codes = 2;
  optional int32 max_retries = 3 [default = 0];
  optional int32 retry_interval = 4 [default = 0];
  optional int64 failures_validity_interval = 5 [default = -1];
}

enum ContainerRetryPolicyProto {
  NEVER_RETRY = 0;
  RETRY_ON_ALL_ERRORS = 1;
  RETRY_ON_SPECIFIC_ERROR_CODES = 2;
}

////////////////////////////////////////////////////////////////////////
////// From common//////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
message StringLocalResourceMapProto {
  optional string key = 1;
  optional LocalResourceProto value = 2;
}

message StringStringMapProto {
  optional string key = 1;
  optional string value = 2;
}

message StringBytesMapProto {
  optional string key = 1;
  optional bytes value = 2;
}

message CollectorInfoProto {
  optional string collector_addr = 1;
  optional hadoop.common.TokenProto collector_token = 2;
}
