/* * Copyright (c) 2013 Cisco Systems, 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.controller.forwardingrulesmanager; import java.util.Map; import org.opendaylight.controller.sal.core.Node; /** * PortGroupProvider interface provides all the necessary blueprint for a custom application to implement * in order to provide Port Grouping Service. Custom Application that implements this interface will have * to handle the opaque match criteria passed to it via PortGroupConfig. * * * */ public interface PortGroupProvider { /** * This method is invoked by the Controller towards the Provider when a new port group is configured. * * @param config New PortGroupConfig object created by user Configuration. * @return true if successful. false otherwise. */ public boolean createPortGroupConfig(PortGroupConfig config); /** * This method is invoked by the Controller towards the Provider when an existing port group is deleted. * * @param config Existing Port Group Configuration deleted by the user. * @return true if successful. false otherwise. */ public boolean deletePortGroupConfig(PortGroupConfig config); /** * Returns the complete mapping database corresponds to a PortGroup Configuration. * Its the PortGroupProvider Application's responsibility to manage the Switches & the Set of its Ports that * correspond to each of the Configuration and return it to the Controller when requested. * * @param config User Configuration * @see PortGroupConfig * @return Database of Switch-Id to PortGroup mapping that corresponds to the Port Group User Configuration. */ public Map getPortGroupData(PortGroupConfig config); /** * Returns PortGroup data for a given Switch and user Configuration. * Its the PortGroupProvider Application's responsibility to manage the Switches & the Set of its Ports that * correspond to each of the Configuration and return it to the Controller when requested. * * @param config User Configuration * @param matrixSwitchId Switch Id that represents an openflow Switch * @see PortGroupConfig * @return PortGroup data for a given Openflow switch. * @see PortGroup */ public PortGroup getPortGroupData(PortGroupConfig config, long matrixSwitchId); /** * Registers a Listener for Port Group membership changes based on Custom application algorithm. * @param listener A Controller module that listens to events from the Custom Port Grouping Application. */ public void registerPortGroupChange(PortGroupChangeListener listener); /** * Application returns an Usage string for the Match Criteria User Configuration. * Controller provides an opportunity for application to implement Custom Algorithm for Port Grouping. * This method exposes the custom algorithm to the user so that the user can configure the matchString * regular expression in PortGroupConfig appropriately. * * @return Usage string. */ public String getApplicationDrivenMatchCriteriaUsage(); /** * Returns the name of the Custom Application that implements PortGroupProvider interface. * * @return Provider Name */ public String getProviderName(); /** * Controller uses this method to check with the Provider supports the matchCriteria String configured by the User. * * @param matchCriteria * @return true if the Provider supports the matchCriteria String. false otherwise. */ public boolean isMatchCriteriaSupported(String matchCriteria); }