blob: 1b902cb24f9cd2771d22eec3213bd7d7076d1d39 [file] [log] [blame]
/*
* Copyright 2017-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.incubator.net.l2monitoring.cfm.service;
import org.onosproject.incubator.net.l2monitoring.cfm.MaintenanceDomain;
import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MaIdShort;
import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MdId;
import org.onosproject.incubator.net.l2monitoring.cfm.identifier.MepId;
import org.onosproject.net.driver.HandlerBehaviour;
import java.util.Optional;
/**
* Behaviour that allows Layer 2 Monitoring as defined in IEEE 802.1Q be implemented by devices.
*
* Has all of the same methods as
* {@link CfmMepServiceBase} so reuse that
*/
public interface CfmMepProgrammable extends HandlerBehaviour, CfmMepServiceBase {
/**
* Allows an MD and children MAs to be created on a device.
* A convenience method that allows an MD to be created on a device
* This is a preparation mechanism. If this was not called the MD would be created
* at the time of provisioning a MEP anyway
* @param mdId The ID of the MD to create - the details will be got from the CfmMdService
* @return true when created. false if it already existed
* @throws CfmConfigException If the MD already exists
*/
boolean createMdOnDevice(MdId mdId) throws CfmConfigException;
/**
* Allows an MA to be created on an existing MD on a device.
* A convenience method that allows an MA to be created
* This is a preparation mechanism. If this was not called the MA would be created
* at the time of provisioning a MEP anyway. Also MAs can be created when they
* are contained in an MD using the createMdOnDevice method
* @param mdId The identifier of the MD to create the MA in
* @param maId The identifier of the MA to create - the details will be retrieved from the CfmMdService
* @return true when created. false if it already existed
* @throws CfmConfigException If the MD already exists
*/
boolean createMaOnDevice(MdId mdId, MaIdShort maId) throws CfmConfigException;
/**
* Allows a MD and its MAs to be deleted from a device.
* A convenience method that allows an MD that has been provisioned on a
* device to be removed.
* All Meps must be removed first unless they are Meps unknown to ONOS.
* This is a cleanup mechanism. Deleting Meps in the normal way does not celan
* up MDs and MAs
* @param mdId The identifier of the MD
* @param oldMd The MaintenanceDomain that is being deleted
* @return true when deleted. false if it did not exist
* @throws CfmConfigException If the MD has any MAs that have MEPs then this will fail
*/
boolean deleteMdOnDevice(MdId mdId, Optional<MaintenanceDomain> oldMd) throws CfmConfigException;
/**
* Allows an MA to be deleted from an MD on a device.
* A convenience method that allows an MA that has been provisioned on a
* device to be removed.
* All Meps must be removed first unless they are Meps unknown to ONOS.
* This is a cleanup mechanism. Deleting Meps in the normal way does not celan
* up MDs and MAs
* @param mdId The identifier of the MD
* @param maId The identifier of the MA
* @param oldMd The MaintenanceDomain from which the MA is being deleted
* @return true when deleted. false if it did not exist
* @throws CfmConfigException If the MA has any MEPs then this will fail
*/
boolean deleteMaOnDevice(MdId mdId, MaIdShort maId,
Optional<MaintenanceDomain> oldMd) throws CfmConfigException;
/**
* Creates a Remote Mep entry on an MA.
* @param mdId The identifier of the MD
* @param maId The identifier of the MA
* @param remoteMep The remote Mep Id to remove from the MA
* @return true when deleted. false if it did not exist
* @throws CfmConfigException If the MA does not exist this will fail
*/
boolean createMaRemoteMepOnDevice(MdId mdId, MaIdShort maId, MepId remoteMep) throws CfmConfigException;
/**
* Deletes a Remote Mep entry on an MA.
* @param mdId The identifier of the MD
* @param maId The identifier of the MA
* @param remoteMep The remote Mep Id to remove from the MA
* @return true when deleted. false if it did not exist
* @throws CfmConfigException If the MA does not exist this will fail
*/
boolean deleteMaRemoteMepOnDevice(MdId mdId, MaIdShort maId, MepId remoteMep) throws CfmConfigException;
}