X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fswitchmanager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fswitchmanager%2FISwitchManager.java;fp=opendaylight%2Fswitchmanager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fswitchmanager%2FISwitchManager.java;h=15aeda3881d8c4a56e8799c7a7f5cea23022cd44;hp=0000000000000000000000000000000000000000;hb=29f7cfb54b580928c7feac63abce028a7014b0d5;hpb=42210c03b0a4c54706320ba9f55794c0abd4d201 diff --git a/opendaylight/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/ISwitchManager.java b/opendaylight/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/ISwitchManager.java new file mode 100755 index 0000000000..15aeda3881 --- /dev/null +++ b/opendaylight/switchmanager/src/main/java/org/opendaylight/controller/switchmanager/ISwitchManager.java @@ -0,0 +1,361 @@ + +/* + * 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.switchmanager; + +import java.net.InetAddress; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.opendaylight.controller.sal.core.Node; +import org.opendaylight.controller.sal.core.NodeConnector; +import org.opendaylight.controller.sal.core.Property; +import org.opendaylight.controller.sal.utils.Status; + +import org.opendaylight.controller.switchmanager.SpanConfig; +import org.opendaylight.controller.switchmanager.Subnet; +import org.opendaylight.controller.switchmanager.SubnetConfig; +import org.opendaylight.controller.switchmanager.Switch; +import org.opendaylight.controller.switchmanager.SwitchConfig; + +/** + * Primary purpose of this interface is to provide methods for application to + * access various system resources and inventory data including nodes, node + * connectors and their properties, Layer3 configurations, Span configurations, + * node configurations, network device representations viewed by Controller Web + * applications. + */ +public interface ISwitchManager { + /** + * Add a subnet configuration + * + * @param configObject refer to {@link Open Declaration org.opendaylight.controller.switchmanager.SubnetConfig} + * @return "Success" or failure reason + */ + public Status addSubnet(SubnetConfig configObject); + + /** + * Remove a subnet configuration + * + * @param configObject refer to {@link Open Declaration org.opendaylight.controller.switchmanager.SubnetConfig} + * @return "Success" or failure reason + */ + public Status removeSubnet(SubnetConfig configObject); + + /** + * Remove a subnet configuration given the name + * + * @param name subnet name + * @return "Success" or failure reason + */ + public Status removeSubnet(String name); + + /** + * Return a list of all known devices in the system + * + * @return returns a list of {@link org.opendaylight.controller.switchmanager.Switch} + */ + public List getNetworkDevices(); + + /** + * Return a list of subnet that were previously configured + * + * @return list of L3 interface {@link org.opendaylight.controller.switchmanager.SubnetConfig} configurations + */ + public List getSubnetsConfigList(); + + /** + * Return the subnet configuration + * + * @param subnet subnet + * @return a L3 interface {@link org.opendaylight.controller.switchmanager.SubnetConfig} configuration + */ + public SubnetConfig getSubnetConfig(String subnet); + + /** + * Return a subnet configuration given the network address + * + * @param networkAddress the ip address in long format + * @return the {@link org.opendaylight.controller.switchmanager.Subnet} + */ + public Subnet getSubnetByNetworkAddress(InetAddress networkAddress); + + /** + * Save the current switch configurations + * + * @return the status code + */ + public Status saveSwitchConfig(); + + /** + * Add a span port configuration + * + * @param SpanConfig refer to {@link Open Declaration org.opendaylight.controller.switchmanager.SpanConfig} + * @return status code + */ + public Status addSpanConfig(SpanConfig configObject); + + /** + * Remove a span port configuration + * + * @param SpanConfig refer to {@link Open Declaration org.opendaylight.controller.switchmanager.SpanConfig} + * @return status code + */ + public Status removeSpanConfig(SpanConfig cfgObject); + + /** + * Return a list of span configurations that were configured previously + * + * @return list of {@link org.opendaylight.controller.switchmanager.SpanConfig} resources + */ + public List getSpanConfigList(); + + /** + * Return the list of span ports of a given node + * + * @param node {@link org.opendaylight.controller.sal.core.Node} + * @return the list of span {@link org.opendaylight.controller.sal.core.NodeConnector} of the node + */ + public List getSpanPorts(Node node); + + /** + * Update Switch specific configuration such as Switch Name and Tier + * + * @param cfgConfig refer to {@link Open Declaration org.opendaylight.controller.switchmanager.SwitchConfig} + */ + public void updateSwitchConfig(SwitchConfig cfgObject); + + /** + * Return the previously configured Switch Configuration given the node id + * + * @param nodeId Node Identifier as specified by {@link org.opendaylight.controller.sal.core.Node} + * @return {@link org.opendaylight.controller.switchmanager.SwitchConfig} resources + */ + public SwitchConfig getSwitchConfig(String nodeId); + + /** + * Add node connectors to a subnet + * + * @param name The subnet config name + * @param nodeConnectors nodePorts string specified by {@link Open Declaration org.opendaylight.controller.switchmanager.SubnetConfig} + * @return "Success" or failure reason + */ + public Status addPortsToSubnet(String name, String nodeConnectors); + + /** + * Remove node connectors from a subnet + * + * @param name the subnet config name + * @param nodeConnectors nodePorts string specified by {@link Open Declaration org.opendaylight.controller.switchmanager.SubnetConfig} + * @return "Success" or failure reason + */ + public Status removePortsFromSubnet(String name, String nodeConnectors); + + /** + * Return the set of all the nodes + * + * @return set of {@link org.opendaylight.controller.sal.core.Node} + */ + public Set getNodes(); + + /** + * Return all the properties of a node + * + * @param node {@link org.opendaylight.controller.sal.core.Node} + * @return map of {@link org.opendaylight.controller.sal.core.Property} such as + * {@link org.opendaylight.controller.sal.core.Name} and/or + * {@link org.opendaylight.controller.sal.core.Tier} etc. + */ + public Map getNodeProps(Node node); + + /** + * Return a specific property of a node given the property name + * + * @param node {@link org.opendaylight.controller.sal.core.Node} + * @param propName the property name specified by {@link org.opendaylight.controller.sal.core.Property} and its extended classes + * @return {@link org.opendaylight.controller.sal.core.Property} + */ + public Property getNodeProp(Node node, String propName); + + /** + * Set a specific property of a node + * + * @param node {@link org.opendaylight.controller.sal.core.Node} + * @param prop {@link org.opendaylight.controller.sal.core.Property} + */ + public void setNodeProp(Node node, Property prop); + + /** + * Remove a property of a node + * + * @param nc {@link org.opendaylight.controller.sal.core.Node} + * @param propName the property name specified by {@link org.opendaylight.controller.sal.core.Property} and its extended classes + * @return success or failed reason + */ + public Status removeNodeProp(Node node, String propName); + + /** + * Remove all the properties of a node + * + * @param node {@link org.opendaylight.controller.sal.core.Node} + * @return success or failed reason + */ + public Status removeNodeAllProps(Node node); + + /** + * Return all the node connectors in up state for a given node + * + * @param node {@link org.opendaylight.controller.sal.core.Node} + * @return set of {@link org.opendaylight.controller.sal.core.NodeConnector} + */ + public Set getUpNodeConnectors(Node node); + + /** + * Return all the node connectors including those special ones. Status of each node connector varies. + * + * @param node {@link org.opendaylight.controller.sal.core.Node} + * @return all listed {@link org.opendaylight.controller.sal.core.NodeConnector} + */ + public Set getNodeConnectors(Node node); + + /** + * Return all the physical node connectors of a node. Status of each node connector varies. + * + * @param node {@link org.opendaylight.controller.sal.core.Node} + * @return all physical {@link org.opendaylight.controller.sal.core.NodeConnector} + */ + public Set getPhysicalNodeConnectors(Node node); + + /** + * Return all the properties of a node connector + * + * @param nodeConnector {@link org.opendaylight.controller.sal.core.NodeConnector} + * @return map of {@link org.opendaylight.controller.sal.core.Property} such as + * {@link org.opendaylight.controller.sal.core.Name} and/or + * {@link org.opendaylight.controller.sal.core.State} etc. + */ + public Map getNodeConnectorProps( + NodeConnector nodeConnector); + + /** + * Return a specific property of a node connector given the property name + * + * @param nodeConnector {@link org.opendaylight.controller.sal.core.NodeConnector} + * @param propName property name specified by {@link org.opendaylight.controller.sal.core.Property} and its extended classes + * @return {@link org.opendaylight.controller.sal.core.Property} + */ + public Property getNodeConnectorProp(NodeConnector nodeConnector, + String propName); + + /** + * Add a node connector and its property + * + * @param nodeConnector {@link org.opendaylight.controller.sal.core.NodeConnector} + * @param prop {@link org.opendaylight.controller.sal.core.Property} + * @return success or failed reason + */ + public Status addNodeConnectorProp(NodeConnector nodeConnector, + Property prop); + + /** + * Remove a property of a node connector + * + * @param nc {@link org.opendaylight.controller.sal.core.NodeConnector} + * @param propName property name specified by {@link org.opendaylight.controller.sal.core.Property} and its extended classes + * @return success or failed reason + */ + public Status removeNodeConnectorProp(NodeConnector nc, String propName); + + /** + * Remove all the properties of a node connector + * + * @param nodeConnector {@link org.opendaylight.controller.sal.core.NodeConnector} + * @return success or failed reason + */ + public Status removeNodeConnectorAllProps(NodeConnector nodeConnector); + + /** + * Return the node connector given its name + * + * @param node {@link org.opendaylight.controller.sal.core.Node} + * @param nodeConnectorName node connector identifier specified by {@link org.opendaylight.controller.sal.core.NodeConnector} + * @return {@link org.opendaylight.controller.sal.core.NodeConnector} + */ + public NodeConnector getNodeConnector(Node node, String nodeConnectorName); + + /** + * Return whether the specified node connector is a special node port + * Example of node's special node connector are software stack, hardware path, controller... + * + * @param p {@link org.opendaylight.controller.sal.core.NodeConnector} + * @return true or false + */ + public boolean isSpecial(NodeConnector p); + + /** + * Check if the node connector is up running + * + * @param nodeConnector {@link org.opendaylight.controller.sal.core.NodeConnector} + * @return true or false + */ + public Boolean isNodeConnectorEnabled(NodeConnector nodeConnector); + + /** + * Return the list of mapping "nodeId"/"nodeName" for each connected node. + * Each map contains two string keys: "nodeId", "nodeName". + * Value associated to "nodeId" is the node id in string hex format. + * Value associated to "nodeName" is the name of the node. If no name was set, + * it will be the node id in string hex format. + * + * @return list of map + */ + public List> getListNodeIdNameMap(); + + /** + * Return controller MAC address + * + * @return MAC address in byte array + */ + public byte[] getControllerMAC(); + + /** + * Return MAC address for a given node + * + * @param node {@link org.opendaylight.controller.sal.core.Node} + * @return MAC address in byte array + */ + public byte[] getNodeMAC(Node node); + + /** + * Return true if the host Refresh procedure (by sending ARP request probes + * to known hosts) is enabled. By default, the procedure is enabled. This can + * be overwritten by OSFI CLI "hostRefresh off". + * + * @return true if it is enabled; false if it's disabled. + */ + public boolean isHostRefreshEnabled(); + + /** + * Return host refresh retry count + * + * @return host refresh retry count + */ + public int getHostRetryCount(); + + /** + * Create a Name/Tier/Bandwidth Property object based on given property + * name and value. Other property types are not supported yet. + * + * @param propName Name of the Property specified by {@link org.opendaylight.controller.sal.core.Property} and its extended classes + * @param propValue Value of the Property specified by {@link org.opendaylight.controller.sal.core.Property} and its extended classes + * @return {@link org.opendaylight.controller.sal.core.Property} + */ + public Property createProperty(String propName, String propValue); +}