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.yarn.api.records; 020 021import org.apache.hadoop.classification.InterfaceAudience.Public; 022import org.apache.hadoop.classification.InterfaceStability.Evolving; 023import org.apache.hadoop.classification.InterfaceStability.Unstable; 024import org.apache.hadoop.yarn.util.Records; 025 026/** 027 * {@link ReservationDefinition} captures the set of resource and time 028 * constraints the user cares about regarding a reservation. 029 * 030 * @see ResourceRequest 031 * 032 */ 033@Public 034@Unstable 035public abstract class ReservationDefinition { 036 037 @Public 038 @Unstable 039 public static ReservationDefinition newInstance(long arrival, long deadline, 040 ReservationRequests reservationRequests, String name) { 041 ReservationDefinition rDefinition = 042 Records.newRecord(ReservationDefinition.class); 043 rDefinition.setArrival(arrival); 044 rDefinition.setDeadline(deadline); 045 rDefinition.setReservationRequests(reservationRequests); 046 rDefinition.setReservationName(name); 047 return rDefinition; 048 } 049 050 /** 051 * Get the arrival time or the earliest time from which the resource(s) can be 052 * allocated. Time expressed as UTC. 053 * 054 * @return the earliest valid time for this reservation 055 */ 056 @Public 057 @Unstable 058 public abstract long getArrival(); 059 060 /** 061 * Set the arrival time or the earliest time from which the resource(s) can be 062 * allocated. Time expressed as UTC. 063 * 064 * @param earliestStartTime the earliest valid time for this reservation 065 */ 066 @Public 067 @Unstable 068 public abstract void setArrival(long earliestStartTime); 069 070 /** 071 * Get the deadline or the latest time by when the resource(s) must be 072 * allocated. Time expressed as UTC. 073 * 074 * @return the deadline or the latest time by when the resource(s) must be 075 * allocated 076 */ 077 @Public 078 @Unstable 079 public abstract long getDeadline(); 080 081 /** 082 * Set the deadline or the latest time by when the resource(s) must be 083 * allocated. Time expressed as UTC. 084 * 085 * @param latestEndTime the deadline or the latest time by when the 086 * resource(s) should be allocated 087 */ 088 @Public 089 @Unstable 090 public abstract void setDeadline(long latestEndTime); 091 092 /** 093 * Get the list of {@link ReservationRequests} representing the resources 094 * required by the application 095 * 096 * @return the list of {@link ReservationRequests} 097 */ 098 @Public 099 @Unstable 100 public abstract ReservationRequests getReservationRequests(); 101 102 /** 103 * Set the list of {@link ReservationRequests} representing the resources 104 * required by the application 105 * 106 * @param reservationRequests the list of {@link ReservationRequests} 107 */ 108 @Public 109 @Unstable 110 public abstract void setReservationRequests( 111 ReservationRequests reservationRequests); 112 113 /** 114 * Get the name for this reservation. The name need-not be unique, and it is 115 * just a mnemonic for the user (akin to job names). Accepted reservations are 116 * uniquely identified by a system-generated ReservationId. 117 * 118 * @return string representing the name of the corresponding reserved resource 119 * allocation in the scheduler 120 */ 121 @Public 122 @Evolving 123 public abstract String getReservationName(); 124 125 /** 126 * Set the name for this reservation. The name need-not be unique, and it is 127 * just a mnemonic for the user (akin to job names). Accepted reservations are 128 * uniquely identified by a system-generated ReservationId. 129 * 130 * @param name representing the name of the corresponding reserved resource 131 * allocation in the scheduler 132 */ 133 @Public 134 @Evolving 135 public abstract void setReservationName(String name); 136 137}