diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/resource/ResourceProfilesManager.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/resource/ResourceProfilesManager.java index af54f059be..c330e25128 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/resource/ResourceProfilesManager.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/resource/ResourceProfilesManager.java @@ -18,6 +18,8 @@ package org.apache.hadoop.yarn.server.resourcemanager.resource; +import org.apache.hadoop.classification.InterfaceAudience.Public; +import org.apache.hadoop.classification.InterfaceStability.Unstable; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.yarn.api.records.Resource; @@ -28,19 +30,51 @@ * Interface for the resource profiles manager. Provides an interface to get * the list of available profiles and some helper functions. */ +@Public +@Unstable public interface ResourceProfilesManager { + /** + * Method to handle all initialization steps for ResourceProfilesManager. + * @param config Configuration object + * @throws IOException when invalid resource profile names are loaded + */ void init(Configuration config) throws IOException; + /** + * Get the resource capability associated with given profile name. + * @param profile name of resource profile + * @return resource capability for given profile + */ Resource getProfile(String profile); + /** + * Get all supported resource profiles. + * @return a map of resource objects associated with each profile + */ Map getResourceProfiles(); + /** + * Reload profiles based on updated configuration. + * @throws IOException when invalid resource profile names are loaded + */ void reloadProfiles() throws IOException; + /** + * Get default supported resource profile. + * @return resource object which is default + */ Resource getDefaultProfile(); + /** + * Get minimum supported resource profile. + * @return resource object which is minimum + */ Resource getMinimumProfile(); + /** + * Get maximum supported resource profile. + * @return resource object which is maximum + */ Resource getMaximumProfile(); } diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/resource/ResourceProfilesManagerImpl.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/resource/ResourceProfilesManagerImpl.java index b5ab384eda..42d38b4518 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/resource/ResourceProfilesManagerImpl.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/resource/ResourceProfilesManagerImpl.java @@ -56,6 +56,7 @@ public class ResourceProfilesManagerImpl implements ResourceProfilesManager { private static final String[] MANDATORY_PROFILES = { DEFAULT_PROFILE, MINIMUM_PROFILE, MAXIMUM_PROFILE }; + @Override public void init(Configuration config) throws IOException { conf = config; loadProfiles(); @@ -146,28 +147,34 @@ private Resource parseResource(Map profileInfo) throws IOException { return resource; } + @Override public Resource getProfile(String profile) { return Resources.clone(profiles.get(profile)); } + @Override public Map getResourceProfiles() { return Collections.unmodifiableMap(profiles); } + @Override @VisibleForTesting public void reloadProfiles() throws IOException { profiles.clear(); loadProfiles(); } + @Override public Resource getDefaultProfile() { return getProfile(DEFAULT_PROFILE); } + @Override public Resource getMinimumProfile() { return getProfile(MINIMUM_PROFILE); } + @Override public Resource getMaximumProfile() { return getProfile(MAXIMUM_PROFILE); }