Manikandan K

ONOS-4361 OSPF Provider Bug Fixes

Change-Id: I840896d3e9a23ad541d56b0a795e2f5c7cb02487
...@@ -29,7 +29,7 @@ import static com.google.common.base.Preconditions.checkArgument; ...@@ -29,7 +29,7 @@ import static com.google.common.base.Preconditions.checkArgument;
29 */ 29 */
30 public class OspfRouterId { 30 public class OspfRouterId {
31 31
32 - private static final String SCHEME = "ospf"; 32 + private static final String SCHEME = "l3";
33 private static final long UNKNOWN = 0; 33 private static final long UNKNOWN = 0;
34 private final IpAddress ipAddress; 34 private final IpAddress ipAddress;
35 35
......
...@@ -42,6 +42,7 @@ import org.onosproject.net.link.LinkDescription; ...@@ -42,6 +42,7 @@ import org.onosproject.net.link.LinkDescription;
42 import org.onosproject.net.link.LinkProvider; 42 import org.onosproject.net.link.LinkProvider;
43 import org.onosproject.net.link.LinkProviderRegistry; 43 import org.onosproject.net.link.LinkProviderRegistry;
44 import org.onosproject.net.link.LinkProviderService; 44 import org.onosproject.net.link.LinkProviderService;
45 +import org.onosproject.net.link.LinkService;
45 import org.onosproject.net.provider.AbstractProvider; 46 import org.onosproject.net.provider.AbstractProvider;
46 import org.onosproject.net.provider.ProviderId; 47 import org.onosproject.net.provider.ProviderId;
47 import org.onosproject.ospf.controller.OspfController; 48 import org.onosproject.ospf.controller.OspfController;
...@@ -73,6 +74,8 @@ public class OspfTopologyProvider extends AbstractProvider implements DeviceProv ...@@ -73,6 +74,8 @@ public class OspfTopologyProvider extends AbstractProvider implements DeviceProv
73 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 74 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
74 protected LinkProviderRegistry linkProviderRegistry; 75 protected LinkProviderRegistry linkProviderRegistry;
75 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 76 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
77 + protected LinkService linkService;
78 + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
76 protected OspfController controller; 79 protected OspfController controller;
77 //This Interface that defines how this provider can interact with the core. 80 //This Interface that defines how this provider can interact with the core.
78 private LinkProviderService linkProviderService; 81 private LinkProviderService linkProviderService;
...@@ -177,7 +180,7 @@ public class OspfTopologyProvider extends AbstractProvider implements DeviceProv ...@@ -177,7 +180,7 @@ public class OspfTopologyProvider extends AbstractProvider implements DeviceProv
177 ChassisId cId = new ChassisId(); 180 ChassisId cId = new ChassisId();
178 DefaultAnnotations.Builder newBuilder = DefaultAnnotations.builder(); 181 DefaultAnnotations.Builder newBuilder = DefaultAnnotations.builder();
179 182
180 - newBuilder.set(AnnotationKeys.TYPE, "L3"); 183 + newBuilder.set(AnnotationKeys.TYPE, "l3");
181 newBuilder.set("routerId", routerId); 184 newBuilder.set("routerId", routerId);
182 DeviceDescription description = 185 DeviceDescription description =
183 new DefaultDeviceDescription(OspfRouterId.uri(ospfRouter.routerIp()), 186 new DefaultDeviceDescription(OspfRouterId.uri(ospfRouter.routerIp()),
...@@ -201,10 +204,11 @@ public class OspfTopologyProvider extends AbstractProvider implements DeviceProv ...@@ -201,10 +204,11 @@ public class OspfTopologyProvider extends AbstractProvider implements DeviceProv
201 @Override 204 @Override
202 public void addLink(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed) { 205 public void addLink(OspfRouter ospfRouter, OspfLinkTed ospfLinkTed) {
203 log.debug("Addlink {}", ospfRouter.routerIp()); 206 log.debug("Addlink {}", ospfRouter.routerIp());
204 - if (linkProviderService == null) { 207 + LinkDescription linkDes = buildLinkDes(ospfRouter, ospfLinkTed);
208 + //If already link exists, return
209 + if (linkService.getLink(linkDes.src(), linkDes.dst()) != null || linkProviderService == null) {
205 return; 210 return;
206 } 211 }
207 - LinkDescription linkDes = buildLinkDes(ospfRouter, ospfLinkTed);
208 //Updating ports of the link 212 //Updating ports of the link
209 List<PortDescription> srcPortDescriptions = new LinkedList<>(); 213 List<PortDescription> srcPortDescriptions = new LinkedList<>();
210 srcPortDescriptions.add(new DefaultPortDescription(linkDes.src().port(), true)); 214 srcPortDescriptions.add(new DefaultPortDescription(linkDes.src().port(), true));
......
...@@ -72,12 +72,14 @@ public class OspfTopologyProviderTest { ...@@ -72,12 +72,14 @@ public class OspfTopologyProviderTest {
72 private final TestDeviceRegistry nodeRegistry = new TestDeviceRegistry(); 72 private final TestDeviceRegistry nodeRegistry = new TestDeviceRegistry();
73 private final TestLinkRegistry linkRegistry = new TestLinkRegistry(); 73 private final TestLinkRegistry linkRegistry = new TestLinkRegistry();
74 private final TestController controller = new TestController(); 74 private final TestController controller = new TestController();
75 + private final TestLinkService linkService = new TestLinkService();
75 76
76 @Before 77 @Before
77 public void setUp() throws Exception { 78 public void setUp() throws Exception {
78 provider.deviceProviderRegistry = nodeRegistry; 79 provider.deviceProviderRegistry = nodeRegistry;
79 provider.linkProviderRegistry = linkRegistry; 80 provider.linkProviderRegistry = linkRegistry;
80 provider.controller = controller; 81 provider.controller = controller;
82 + provider.linkService = linkService;
81 provider.activate(); 83 provider.activate();
82 assertNotNull("provider should be registered", nodeRegistry.provider); 84 assertNotNull("provider should be registered", nodeRegistry.provider);
83 assertNotNull("listener should be registered", controller.nodeListener); 85 assertNotNull("listener should be registered", controller.nodeListener);
......