/** * 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.server.resourcemanager.webapp.dao; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; import org.apache.hadoop.yarn.server.resourcemanager.RMContext; import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.QueueMetrics; import org.apache.hadoop.yarn.server.resourcemanager.scheduler.ResourceScheduler; @XmlRootElement(name = "userMetrics") @XmlAccessorType(XmlAccessType.FIELD) public class UserMetricsInfo { protected int appsSubmitted; protected int appsCompleted; protected int appsPending; protected int appsRunning; protected int appsFailed; protected int appsKilled; protected int runningContainers; protected int pendingContainers; protected int reservedContainers; protected long reservedMB; protected long pendingMB; protected long allocatedMB; @XmlTransient protected boolean userMetricsAvailable; public UserMetricsInfo() { } // JAXB needs this public UserMetricsInfo(final ResourceManager rm, final RMContext rmContext, final String user) { ResourceScheduler rs = rm.getResourceScheduler(); QueueMetrics metrics = rs.getRootQueueMetrics(); QueueMetrics userMetrics = metrics.getUserMetrics(user); this.userMetricsAvailable = false; if (userMetrics != null) { this.userMetricsAvailable = true; this.appsSubmitted = userMetrics.getAppsSubmitted(); this.appsCompleted = metrics.getAppsCompleted(); this.appsPending = metrics.getAppsPending(); this.appsRunning = metrics.getAppsRunning(); this.appsFailed = metrics.getAppsFailed(); this.appsKilled = metrics.getAppsKilled(); this.runningContainers = userMetrics.getAllocatedContainers(); this.pendingContainers = userMetrics.getPendingContainers(); this.reservedContainers = userMetrics.getReservedContainers(); this.reservedMB = userMetrics.getReservedMB(); this.pendingMB = userMetrics.getPendingMB(); this.allocatedMB = userMetrics.getAllocatedMB(); } } public boolean metricsAvailable() { return userMetricsAvailable; } public int getAppsSubmitted() { return this.appsSubmitted; } public int getAppsCompleted() { return appsCompleted; } public int getAppsPending() { return appsPending; } public int getAppsRunning() { return appsRunning; } public int getAppsFailed() { return appsFailed; } public int getAppsKilled() { return appsKilled; } public long getReservedMB() { return this.reservedMB; } public long getAllocatedMB() { return this.allocatedMB; } public long getPendingMB() { return this.pendingMB; } public int getReservedContainers() { return this.reservedContainers; } public int getRunningContainers() { return this.runningContainers; } public int getPendingContainers() { return this.pendingContainers; } }