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 019 package org.apache.hadoop.yarn.api.protocolrecords; 020 021 import java.nio.ByteBuffer; 022 import java.util.Map; 023 024 import org.apache.hadoop.classification.InterfaceAudience.Public; 025 import org.apache.hadoop.classification.InterfaceStability.Stable; 026 import org.apache.hadoop.yarn.api.ContainerManager; 027 028 /** 029 * <p>The response sent by the <code>NodeManager</code> to the 030 * <code>ApplicationMaster</code> when asked to <em>start</em> an 031 * allocated container.</p> 032 * 033 * @see ContainerManager#startContainer(StartContainerRequest) 034 */ 035 @Public 036 @Stable 037 public interface StartContainerResponse { 038 /** 039 * <p>Get the responses from all auxiliary services running on the 040 * <code>NodeManager</code>.</p> 041 * <p>The responses are returned as a Map between the auxiliary service names 042 * and their corresponding opaque blob <code>ByteBuffer</code>s</p> 043 * @return a Map between the auxiliary service names and their outputs 044 */ 045 Map<String, ByteBuffer> getAllServiceResponse(); 046 047 /** 048 * Get the response from a single auxiliary service running on the 049 * <code>NodeManager</code> 050 * 051 * @param key The auxiliary service name whose response is desired. 052 * @return The opaque blob <code>ByteBuffer</code> returned by the auxiliary 053 * service. 054 */ 055 ByteBuffer getServiceResponse(String key); 056 057 /** 058 * Add to the list of auxiliary services which have been started on the 059 * <code>NodeManager</code>. This is done only once when the 060 * <code>NodeManager</code> starts up 061 * @param serviceResponse A map from auxiliary service names to the opaque 062 * blob <code>ByteBuffer</code>s for that auxiliary service 063 */ 064 void addAllServiceResponse(Map<String, ByteBuffer> serviceResponse); 065 066 /** 067 * Add to the list of auxiliary services which have been started on the 068 * <code>NodeManager</code>. This is done only once when the 069 * <code>NodeManager</code> starts up 070 * 071 * @param key The auxiliary service name 072 * @param value The opaque blob <code>ByteBuffer</code> managed by the 073 * auxiliary service 074 */ 075 void setServiceResponse(String key, ByteBuffer value); 076 077 /** 078 * Remove a single auxiliary service from the StartContainerResponse object 079 * @param key The auxiliary service to remove 080 */ 081 void removeServiceResponse(String key); 082 083 /** 084 * Remove all the auxiliary services from the StartContainerResponse object 085 */ 086 void clearServiceResponse(); 087 }