/*
* Copyright (c) 2017 Ericsson Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.sfc.genius.impl;
import java.math.BigInteger;
/**
* Genius SFC Service manager.
*
* <p>
* Service functions can be configured with logical interface data plane
* locators managed by Genius. When such service functions are included in a
* rendered service path and to be able to steer downlink traffic from the
* service function, we need to bind SFC service to the interface through
* Genius. Logical interfaces are associated to a data plane node and port. Such
* nodes receive incoming traffic from other nodes through tunnel ports managed
* by Genius. To be able to steer SFC uplink traffic towards the service
* functions, we need to bind SFC service to the node through Genius.
*
* <p>
* Logical interfaces dynamically move from one node/port to another. On doing
* so, they become temporarily unavailable.
*/
public interface SfcGeniusServiceManager {
/**
* Interface becomes available at a node.
*
* @param interfaceName
* the name of the interface.
* @param dpnId
* the data plane id of the new node associated to the interface.
*/
void interfaceStateUp(String interfaceName, BigInteger dpnId);
/**
* Bind the interfaces of a service function to SFC service.
*
* @param sfName
* the name of the service function.
*/
void bindInterfacesOfServiceFunction(String sfName);
/**
* Unbind the interfaces of a service function to SFC service.
*
* @param sfName
* the name of the service function.
*/
void unbindInterfacesOfServiceFunction(String sfName);
/**
* Bind node to SFC service.
*
* @param dpnId
* the node DPN Id.
*/
void bindNode(BigInteger dpnId);
/**
* Unbind node from SFC service.
*
* @param dpnId
* the node DPN Id.
*/
void unbindNode(BigInteger dpnId);
}