| /* |
| * Copyright 2015-present Open Networking Foundation |
| * |
| * 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.inbandtelemetry.api; |
| |
| import com.google.common.annotations.Beta; |
| import org.onosproject.net.DeviceId; |
| |
| import java.util.Map; |
| import java.util.Set; |
| |
| /** |
| * Service for controlling INT-capable pipelines. |
| */ |
| @Beta |
| public interface IntService { |
| /** |
| * Represents the role of INT-capable devices. |
| */ |
| enum IntDeviceRole { |
| /** |
| * Intermediate device to add its own INT metadata to an INT packet by |
| * following the INT instruction in the INT header. |
| */ |
| TRANSIT, |
| /** |
| * A device that creates, inserts INT headers into the packet, and |
| * extracts the INT headers. |
| */ |
| SOURCE_SINK |
| } |
| |
| /** |
| * Starts the INT functionalities in all INT-capable devices. |
| * This will include populating tables to process INT packets. |
| */ |
| void startInt(); |
| |
| /** |
| * Starts the INT functionalities in specified set of INT transit devices. |
| * <p> |
| * Note: this is an experimental API, which can be either changed or removed. |
| * |
| * @param transitDevices set of devices to start INT functionalities |
| */ |
| void startInt(Set<DeviceId> transitDevices); |
| |
| /** |
| * Stops the INT functionalities in all INT-capable devices. |
| */ |
| void stopInt(); |
| |
| /** |
| * Stops the INT functionalities in specified set of INT transit devices. |
| * <p> |
| * Note: this is an experimental API, which can be either changed or removed. |
| * |
| * @param transitDevices set of devices to stop INT functionalities |
| */ |
| void stopInt(Set<DeviceId> transitDevices); |
| |
| /** |
| * Configures all INT-capable devices with given configuration. |
| * |
| * @param cfg configuration to set up |
| */ |
| void setConfig(IntConfig cfg); |
| |
| /** |
| * Retrieves the INT configuration. |
| * |
| * @return configuration |
| */ |
| IntConfig getConfig(); |
| |
| /** |
| * Installs an IntIntent to devices. |
| * |
| * @param intIntent an IntIntent |
| * @return an IntIntent ID corresponding to given intIntent |
| */ |
| IntIntentId installIntIntent(IntIntent intIntent); |
| |
| /** |
| * Removes an IntIntent from devices. |
| * |
| * @param intentId ID of the intIntent to remove |
| */ |
| void removeIntIntent(IntIntentId intentId); |
| |
| /** |
| * Returns an IntIntent for given intent ID. |
| * |
| * @param intentId ID of the intIntent to retrieve |
| * @return an IntIntent |
| */ |
| IntIntent getIntIntent(IntIntentId intentId); |
| |
| /** |
| * Returns all IntIntents installed in the network. |
| * |
| * @return an IntIntent |
| */ |
| Map<IntIntentId, IntIntent> getIntIntents(); |
| |
| //TODO: [ONOS-7616] Design IntEvent and related APIs |
| } |