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