-
/*
* Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
*
/**
* Updates node and its properties
*
- * @param node {@link org.opendaylight.controller.sal.core.Node} being updated
- * @param type {@link org.opendaylight.controller.sal.core.UpdateType}
- * @param props set of {@link org.opendaylight.controller.sal.core.Property} such as
- * {@link org.opendaylight.controller.sal.core.Description} and/or
- * {@link org.opendaylight.controller.sal.core.Tier} etc.
+ * @param node
+ * {@link org.opendaylight.controller.sal.core.Node} being
+ * updated
+ * @param type
+ * update type {@link org.opendaylight.controller.sal.core.UpdateType}
+ * @param props
+ * set of {@link org.opendaylight.controller.sal.core.Property}
+ * such as
+ * {@link org.opendaylight.controller.sal.core.Description}
+ * and/or {@link org.opendaylight.controller.sal.core.Tier} etc.
*/
public void updateNode(Node node, UpdateType type, Set<Property> props);
/**
* Updates node connector and its properties
*
- * @param nodeConnector {@link org.opendaylight.controller.sal.core.NodeConnector} being updated
- * @param type {@link org.opendaylight.controller.sal.core.UpdateType}
- * @param props set of {@link org.opendaylight.controller.sal.core.Property} such as
- * {@link org.opendaylight.controller.sal.core.Description} and/or
- * {@link org.opendaylight.controller.sal.core.State} etc.
+ * @param nodeConnector
+ * {@link org.opendaylight.controller.sal.core.NodeConnector}
+ * being updated
+ * @param type
+ * update type {@link org.opendaylight.controller.sal.core.UpdateType}
+ * @param props
+ * set of {@link org.opendaylight.controller.sal.core.Property}
+ * such as
+ * {@link org.opendaylight.controller.sal.core.Description}
+ * and/or {@link org.opendaylight.controller.sal.core.State} etc.
*/
public void updateNodeConnector(NodeConnector nodeConnector,
UpdateType type, Set<Property> props);
import org.openflow.protocol.statistics.OFStatistics;
/**
- * Interface defines the api which gets called when the information
- * contained in the OF statistics reply message from a network is updated with
- * new one.
+ * Interface which defines the notification functions which will get called when
+ * the information contained in the OF statistics reply message received from a
+ * network node is different from the cached one.
*/
public interface IOFStatisticsListener {
+ /**
+ * Notifies that a new list of description statistics objects for the given
+ * switch is available
+ *
+ * @param switchId
+ * The datapath id of the openflow switch
+ * @param description
+ * The new list of description statistics objects
+ */
public void descriptionStatisticsRefreshed(Long switchId, List<OFStatistics> description);
+ /**
+ * Notifies that a new list of flows statistics objects for the given switch
+ * is available
+ *
+ * @param switchId
+ * The datapath id of the openflow switch
+ * @param flows
+ * The new list of flow statistics objects
+ */
public void flowStatisticsRefreshed(Long switchId, List<OFStatistics> flows);
+ /**
+ * Notifies that a new list of port statistics objects for the given switch
+ * is available
+ *
+ * @param switchId
+ * The datapath id of the openflow switch
+ * @param flows
+ * The new list of port statistics objects
+ */
public void portStatisticsRefreshed(Long switchId, List<OFStatistics> ports);
+ /**
+ * Notifies that a new list of table statistics objects for the given switch
+ * is available
+ *
+ * @param switchId
+ * The datapath id of the openflow switch
+ * @param flows
+ * The new list of table statistics objects
+ */
public void tableStatisticsRefreshed(Long switchId, List<OFStatistics> tables);
}
import org.opendaylight.controller.sal.reader.NodeTableStatistics;
/**
- * The Interface provides statistics updates to ReaderFilter listeners within
- * the protocol plugin
+ * The Interface provides notification of statistics (hardware view) updates to
+ * ReaderFilter listeners within the protocol plugin
*/
public interface IReadFilterInternalListener {
/**
- * Notifies the hardware view of all the flow installed on the specified network node
+ * Notifies the hardware view of all the flow installed on the specified
+ * network node was updated
+ *
* @param node
- * @return
+ * the network node
+ * @param flowStatsList
*/
public void nodeFlowStatisticsUpdated(Node node, List<FlowOnNode> flowStatsList);
/**
- * Notifies the hardware view of the specified network node connector
+ * Notifies the hardware view of the specified network node connectors was
+ * updated
+ *
* @param node
- * @return
+ * the network node
*/
public void nodeConnectorStatisticsUpdated(Node node, List<NodeConnectorStatistics> ncStatsList);
/**
- * Notifies all the table statistics for a node
+ * Notifies the hardware view of the specified network node tables was
+ * updated
+ *
* @param node
- * @return
+ * the network node
*/
public void nodeTableStatisticsUpdated(Node node, List<NodeTableStatistics> tableStatsList);
/**
- * Notifies the hardware view of all the flow installed on the specified network node
+ * Notifies the hardware view of all the flow installed on the specified
+ * network node was updated
+ *
* @param node
- * @return
+ * the network node
*/
public void nodeDescriptionStatisticsUpdated(Node node, NodeDescription nodeDescription);
-
-
}
-
/*
* Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
*
import org.opendaylight.controller.sal.reader.NodeTableStatistics;
/**
- * Interface to serve the hardware information requests coming from SAL
- * It is implemented by the respective OF1.0 plugin component
+ * Interface to serve the hardware information requests coming from SAL It is
+ * implemented by the respective OF1.0 plugin component
*
*/
public interface IReadServiceFilter {
/**
- * Returns the hardware image for the specified flow
- * on the specified network node for the passed container
+ * Returns the hardware image for the specified flow on the specified
+ * network node for the passed container
*
* @param container
+ * the container for which the request is originated
* @param node
+ * the network node
* @param flow
+ * the target flow
* @param cached
- * @return
+ * specify if entry has to be queried from the cached hardware
+ * information maintained in the protocol plugin or directly from
+ * the network node.
+ * @return The FlowOnNode object containing the information present in
+ * hardware for the passed flow on the specified network node
*/
- public FlowOnNode readFlow(String container, Node node, Flow flow,
- boolean cached);
+ public FlowOnNode readFlow(String container, Node node, Flow flow, boolean cached);
/**
- * Returns the hardware view of all the flow installed
- * on the specified network node for the passed container
+ * Returns the hardware view of all the flow installed on the specified
+ * network node for the passed container
*
* @param container
+ * the container for which the request is originated
* @param node
+ * the network node
* @param cached
- * @return
+ * specify if entries have to be queried from the cached hardware
+ * information maintained in the protocol plugin or directly from
+ * the network node.
+ * @return The list of FlowOnNode objects containing the information present
+ * in hardware on the specified network node for all its flows
*/
- public List<FlowOnNode> readAllFlow(String container, Node node,
- boolean cached);
+ public List<FlowOnNode> readAllFlow(String container, Node node, boolean cached);
/**
- * Returns the description of the network node as provided by the node itself
+ * Returns the description of the network node as provided by the node
+ * itself
*
* @param node
+ * the network node
* @param cached
- * @return
+ * specify if entry has to be queried from the cached hardware
+ * information maintained in the protocol plugin or directly from
+ * the network node.
+ * @return The NodeDescription object containing the description information
+ * for the specified network node
*/
public NodeDescription readDescription(Node node, boolean cached);
/**
- * Returns the hardware view of the specified network node connector
- * for the given container
- * @param node
- * @return
+ * Returns the hardware view of the specified network node connector for the
+ * given container
+ *
+ * @param container
+ * the container for which the request is originated
+ * @param nodeConnector
+ * the target nodeConnector
+ * @param cached
+ * specify if entry has to be queried from the cached hardware
+ * information maintained in the protocol plugin or directly from
+ * the corresponding network node.
+ * @return The NodeConnectorStatistics object containing the statistics
+ * present in hardware for the corresponding network node port
*/
- public NodeConnectorStatistics readNodeConnector(String container,
- NodeConnector nodeConnector, boolean cached);
+ public NodeConnectorStatistics readNodeConnector(String container, NodeConnector nodeConnector, boolean cached);
/**
- * Returns the hardware info for all the node connectors on the
- * specified network node for the given container
+ * Returns the hardware info for all the node connectors on the specified
+ * network node for the given container
*
+ * @param container
+ * the container for which the request is originated
* @param node
- * @return
+ * the target node
+ * @param cached
+ * specify if entries have to be queried from the cached hardware
+ * information maintained in the protocol plugin or directly from
+ * the corresponding network node.
+ * @return The list of NodeConnectorStatistics objects containing the
+ * statistics present in hardware for all the network node ports
*/
- public List<NodeConnectorStatistics> readAllNodeConnector(String container,
- Node node, boolean cached);
+ public List<NodeConnectorStatistics> readAllNodeConnector(String container, Node node, boolean cached);
/**
- * Returns the table statistics of the node as specified by the given container
- * @param node
+ * Returns the table statistics of the node as specified by the given
+ * container
+ *
+ * @param container
+ * the container for which the request is originated
+ * @param nodeTable
+ * the target network node table
* @param cached
- * @return
+ * specify if entry has to be queried from the cached hardware
+ * information maintained in the protocol plugin or directly from
+ * the corresponding network node.
+ * @return The NodeTableStatistics object containing the statistics present
+ * in hardware for the corresponding network node table
*/
- public NodeTableStatistics readNodeTable(String container,
- NodeTable nodeTable, boolean cached);
+ public NodeTableStatistics readNodeTable(String container, NodeTable nodeTable, boolean cached);
/**
* Returns the table statistics of all the tables for the specified node
*
+ * @param container
+ * the container for which the request is originated
* @param node
- * @return
+ * the target node
+ * @param cached
+ * specify if entries have to be queried from the cached hardware
+ * information maintained in the protocol plugin or directly from
+ * the corresponding network node.
+ * @return The list of NodeTableStatistics objects containing the statistics
+ * present in hardware for all the network node tables
*/
- public List<NodeTableStatistics> readAllNodeTable(String containerName,
- Node node, boolean cached);
+ public List<NodeTableStatistics> readAllNodeTable(String containerName, Node node, boolean cached);
/**
- * Returns the average transmit rate for the specified node conenctor on
- * the given container. If the node connector does not belong to the passed
+ * Returns the average transmit rate for the specified node connector on the
+ * given container. If the node connector does not belong to the passed
* container a zero value is returned
*
* @param container
+ * the container for which the request is originated
* @param nodeConnector
- * @return tx rate [bps]
+ * the target node connector
+ * @return The average tx rate in bps
*/
public long getTransmitRate(String container, NodeConnector nodeConnector);
}
-
/*
* Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
*
* to be fetched from the plugin
*
* For example, an application that has been started late, will want to
- * be up to date with the latest topology. Hence, it requests for a
+ * be up to date with the latest topology. Hence, it requests for a
* topology refresh from the plugin.
*/
/**
* @param containerName
+ * Name of the container for the topology
*/
public void requestRefresh(String containerName);
}
*
* @param msg
* The OF message to be sent
+ * @param xid
+ * The XID to be used in the message
* @return The XID used
*/
public Integer asyncFastSend(OFMessage msg, int xid);
* Returns True if the port is enabled,
*
* @param portNumber
+ * the port ID
* @return True if the port is enabled
*/
public boolean isPortEnabled(short portNumber);
* Returns True if the port is enabled.
*
* @param port
+ * the OpenFlow port
* @return True if the port is enabled
*/
public boolean isPortEnabled(OFPhysicalPort port);
* Send Barrier message synchronously. The caller will be blocked until the
* Barrier reply arrives.
*/
- Object syncSendBarrierMessage();
+ public Object syncSendBarrierMessage();
/**
* Send Barrier message asynchronously. The caller is not blocked. The
* Barrier message will be sent in a transmit thread which will be blocked
* until the Barrier reply arrives.
*/
- Object asyncSendBarrierMessage();
+ public Object asyncSendBarrierMessage();
}
bulkNotifyQ.add(containerName);
}
+ /**
+ * Retrieve/construct edge map for a given container
+ *
+ * @param containerName
+ * the container name
+ * @return the edges and their properties
+ */
+ private Map<NodeConnector, Pair<Edge, Set<Property>>> getEdgeMap(String containerName) {
+ Map<NodeConnector, Pair<Edge, Set<Property>>> edgePropMap = null;
+
+ /*
+ * When container is freshly created, need to construct map based on global map.
+ */
+ edgePropMap = edgeMap.get(containerName);
+
+ return edgePropMap;
+ }
+
/**
* Reading the current topology database, the method will replay all the
* edge updates for the ITopologyServiceShimListener instance in the given
* container, which will in turn publish them toward SAL.
*
* @param containerName
+ * the container name
*/
private void TopologyBulkUpdate(String containerName) {
Map<NodeConnector, Pair<Edge, Set<Property>>> edgePropMap = null;
logger.debug("Try bulk update for container:{}", containerName);
- edgePropMap = edgeMap.get(containerName);
+ edgePropMap = getEdgeMap(containerName);
if (edgePropMap == null) {
logger.debug("No edges known for container:{}", containerName);
return;
public List<String> getRoles();
/**
- * Returns the application role level for the specified role
- * If the role is not known to this application <code>NOUSER<code>
- * will be returned as specified in {@link AppRoleLevel}
+ * Returns the application role level for the specified role. If the role is
+ * not known to this application NOUSER will be returned as specified in
+ * {@link AppRoleLevel}
*
- * @param roleName the role name to query
- * @return the application level of the given role in the application context as specified by {@link AppRoleLevel}
- * if the role is not part of this application's roles, <code>NOUSER<code> is returned
+ * @param roleName
+ * the role name to query
+ * @return the application level of the given role in the application
+ * context as specified by {@link AppRoleLevel}. If the role is not
+ * part of this application's roles, NOUSER is returned.
*/
public AppRoleLevel getApplicationRoleLevel(String roleName);
/**
* Unassign the passed resource group from the specified role
*
- * @param group
- * @param role
+ * @param groupName the name of the resource group
+ * @param role the role name
* @return the status of the request
*/
- public Status unassignResourceGroupFromRole(String group, String role);
+ public Status unassignResourceGroupFromRole(String groupName, String role);
/**
* Returns the list of resource groups the given Role is authorized to use
* The returning object expresses the resource group name and the access
* its privilege for the given user role
*
- * @param role
+ * @param role the role name
* @return list of resources
*/
public List<ResourceGroup> getAuthorizedGroups(String role);
/**
* Returns the list of authorized resources for the given role
* For each resource only the highest privilege occurrence is returned
- * @param role
+ * @param role the role name
* @return the list of Resource
*/
public List<Resource> getAuthorizedResources(String role);
* Returns the highest privilege that the user has on the specified
* resource in this application context
*
- * @param userName
- * @param resource
+ * @param userName the user name
+ * @param resource the given resource
* @return the privilege the user has on the passed resource
*/
public Privilege getResourcePrivilege(String userName, Object resource);
package org.opendaylight.controller.sal.core;
/**
- * @file IContainerAware.java
- *
- * @brief Define the interface to be called when the Container is being
+ * The interface describes methods to be called when the Container is being
* created/destroyed
- *
- *
*/
public interface IContainerAware {
package org.opendaylight.controller.sal.core;
/**
- *
- * Interface used to retrieve the status of a given Container
+ * The interface describes methods used to retrieve the status of a given
+ * Container
*/
public interface IContainerListener {
/**
/**
* Notification raised when the container flow layout changes
*
- * @param containerName container for which the update has been raised
- * @param previousFlow previous value of the container flow under
- * update, differs from the currentFlow only and only if it's an
- * update operation
- * @param currentFlow current version of the container flow differs from
- * the previousFlow only in case of update
- * @param t type of update
+ * @param containerName
+ * container for which the update has been raised
+ * @param previousFlow
+ * previous value of the container flow
+ * {@link org.opendaylight.controller.sal.core.ContainerFlow}
+ * under update, differs from the currentFlow only and only if
+ * it's an update operation
+ * @param currentFlow
+ * current version of the container flow
+ * {@link org.opendaylight.controller.sal.core.ContainerFlow}
+ * differs from the previousFlow only in case of update
+ * @param t
+ * type of update
+ * {@link org.opendaylight.controller.sal.core.UpdateType}
*/
public void containerFlowUpdated(String containerName,
ContainerFlow previousFlow, ContainerFlow currentFlow, UpdateType t);
/**
- * Notification raised when a NodeConnector is added or removed in
- * the container.
+ * Notification raised when a NodeConnector is added or removed in the
+ * container.
*
- * @param containerName container for which the update has been raised
- * @param p NodeConnector being updated
- * @param t type of modification, but among the types the modify
- * operation is not expected to be raised because the
- * nodeConnectors are anyway immutable so this is only used to
- * add/delete
+ * @param containerName
+ * container for which the update has been raised
+ * @param p
+ * NodeConnector
+ * {@link org.opendaylight.controller.sal.core.NodeConnector}
+ * being updated
+ * @param t
+ * type of modification
+ * {@link org.opendaylight.controller.sal.core.UpdateType}, but
+ * among the types the modify operation is not expected to be
+ * raised because the nodeConnectors are anyway immutable so this
+ * is only used to add/delete
*/
public void nodeConnectorUpdated(String containerName, NodeConnector p,
UpdateType t);
/**
- * Notification raised when the container mode has changed
- * This notification is needed for some bundle in the default container
- * to cleanup some HW state when switching from non-slicing to
- * slicing case and vice-versa
+ * Notification raised when the container mode has changed This notification
+ * is needed for some bundle in the default container to cleanup some HW
+ * state when switching from non-slicing to slicing case and vice-versa
*
- * @param t ADDED when first container is created, REMOVED when last container is removed
+ * @param t
+ * type of modification
+ * {@link org.opendaylight.controller.sal.core.UpdateType}. ADDED
+ * when first container is created, REMOVED when last container
+ * is removed
*/
public void containerModeUpdated(UpdateType t);
}
import org.opendaylight.controller.sal.utils.Status;
/**
- * @file IPluginOutFlowProgrammer.java
- *
- * @brief Flow programmer interface to be implemented by protocol plugins
+ * This interface defines the flow programmer methods to be implemented by
+ * protocol plugins
*/
public interface IPluginInFlowProgrammerService {
/**
* Synchronously add a flow to the network node
*
* @param node
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node} on which the
+ * flow got added
* @param flow
+ * the flow
+ * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
+ * that got added
+ * @return Status the operation status
+ * {@link org.opendaylight.controller.sal.utils.Status}
*/
Status addFlow(Node node, Flow flow);
* Synchronously modify existing flow on the switch
*
* @param node
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node} on which the
+ * flow got modified
* @param flow
+ * the flow
+ * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
+ * that got modified
+ * @return Status the operation status
+ * {@link org.opendaylight.controller.sal.utils.Status}
*/
Status modifyFlow(Node node, Flow oldFlow, Flow newFlow);
* Synchronously remove the flow from the network node
*
* @param node
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node} on which the
+ * flow got removed
* @param flow
+ * the flow
+ * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
+ * that got removed
+ * @return Status the operation status
+ * {@link org.opendaylight.controller.sal.utils.Status}
*/
Status removeFlow(Node node, Flow flow);
* Asynchronously add a flow to the network node
*
* @param node
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node} on which the
+ * flow got added
* @param flow
+ * the flow
+ * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
+ * that got added
* @param rid
+ * the request id
+ * @return Status the operation status
+ * {@link org.opendaylight.controller.sal.utils.Status}
*/
Status addFlowAsync(Node node, Flow flow, long rid);
* Asynchronously modify existing flow on the switch
*
* @param node
- * @param flow
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node} on which the
+ * flow got modified
+ * @param oldFlow
+ * the original flow
+ * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
+ * @param newFlow
+ * the new flow
+ * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
* @param rid
+ * the request id
+ * @return Status the operation status
+ * {@link org.opendaylight.controller.sal.utils.Status}
*/
Status modifyFlowAsync(Node node, Flow oldFlow, Flow newFlow, long rid);
* Asynchronously remove the flow from the network node
*
* @param node
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node} on which the
+ * flow got removed
* @param flow
+ * the flow
+ * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
+ * that got removed
* @param rid
+ * the request id
+ * @return Status the operation status
+ * {@link org.opendaylight.controller.sal.utils.Status}
*/
Status removeFlowAsync(Node node, Flow flow, long rid);
* Remove all flows present on the network node
*
* @param node
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node} on which the
+ * flow got removed
+ * @return Status the operation status
+ * {@link org.opendaylight.controller.sal.utils.Status}
*/
Status removeAllFlows(Node node);
* Barrier reply arrives.
*
* @param node
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node}
+ * @return Status the operation status
+ * {@link org.opendaylight.controller.sal.utils.Status}
*/
Status syncSendBarrierMessage(Node node);
* Send Barrier message asynchronously. The caller is not blocked.
*
* @param node
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node}
+ * @return Status the operation status
+ * {@link org.opendaylight.controller.sal.utils.Status}
*/
Status asyncSendBarrierMessage(Node node);
}
import org.opendaylight.controller.sal.flowprogrammer.Flow;
/**
- * @file IPluginInReadService.java
- *
- * @brief Hardware view interface to be implemented by protocol plugins
- *
- *
- *
+ * The interface defines hardware view read methods to be implemented by protocol plugins
*/
public interface IPluginInReadService {
/**
- * Returns the hardware image for the specified flow on the specified network node
+ * Returns the hardware image for the specified flow on the specified
+ * network node
+ *
* @param node
+ * the network node
* @param flow
- * @return
+ * the target flow
+ * @param cached
+ * specify if entry has to be queried from the cached hardware
+ * information maintained locally or directly from the network
+ * node.
+ * @return The FlowOnNode object containing the information present in
+ * hardware for the passed flow on the specified network node
*/
public FlowOnNode readFlow(Node node, Flow flow, boolean cached);
/**
- * Returns the hardware view of all the flow installed on the specified network node
+ * Returns the hardware view of all the flow installed on the specified
+ * network node
+ *
* @param node
- * @return
+ * the network node
+ * @param cached
+ * specify if entries have to be queried from the cached hardware
+ * information maintained locally or directly from the network
+ * node.
+ * @return The list of FlowOnNode objects containing the information present
+ * in hardware on the specified network node for all its flows
*/
public List<FlowOnNode> readAllFlow(Node node, boolean cached);
/**
- * Returns the description of the network node as provided by the node itself
+ * Returns the description of the network node as provided by the node
+ * itself
+ *
* @param node
- * @return
+ * the network node
+ * @param cached
+ * specify if entry has to be queried from the cached hardware
+ * information maintained locally or directly from the network
+ * node.
+ * @return The NodeDescription object containing the description information
+ * for the specified network node
*/
public NodeDescription readDescription(Node node, boolean cached);
/**
* Returns the hardware view of the specified network node connector
- * @param node
- * @return
+ *
+ * @param connector
+ * the target nodeConnector
+ * @param cached
+ * specify if entry has to be queried from the cached hardware
+ * information maintained locally or directly from the
+ * corresponding network node.
+ * @return The NodeConnectorStatistics object containing the statistics
+ * present in hardware for the corresponding network node port
*/
public NodeConnectorStatistics readNodeConnector(NodeConnector connector,
boolean cached);
/**
- * Returns the hardware info for all the node connectors on the specified network node
+ * Returns the hardware info for all the node connectors on the specified
+ * network node
+ *
* @param node
- * @return
+ * the target node
+ * @param cached
+ * specify if entries have to be queried from the cached hardware
+ * information maintained locally or directly from the
+ * corresponding network node.
+ * @return The list of NodeConnectorStatistics objects containing the
+ * statistics present in hardware for all the network node ports
*/
public List<NodeConnectorStatistics> readAllNodeConnector(Node node,
boolean cached);
/**
* Returns the table statistics for the node
- * @param node
- * @return
+ * @param table
+ * the target network node table
+ * @param cached
+ * specify if entry has to be queried from the cached hardware
+ * information maintained locally or directly from
+ * the corresponding network node.
+ * @return The NodeTableStatistics object containing the statistics present
+ * in hardware for the corresponding network node table
*/
public NodeTableStatistics readNodeTable(NodeTable table, boolean cached);
/**
* Returns all the table statistics for the node
+ *
* @param node
- * @return
+ * the target node
+ * @param cached
+ * specify if entries have to be queried from the cached hardware
+ * information maintained locally or directly from the
+ * corresponding network node.
+ * @return The list of NodeTableStatistics objects containing the statistics
+ * present in hardware for all the network node tables
*/
public List<NodeTableStatistics> readAllNodeTable(Node node, boolean cached);
/**
* Returns the averaged transmit rate for the specified node connector
* @param connector
+ * the target nodeConnector
* @return tx rate [bps]
*/
public long getTransmitRate(NodeConnector connector);
import org.opendaylight.controller.sal.core.Node;
/**
- * @file IPluginOutReadService.java
- *
- * @brief Hardware statistics updates service to be offered by protocol plugins
+ * The interface defines hardware statistics updates service to be offered by
+ * protocol plugins
*/
public interface IPluginOutReadService {
/**
- * Notifies the hardware view of all the flow installed on the specified network node
+ * Notifies the hardware view of all the flow installed on the specified
+ * network node
+ *
* @param node
- * @return
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node}
+ * @param flowStatsList
+ * the hardware view of all the flow
+ * {@link org.opendaylight.controller.sal.reader.FlowOnNode}
+ * installed on the specified network node
*/
public void nodeFlowStatisticsUpdated(Node node, List<FlowOnNode> flowStatsList);
/**
- * Notifies the hardware view of the specified network node connector
+ * Notifies the hardware view of the specified network node
+ *
* @param node
- * @return
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node}
+ * @param ncStatsList
+ * the statistics
+ * {@link org.opendaylight.controller.sal.reader.NodeConnectorStatistics}
+ * for all node connectors in a given node
*/
public void nodeConnectorStatisticsUpdated(Node node, List<NodeConnectorStatistics> ncStatsList);
/**
* Notifies all the table statistics for a node
+ *
* @param node
- * @return
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node}
+ * @param tableStatsList
+ * the statistics
+ * {@link org.opendaylight.controller.sal.reader.NodeTableStatistics}
+ * for all the tables in a given node
*/
public void nodeTableStatisticsUpdated(Node node, List<NodeTableStatistics> tableStatsList);
+
/**
* Notifies the hardware view of node description changes
+ *
* @param node
- * @return
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node}
+ * @param nodeDescription
+ * the node description
+ * {@link org.opendaylight.controller.sal.reader.NodeDescription}
*/
public void descriptionStatisticsUpdated(Node node, NodeDescription nodeDescription );
import org.opendaylight.controller.sal.flowprogrammer.Flow;
/**
- * Interface for retrieving the network node's flow/port/queue hardware view
- *
- *
- *
+ * This interface defines methods for retrieving the network node's
+ * flow/port/queue hardware view
*/
public interface IReadService {
/**
- * Get the hardware view for the specified flow on the specified network node
+ * Get the hardware view for the specified flow on the specified network
+ * node
*
* @param node
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node}
* @param flow
+ * the given flow
+ * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
+ * @return the flow
+ * {@link org.opendaylight.controller.sal.reader.FlowOnNode}
+ * installed on the node
*/
FlowOnNode readFlow(Node node, Flow flow);
* Caller will be blocked until node replies or request times out
*
* @param node
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node}
* @param flow
+ * the given flow
+ * {@link org.opendaylight.controller.sal.flowprogrammer.Flow}
+ * @return the flow
+ * {@link org.opendaylight.controller.sal.reader.FlowOnNode}
+ * installed on the node
*/
FlowOnNode nonCachedReadFlow(Node node, Flow flow);
* Get the hardware view for all the flows installed on the network node
*
* @param node
- * @return
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node}
+ * @return all the flows
+ * {@link org.opendaylight.controller.sal.reader.FlowOnNode}
+ * installed on the node
*/
List<FlowOnNode> readAllFlows(Node node);
* Caller will be blocked until node replies or request times out
*
* @param node
- * @param flow
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node}
+ * @return the hardware view of all the flows
+ * {@link org.opendaylight.controller.sal.reader.FlowOnNode}
+ * installed on the node
*/
List<FlowOnNode> nonCachedReadAllFlows(Node node);
/**
* Get the description information for the network node
+ *
* @param node
- * @return
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node}
+ * @return the node description
+ * {@link org.opendaylight.controller.sal.reader.NodeDescription}
*/
NodeDescription readDescription(Node node);
* Caller will be blocked until node replies or request times out
*
* @param node
- * @return
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node}
+ * @return the node description
+ * {@link org.opendaylight.controller.sal.reader.NodeDescription}
*/
NodeDescription nonCachedReadDescription(Node node);
/**
* Get the hardware view for the specified node connector
+ *
* @param connector
+ * the given node connector
+ * {@link org.opendaylight.controller.sal.core.NodeConnector}
+ * @return the node connector statistics
+ * {@link org.opendaylight.controller.sal.reader.NodeConnectorStatistics}
*/
NodeConnectorStatistics readNodeConnector(NodeConnector connector);
/**
* Get the hardware view for all the node connectors
* present on the specified network node
- * @param connector
+ *
+ * @param node
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node}
+ * @return the statistics for all the node connectors
+ * {@link org.opendaylight.controller.sal.reader.NodeConnectorStatistics}
*/
List<NodeConnectorStatistics> readNodeConnectors(Node node);
/**
* Read the Table statistics for the given node table
+ *
* @param table
+ * the table
+ * {@link org.opendaylight.controller.sal.core.NodeTable}
+ * @return the table statistics
+ * {@link org.opendaylight.controller.sal.reader.NodeTableStatistics}
*/
NodeTableStatistics readNodeTable(NodeTable table);
/**
- * Read the Table statistics for the given node
- * This is not used. Querying all tables on a node is not currently a feature.
- * @param table
+ * Read the Table statistics for the given node This is not used. Querying
+ * all tables on a node is not currently a feature.
+ *
+ * @param node
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node}
+ * @return the table statistics
+ * {@link org.opendaylight.controller.sal.reader.NodeTableStatistics}
+ * for all tables in a given node
*/
List<NodeTableStatistics> readNodeTable(Node node);
* Caller will be blocked until the node replies or request times out
*
* @param table
+ * the table
+ * {@link org.opendaylight.controller.sal.core.NodeTable}
+ * @return the table statistics
+ * {@link org.opendaylight.controller.sal.reader.NodeTableStatistics}
*/
NodeTableStatistics nonCachedReadNodeTable(NodeTable table);
* Caller will be blocked until node replies or request times out
*
* @param node
- * @return
+ * the network node
+ * {@link org.opendaylight.controller.sal.core.Node}
+ * @return the statistics
+ * {@link org.opendaylight.controller.sal.reader.NodeConnectorStatistics}
+ * for all node connectors in a given node
*/
List<NodeConnectorStatistics> nonCachedReadNodeConnectors(Node node);
/**
* Get the node connectors statistics information for the network node
*
- * @param node
- * @return
+ * @param connector
+ * the given node connector
+ * {@link org.opendaylight.controller.sal.core.NodeConnector}
+ * @return the node connector statistics
+ * {@link org.opendaylight.controller.sal.reader.NodeConnectorStatistics}
*/
NodeConnectorStatistics nonCachedReadNodeConnector(NodeConnector connector);
* Get the transmit rate for the specified node connector
*
* @param connector
+ * the given node connector
+ * {@link org.opendaylight.controller.sal.core.NodeConnector}
* @return tx rate [bps]
*/
long getTransmitRate(NodeConnector connector);
package org.opendaylight.controller.sal.reader;
-
/**
- * @file IReadServiceListener.java
- *
- * @brief SAL service to be consumed by functional modules that are interested in reader updates
+ * The interface describes SAL service to be consumed by functional modules that
+ * are interested in reader updates
*/
public interface IReadServiceListener extends IPluginOutReadService {
/**
* This interface provides APIs to manage and query the routing information
- *
+ *
*/
public interface IRouting {
/**
* Returns a Path leading from the source to the destination
- * @param src: source Node
- * @param dst: destination Node
- * @return: Path
+ *
+ * @param src
+ * source {@link org.opendaylight.controller.sal.core.Node}
+ *
+ * @param dst
+ * destination
+ * {@link org.opendaylight.controller.sal.core.Node}
+ * @return: the {@link org.opendaylight.controller.sal.core.Path}
*/
public Path getRoute(Node src, Node dst);
/**
* Returns a Max ThroughPut Path leading from the source to the destination
- * @param src: source Node
- * @param dst: destination Node
- * @return: MTPath
+ *
+ * @param src
+ * source {@link org.opendaylight.controller.sal.core.Node}
+ *
+ * @param dst
+ * destination
+ * {@link org.opendaylight.controller.sal.core.Node}
+ * @return: the max throughput {@link org.opendaylight.controller.sal.core.Path}
*/
public Path getMaxThroughputRoute(Node src, Node dst);
/**
- * Returns a Path leading from the source to the destination that meets the specified bandwidth
- * @param src: source Node
- * @param dst: destination Node
- * @param Bw: bandwidth
- * @return: Path
+ * Returns a Path leading from the source to the destination that meets the
+ * specified bandwidth
+ *
+ * @param src
+ * source {@link org.opendaylight.controller.sal.core.Node}
+ *
+ * @param dst
+ * destination {@link org.opendaylight.controller.sal.core.Node}
+ * @param Bw
+ * the bandwidth
+ * @return: the {@link org.opendaylight.controller.sal.core.Path}
*/
public Path getRoute(Node src, Node dst, Short Bw);
/**
* Initialization For Max Throughput
- * @param EdgeWeightMap: Map containing Edge and Corresponding
- * Weight. Optional Param - if null, implementation specific weight
- * calculation will be used.
+ *
+ * @param EdgeWeightMap
+ * Map containing
+ * {@link org.opendaylight.controller.sal.core.Edge} and
+ * Corresponding Weight. Optional Param - if null, implementation
+ * specific weight calculation will be used.
*/
public void initMaxThroughput(Map<Edge, Number> EdgeWeightMap);
import org.opendaylight.controller.sal.core.Edge;
/**
- * @file IListenTopoUpdates.java
- *
- * @brief Topology notifications provided by SAL toward the application
- *
- * For example an application that wants to keep up to date with the
- * updates coming from SAL it will register in the OSGi service
- * registry this interface (on a per-container base) and SAL will call it
- * providing the update
- */
-
-/**
- * Topology notifications provided by SAL toward the application
- *
+ * This interface defines the methods for topology notifications provided by SAL
+ * toward the application. For example an application that wants to keep up to
+ * date with the updates coming from SAL it will register in the OSGi service
+ * registry. This interface (on a per-container base) and SAL will call it
+ * providing the update.
*/
public interface IListenTopoUpdates {
/**
* threshold level configured on the controller
*
* @param edge
+ * The edge which bandwidth usage is back to normal
*/
public void edgeUtilBackToNormal(Edge edge);
}
package org.opendaylight.controller.sal.topology;
import java.util.List;
-import java.util.Set;
-
import org.opendaylight.controller.sal.core.Edge;
-import org.opendaylight.controller.sal.core.Property;
-import org.opendaylight.controller.sal.core.UpdateType;
-
-/**
- * @file IPluginOutTopologyService.java
- *
- * @brief Methods that are invoked from Protocol Plugin toward SAL
- *
- * Every time a protocol plugin update the topology, it will call this
- * service provided by SAL so the update can migrate upward toward the
- * applications
- */
/**
- * Methods that are invoked from Protocol Plugin toward SAL
- *
+ * This interface defines the methods that are invoked from Protocol Plugin
+ * toward SAL. Every time a protocol plugin update the topology, it will call
+ * this service provided by SAL so the update can migrate upward toward the
+ * applications.
*/
public interface IPluginOutTopologyService {
* on the controller
*
* @param edge
- */
+ * The edge which bandwidth usage is above the safety level
+ */
public void edgeOverUtilized(Edge edge);
/**
* threshold level configured on the controller
*
* @param edge
+ * The edge which bandwidth usage is back to normal
*/
public void edgeUtilBackToNormal(Edge edge);
}
package org.opendaylight.controller.sal.utils;
+/**
+ * This interface defines the methods for configuration object
+ *
+ */
public interface ConfigurationObject {
}
package org.opendaylight.controller.sal.utils;
+/**
+ * This interface defines the methods for callback ordering
+ *
+ */
+
public interface IListener<T> {
public enum Command {
CONTINUE, STOP
/**
* The name assigned to this listener
*
- * @return
+ * @return the name string
*/
public String getName();
import org.opendaylight.controller.sal.core.NodeConnector;
/**
- * @file INodeFactory.java
- *
- * @brief Define the interface to be called when looking up custom node types
+ * This interface defines the methods to be called when looking up custom node types
*
*/
/**
* Method to get custom NodeConnector types from protocol plugins
*
+ * @param typeStr
+ * {@Link
+ * org.opendaylight.controller.sal.core.NodeConnector} type
+ * string
+ * @param IDStr
+ * {@Link
+ * org.opendaylight.controller.sal.core.NodeConnector} ID string
+ * @return the custom {@Link
+ * org.opendaylight.controller.sal.core.NodeConnector}
*/
public NodeConnector fromStringNoNode(String typeStr, String IDStr,
Node n);
import org.opendaylight.controller.sal.core.Node;
/**
- * @file INodeFactory.java
- *
- * @brief Define the interface to be called when looking up custom node types
+ * This interface defines the methods to be called when looking up custom node types
*
*/
/**
* Method to get custom node types from protocol plugins
*
+ * @param nodeType
+ * {@Link org.opendaylight.controller.sal.core.Node} type
+ * string
+ * @param nodeId
+ * {@Link org.opendaylight.controller.sal.core.Node} ID
+ * string
+ * @return the custom {@Link
+ * org.opendaylight.controller.sal.core.Node}
*/
public Node fromString(String nodeType, String nodeId);
}
* plugins and is an opaque value for SAL. Typical values keyed inside this params are
* Management IP-Address, Username, Password, Security Keys, etc...
*
- * @return Node
+ * @return Node {@link org.opendaylight.controller.sal.core.Node}
*/
public Node connect (String type, String connectionIdentifier, Map<ConnectionConstants, String> params);
-
/**
* Discover the node type and Connect to the first plugin that is able to connect with the specified parameters.
*
* plugins and is an opaque value for SAL. Typical values keyed inside this params are
* Management IP-Address, Username, Password, Security Keys, etc...
*
- * @return Node
+ * @return Node {@link org.opendaylight.controller.sal.core.Node}
*/
public Node connect (String connectionIdentifier, Map<ConnectionConstants, String> params);
* Disconnect a Node that is connected to this Controller.
*
* @param node
- * @param flow
+ * the node {@link org.opendaylight.controller.sal.core.Node}
+ * @return Status {@link org.opendaylight.controller.sal.utils.Status}
*/
public Status disconnect(Node node);
/**
* View Change notification
+ *
+ * @param node
+ * the node {@link org.opendaylight.controller.sal.core.Node}
*/
public void notifyNodeDisconnectFromMaster(Node node);
import org.opendaylight.controller.sal.utils.Status;
/**
- * @file IPluginInConnectionService.java
- *
- * @brief Connection interface to be implemented by protocol plugins
+ * The interface describes methods to be implemented by protocol plugins
*/
public interface IPluginInConnectionService {
/**
* Disconnect a Node that is connected to this Controller.
*
* @param node
- * @param flow
+ * the given node {@link org.opendaylight.controller.sal.core.Node}
*/
public Status disconnect(Node node);
/**
* Node Disconnected from the node's master controller.
+ *
+ * @param node
+ * the given node {@link org.opendaylight.controller.sal.core.Node}
*/
public void notifyNodeDisconnectFromMaster(Node node);
import org.opendaylight.controller.sal.core.Node;
+/**
+ * The interface describes methods to be implemented by SAL connection service
+ */
public interface IPluginOutConnectionService {
/**
* Method to test if a node is local to a controller.
*
+ * @param node
+ * the given node {@link org.opendaylight.controller.sal.core.Node}
* @return true if node is local to this controller. false otherwise.
*/
public boolean isLocal(Node node);
package org.opendaylight.controller.sal.networkconfig.bridgedomain;
+/**
+ * This interface is just a wrapper of IPluginInBridgeDomainConfigService
+ */
public interface IBridgeDomainConfigService extends IPluginInBridgeDomainConfigService {
}
\ No newline at end of file
import org.opendaylight.controller.sal.utils.Status;
/**
- * @file IPluginInConfigurationService.java
- *
+ * This interface defines bridge domain configuration service methods to be
+ * implemented by protocol plugins
*/
public interface IPluginInBridgeDomainConfigService {
/**