Priyanka B
Committed by Gerrit Code Review

[ONOS-4171] Merge PCEP and BGP providers into common BGPCEP provider.

Change-Id: Ia87f0898e51704ce8d02d877e9f0d57219099a53
...@@ -25,7 +25,7 @@ import org.onosproject.pcep.tools.PcepTools; ...@@ -25,7 +25,7 @@ import org.onosproject.pcep.tools.PcepTools;
25 */ 25 */
26 public final class PcepDpid { 26 public final class PcepDpid {
27 27
28 - private static final String SCHEME = "pcep"; 28 + private static final String SCHEME = "l3";
29 private static final long UNKNOWN = 0; 29 private static final long UNKNOWN = 0;
30 private long nodeId; 30 private long nodeId;
31 31
......
...@@ -39,7 +39,7 @@ import org.slf4j.LoggerFactory; ...@@ -39,7 +39,7 @@ import org.slf4j.LoggerFactory;
39 public final class BgpDpid { 39 public final class BgpDpid {
40 private static final Logger log = LoggerFactory.getLogger(BgpDpid.class); 40 private static final Logger log = LoggerFactory.getLogger(BgpDpid.class);
41 41
42 - private static final String SCHEME = "bgp"; 42 + private static final String SCHEME = "l3";
43 private static final long UNKNOWN = 0; 43 private static final long UNKNOWN = 0;
44 private StringBuilder stringBuilder; 44 private StringBuilder stringBuilder;
45 public static final int NODE_DESCRIPTOR_LOCAL = 1; 45 public static final int NODE_DESCRIPTOR_LOCAL = 1;
......
...@@ -30,7 +30,7 @@ import static com.google.common.base.Preconditions.checkArgument; ...@@ -30,7 +30,7 @@ import static com.google.common.base.Preconditions.checkArgument;
30 */ 30 */
31 public final class BgpId extends Identifier<IpAddress> { 31 public final class BgpId extends Identifier<IpAddress> {
32 32
33 - private static final String SCHEME = "bgp"; 33 + private static final String SCHEME = "l3";
34 private static final long UNKNOWN = 0; 34 private static final long UNKNOWN = 0;
35 35
36 /** 36 /**
......
...@@ -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 final class PccId extends Identifier<IpAddress> { 30 public final class PccId extends Identifier<IpAddress> {
31 31
32 - private static final String SCHEME = "pcep"; 32 + private static final String SCHEME = "l3";
33 private static final long UNKNOWN = 0; 33 private static final long UNKNOWN = 0;
34 34
35 /** 35 /**
......
...@@ -25,10 +25,9 @@ ...@@ -25,10 +25,9 @@
25 <packaging>pom</packaging> 25 <packaging>pom</packaging>
26 <description>BGP-LS protocol providers root</description> 26 <description>BGP-LS protocol providers root</description>
27 <modules> 27 <modules>
28 - <module>topology</module> 28 + <module>topology</module>
29 <module>cfg</module> 29 <module>cfg</module>
30 - <module>app</module> 30 + <module>app</module>
31 - <module>flow</module>
32 </modules> 31 </modules>
33 <dependencies> 32 <dependencies>
34 33
......
...@@ -79,8 +79,11 @@ import org.slf4j.LoggerFactory; ...@@ -79,8 +79,11 @@ import org.slf4j.LoggerFactory;
79 @Component(immediate = true) 79 @Component(immediate = true)
80 public class BgpTopologyProvider extends AbstractProvider implements DeviceProvider, LinkProvider { 80 public class BgpTopologyProvider extends AbstractProvider implements DeviceProvider, LinkProvider {
81 81
82 + /**
83 + * Creates an instance of BGP topology provider.
84 + */
82 public BgpTopologyProvider() { 85 public BgpTopologyProvider() {
83 - super(new ProviderId("bgp", "org.onosproject.provider.bgp")); 86 + super(new ProviderId("l3", "org.onosproject.provider.bgp"));
84 } 87 }
85 88
86 private static final Logger log = LoggerFactory.getLogger(BgpTopologyProvider.class); 89 private static final Logger log = LoggerFactory.getLogger(BgpTopologyProvider.class);
......
...@@ -70,9 +70,9 @@ import org.onosproject.net.provider.ProviderId; ...@@ -70,9 +70,9 @@ import org.onosproject.net.provider.ProviderId;
70 * Test for BGP topology provider. 70 * Test for BGP topology provider.
71 */ 71 */
72 public class BgpTopologyProviderTest { 72 public class BgpTopologyProviderTest {
73 - private static final DeviceId DID2 = DeviceId.deviceId("bgp:rd=0::routinguniverse=0:asn=10"); 73 + private static final DeviceId DID2 = DeviceId.deviceId("l3:rd=0::routinguniverse=0:asn=10");
74 private static final String UNKNOWN = new String("unknown"); 74 private static final String UNKNOWN = new String("unknown");
75 - public static ProviderId providerId = new ProviderId("bgp", "foo"); 75 + public static ProviderId providerId = new ProviderId("l3", "foo");
76 76
77 private final BgpTopologyProvider provider = new BgpTopologyProvider(); 77 private final BgpTopologyProvider provider = new BgpTopologyProvider();
78 private final TestDeviceRegistry nodeRegistry = new TestDeviceRegistry(); 78 private final TestDeviceRegistry nodeRegistry = new TestDeviceRegistry();
......
1 +SRC = 'src/main/java/org/onosproject/**/'
2 +
3 +CURRENT_NAME = 'onos-bgpcep-provider-flow'
4 +CURRENT_TARGET = ':' + CURRENT_NAME
5 +
1 COMPILE_DEPS = [ 6 COMPILE_DEPS = [
2 '//lib:CORE_DEPS', 7 '//lib:CORE_DEPS',
3 '//protocols/bgp/api:onos-bgp-api', 8 '//protocols/bgp/api:onos-bgp-api',
4 ] 9 ]
5 10
6 -osgi_jar_with_tests ( 11 +osgi_jar(
12 + name = CURRENT_NAME,
13 + srcs = glob([SRC + '/*.java']),
7 deps = COMPILE_DEPS, 14 deps = COMPILE_DEPS,
15 + visibility = ['PUBLIC'],
8 ) 16 )
......
...@@ -21,15 +21,15 @@ ...@@ -21,15 +21,15 @@
21 21
22 <parent> 22 <parent>
23 <groupId>org.onosproject</groupId> 23 <groupId>org.onosproject</groupId>
24 - <artifactId>onos-bgp-providers</artifactId> 24 + <artifactId>onos-bgpcep-providers</artifactId>
25 <version>1.6.0-SNAPSHOT</version> 25 <version>1.6.0-SNAPSHOT</version>
26 <relativePath>../pom.xml</relativePath> 26 <relativePath>../pom.xml</relativePath>
27 </parent> 27 </parent>
28 28
29 - <artifactId>onos-bgp-provider-flow</artifactId> 29 + <artifactId>onos-bgpcep-provider-flow</artifactId>
30 <packaging>bundle</packaging> 30 <packaging>bundle</packaging>
31 31
32 - <description>ONOS BGP protocol flow provider</description> 32 + <description>ONOS BGP-PCEP protocol flow provider</description>
33 33
34 <dependencies> 34 <dependencies>
35 <dependency> 35 <dependency>
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
13 * See the License for the specific language governing permissions and 13 * See the License for the specific language governing permissions and
14 * limitations under the License. 14 * limitations under the License.
15 */ 15 */
16 -package org.onosproject.provider.bgp.flow.impl; 16 +package org.onosproject.provider.bgpcep.flow.impl;
17 17
18 import org.apache.felix.scr.annotations.Activate; 18 import org.apache.felix.scr.annotations.Activate;
19 import org.apache.felix.scr.annotations.Component; 19 import org.apache.felix.scr.annotations.Component;
...@@ -28,18 +28,22 @@ import org.onosproject.net.flow.FlowRuleBatchOperation; ...@@ -28,18 +28,22 @@ import org.onosproject.net.flow.FlowRuleBatchOperation;
28 import org.onosproject.net.flow.FlowRuleProvider; 28 import org.onosproject.net.flow.FlowRuleProvider;
29 import org.onosproject.net.flow.FlowRuleProviderRegistry; 29 import org.onosproject.net.flow.FlowRuleProviderRegistry;
30 import org.onosproject.net.flow.FlowRuleProviderService; 30 import org.onosproject.net.flow.FlowRuleProviderService;
31 +import org.onosproject.net.flow.criteria.Criterion;
31 import org.onosproject.net.provider.AbstractProvider; 32 import org.onosproject.net.provider.AbstractProvider;
32 import org.onosproject.net.provider.ProviderId; 33 import org.onosproject.net.provider.ProviderId;
34 +import org.onosproject.net.resource.ResourceService;
35 +import org.onosproject.pcep.controller.PcepClient;
36 +import org.onosproject.pcep.controller.PcepClientController;
33 import org.osgi.service.component.ComponentContext; 37 import org.osgi.service.component.ComponentContext;
34 import org.slf4j.Logger; 38 import org.slf4j.Logger;
35 39
36 import static org.slf4j.LoggerFactory.getLogger; 40 import static org.slf4j.LoggerFactory.getLogger;
37 41
38 /** 42 /**
39 - * Bgp Flow provider. 43 + * Implementation of BGP-PCEP flow provider.
40 */ 44 */
41 @Component(immediate = true) 45 @Component(immediate = true)
42 -public class BgpFlowRuleProvider extends AbstractProvider 46 +public class BgpcepFlowRuleProvider extends AbstractProvider
43 implements FlowRuleProvider { 47 implements FlowRuleProvider {
44 48
45 private final Logger log = getLogger(getClass()); 49 private final Logger log = getLogger(getClass());
...@@ -53,19 +57,26 @@ public class BgpFlowRuleProvider extends AbstractProvider ...@@ -53,19 +57,26 @@ public class BgpFlowRuleProvider extends AbstractProvider
53 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 57 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
54 protected BgpController bgpController; 58 protected BgpController bgpController;
55 59
60 + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
61 + protected PcepClientController pcepController;
62 +
63 + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
64 + protected ResourceService resourceService;
65 +
56 private FlowRuleProviderService providerService; 66 private FlowRuleProviderService providerService;
57 67
58 /** 68 /**
59 - * Creates an BgpFlow host provider. 69 + * Creates a BgpFlow host provider.
60 */ 70 */
61 - public BgpFlowRuleProvider() { 71 + public BgpcepFlowRuleProvider() {
62 - super(new ProviderId("bgp", "org.onosproject.provider.bgp")); 72 + super(new ProviderId("l3", "org.onosproject.provider.bgpcep"));
63 } 73 }
64 74
65 @Activate 75 @Activate
66 public void activate(ComponentContext context) { 76 public void activate(ComponentContext context) {
67 cfgService.registerProperties(getClass()); 77 cfgService.registerProperties(getClass());
68 providerService = providerRegistry.register(this); 78 providerService = providerRegistry.register(this);
79 + log.info("Started");
69 } 80 }
70 81
71 @Deactivate 82 @Deactivate
...@@ -73,6 +84,7 @@ public class BgpFlowRuleProvider extends AbstractProvider ...@@ -73,6 +84,7 @@ public class BgpFlowRuleProvider extends AbstractProvider
73 cfgService.unregisterProperties(getClass(), false); 84 cfgService.unregisterProperties(getClass(), false);
74 providerRegistry.unregister(this); 85 providerRegistry.unregister(this);
75 providerService = null; 86 providerService = null;
87 + log.info("Stopped");
76 } 88 }
77 89
78 @Override 90 @Override
...@@ -83,7 +95,29 @@ public class BgpFlowRuleProvider extends AbstractProvider ...@@ -83,7 +95,29 @@ public class BgpFlowRuleProvider extends AbstractProvider
83 } 95 }
84 96
85 private void applyRule(FlowRule flowRule) { 97 private void applyRule(FlowRule flowRule) {
86 - //TODO 98 + flowRule.selector().criteria()
99 + .forEach(c -> {
100 + // If Criterion type is MPLS_LABEL, push labels through PCEP client
101 + if (c.type() == Criterion.Type.MPLS_LABEL) {
102 + PcepClient pcc;
103 + /** PCC client session is based on LSR ID, get the LSR ID for a specific device to
104 + push the flows */
105 +
106 + //TODO: commented code has dependency with other patch
107 + /* Set<TeRouterId> lrsIds = resourceService.getAvailableResourceValues(Resources
108 + .discrete(flowRule.deviceId()).id(), TeRouterId.class);
109 +
110 + lrsIds.forEach(lsrId ->
111 + {
112 + if (pcepController.getClient(PccId.pccId(lsrId)) != null) {
113 + pcc = pcepController.getClient(PccId.pccId(lsrId));
114 + }
115 + });*/
116 + // TODO: Build message and send the PCEP label message via PCEP client
117 + } else {
118 + // TODO: Get the BGP peer based on deviceId and send the message
119 + }
120 + });
87 } 121 }
88 122
89 @Override 123 @Override
...@@ -94,7 +128,29 @@ public class BgpFlowRuleProvider extends AbstractProvider ...@@ -94,7 +128,29 @@ public class BgpFlowRuleProvider extends AbstractProvider
94 } 128 }
95 129
96 private void removeRule(FlowRule flowRule) { 130 private void removeRule(FlowRule flowRule) {
97 - //TODO 131 + flowRule.selector().criteria()
132 + .forEach(c -> {
133 + // If Criterion type is MPLS_LABEL, remove the specified flow rules
134 + if (c.type() == Criterion.Type.MPLS_LABEL) {
135 + PcepClient pcc;
136 + /** PCC client session is based on LSR ID, get the LSR ID for a specific device to
137 + push the flows */
138 +
139 + //TODO: commented code has dependency with other patch
140 + /* Set<TeRouterId> lrsIds = resourceService.getAvailableResourceValues(Resources
141 + .discrete(flowRule.deviceId()).id(), TeRouterId.class);
142 +
143 + lrsIds.forEach(lsrId ->
144 + {
145 + if (pcepController.getClient(PccId.pccId(lsrId)) != null) {
146 + pcc = pcepController.getClient(PccId.pccId(lsrId));
147 + }
148 + });*/
149 + // TODO: Build message and send the PCEP label message via PCEP client
150 + } else {
151 + // TODO: Get the BGP peer based on deviceId and send the message
152 + }
153 + });
98 } 154 }
99 155
100 @Override 156 @Override
......
...@@ -15,6 +15,6 @@ ...@@ -15,6 +15,6 @@
15 */ 15 */
16 16
17 /** 17 /**
18 - * Bgp Flow provider. 18 + * Representation of BGP-PCEP flow provider.
19 */ 19 */
20 -package org.onosproject.provider.bgp.flow.impl; 20 +package org.onosproject.provider.bgpcep.flow.impl;
......
1 +<!--
2 + ~ Copyright 2016-present Open Networking Laboratory
3 + ~
4 + ~ Licensed under the Apache License, Version 2.0 (the "License");
5 + ~ you may not use this file except in compliance with the License.
6 + ~ You may obtain a copy of the License at
7 + ~
8 + ~ http://www.apache.org/licenses/LICENSE-2.0
9 + ~
10 + ~ Unless required by applicable law or agreed to in writing, software
11 + ~ distributed under the License is distributed on an "AS IS" BASIS,
12 + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + ~ See the License for the specific language governing permissions and
14 + ~ limitations under the License.
15 + -->
16 +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
17 + <modelVersion>4.0.0</modelVersion>
18 + <parent>
19 + <groupId>org.onosproject</groupId>
20 + <artifactId>onos-providers</artifactId>
21 + <version>1.6.0-SNAPSHOT</version>
22 + <relativePath>../pom.xml</relativePath>
23 + </parent>
24 +
25 + <artifactId>onos-bgpcep-providers</artifactId>
26 + <packaging>pom</packaging>
27 +
28 + <description>BGPCEP providers root</description>
29 +
30 + <modules>
31 + <module>flow</module>
32 + </modules>
33 +
34 + <dependencies>
35 + <dependency>
36 + <groupId>org.onosproject</groupId>
37 + <artifactId>onos-pcep-controller-api</artifactId>
38 + <version>${project.version}</version>
39 + </dependency>
40 + <dependency>
41 + <groupId>org.onosproject</groupId>
42 + <artifactId>onos-bgp-api</artifactId>
43 + <version>${project.version}</version>
44 + </dependency>
45 + </dependencies>
46 +
47 +</project>
...@@ -81,8 +81,11 @@ import static org.onosproject.pcep.api.PcepDpid.uri; ...@@ -81,8 +81,11 @@ import static org.onosproject.pcep.api.PcepDpid.uri;
81 public class PcepTopologyProvider extends AbstractProvider 81 public class PcepTopologyProvider extends AbstractProvider
82 implements LinkProvider, DeviceProvider { 82 implements LinkProvider, DeviceProvider {
83 83
84 + /**
85 + * Creates instance of PCEP topology provider.
86 + */
84 public PcepTopologyProvider() { 87 public PcepTopologyProvider() {
85 - super(new ProviderId("pcep", "org.onosproject.provider.pcep")); 88 + super(new ProviderId("l3", "org.onosproject.provider.pcep"));
86 } 89 }
87 90
88 private static final Logger log = LoggerFactory 91 private static final Logger log = LoggerFactory
......
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
40 <module>pcep</module> 40 <module>pcep</module>
41 <module>ovsdb</module> 41 <module>ovsdb</module>
42 <module>bgp</module> 42 <module>bgp</module>
43 + <module>bgpcep</module>
43 <module>snmp</module> 44 <module>snmp</module>
44 <module>rest</module> 45 <module>rest</module>
45 <module>lldpcommon</module> 46 <module>lldpcommon</module>
......