package org.cloudifysource.domain.statistics; /** * Base class for serviceStatistics and serviceInstanceStatistics. * * @author itaif * @since 2.1 * @see org.cloudifysource.domain.Service */ public class AbstractStatisticsDetails { private static final long DEFAULT_TIME_WINDOW_SECONDS = 5 * 60; /** * This helper method is automatically imported to the DSL recipe. import * org.cloudifysource.dsl.autoscaling.AtuoScalingDetails.statisticsFatory as statistics This exposes the {link * {@link StatisticsCalculationFactory} as a singleton. For example: statistics.average, statistics.percentile(30) * * @see org.cloudifysource.dsl.internal.DSLReader#createCompilerConfiguration() for more details * */ private static final StatisticsCalculationFactory STATISTICS_FACTORY = new StatisticsCalculationFactory(); private static final TimeWindowStatisticsCalculation DEFAULT_TIME_STATISTICS = STATISTICS_FACTORY.average(); private static final InstancesStatisticsCalculation DEFAULT_INSTANCES_STATISTICS = STATISTICS_FACTORY.average(); private String name; private String metric; private long timeRangeSeconds = DEFAULT_TIME_WINDOW_SECONDS; private TimeWindowStatisticsCalculation timeStatistics = DEFAULT_TIME_STATISTICS; private InstancesStatisticsCalculation instancesStatistics = DEFAULT_INSTANCES_STATISTICS; public long getMovingTimeRangeInSeconds() { return timeRangeSeconds; } /** * @param timeRangeSeconds The sliding time window (in seconds) for aggregating per-instance metric samples. The * number of samples in the time windows equals the time window divided by the sampling period The default * value is 300 (seconds) */ public void setMovingTimeRangeInSeconds(final long timeRangeSeconds) { this.timeRangeSeconds = timeRangeSeconds; } public String getMetric() { return metric; } /** * @param metric The name of the metric that is the basis for the scale rule decision. */ public void setMetric(final String metric) { this.metric = metric; } public TimeWindowStatisticsCalculation getTimeStatistics() { return timeStatistics; } /** * @param timeStatistics The algorithm for aggregating metric samples in the specified time window. Metric samples * are aggregated separately per instance. Default: statistics.average Possible values: statistics.average, * statistics.minimum, statistics.maximum, statistics.percentile(n) */ public void setTimeStatistics(final TimeWindowStatisticsCalculation timeStatistics) { this.timeStatistics = timeStatistics; } public InstancesStatisticsCalculation getInstancesStatistics() { return instancesStatistics; } /** * @param instancesStatistics The algorithm use to aggregate timeStatistics from all of the instances. Default * value: statistics.average. Possible values: statistics.average, statistics.minimum, statistics.maximum, * statistics.percentile(n) */ protected void setInstancesStatistics(final InstancesStatisticsCalculation instancesStatistics) { this.instancesStatistics = instancesStatistics; } public String getName() { return name; } /** * @param name - A unique identifier used to reference this statistics. */ public void setName(final String name) { this.name = name; } }