Committed by
Gerrit Code Review
[ONOS-4171] Merge PCEP and BGP providers into common BGPCEP provider.
Change-Id: Ia87f0898e51704ce8d02d877e9f0d57219099a53
Showing
14 changed files
with
142 additions
and
25 deletions
... | @@ -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 | ... | ... |
providers/bgp/topology/src/main/java/org/onosproject/provider/bgp/topology/impl/BgpTopologyProvider.java
100755 → 100644
... | @@ -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); | ... | ... |
providers/bgp/topology/src/test/java/org/onosproject/provider/bgp/topology/impl/BgpTopologyProviderTest.java
100755 → 100644
... | @@ -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 | ) | ... | ... |
providers/bgp/flow/pom.xml
→
providers/bgpcep/flow/pom.xml
100755 → 100644
... | @@ -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 | ... | ... |
providers/bgpcep/pom.xml
0 → 100644
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> | ... | ... |
-
Please register or login to post a comment