/* * RHQ Management Platform * Copyright (C) 2005-2008 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License, version 2, as * published by the Free Software Foundation, and/or the GNU Lesser * General Public License, version 2.1, also as published by the Free * Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License and the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU General Public License * and the GNU Lesser General Public License along with this program; * if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ package org.rhq.core.clientapi.agent.measurement; import java.util.Map; import java.util.Set; import org.rhq.core.domain.measurement.MeasurementData; import org.rhq.core.domain.measurement.MeasurementScheduleRequest; import org.rhq.core.domain.measurement.ResourceMeasurementScheduleRequest; /** * The interface to a JON Agent's measurement (i.e. metric collection) subsystem. */ public interface MeasurementAgentService { /** * Schedules a group of measurements on the agent at specified interval. This method should not fail if it cannot * schedule any individual measurement(s). The only errors which should occur are protocol or connection errors. * * @param resourceSchedules list of the schedules that are to be added to the agent */ void scheduleCollection(Set<ResourceMeasurementScheduleRequest> resourceSchedules); /** * Updates the schedule for a group of measurements on the agent. Like scheduleCollection(), this method should not * fail if it cannot schedule an individual measurement. The only errors which should occur are protocol or * connection errors. * * @param resourceSchedules list of schedules that are to be updated on the agent */ void updateCollection(Set<ResourceMeasurementScheduleRequest> resourceSchedules); /** * Unschedule previously scheduled measurements for the resources with the specified id's . An attempt will be made * to unschedule all measurements; however, if one measurement is unable to be unscheduled, an exception will not be * thrown until the end of the operation. Therefore, it is safe to assume that measurements will be unscheduled (or * at least attempted to be unscheduled) for all specified resources, regardless of exceptions. * * @param resourceIds list of the resources whose measurements are to be unscheduled from collection */ void unscheduleCollection(Set<Integer> resourceIds); /** * This method is a way for the caller to ask for measurement collections to occur "now". In other words, you can * obtain real-time, current values of the given measurements for the given resource, even if those measurements are * not even scheduled for collection. * * <p>Measurement data collected via this call will have its non-persistent "name" field set the name of the * measurement, but will not have scheduleIds set except for per minute metrics. Requests for per minute * metrics must specify the schedule id. This is because of the way a per minute metric is calculated which * involved the previously collected value. That value is obtained from a cache which is keyed by schedule id.</p> * * @param resourceId id of resource to collect from * @param requests Each request specifies a metric to be collected along with its corresponding data type * @return the set of collected measurements with their data values collected */ Set<MeasurementData> getRealTimeMeasurementValue(int resourceId, Set<MeasurementScheduleRequest> requests); Map<String, Object> getMeasurementScheduleInfoForResource(int resourceId); }