From b731e2f1dd0972409b136aebc7b463dd72c9cfad Mon Sep 17 00:00:00 2001 From: CNlucius Date: Tue, 13 Sep 2016 11:40:12 +0800 Subject: ONOSFW-171 O/S-SFC-ONOS scenario documentation Change-Id: I51ae1cf736ea24ab6680f8edca1b2bf5dd598365 Signed-off-by: CNlucius --- .../optical/cfg/OpticalConfigProvider.java | 374 --------------------- 1 file changed, 374 deletions(-) delete mode 100644 framework/src/onos/apps/optical/src/main/java/org/onosproject/optical/cfg/OpticalConfigProvider.java (limited to 'framework/src/onos/apps/optical/src/main/java/org/onosproject/optical/cfg/OpticalConfigProvider.java') diff --git a/framework/src/onos/apps/optical/src/main/java/org/onosproject/optical/cfg/OpticalConfigProvider.java b/framework/src/onos/apps/optical/src/main/java/org/onosproject/optical/cfg/OpticalConfigProvider.java deleted file mode 100644 index dbe0b543..00000000 --- a/framework/src/onos/apps/optical/src/main/java/org/onosproject/optical/cfg/OpticalConfigProvider.java +++ /dev/null @@ -1,374 +0,0 @@ -/* - * Copyright 2014 Open Networking Laboratory - * - * 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.optical.cfg; - -import org.codehaus.jackson.JsonNode; -import org.codehaus.jackson.JsonParseException; -import org.codehaus.jackson.annotate.JsonIgnoreProperties; -import org.codehaus.jackson.map.JsonMappingException; -import org.codehaus.jackson.map.ObjectMapper; -import org.onosproject.net.ConnectPoint; -import org.onosproject.net.DefaultAnnotations; -import org.onosproject.net.Device; -import org.onosproject.net.DeviceId; -import org.onosproject.net.Link; -import org.onosproject.net.MastershipRole; -import org.onosproject.net.PortNumber; -import org.onosproject.net.device.DefaultDeviceDescription; -import org.onosproject.net.device.DeviceDescription; -import org.onosproject.net.device.DeviceProvider; -import org.onosproject.net.device.DeviceProviderRegistry; -import org.onosproject.net.device.DeviceProviderService; -import org.onosproject.net.link.DefaultLinkDescription; -import org.onosproject.net.link.LinkProvider; -import org.onosproject.net.link.LinkProviderRegistry; -import org.onosproject.net.link.LinkProviderService; -import org.onosproject.net.provider.AbstractProvider; -import org.onosproject.net.provider.ProviderId; -import org.onlab.packet.ChassisId; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import static org.onosproject.net.DeviceId.deviceId; - -/** - * OpticalConfigProvider emulates the SB network provider for optical switches, - * optical links and any other state that needs to be configured for correct network - * operations. - * - * @deprecated in Cardinal Release - */ -@Deprecated -@JsonIgnoreProperties(ignoreUnknown = true) -//@Component(immediate = true) -public class OpticalConfigProvider extends AbstractProvider implements DeviceProvider, LinkProvider { - - protected static final Logger log = LoggerFactory - .getLogger(OpticalConfigProvider.class); - - // TODO: fix hard coded file path later. - private static final String DEFAULT_CONFIG_FILE = - "config/demo-3-roadm-2-ps.json"; - private String configFileName = DEFAULT_CONFIG_FILE; - -// @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected LinkProviderRegistry linkProviderRegistry; - -// @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) - protected DeviceProviderRegistry deviceProviderRegistry; - - private static final String OPTICAL_ANNOTATION = "optical."; - - private LinkProviderService linkProviderService; - private DeviceProviderService deviceProviderService; - - private static final List RAW_ROADMS = new ArrayList<>(); - private static final List RAW_WDMLINKS = new ArrayList<>(); - private static final List RAW_PKTOPTLINKS = new ArrayList<>(); - - private static final String ROADM = "Roadm"; - private static final String WDM_LINK = "wdmLink"; - private static final String PKT_OPT_LINK = "pktOptLink"; - - protected OpticalNetworkConfig opticalNetworkConfig; - - public OpticalConfigProvider() { - super(new ProviderId("optical", "org.onosproject.provider" + - ".opticalConfig")); - } - -// @Activate - protected void activate() { - linkProviderService = linkProviderRegistry.register(this); - deviceProviderService = deviceProviderRegistry.register(this); - log.info("Starting optical network configuration process..."); - log.info("Optical config file set to {}", configFileName); - - loadOpticalConfig(); - parseOpticalConfig(); - publishOpticalConfig(); - } - -// @Deactivate - protected void deactivate() { - linkProviderRegistry.unregister(this); - linkProviderService = null; - deviceProviderRegistry.unregister(this); - deviceProviderService = null; - RAW_ROADMS.clear(); - RAW_WDMLINKS.clear(); - RAW_PKTOPTLINKS.clear(); - log.info("Stopped"); - } - - private void loadOpticalConfig() { - ObjectMapper mapper = new ObjectMapper(); - opticalNetworkConfig = new OpticalNetworkConfig(); - try { - opticalNetworkConfig = mapper.readValue(new File(configFileName), OpticalNetworkConfig.class); - } catch (JsonParseException e) { - String err = String.format("JsonParseException while loading network " - + "config from file: %s: %s", configFileName, e.getMessage()); - log.error(err, e); - } catch (JsonMappingException e) { - String err = String.format( - "JsonMappingException while loading network config " - + "from file: %s: %s", configFileName, e.getMessage()); - log.error(err, e); - } catch (IOException e) { - String err = String.format("IOException while loading network config " - + "from file: %s %s", configFileName, e.getMessage()); - log.error(err, e); - } - } - - private void parseOpticalConfig() { - List swList = opticalNetworkConfig.getOpticalSwitches(); - List lkList = opticalNetworkConfig.getOpticalLinks(); - - for (OpticalSwitchDescription sw : swList) { - String swtype = sw.getType(); - boolean allow = sw.isAllowed(); - if (swtype.equals(ROADM) && allow) { - int regNum = 0; - Set> m = sw.params.entrySet(); - for (Map.Entry e : m) { - String key = e.getKey(); - JsonNode j = e.getValue(); - if (key.equals("numRegen")) { - regNum = j.asInt(); - } - } - - Roadm newRoadm = new Roadm(); - newRoadm.setName(sw.name); - newRoadm.setNodeId(sw.nodeDpid); - newRoadm.setLongtitude(sw.longitude); - newRoadm.setLatitude(sw.latitude); - newRoadm.setRegenNum(regNum); - - RAW_ROADMS.add(newRoadm); - log.info(newRoadm.toString()); - } - } - - for (OpticalLinkDescription lk : lkList) { - String lktype = lk.getType(); - switch (lktype) { - case WDM_LINK: - WdmLink newWdmLink = new WdmLink(); - newWdmLink.setSrcNodeId(lk.getNodeDpid1()); - newWdmLink.setSnkNodeId(lk.getNodeDpid2()); - newWdmLink.setAdminWeight(1000); // default weight for each WDM link. - Set> m = lk.params.entrySet(); - for (Map.Entry e : m) { - String key = e.getKey(); - JsonNode j = e.getValue(); - if (key.equals("nodeName1")) { - newWdmLink.setSrcNodeName(j.asText()); - } else if (key.equals("nodeName2")) { - newWdmLink.setSnkNodeName(j.asText()); - } else if (key.equals("port1")) { - newWdmLink.setSrcPort(j.asInt()); - } else if (key.equals("port2")) { - newWdmLink.setSnkPort(j.asInt()); - } else if (key.equals("distKms")) { - newWdmLink.setDistance(j.asDouble()); - } else if (key.equals("numWaves")) { - newWdmLink.setWavelengthNumber(j.asInt()); - } else { - log.error("error found"); - // TODO add exception processing; - } - } - RAW_WDMLINKS.add(newWdmLink); - log.info(newWdmLink.toString()); - - break; - - case PKT_OPT_LINK: - PktOptLink newPktOptLink = new PktOptLink(); - newPktOptLink.setSrcNodeId(lk.getNodeDpid1()); - newPktOptLink.setSnkNodeId(lk.getNodeDpid2()); - newPktOptLink.setAdminWeight(10); // default weight for each packet-optical link. - Set> ptm = lk.params.entrySet(); - for (Map.Entry e : ptm) { - String key = e.getKey(); - JsonNode j = e.getValue(); - if (key.equals("nodeName1")) { - newPktOptLink.setSrcNodeName(j.asText()); - } else if (key.equals("nodeName2")) { - newPktOptLink.setSnkNodeName(j.asText()); - } else if (key.equals("port1")) { - newPktOptLink.setSrcPort(j.asInt()); - } else if (key.equals("port2")) { - newPktOptLink.setSnkPort(j.asInt()); - } else if (key.equals("bandWidth")) { - newPktOptLink.setBandwdith(j.asDouble()); - } else { - log.error("error found"); - // TODO add exception processing; - } - } - - RAW_PKTOPTLINKS.add(newPktOptLink); - log.info(newPktOptLink.toString()); - break; - default: - } - } - } - - private void publishOpticalConfig() { - if (deviceProviderService == null || linkProviderService == null) { - return; - } - - // Discover the optical ROADM objects - Iterator iterWdmNode = RAW_ROADMS.iterator(); - while (iterWdmNode.hasNext()) { - Roadm value = iterWdmNode.next(); - DeviceId did = deviceId("of:" + value.getNodeId().replace(":", "")); - ChassisId cid = new ChassisId(); - DefaultAnnotations extendedAttributes = DefaultAnnotations.builder() - .set(OPTICAL_ANNOTATION + "switchType", "ROADM") - .set(OPTICAL_ANNOTATION + "switchName", value.getName()) - .set(OPTICAL_ANNOTATION + "latitude", Double.toString(value.getLatitude())) - .set(OPTICAL_ANNOTATION + "longtitude", Double.toString(value.getLongtitude())) - .set(OPTICAL_ANNOTATION + "regNum", Integer.toString(value.getRegenNum())) - .build(); - - DeviceDescription description = - new DefaultDeviceDescription(did.uri(), - Device.Type.SWITCH, - "", - "", - "", - "", - cid, - extendedAttributes); - deviceProviderService.deviceConnected(did, description); - } - - // Discover the optical WDM link objects - Iterator iterWdmlink = RAW_WDMLINKS.iterator(); - while (iterWdmlink.hasNext()) { - WdmLink value = iterWdmlink.next(); - - DeviceId srcNodeId = deviceId("of:" + value.getSrcNodeId().replace(":", "")); - DeviceId snkNodeId = deviceId("of:" + value.getSnkNodeId().replace(":", "")); - - PortNumber srcPort = PortNumber.portNumber(value.getSrcPort()); - PortNumber snkPort = PortNumber.portNumber(value.getSnkPort()); - - ConnectPoint srcPoint = new ConnectPoint(srcNodeId, srcPort); - ConnectPoint snkPoint = new ConnectPoint(snkNodeId, snkPort); - - DefaultAnnotations extendedAttributes = DefaultAnnotations.builder() - .set(OPTICAL_ANNOTATION + "linkType", "WDM") - .set(OPTICAL_ANNOTATION + "distance", Double.toString(value.getDistance())) - .set(OPTICAL_ANNOTATION + "cost", Double.toString(value.getDistance())) - .set(OPTICAL_ANNOTATION + "adminWeight", Double.toString(value.getAdminWeight())) - .set(OPTICAL_ANNOTATION + "wavelengthNum", Integer.toString(value.getWavelengthNumber())) - .build(); - - DefaultLinkDescription linkDescription = - new DefaultLinkDescription(srcPoint, - snkPoint, - Link.Type.OPTICAL, - extendedAttributes); - - linkProviderService.linkDetected(linkDescription); - log.info(String.format("WDM link: %s : %s", - linkDescription.src().toString(), linkDescription.dst().toString())); - - - DefaultLinkDescription linkDescriptionReverse = - new DefaultLinkDescription(snkPoint, - srcPoint, - Link.Type.OPTICAL, - extendedAttributes); - - linkProviderService.linkDetected(linkDescriptionReverse); - log.info(String.format("WDM link: %s : %s", - linkDescriptionReverse.src().toString(), linkDescriptionReverse.dst().toString())); - } - - // Discover the packet optical link objects - Iterator iterPktOptlink = RAW_PKTOPTLINKS.iterator(); - while (iterPktOptlink.hasNext()) { - PktOptLink value = iterPktOptlink.next(); - DeviceId srcNodeId = deviceId("of:" + value.getSrcNodeId().replace(":", "")); - DeviceId snkNodeId = deviceId("of:" + value.getSnkNodeId().replace(":", "")); - - PortNumber srcPort = PortNumber.portNumber(value.getSrcPort()); - PortNumber snkPort = PortNumber.portNumber(value.getSnkPort()); - - ConnectPoint srcPoint = new ConnectPoint(srcNodeId, srcPort); - ConnectPoint snkPoint = new ConnectPoint(snkNodeId, snkPort); - - DefaultAnnotations extendedAttributes = DefaultAnnotations.builder() - .set(OPTICAL_ANNOTATION + "linkType", "PktOptLink") - .set(OPTICAL_ANNOTATION + "bandwidth", Double.toString(value.getBandwidth())) - .set(OPTICAL_ANNOTATION + "cost", Double.toString(value.getBandwidth())) - .set(OPTICAL_ANNOTATION + "adminWeight", Double.toString(value.getAdminWeight())) - .build(); - - DefaultLinkDescription linkDescription = - new DefaultLinkDescription(srcPoint, - snkPoint, - Link.Type.OPTICAL, - extendedAttributes); - - linkProviderService.linkDetected(linkDescription); - log.info(String.format("Packet-optical link: %s : %s", - linkDescription.src().toString(), linkDescription.dst().toString())); - - DefaultLinkDescription linkDescriptionReverse = - new DefaultLinkDescription(snkPoint, - srcPoint, - Link.Type.OPTICAL, - extendedAttributes); - - linkProviderService.linkDetected(linkDescriptionReverse); - log.info(String.format("Packet-optical link: %s : %s", - linkDescriptionReverse.src().toString(), linkDescriptionReverse.dst().toString())); - } - - } - - @Override - public void triggerProbe(DeviceId deviceId) { - // TODO We may want to consider re-reading config files and publishing them based on this event. - } - - @Override - public void roleChanged(DeviceId device, MastershipRole newRole) { - } - - @Override - public boolean isReachable(DeviceId device) { - return false; - } -} -- cgit 1.2.3-korg