/** * 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.ambari.server.controller.metrics.timeline.cache; import java.util.Date; import org.apache.hadoop.metrics2.sink.timeline.Precision; import org.apache.hadoop.metrics2.sink.timeline.TimelineMetric; import org.apache.hadoop.metrics2.sink.timeline.TimelineMetrics; /** * Wrapper object for metrics returned from AMS that includes the query time * window. */ public class TimelineMetricsCacheValue { private Long startTime; private Long endTime; // Same metrics could be requested across hosts private TimelineMetrics timelineMetrics = new TimelineMetrics(); private Precision precision; public TimelineMetricsCacheValue(Long startTime, Long endTime, TimelineMetrics timelineMetrics, Precision precision) { this.startTime = startTime; this.endTime = endTime; this.timelineMetrics = timelineMetrics; this.precision = precision; } public TimelineMetrics getTimelineMetrics() { return timelineMetrics; } /** * Map of metricName to metric values. Works on the assumption that metric * name is unique */ public void setTimelineMetrics(TimelineMetrics timelineMetrics) { this.timelineMetrics = timelineMetrics; } public Long getStartTime() { return startTime; } public void setStartTime(Long startTime) { this.startTime = startTime; } public Long getEndTime() { return endTime; } public void setEndTime(Long endTime) { this.endTime = endTime; } private long getMillisecondsTime(long time) { if (time < 9999999999l) { return time * 1000; } else { return time; } } @Override public String toString() { StringBuilder sb = new StringBuilder("TimelineMetricsCacheValue {" + ", startTime = " + new Date(getMillisecondsTime(startTime)) + ", endTime = " + new Date(getMillisecondsTime(endTime)) + ", precision = " + precision + ", timelineMetrics ="); for (TimelineMetric metric : timelineMetrics.getMetrics()) { sb.append(" { "); sb.append(metric.getMetricName()); sb.append(", "); sb.append(metric.getHostName()); sb.append(" # "); sb.append(metric.getMetricValues().size()); sb.append(" }"); } sb.append("}"); return sb.toString(); } public Precision getPrecision() { return precision; } public void setPrecision(Precision precision) { this.precision = precision; } }