blob: 19fcf9061ee9b76e8105f15a67deea9aef617a29 [file] [log] [blame]
/*
* Copyright 2015-2016 Open Networking Laboratory
*
* Licensed 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.onosproject.cpman;
import org.onosproject.cluster.NodeId;
import org.onosproject.net.DeviceId;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.CompletableFuture;
import static org.onosproject.cpman.ControlResource.*;
/**
* Control Plane Statistics Service Interface.
*/
public interface ControlPlaneMonitorService {
/**
* Adds a new control metric value with a certain update interval.
*
* @param controlMetric control plane metric (e.g., control
* message rate, cpu, memory, etc.)
* @param updateIntervalInMinutes value update interval (in minute)
* @param deviceId device identifier
*/
void updateMetric(ControlMetric controlMetric, int updateIntervalInMinutes,
Optional<DeviceId> deviceId);
/**
* Adds a new control metric value with a certain update interval.
*
* @param controlMetric control plane metric (e.g., disk and
* network metrics)
* @param updateIntervalInMinutes value update interval (in minute)
* @param resourceName resource name
*/
void updateMetric(ControlMetric controlMetric, int updateIntervalInMinutes,
String resourceName);
/**
* Obtains local control plane load of a specific device.
* The metrics range from control messages and system metrics
* (e.g., CPU and memory info)
*
* @param type control metric type
* @param deviceId device identifier
* @return control plane load
*/
ControlLoad getLocalLoad(ControlMetricType type, Optional<DeviceId> deviceId);
/**
* Obtains local control plane load of a specific resource.
* The metrics range from I/O device metrics
* (e.g., disk and network interface)
*
* @param type control metric type
* @param resourceName resource name
* @return control plane load
*/
ControlLoad getLocalLoad(ControlMetricType type, String resourceName);
/**
* Obtains remote control plane load of a specific device.
*
* @param nodeId node identifier
* @param type control metric type
* @param deviceId device identifier
* @return completable future object of control load
*/
CompletableFuture<ControlLoad> getRemoteLoad(NodeId nodeId,
ControlMetricType type,
Optional<DeviceId> deviceId);
/**
* Obtains remote control plane load of a specific resource.
*
* @param nodeId node identifier
* @param type control metric type
* @param resourceName resource name
* @return completable future object of control load
*/
CompletableFuture<ControlLoad> getRemoteLoad(NodeId nodeId,
ControlMetricType type,
String resourceName);
/**
* Obtains a list of names of available resources.
*
* @param resourceType resource type
* @return a collection of names of available resources
*/
Set<String> availableResources(Type resourceType);
}