Moved routing/bgp config into common routing bundle.
This allows the configuration to be used from multiple applications. * The class that reads the configuration file is now a service so that config can be consumed by components in other bundles. * Name of config reader classes has been generalized to RoutingConfigService * All config has been added to RoutingConfigService, instead of having two service interfaces like we did previously Change-Id: Iaec9daf0f5b72abe2d6709fb75188d6d81947478
Showing
16 changed files
with
218 additions
and
210 deletions
... | @@ -13,13 +13,14 @@ | ... | @@ -13,13 +13,14 @@ |
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.sdnip.config; | 16 | +package org.onosproject.routingapi.config; |
17 | 17 | ||
18 | import com.fasterxml.jackson.annotation.JsonProperty; | 18 | import com.fasterxml.jackson.annotation.JsonProperty; |
19 | import com.google.common.base.MoreObjects; | 19 | import com.google.common.base.MoreObjects; |
20 | import org.onlab.packet.IpAddress; | 20 | import org.onlab.packet.IpAddress; |
21 | import org.onosproject.net.ConnectPoint; | 21 | import org.onosproject.net.ConnectPoint; |
22 | import org.onosproject.net.DeviceId; | 22 | import org.onosproject.net.DeviceId; |
23 | +import org.onosproject.net.NetTools; | ||
23 | import org.onosproject.net.PortNumber; | 24 | import org.onosproject.net.PortNumber; |
24 | 25 | ||
25 | import java.util.Objects; | 26 | import java.util.Objects; |
... | @@ -42,7 +43,7 @@ public class BgpPeer { | ... | @@ -42,7 +43,7 @@ public class BgpPeer { |
42 | @JsonProperty("attachmentPort") long port, | 43 | @JsonProperty("attachmentPort") long port, |
43 | @JsonProperty("ipAddress") String ipAddress) { | 44 | @JsonProperty("ipAddress") String ipAddress) { |
44 | this.connectPoint = new ConnectPoint( | 45 | this.connectPoint = new ConnectPoint( |
45 | - DeviceId.deviceId(SdnIpConfigurationReader.dpidToUri(dpid)), | 46 | + DeviceId.deviceId(NetTools.dpidToUri(dpid)), |
46 | PortNumber.portNumber(port)); | 47 | PortNumber.portNumber(port)); |
47 | this.ipAddress = IpAddress.valueOf(ipAddress); | 48 | this.ipAddress = IpAddress.valueOf(ipAddress); |
48 | } | 49 | } | ... | ... |
... | @@ -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.sdnip.config; | 16 | +package org.onosproject.routingapi.config; |
17 | 17 | ||
18 | import com.fasterxml.jackson.annotation.JsonCreator; | 18 | import com.fasterxml.jackson.annotation.JsonCreator; |
19 | import com.fasterxml.jackson.annotation.JsonProperty; | 19 | import com.fasterxml.jackson.annotation.JsonProperty; |
... | @@ -21,6 +21,7 @@ import com.google.common.base.MoreObjects; | ... | @@ -21,6 +21,7 @@ import com.google.common.base.MoreObjects; |
21 | import org.onlab.packet.MacAddress; | 21 | import org.onlab.packet.MacAddress; |
22 | import org.onosproject.net.ConnectPoint; | 22 | import org.onosproject.net.ConnectPoint; |
23 | import org.onosproject.net.DeviceId; | 23 | import org.onosproject.net.DeviceId; |
24 | +import org.onosproject.net.NetTools; | ||
24 | import org.onosproject.net.PortNumber; | 25 | import org.onosproject.net.PortNumber; |
25 | 26 | ||
26 | import java.util.List; | 27 | import java.util.List; |
... | @@ -63,7 +64,7 @@ public class BgpSpeaker { | ... | @@ -63,7 +64,7 @@ public class BgpSpeaker { |
63 | this.name = name; | 64 | this.name = name; |
64 | this.macAddress = MacAddress.valueOf(macAddress); | 65 | this.macAddress = MacAddress.valueOf(macAddress); |
65 | this.connectPoint = new ConnectPoint( | 66 | this.connectPoint = new ConnectPoint( |
66 | - DeviceId.deviceId(SdnIpConfigurationReader.dpidToUri(attachmentDpid)), | 67 | + DeviceId.deviceId(NetTools.dpidToUri(attachmentDpid)), |
67 | PortNumber.portNumber(attachmentPort)); | 68 | PortNumber.portNumber(attachmentPort)); |
68 | } | 69 | } |
69 | 70 | ... | ... |
... | @@ -13,19 +13,18 @@ | ... | @@ -13,19 +13,18 @@ |
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.sdnip.config; | 16 | +package org.onosproject.routingapi.config; |
17 | - | ||
18 | -import java.util.Objects; | ||
19 | -import java.util.Set; | ||
20 | 17 | ||
18 | +import com.google.common.base.MoreObjects; | ||
19 | +import com.google.common.collect.Sets; | ||
21 | import org.onlab.packet.MacAddress; | 20 | import org.onlab.packet.MacAddress; |
22 | import org.onlab.packet.VlanId; | 21 | import org.onlab.packet.VlanId; |
23 | import org.onosproject.net.ConnectPoint; | 22 | import org.onosproject.net.ConnectPoint; |
24 | import org.onosproject.net.host.InterfaceIpAddress; | 23 | import org.onosproject.net.host.InterfaceIpAddress; |
25 | import org.onosproject.net.host.PortAddresses; | 24 | import org.onosproject.net.host.PortAddresses; |
26 | 25 | ||
27 | -import com.google.common.base.MoreObjects; | 26 | +import java.util.Objects; |
28 | -import com.google.common.collect.Sets; | 27 | +import java.util.Set; |
29 | 28 | ||
30 | /** | 29 | /** |
31 | * An Interface is a set of addresses that are logically mapped to a switch | 30 | * An Interface is a set of addresses that are logically mapped to a switch | ... | ... |
... | @@ -13,17 +13,17 @@ | ... | @@ -13,17 +13,17 @@ |
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.sdnip.config; | 16 | +package org.onosproject.routingapi.config; |
17 | - | ||
18 | -import java.util.Objects; | ||
19 | 17 | ||
18 | +import com.fasterxml.jackson.annotation.JsonProperty; | ||
19 | +import com.google.common.base.MoreObjects; | ||
20 | import org.onlab.packet.IpAddress; | 20 | import org.onlab.packet.IpAddress; |
21 | import org.onosproject.net.ConnectPoint; | 21 | import org.onosproject.net.ConnectPoint; |
22 | import org.onosproject.net.DeviceId; | 22 | import org.onosproject.net.DeviceId; |
23 | +import org.onosproject.net.NetTools; | ||
23 | import org.onosproject.net.PortNumber; | 24 | import org.onosproject.net.PortNumber; |
24 | 25 | ||
25 | -import com.fasterxml.jackson.annotation.JsonProperty; | 26 | +import java.util.Objects; |
26 | -import com.google.common.base.MoreObjects; | ||
27 | 27 | ||
28 | /** | 28 | /** |
29 | * Represents an address of a {@link BgpSpeaker} configured on an | 29 | * Represents an address of a {@link BgpSpeaker} configured on an |
... | @@ -48,7 +48,7 @@ public class InterfaceAddress { | ... | @@ -48,7 +48,7 @@ public class InterfaceAddress { |
48 | @JsonProperty("interfacePort") int port, | 48 | @JsonProperty("interfacePort") int port, |
49 | @JsonProperty("ipAddress") String ipAddress) { | 49 | @JsonProperty("ipAddress") String ipAddress) { |
50 | this.connectPoint = new ConnectPoint( | 50 | this.connectPoint = new ConnectPoint( |
51 | - DeviceId.deviceId(SdnIpConfigurationReader.dpidToUri(dpid)), | 51 | + DeviceId.deviceId(NetTools.dpidToUri(dpid)), |
52 | PortNumber.portNumber(port)); | 52 | PortNumber.portNumber(port)); |
53 | this.ipAddress = IpAddress.valueOf(ipAddress); | 53 | this.ipAddress = IpAddress.valueOf(ipAddress); |
54 | } | 54 | } | ... | ... |
... | @@ -13,18 +13,33 @@ | ... | @@ -13,18 +13,33 @@ |
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.sdnip; | 16 | +package org.onosproject.routingapi.config; |
17 | - | ||
18 | -import java.util.Set; | ||
19 | 17 | ||
20 | import org.onlab.packet.IpAddress; | 18 | import org.onlab.packet.IpAddress; |
21 | import org.onosproject.net.ConnectPoint; | 19 | import org.onosproject.net.ConnectPoint; |
22 | -import org.onosproject.sdnip.config.Interface; | 20 | + |
21 | +import java.util.Map; | ||
22 | +import java.util.Set; | ||
23 | 23 | ||
24 | /** | 24 | /** |
25 | - * Provides information about the interfaces in the network. | 25 | + * Provides information about the routing configuration. |
26 | */ | 26 | */ |
27 | -public interface InterfaceService { | 27 | +public interface RoutingConfigurationService { |
28 | + | ||
29 | + /** | ||
30 | + * Gets the list of BGP speakers inside the SDN network. | ||
31 | + * | ||
32 | + * @return the map of BGP speaker names to BGP speaker objects | ||
33 | + */ | ||
34 | + public Map<String, BgpSpeaker> getBgpSpeakers(); | ||
35 | + | ||
36 | + /** | ||
37 | + * Gets the list of configured BGP peers. | ||
38 | + * | ||
39 | + * @return the map from peer IP address to BgpPeer object | ||
40 | + */ | ||
41 | + public Map<IpAddress, BgpPeer> getBgpPeers(); | ||
42 | + | ||
28 | /** | 43 | /** |
29 | * Retrieves the entire set of interfaces in the network. | 44 | * Retrieves the entire set of interfaces in the network. |
30 | * | 45 | * |
... | @@ -49,4 +64,5 @@ public interface InterfaceService { | ... | @@ -49,4 +64,5 @@ public interface InterfaceService { |
49 | * @return the matching interface | 64 | * @return the matching interface |
50 | */ | 65 | */ |
51 | Interface getMatchingInterface(IpAddress ipAddress); | 66 | Interface getMatchingInterface(IpAddress ipAddress); |
67 | + | ||
52 | } | 68 | } | ... | ... |
... | @@ -13,13 +13,15 @@ | ... | @@ -13,13 +13,15 @@ |
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.sdnip.config; | 16 | +package org.onosproject.routing.config; |
17 | + | ||
18 | +import com.fasterxml.jackson.annotation.JsonProperty; | ||
19 | +import org.onosproject.routingapi.config.BgpPeer; | ||
20 | +import org.onosproject.routingapi.config.BgpSpeaker; | ||
17 | 21 | ||
18 | import java.util.Collections; | 22 | import java.util.Collections; |
19 | import java.util.List; | 23 | import java.util.List; |
20 | 24 | ||
21 | -import com.fasterxml.jackson.annotation.JsonProperty; | ||
22 | - | ||
23 | /** | 25 | /** |
24 | * Contains the configuration data for SDN-IP that has been read from a | 26 | * Contains the configuration data for SDN-IP that has been read from a |
25 | * JSON-formatted configuration file. | 27 | * JSON-formatted configuration file. | ... | ... |
... | @@ -13,25 +13,25 @@ | ... | @@ -13,25 +13,25 @@ |
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.sdnip; | 16 | +package org.onosproject.routing.config; |
17 | - | ||
18 | -import static com.google.common.base.Preconditions.checkNotNull; | ||
19 | - | ||
20 | -import java.util.Set; | ||
21 | 17 | ||
18 | +import com.google.common.collect.Sets; | ||
22 | import org.onlab.packet.IpAddress; | 19 | import org.onlab.packet.IpAddress; |
23 | import org.onosproject.net.ConnectPoint; | 20 | import org.onosproject.net.ConnectPoint; |
24 | import org.onosproject.net.host.HostService; | 21 | import org.onosproject.net.host.HostService; |
25 | import org.onosproject.net.host.InterfaceIpAddress; | 22 | import org.onosproject.net.host.InterfaceIpAddress; |
26 | import org.onosproject.net.host.PortAddresses; | 23 | import org.onosproject.net.host.PortAddresses; |
27 | -import org.onosproject.sdnip.config.Interface; | 24 | +import org.onosproject.routingapi.config.Interface; |
28 | 25 | ||
29 | -import com.google.common.collect.Sets; | 26 | +import java.util.Set; |
27 | + | ||
28 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
30 | 29 | ||
31 | /** | 30 | /** |
32 | - * Provides InterfaceService using PortAddresses data from the HostService. | 31 | + * Adapts PortAddresses data from the HostService into Interface data used by |
32 | + * the routing module. | ||
33 | */ | 33 | */ |
34 | -public class HostToInterfaceAdaptor implements InterfaceService { | 34 | +public class HostToInterfaceAdaptor { |
35 | 35 | ||
36 | private final HostService hostService; | 36 | private final HostService hostService; |
37 | 37 | ||
... | @@ -39,7 +39,6 @@ public class HostToInterfaceAdaptor implements InterfaceService { | ... | @@ -39,7 +39,6 @@ public class HostToInterfaceAdaptor implements InterfaceService { |
39 | this.hostService = checkNotNull(hostService); | 39 | this.hostService = checkNotNull(hostService); |
40 | } | 40 | } |
41 | 41 | ||
42 | - @Override | ||
43 | public Set<Interface> getInterfaces() { | 42 | public Set<Interface> getInterfaces() { |
44 | Set<PortAddresses> addresses = hostService.getAddressBindings(); | 43 | Set<PortAddresses> addresses = hostService.getAddressBindings(); |
45 | Set<Interface> interfaces = Sets.newHashSetWithExpectedSize(addresses.size()); | 44 | Set<Interface> interfaces = Sets.newHashSetWithExpectedSize(addresses.size()); |
... | @@ -49,7 +48,6 @@ public class HostToInterfaceAdaptor implements InterfaceService { | ... | @@ -49,7 +48,6 @@ public class HostToInterfaceAdaptor implements InterfaceService { |
49 | return interfaces; | 48 | return interfaces; |
50 | } | 49 | } |
51 | 50 | ||
52 | - @Override | ||
53 | public Interface getInterface(ConnectPoint connectPoint) { | 51 | public Interface getInterface(ConnectPoint connectPoint) { |
54 | checkNotNull(connectPoint); | 52 | checkNotNull(connectPoint); |
55 | 53 | ||
... | @@ -65,7 +63,6 @@ public class HostToInterfaceAdaptor implements InterfaceService { | ... | @@ -65,7 +63,6 @@ public class HostToInterfaceAdaptor implements InterfaceService { |
65 | return null; | 63 | return null; |
66 | } | 64 | } |
67 | 65 | ||
68 | - @Override | ||
69 | public Interface getMatchingInterface(IpAddress ipAddress) { | 66 | public Interface getMatchingInterface(IpAddress ipAddress) { |
70 | checkNotNull(ipAddress); | 67 | checkNotNull(ipAddress); |
71 | 68 | ... | ... |
... | @@ -13,26 +13,39 @@ | ... | @@ -13,26 +13,39 @@ |
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.sdnip.config; | 16 | +package org.onosproject.routing.config; |
17 | + | ||
18 | +import com.fasterxml.jackson.databind.ObjectMapper; | ||
19 | +import org.apache.felix.scr.annotations.Activate; | ||
20 | +import org.apache.felix.scr.annotations.Component; | ||
21 | +import org.apache.felix.scr.annotations.Reference; | ||
22 | +import org.apache.felix.scr.annotations.ReferenceCardinality; | ||
23 | +import org.apache.felix.scr.annotations.Service; | ||
24 | +import org.onlab.packet.IpAddress; | ||
25 | +import org.onosproject.net.ConnectPoint; | ||
26 | +import org.onosproject.net.host.HostService; | ||
27 | +import org.onosproject.routingapi.config.BgpPeer; | ||
28 | +import org.onosproject.routingapi.config.BgpSpeaker; | ||
29 | +import org.onosproject.routingapi.config.Interface; | ||
30 | +import org.onosproject.routingapi.config.RoutingConfigurationService; | ||
31 | +import org.slf4j.Logger; | ||
32 | +import org.slf4j.LoggerFactory; | ||
17 | 33 | ||
18 | import java.io.File; | 34 | import java.io.File; |
19 | import java.io.FileNotFoundException; | 35 | import java.io.FileNotFoundException; |
20 | import java.io.IOException; | 36 | import java.io.IOException; |
21 | import java.util.Collections; | 37 | import java.util.Collections; |
22 | import java.util.Map; | 38 | import java.util.Map; |
39 | +import java.util.Set; | ||
23 | import java.util.concurrent.ConcurrentHashMap; | 40 | import java.util.concurrent.ConcurrentHashMap; |
24 | 41 | ||
25 | -import org.onlab.packet.IpAddress; | ||
26 | -import org.slf4j.Logger; | ||
27 | -import org.slf4j.LoggerFactory; | ||
28 | - | ||
29 | -import com.fasterxml.jackson.databind.ObjectMapper; | ||
30 | - | ||
31 | /** | 42 | /** |
32 | - * Implementation of SdnIpConfigurationService which reads SDN-IP configuration | 43 | + * Implementation of RoutingConfigurationService which reads routing |
33 | - * from a file. | 44 | + * configuration from a file. |
34 | */ | 45 | */ |
35 | -public class SdnIpConfigurationReader implements SdnIpConfigurationService { | 46 | +@Component(immediate = true) |
47 | +@Service | ||
48 | +public class RoutingConfigurationImpl implements RoutingConfigurationService { | ||
36 | 49 | ||
37 | private final Logger log = LoggerFactory.getLogger(getClass()); | 50 | private final Logger log = LoggerFactory.getLogger(getClass()); |
38 | 51 | ||
... | @@ -40,9 +53,21 @@ public class SdnIpConfigurationReader implements SdnIpConfigurationService { | ... | @@ -40,9 +53,21 @@ public class SdnIpConfigurationReader implements SdnIpConfigurationService { |
40 | private static final String DEFAULT_CONFIG_FILE = "sdnip.json"; | 53 | private static final String DEFAULT_CONFIG_FILE = "sdnip.json"; |
41 | private String configFileName = DEFAULT_CONFIG_FILE; | 54 | private String configFileName = DEFAULT_CONFIG_FILE; |
42 | 55 | ||
56 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
57 | + protected HostService hostService; | ||
58 | + | ||
43 | private Map<String, BgpSpeaker> bgpSpeakers = new ConcurrentHashMap<>(); | 59 | private Map<String, BgpSpeaker> bgpSpeakers = new ConcurrentHashMap<>(); |
44 | private Map<IpAddress, BgpPeer> bgpPeers = new ConcurrentHashMap<>(); | 60 | private Map<IpAddress, BgpPeer> bgpPeers = new ConcurrentHashMap<>(); |
45 | 61 | ||
62 | + private HostToInterfaceAdaptor hostAdaptor; | ||
63 | + | ||
64 | + @Activate | ||
65 | + public void activate() { | ||
66 | + readConfiguration(); | ||
67 | + hostAdaptor = new HostToInterfaceAdaptor(hostService); | ||
68 | + log.info("Routing configuration service started"); | ||
69 | + } | ||
70 | + | ||
46 | /** | 71 | /** |
47 | * Reads SDN-IP related information contained in the configuration file. | 72 | * Reads SDN-IP related information contained in the configuration file. |
48 | * | 73 | * |
... | @@ -87,14 +112,19 @@ public class SdnIpConfigurationReader implements SdnIpConfigurationService { | ... | @@ -87,14 +112,19 @@ public class SdnIpConfigurationReader implements SdnIpConfigurationService { |
87 | return Collections.unmodifiableMap(bgpPeers); | 112 | return Collections.unmodifiableMap(bgpPeers); |
88 | } | 113 | } |
89 | 114 | ||
90 | - /** | 115 | + @Override |
91 | - * Converts DPIDs of the form xx:xx:xx:xx:xx:xx:xx to OpenFlow provider | 116 | + public Set<Interface> getInterfaces() { |
92 | - * device URIs. | 117 | + return hostAdaptor.getInterfaces(); |
93 | - * | ||
94 | - * @param dpid the DPID string to convert | ||
95 | - * @return the URI string for this device | ||
96 | - */ | ||
97 | - static String dpidToUri(String dpid) { | ||
98 | - return "of:" + dpid.replace(":", ""); | ||
99 | } | 118 | } |
119 | + | ||
120 | + @Override | ||
121 | + public Interface getInterface(ConnectPoint connectPoint) { | ||
122 | + return hostAdaptor.getInterface(connectPoint); | ||
123 | + } | ||
124 | + | ||
125 | + @Override | ||
126 | + public Interface getMatchingInterface(IpAddress ipAddress) { | ||
127 | + return hostAdaptor.getMatchingInterface(ipAddress); | ||
128 | + } | ||
129 | + | ||
100 | } | 130 | } | ... | ... |
... | @@ -13,20 +13,10 @@ | ... | @@ -13,20 +13,10 @@ |
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.sdnip; | 16 | +package org.onosproject.routing.config; |
17 | - | ||
18 | -import static org.easymock.EasyMock.createMock; | ||
19 | -import static org.easymock.EasyMock.expect; | ||
20 | -import static org.easymock.EasyMock.replay; | ||
21 | -import static org.easymock.EasyMock.reset; | ||
22 | -import static org.junit.Assert.assertEquals; | ||
23 | -import static org.junit.Assert.assertNull; | ||
24 | -import static org.junit.Assert.assertTrue; | ||
25 | - | ||
26 | -import java.util.Collections; | ||
27 | -import java.util.Map; | ||
28 | -import java.util.Set; | ||
29 | 17 | ||
18 | +import com.google.common.collect.Maps; | ||
19 | +import com.google.common.collect.Sets; | ||
30 | import org.junit.Before; | 20 | import org.junit.Before; |
31 | import org.junit.Test; | 21 | import org.junit.Test; |
32 | import org.onlab.packet.IpAddress; | 22 | import org.onlab.packet.IpAddress; |
... | @@ -39,10 +29,19 @@ import org.onosproject.net.PortNumber; | ... | @@ -39,10 +29,19 @@ import org.onosproject.net.PortNumber; |
39 | import org.onosproject.net.host.HostService; | 29 | import org.onosproject.net.host.HostService; |
40 | import org.onosproject.net.host.InterfaceIpAddress; | 30 | import org.onosproject.net.host.InterfaceIpAddress; |
41 | import org.onosproject.net.host.PortAddresses; | 31 | import org.onosproject.net.host.PortAddresses; |
42 | -import org.onosproject.sdnip.config.Interface; | 32 | +import org.onosproject.routingapi.config.Interface; |
43 | 33 | ||
44 | -import com.google.common.collect.Maps; | 34 | +import java.util.Collections; |
45 | -import com.google.common.collect.Sets; | 35 | +import java.util.Map; |
36 | +import java.util.Set; | ||
37 | + | ||
38 | +import static org.easymock.EasyMock.createMock; | ||
39 | +import static org.easymock.EasyMock.expect; | ||
40 | +import static org.easymock.EasyMock.replay; | ||
41 | +import static org.easymock.EasyMock.reset; | ||
42 | +import static org.junit.Assert.assertEquals; | ||
43 | +import static org.junit.Assert.assertNull; | ||
44 | +import static org.junit.Assert.assertTrue; | ||
46 | 45 | ||
47 | /** | 46 | /** |
48 | * Unit tests for the HostToInterfaceAdaptor class. | 47 | * Unit tests for the HostToInterfaceAdaptor class. | ... | ... |
... | @@ -37,9 +37,9 @@ import org.onosproject.net.intent.MultiPointToSinglePointIntent; | ... | @@ -37,9 +37,9 @@ import org.onosproject.net.intent.MultiPointToSinglePointIntent; |
37 | import org.onosproject.net.intent.PointToPointIntent; | 37 | import org.onosproject.net.intent.PointToPointIntent; |
38 | import org.onosproject.routingapi.FibListener; | 38 | import org.onosproject.routingapi.FibListener; |
39 | import org.onosproject.routingapi.FibUpdate; | 39 | import org.onosproject.routingapi.FibUpdate; |
40 | -import org.onosproject.sdnip.config.BgpPeer; | 40 | +import org.onosproject.routingapi.config.BgpPeer; |
41 | -import org.onosproject.sdnip.config.Interface; | 41 | +import org.onosproject.routingapi.config.Interface; |
42 | -import org.onosproject.sdnip.config.SdnIpConfigurationService; | 42 | +import org.onosproject.routingapi.config.RoutingConfigurationService; |
43 | import org.slf4j.Logger; | 43 | import org.slf4j.Logger; |
44 | import org.slf4j.LoggerFactory; | 44 | import org.slf4j.LoggerFactory; |
45 | 45 | ||
... | @@ -79,8 +79,7 @@ public class IntentSynchronizer implements FibListener { | ... | @@ -79,8 +79,7 @@ public class IntentSynchronizer implements FibListener { |
79 | private volatile boolean isElectedLeader = false; | 79 | private volatile boolean isElectedLeader = false; |
80 | private volatile boolean isActivatedLeader = false; | 80 | private volatile boolean isActivatedLeader = false; |
81 | 81 | ||
82 | - private final SdnIpConfigurationService configService; | 82 | + private final RoutingConfigurationService configService; |
83 | - private final InterfaceService interfaceService; | ||
84 | 83 | ||
85 | /** | 84 | /** |
86 | * Class constructor. | 85 | * Class constructor. |
... | @@ -88,18 +87,15 @@ public class IntentSynchronizer implements FibListener { | ... | @@ -88,18 +87,15 @@ public class IntentSynchronizer implements FibListener { |
88 | * @param appId the Application ID | 87 | * @param appId the Application ID |
89 | * @param intentService the intent service | 88 | * @param intentService the intent service |
90 | * @param configService the SDN-IP configuration service | 89 | * @param configService the SDN-IP configuration service |
91 | - * @param interfaceService the interface service | ||
92 | */ | 90 | */ |
93 | IntentSynchronizer(ApplicationId appId, IntentService intentService, | 91 | IntentSynchronizer(ApplicationId appId, IntentService intentService, |
94 | - SdnIpConfigurationService configService, | 92 | + RoutingConfigurationService configService) { |
95 | - InterfaceService interfaceService) { | ||
96 | this.appId = appId; | 93 | this.appId = appId; |
97 | this.intentService = intentService; | 94 | this.intentService = intentService; |
98 | peerIntents = new ConcurrentHashMap<>(); | 95 | peerIntents = new ConcurrentHashMap<>(); |
99 | routeIntents = new ConcurrentHashMap<>(); | 96 | routeIntents = new ConcurrentHashMap<>(); |
100 | 97 | ||
101 | this.configService = configService; | 98 | this.configService = configService; |
102 | - this.interfaceService = interfaceService; | ||
103 | 99 | ||
104 | bgpIntentsSynchronizerExecutor = Executors.newSingleThreadExecutor( | 100 | bgpIntentsSynchronizerExecutor = Executors.newSingleThreadExecutor( |
105 | new ThreadFactoryBuilder() | 101 | new ThreadFactoryBuilder() |
... | @@ -289,12 +285,12 @@ public class IntentSynchronizer implements FibListener { | ... | @@ -289,12 +285,12 @@ public class IntentSynchronizer implements FibListener { |
289 | BgpPeer peer = | 285 | BgpPeer peer = |
290 | configService.getBgpPeers().get(nextHopIpAddress); | 286 | configService.getBgpPeers().get(nextHopIpAddress); |
291 | egressInterface = | 287 | egressInterface = |
292 | - interfaceService.getInterface(peer.connectPoint()); | 288 | + configService.getInterface(peer.connectPoint()); |
293 | } else { | 289 | } else { |
294 | // Route to non-peer | 290 | // Route to non-peer |
295 | log.debug("Route to non-peer {}", nextHopIpAddress); | 291 | log.debug("Route to non-peer {}", nextHopIpAddress); |
296 | egressInterface = | 292 | egressInterface = |
297 | - interfaceService.getMatchingInterface(nextHopIpAddress); | 293 | + configService.getMatchingInterface(nextHopIpAddress); |
298 | if (egressInterface == null) { | 294 | if (egressInterface == null) { |
299 | log.warn("No outgoing interface found for {}", | 295 | log.warn("No outgoing interface found for {}", |
300 | nextHopIpAddress); | 296 | nextHopIpAddress); |
... | @@ -310,7 +306,7 @@ public class IntentSynchronizer implements FibListener { | ... | @@ -310,7 +306,7 @@ public class IntentSynchronizer implements FibListener { |
310 | log.debug("Generating intent for prefix {}, next hop mac {}", | 306 | log.debug("Generating intent for prefix {}, next hop mac {}", |
311 | prefix, nextHopMacAddress); | 307 | prefix, nextHopMacAddress); |
312 | 308 | ||
313 | - for (Interface intf : interfaceService.getInterfaces()) { | 309 | + for (Interface intf : configService.getInterfaces()) { |
314 | if (!intf.connectPoint().equals(egressInterface.connectPoint())) { | 310 | if (!intf.connectPoint().equals(egressInterface.connectPoint())) { |
315 | ConnectPoint srcPort = intf.connectPoint(); | 311 | ConnectPoint srcPort = intf.connectPoint(); |
316 | ingressPorts.add(srcPort); | 312 | ingressPorts.add(srcPort); | ... | ... |
... | @@ -28,11 +28,11 @@ import org.onosproject.net.flow.DefaultTrafficTreatment; | ... | @@ -28,11 +28,11 @@ import org.onosproject.net.flow.DefaultTrafficTreatment; |
28 | import org.onosproject.net.flow.TrafficSelector; | 28 | import org.onosproject.net.flow.TrafficSelector; |
29 | import org.onosproject.net.flow.TrafficTreatment; | 29 | import org.onosproject.net.flow.TrafficTreatment; |
30 | import org.onosproject.net.intent.PointToPointIntent; | 30 | import org.onosproject.net.intent.PointToPointIntent; |
31 | -import org.onosproject.sdnip.config.BgpPeer; | 31 | +import org.onosproject.routingapi.config.BgpPeer; |
32 | -import org.onosproject.sdnip.config.BgpSpeaker; | 32 | +import org.onosproject.routingapi.config.BgpSpeaker; |
33 | -import org.onosproject.sdnip.config.Interface; | 33 | +import org.onosproject.routingapi.config.Interface; |
34 | -import org.onosproject.sdnip.config.InterfaceAddress; | 34 | +import org.onosproject.routingapi.config.InterfaceAddress; |
35 | -import org.onosproject.sdnip.config.SdnIpConfigurationService; | 35 | +import org.onosproject.routingapi.config.RoutingConfigurationService; |
36 | import org.slf4j.Logger; | 36 | import org.slf4j.Logger; |
37 | import org.slf4j.LoggerFactory; | 37 | import org.slf4j.LoggerFactory; |
38 | 38 | ||
... | @@ -51,8 +51,7 @@ public class PeerConnectivityManager { | ... | @@ -51,8 +51,7 @@ public class PeerConnectivityManager { |
51 | private static final short BGP_PORT = 179; | 51 | private static final short BGP_PORT = 179; |
52 | 52 | ||
53 | private final IntentSynchronizer intentSynchronizer; | 53 | private final IntentSynchronizer intentSynchronizer; |
54 | - private final SdnIpConfigurationService configService; | 54 | + private final RoutingConfigurationService configService; |
55 | - private final InterfaceService interfaceService; | ||
56 | 55 | ||
57 | private final ApplicationId appId; | 56 | private final ApplicationId appId; |
58 | 57 | ||
... | @@ -62,23 +61,20 @@ public class PeerConnectivityManager { | ... | @@ -62,23 +61,20 @@ public class PeerConnectivityManager { |
62 | * @param appId the application ID | 61 | * @param appId the application ID |
63 | * @param intentSynchronizer the intent synchronizer | 62 | * @param intentSynchronizer the intent synchronizer |
64 | * @param configService the SDN-IP config service | 63 | * @param configService the SDN-IP config service |
65 | - * @param interfaceService the interface service | ||
66 | */ | 64 | */ |
67 | public PeerConnectivityManager(ApplicationId appId, | 65 | public PeerConnectivityManager(ApplicationId appId, |
68 | IntentSynchronizer intentSynchronizer, | 66 | IntentSynchronizer intentSynchronizer, |
69 | - SdnIpConfigurationService configService, | 67 | + RoutingConfigurationService configService) { |
70 | - InterfaceService interfaceService) { | ||
71 | this.appId = appId; | 68 | this.appId = appId; |
72 | this.intentSynchronizer = intentSynchronizer; | 69 | this.intentSynchronizer = intentSynchronizer; |
73 | this.configService = configService; | 70 | this.configService = configService; |
74 | - this.interfaceService = interfaceService; | ||
75 | } | 71 | } |
76 | 72 | ||
77 | /** | 73 | /** |
78 | * Starts the peer connectivity manager. | 74 | * Starts the peer connectivity manager. |
79 | */ | 75 | */ |
80 | public void start() { | 76 | public void start() { |
81 | - if (interfaceService.getInterfaces().isEmpty()) { | 77 | + if (configService.getInterfaces().isEmpty()) { |
82 | log.warn("No interfaces found in configuration file"); | 78 | log.warn("No interfaces found in configuration file"); |
83 | } | 79 | } |
84 | 80 | ||
... | @@ -142,7 +138,7 @@ public class PeerConnectivityManager { | ... | @@ -142,7 +138,7 @@ public class PeerConnectivityManager { |
142 | List<InterfaceAddress> interfaceAddresses = | 138 | List<InterfaceAddress> interfaceAddresses = |
143 | bgpSpeaker.interfaceAddresses(); | 139 | bgpSpeaker.interfaceAddresses(); |
144 | 140 | ||
145 | - Interface peerInterface = interfaceService.getInterface( | 141 | + Interface peerInterface = configService.getInterface( |
146 | bgpPeer.connectPoint()); | 142 | bgpPeer.connectPoint()); |
147 | 143 | ||
148 | if (peerInterface == null) { | 144 | if (peerInterface == null) { | ... | ... |
... | @@ -29,10 +29,9 @@ import org.onosproject.cluster.LeadershipService; | ... | @@ -29,10 +29,9 @@ import org.onosproject.cluster.LeadershipService; |
29 | import org.onosproject.config.NetworkConfigService; | 29 | import org.onosproject.config.NetworkConfigService; |
30 | import org.onosproject.core.ApplicationId; | 30 | import org.onosproject.core.ApplicationId; |
31 | import org.onosproject.core.CoreService; | 31 | import org.onosproject.core.CoreService; |
32 | -import org.onosproject.net.host.HostService; | ||
33 | import org.onosproject.net.intent.IntentService; | 32 | import org.onosproject.net.intent.IntentService; |
34 | import org.onosproject.routingapi.RoutingService; | 33 | import org.onosproject.routingapi.RoutingService; |
35 | -import org.onosproject.sdnip.config.SdnIpConfigurationReader; | 34 | +import org.onosproject.routingapi.config.RoutingConfigurationService; |
36 | import org.slf4j.Logger; | 35 | import org.slf4j.Logger; |
37 | 36 | ||
38 | import static org.slf4j.LoggerFactory.getLogger; | 37 | import static org.slf4j.LoggerFactory.getLogger; |
... | @@ -54,9 +53,6 @@ public class SdnIp implements SdnIpService { | ... | @@ -54,9 +53,6 @@ public class SdnIp implements SdnIpService { |
54 | protected IntentService intentService; | 53 | protected IntentService intentService; |
55 | 54 | ||
56 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 55 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
57 | - protected HostService hostService; | ||
58 | - | ||
59 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
60 | protected ClusterService clusterService; | 56 | protected ClusterService clusterService; |
61 | 57 | ||
62 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 58 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
... | @@ -65,6 +61,9 @@ public class SdnIp implements SdnIpService { | ... | @@ -65,6 +61,9 @@ public class SdnIp implements SdnIpService { |
65 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 61 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
66 | protected RoutingService routingService; | 62 | protected RoutingService routingService; |
67 | 63 | ||
64 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
65 | + protected RoutingConfigurationService config; | ||
66 | + | ||
68 | // | 67 | // |
69 | // NOTE: Unused reference - needed to guarantee that the | 68 | // NOTE: Unused reference - needed to guarantee that the |
70 | // NetworkConfigReader component is activated and the network configuration | 69 | // NetworkConfigReader component is activated and the network configuration |
... | @@ -74,7 +73,6 @@ public class SdnIp implements SdnIpService { | ... | @@ -74,7 +73,6 @@ public class SdnIp implements SdnIpService { |
74 | protected NetworkConfigService networkConfigService; | 73 | protected NetworkConfigService networkConfigService; |
75 | 74 | ||
76 | private IntentSynchronizer intentSynchronizer; | 75 | private IntentSynchronizer intentSynchronizer; |
77 | - private SdnIpConfigurationReader config; | ||
78 | private PeerConnectivityManager peerConnectivity; | 76 | private PeerConnectivityManager peerConnectivity; |
79 | 77 | ||
80 | private LeadershipEventListener leadershipEventListener = | 78 | private LeadershipEventListener leadershipEventListener = |
... | @@ -87,22 +85,16 @@ public class SdnIp implements SdnIpService { | ... | @@ -87,22 +85,16 @@ public class SdnIp implements SdnIpService { |
87 | log.info("SDN-IP started"); | 85 | log.info("SDN-IP started"); |
88 | 86 | ||
89 | appId = coreService.registerApplication(SDN_IP_APP); | 87 | appId = coreService.registerApplication(SDN_IP_APP); |
90 | - config = new SdnIpConfigurationReader(); | ||
91 | - config.readConfiguration(); | ||
92 | 88 | ||
93 | localControllerNode = clusterService.getLocalNode(); | 89 | localControllerNode = clusterService.getLocalNode(); |
94 | 90 | ||
95 | - InterfaceService interfaceService = | ||
96 | - new HostToInterfaceAdaptor(hostService); | ||
97 | - | ||
98 | intentSynchronizer = new IntentSynchronizer(appId, intentService, | 91 | intentSynchronizer = new IntentSynchronizer(appId, intentService, |
99 | - config, interfaceService); | 92 | + config); |
100 | intentSynchronizer.start(); | 93 | intentSynchronizer.start(); |
101 | 94 | ||
102 | peerConnectivity = new PeerConnectivityManager(appId, | 95 | peerConnectivity = new PeerConnectivityManager(appId, |
103 | intentSynchronizer, | 96 | intentSynchronizer, |
104 | - config, | 97 | + config); |
105 | - interfaceService); | ||
106 | peerConnectivity.start(); | 98 | peerConnectivity.start(); |
107 | 99 | ||
108 | routingService.start(intentSynchronizer); | 100 | routingService.start(intentSynchronizer); | ... | ... |
... | @@ -44,10 +44,10 @@ import org.onosproject.net.intent.MultiPointToSinglePointIntent; | ... | @@ -44,10 +44,10 @@ import org.onosproject.net.intent.MultiPointToSinglePointIntent; |
44 | import org.onosproject.routingapi.FibEntry; | 44 | import org.onosproject.routingapi.FibEntry; |
45 | import org.onosproject.routingapi.FibUpdate; | 45 | import org.onosproject.routingapi.FibUpdate; |
46 | import org.onosproject.routingapi.RouteEntry; | 46 | import org.onosproject.routingapi.RouteEntry; |
47 | +import org.onosproject.routingapi.config.BgpPeer; | ||
48 | +import org.onosproject.routingapi.config.Interface; | ||
49 | +import org.onosproject.routingapi.config.RoutingConfigurationService; | ||
47 | import org.onosproject.sdnip.IntentSynchronizer.IntentKey; | 50 | import org.onosproject.sdnip.IntentSynchronizer.IntentKey; |
48 | -import org.onosproject.sdnip.config.BgpPeer; | ||
49 | -import org.onosproject.sdnip.config.Interface; | ||
50 | -import org.onosproject.sdnip.config.SdnIpConfigurationService; | ||
51 | 51 | ||
52 | import java.util.Collections; | 52 | import java.util.Collections; |
53 | import java.util.HashMap; | 53 | import java.util.HashMap; |
... | @@ -70,8 +70,7 @@ import static org.onosproject.sdnip.TestIntentServiceHelper.eqExceptId; | ... | @@ -70,8 +70,7 @@ import static org.onosproject.sdnip.TestIntentServiceHelper.eqExceptId; |
70 | */ | 70 | */ |
71 | public class IntentSyncTest extends AbstractIntentTest { | 71 | public class IntentSyncTest extends AbstractIntentTest { |
72 | 72 | ||
73 | - private SdnIpConfigurationService sdnIpConfigService; | 73 | + private RoutingConfigurationService routingConfig; |
74 | - private InterfaceService interfaceService; | ||
75 | private IntentService intentService; | 74 | private IntentService intentService; |
76 | 75 | ||
77 | private static final ConnectPoint SW1_ETH1 = new ConnectPoint( | 76 | private static final ConnectPoint SW1_ETH1 = new ConnectPoint( |
... | @@ -107,13 +106,19 @@ public class IntentSyncTest extends AbstractIntentTest { | ... | @@ -107,13 +106,19 @@ public class IntentSyncTest extends AbstractIntentTest { |
107 | @Before | 106 | @Before |
108 | public void setUp() throws Exception { | 107 | public void setUp() throws Exception { |
109 | super.setUp(); | 108 | super.setUp(); |
110 | - setUpInterfaceService(); | ||
111 | 109 | ||
110 | + routingConfig = createMock(RoutingConfigurationService.class); | ||
111 | + | ||
112 | + // These will set expectations on routingConfig | ||
113 | + setUpInterfaceService(); | ||
112 | setUpBgpPeers(); | 114 | setUpBgpPeers(); |
115 | + | ||
116 | + replay(routingConfig); | ||
117 | + | ||
113 | intentService = createMock(IntentService.class); | 118 | intentService = createMock(IntentService.class); |
114 | 119 | ||
115 | intentSynchronizer = new IntentSynchronizer(APPID, intentService, | 120 | intentSynchronizer = new IntentSynchronizer(APPID, intentService, |
116 | - sdnIpConfigService, interfaceService); | 121 | + routingConfig); |
117 | } | 122 | } |
118 | 123 | ||
119 | /** | 124 | /** |
... | @@ -140,10 +145,7 @@ public class IntentSyncTest extends AbstractIntentTest { | ... | @@ -140,10 +145,7 @@ public class IntentSyncTest extends AbstractIntentTest { |
140 | peers.put(IpAddress.valueOf(peer1Sw4Eth1), | 145 | peers.put(IpAddress.valueOf(peer1Sw4Eth1), |
141 | new BgpPeer("00:00:00:00:00:00:00:04", 1, peer1Sw4Eth1)); | 146 | new BgpPeer("00:00:00:00:00:00:00:04", 1, peer1Sw4Eth1)); |
142 | 147 | ||
143 | - sdnIpConfigService = createMock(SdnIpConfigurationService.class); | 148 | + expect(routingConfig.getBgpPeers()).andReturn(peers).anyTimes(); |
144 | - expect(sdnIpConfigService.getBgpPeers()).andReturn(peers).anyTimes(); | ||
145 | - replay(sdnIpConfigService); | ||
146 | - | ||
147 | } | 149 | } |
148 | 150 | ||
149 | /** | 151 | /** |
... | @@ -151,8 +153,6 @@ public class IntentSyncTest extends AbstractIntentTest { | ... | @@ -151,8 +153,6 @@ public class IntentSyncTest extends AbstractIntentTest { |
151 | */ | 153 | */ |
152 | private void setUpInterfaceService() { | 154 | private void setUpInterfaceService() { |
153 | 155 | ||
154 | - interfaceService = createMock(InterfaceService.class); | ||
155 | - | ||
156 | Set<Interface> interfaces = Sets.newHashSet(); | 156 | Set<Interface> interfaces = Sets.newHashSet(); |
157 | 157 | ||
158 | Set<InterfaceIpAddress> interfaceIpAddresses1 = Sets.newHashSet(); | 158 | Set<InterfaceIpAddress> interfaceIpAddresses1 = Sets.newHashSet(); |
... | @@ -190,17 +190,16 @@ public class IntentSyncTest extends AbstractIntentTest { | ... | @@ -190,17 +190,16 @@ public class IntentSyncTest extends AbstractIntentTest { |
190 | MacAddress.valueOf("00:00:00:00:00:04"), | 190 | MacAddress.valueOf("00:00:00:00:00:04"), |
191 | VlanId.vlanId((short) 1)); | 191 | VlanId.vlanId((short) 1)); |
192 | 192 | ||
193 | - expect(interfaceService.getInterface(SW4_ETH1)).andReturn(sw4Eth1).anyTimes(); | 193 | + expect(routingConfig.getInterface(SW4_ETH1)).andReturn( |
194 | + sw4Eth1).anyTimes(); | ||
194 | interfaces.add(sw4Eth1); | 195 | interfaces.add(sw4Eth1); |
195 | 196 | ||
196 | - expect(interfaceService.getInterface(SW1_ETH1)).andReturn( | 197 | + expect(routingConfig.getInterface(SW1_ETH1)).andReturn( |
197 | sw1Eth1).anyTimes(); | 198 | sw1Eth1).anyTimes(); |
198 | - expect(interfaceService.getInterface(SW2_ETH1)).andReturn( | 199 | + expect(routingConfig.getInterface(SW2_ETH1)).andReturn( |
199 | sw2Eth1).anyTimes(); | 200 | sw2Eth1).anyTimes(); |
200 | - expect(interfaceService.getInterface(SW3_ETH1)).andReturn( | 201 | + expect(routingConfig.getInterface(SW3_ETH1)).andReturn(sw3Eth1).anyTimes(); |
201 | - sw3Eth1).anyTimes(); | 202 | + expect(routingConfig.getInterfaces()).andReturn(interfaces).anyTimes(); |
202 | - expect(interfaceService.getInterfaces()).andReturn(interfaces).anyTimes(); | ||
203 | - replay(interfaceService); | ||
204 | } | 203 | } |
205 | 204 | ||
206 | /** | 205 | /** |
... | @@ -517,7 +516,7 @@ public class IntentSyncTest extends AbstractIntentTest { | ... | @@ -517,7 +516,7 @@ public class IntentSyncTest extends AbstractIntentTest { |
517 | 516 | ||
518 | // Set up expectation | 517 | // Set up expectation |
519 | reset(intentService); | 518 | reset(intentService); |
520 | - Set<Intent> intents = new HashSet<Intent>(); | 519 | + Set<Intent> intents = new HashSet<>(); |
521 | intents.add(intent1); | 520 | intents.add(intent1); |
522 | expect(intentService.getIntentState(intent1.key())) | 521 | expect(intentService.getIntentState(intent1.key())) |
523 | .andReturn(IntentState.INSTALLED).anyTimes(); | 522 | .andReturn(IntentState.INSTALLED).anyTimes(); |
... | @@ -584,9 +583,9 @@ public class IntentSyncTest extends AbstractIntentTest { | ... | @@ -584,9 +583,9 @@ public class IntentSyncTest extends AbstractIntentTest { |
584 | DefaultTrafficTreatment.builder(); | 583 | DefaultTrafficTreatment.builder(); |
585 | treatmentBuilder.setEthDst(MacAddress.valueOf(nextHopMacAddress)); | 584 | treatmentBuilder.setEthDst(MacAddress.valueOf(nextHopMacAddress)); |
586 | 585 | ||
587 | - Set<ConnectPoint> ingressPoints = new HashSet<ConnectPoint>(); | 586 | + Set<ConnectPoint> ingressPoints = new HashSet<>(); |
588 | - for (Interface intf : interfaceService.getInterfaces()) { | 587 | + for (Interface intf : routingConfig.getInterfaces()) { |
589 | - if (!intf.equals(interfaceService.getInterface(egressPoint))) { | 588 | + if (!intf.equals(routingConfig.getInterface(egressPoint))) { |
590 | ConnectPoint srcPort = intf.connectPoint(); | 589 | ConnectPoint srcPort = intf.connectPoint(); |
591 | ingressPoints.add(srcPort); | 590 | ingressPoints.add(srcPort); |
592 | } | 591 | } | ... | ... |
... | @@ -40,11 +40,11 @@ import org.onosproject.net.intent.AbstractIntentTest; | ... | @@ -40,11 +40,11 @@ import org.onosproject.net.intent.AbstractIntentTest; |
40 | import org.onosproject.net.intent.Intent; | 40 | import org.onosproject.net.intent.Intent; |
41 | import org.onosproject.net.intent.IntentService; | 41 | import org.onosproject.net.intent.IntentService; |
42 | import org.onosproject.net.intent.PointToPointIntent; | 42 | import org.onosproject.net.intent.PointToPointIntent; |
43 | -import org.onosproject.sdnip.config.BgpPeer; | 43 | +import org.onosproject.routingapi.config.BgpPeer; |
44 | -import org.onosproject.sdnip.config.BgpSpeaker; | 44 | +import org.onosproject.routingapi.config.BgpSpeaker; |
45 | -import org.onosproject.sdnip.config.Interface; | 45 | +import org.onosproject.routingapi.config.Interface; |
46 | -import org.onosproject.sdnip.config.InterfaceAddress; | 46 | +import org.onosproject.routingapi.config.InterfaceAddress; |
47 | -import org.onosproject.sdnip.config.SdnIpConfigurationService; | 47 | +import org.onosproject.routingapi.config.RoutingConfigurationService; |
48 | 48 | ||
49 | import java.util.ArrayList; | 49 | import java.util.ArrayList; |
50 | import java.util.Collections; | 50 | import java.util.Collections; |
... | @@ -75,8 +75,7 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { | ... | @@ -75,8 +75,7 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { |
75 | 75 | ||
76 | private PeerConnectivityManager peerConnectivityManager; | 76 | private PeerConnectivityManager peerConnectivityManager; |
77 | private IntentSynchronizer intentSynchronizer; | 77 | private IntentSynchronizer intentSynchronizer; |
78 | - private SdnIpConfigurationService configInfoService; | 78 | + private RoutingConfigurationService routingConfig; |
79 | - private InterfaceService interfaceService; | ||
80 | private IntentService intentService; | 79 | private IntentService intentService; |
81 | 80 | ||
82 | private Map<String, BgpSpeaker> bgpSpeakers; | 81 | private Map<String, BgpSpeaker> bgpSpeakers; |
... | @@ -114,6 +113,9 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { | ... | @@ -114,6 +113,9 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { |
114 | @Before | 113 | @Before |
115 | public void setUp() throws Exception { | 114 | public void setUp() throws Exception { |
116 | super.setUp(); | 115 | super.setUp(); |
116 | + routingConfig = createMock(RoutingConfigurationService.class); | ||
117 | + | ||
118 | + // These will set expectations on routingConfig | ||
117 | bgpSpeakers = Collections.unmodifiableMap(setUpBgpSpeakers()); | 119 | bgpSpeakers = Collections.unmodifiableMap(setUpBgpSpeakers()); |
118 | interfaces = Collections.unmodifiableMap(setUpInterfaces()); | 120 | interfaces = Collections.unmodifiableMap(setUpInterfaces()); |
119 | peers = Collections.unmodifiableMap(setUpPeers()); | 121 | peers = Collections.unmodifiableMap(setUpPeers()); |
... | @@ -135,8 +137,7 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { | ... | @@ -135,8 +137,7 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { |
135 | "bgpSpeaker1", | 137 | "bgpSpeaker1", |
136 | "00:00:00:00:00:00:00:01", 100, | 138 | "00:00:00:00:00:00:00:01", 100, |
137 | "00:00:00:00:00:01"); | 139 | "00:00:00:00:00:01"); |
138 | - List<InterfaceAddress> interfaceAddresses1 = | 140 | + List<InterfaceAddress> interfaceAddresses1 = new LinkedList<>(); |
139 | - new LinkedList<InterfaceAddress>(); | ||
140 | interfaceAddresses1.add(new InterfaceAddress(dpid1, 1, "192.168.10.101")); | 141 | interfaceAddresses1.add(new InterfaceAddress(dpid1, 1, "192.168.10.101")); |
141 | interfaceAddresses1.add(new InterfaceAddress(dpid2, 1, "192.168.20.101")); | 142 | interfaceAddresses1.add(new InterfaceAddress(dpid2, 1, "192.168.20.101")); |
142 | bgpSpeaker1.setInterfaceAddresses(interfaceAddresses1); | 143 | bgpSpeaker1.setInterfaceAddresses(interfaceAddresses1); |
... | @@ -147,8 +148,7 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { | ... | @@ -147,8 +148,7 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { |
147 | "bgpSpeaker2", | 148 | "bgpSpeaker2", |
148 | "00:00:00:00:00:00:00:01", 100, | 149 | "00:00:00:00:00:00:00:01", 100, |
149 | "00:00:00:00:00:02"); | 150 | "00:00:00:00:00:02"); |
150 | - List<InterfaceAddress> interfaceAddresses2 = | 151 | + List<InterfaceAddress> interfaceAddresses2 = new LinkedList<>(); |
151 | - new LinkedList<InterfaceAddress>(); | ||
152 | interfaceAddresses2.add(new InterfaceAddress(dpid1, 1, "192.168.10.102")); | 152 | interfaceAddresses2.add(new InterfaceAddress(dpid1, 1, "192.168.10.102")); |
153 | interfaceAddresses2.add(new InterfaceAddress(dpid2, 1, "192.168.20.102")); | 153 | interfaceAddresses2.add(new InterfaceAddress(dpid2, 1, "192.168.20.102")); |
154 | bgpSpeaker2.setInterfaceAddresses(interfaceAddresses2); | 154 | bgpSpeaker2.setInterfaceAddresses(interfaceAddresses2); |
... | @@ -158,8 +158,7 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { | ... | @@ -158,8 +158,7 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { |
158 | "bgpSpeaker3", | 158 | "bgpSpeaker3", |
159 | "00:00:00:00:00:00:00:02", 100, | 159 | "00:00:00:00:00:00:00:02", 100, |
160 | "00:00:00:00:00:03"); | 160 | "00:00:00:00:00:03"); |
161 | - List<InterfaceAddress> interfaceAddresses3 = | 161 | + List<InterfaceAddress> interfaceAddresses3 = new LinkedList<>(); |
162 | - new LinkedList<InterfaceAddress>(); | ||
163 | interfaceAddresses3.add(new InterfaceAddress(dpid1, 1, "192.168.10.103")); | 162 | interfaceAddresses3.add(new InterfaceAddress(dpid1, 1, "192.168.10.103")); |
164 | interfaceAddresses3.add(new InterfaceAddress(dpid2, 1, "192.168.20.103")); | 163 | interfaceAddresses3.add(new InterfaceAddress(dpid2, 1, "192.168.20.103")); |
165 | bgpSpeaker3.setInterfaceAddresses(interfaceAddresses3); | 164 | bgpSpeaker3.setInterfaceAddresses(interfaceAddresses3); |
... | @@ -198,22 +197,19 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { | ... | @@ -198,22 +197,19 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { |
198 | VlanId.NONE); | 197 | VlanId.NONE); |
199 | configuredInterfaces.put(interfaceSw2Eth1, intfsw2eth1); | 198 | configuredInterfaces.put(interfaceSw2Eth1, intfsw2eth1); |
200 | 199 | ||
201 | - interfaceService = createMock(InterfaceService.class); | 200 | + expect(routingConfig.getInterface(s1Eth1)) |
202 | - | ||
203 | - expect(interfaceService.getInterface(s1Eth1)) | ||
204 | .andReturn(intfsw1eth1).anyTimes(); | 201 | .andReturn(intfsw1eth1).anyTimes(); |
205 | - expect(interfaceService.getInterface(s2Eth1)) | 202 | + expect(routingConfig.getInterface(s2Eth1)) |
206 | .andReturn(intfsw2eth1).anyTimes(); | 203 | .andReturn(intfsw2eth1).anyTimes(); |
207 | 204 | ||
208 | // Non-existent interface used during one of the tests | 205 | // Non-existent interface used during one of the tests |
209 | - expect(interfaceService.getInterface(new ConnectPoint( | 206 | + expect(routingConfig.getInterface(new ConnectPoint( |
210 | DeviceId.deviceId(SdnIp.dpidToUri("00:00:00:00:00:00:01:00")), | 207 | DeviceId.deviceId(SdnIp.dpidToUri("00:00:00:00:00:00:01:00")), |
211 | PortNumber.portNumber(1)))) | 208 | PortNumber.portNumber(1)))) |
212 | .andReturn(null).anyTimes(); | 209 | .andReturn(null).anyTimes(); |
213 | 210 | ||
214 | - expect(interfaceService.getInterfaces()).andReturn( | 211 | + expect(routingConfig.getInterfaces()).andReturn( |
215 | Sets.newHashSet(configuredInterfaces.values())).anyTimes(); | 212 | Sets.newHashSet(configuredInterfaces.values())).anyTimes(); |
216 | - replay(interfaceService); | ||
217 | 213 | ||
218 | return configuredInterfaces; | 214 | return configuredInterfaces; |
219 | } | 215 | } |
... | @@ -250,7 +246,7 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { | ... | @@ -250,7 +246,7 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { |
250 | */ | 246 | */ |
251 | private List<PointToPointIntent> setUpIntentList() { | 247 | private List<PointToPointIntent> setUpIntentList() { |
252 | 248 | ||
253 | - intentList = new ArrayList<PointToPointIntent>(); | 249 | + intentList = new ArrayList<>(); |
254 | 250 | ||
255 | setUpBgpIntents(); | 251 | setUpBgpIntents(); |
256 | setUpIcmpIntents(); | 252 | setUpIcmpIntents(); |
... | @@ -538,23 +534,21 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { | ... | @@ -538,23 +534,21 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { |
538 | */ | 534 | */ |
539 | private void initPeerConnectivity() throws TestUtilsException { | 535 | private void initPeerConnectivity() throws TestUtilsException { |
540 | 536 | ||
541 | - configInfoService = createMock(SdnIpConfigurationService.class); | 537 | + expect(routingConfig.getBgpPeers()).andReturn(peers).anyTimes(); |
542 | - expect(configInfoService.getBgpPeers()).andReturn(peers).anyTimes(); | 538 | + expect(routingConfig.getBgpSpeakers()).andReturn(bgpSpeakers).anyTimes(); |
543 | - expect(configInfoService.getBgpSpeakers()).andReturn(bgpSpeakers).anyTimes(); | 539 | + replay(routingConfig); |
544 | - replay(configInfoService); | ||
545 | 540 | ||
546 | intentService = createMock(IntentService.class); | 541 | intentService = createMock(IntentService.class); |
547 | replay(intentService); | 542 | replay(intentService); |
548 | 543 | ||
549 | intentSynchronizer = new IntentSynchronizer(APPID, intentService, | 544 | intentSynchronizer = new IntentSynchronizer(APPID, intentService, |
550 | - configInfoService, | 545 | + routingConfig); |
551 | - interfaceService); | ||
552 | intentSynchronizer.leaderChanged(true); | 546 | intentSynchronizer.leaderChanged(true); |
553 | TestUtils.setField(intentSynchronizer, "isActivatedLeader", true); | 547 | TestUtils.setField(intentSynchronizer, "isActivatedLeader", true); |
554 | 548 | ||
555 | peerConnectivityManager = | 549 | peerConnectivityManager = |
556 | new PeerConnectivityManager(APPID, intentSynchronizer, | 550 | new PeerConnectivityManager(APPID, intentSynchronizer, |
557 | - configInfoService, interfaceService); | 551 | + routingConfig); |
558 | } | 552 | } |
559 | 553 | ||
560 | /** | 554 | /** |
... | @@ -587,19 +581,17 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { | ... | @@ -587,19 +581,17 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { |
587 | */ | 581 | */ |
588 | @Test | 582 | @Test |
589 | public void testNullInterfaces() { | 583 | public void testNullInterfaces() { |
590 | - reset(interfaceService); | 584 | + reset(routingConfig); |
591 | - expect(interfaceService.getInterfaces()).andReturn( | 585 | + expect(routingConfig.getInterfaces()).andReturn( |
592 | Sets.<Interface>newHashSet()).anyTimes(); | 586 | Sets.<Interface>newHashSet()).anyTimes(); |
593 | - expect(interfaceService.getInterface(s2Eth1)) | 587 | + expect(routingConfig.getInterface(s2Eth1)) |
594 | .andReturn(null).anyTimes(); | 588 | .andReturn(null).anyTimes(); |
595 | - expect(interfaceService.getInterface(s1Eth1)) | 589 | + expect(routingConfig.getInterface(s1Eth1)) |
596 | .andReturn(null).anyTimes(); | 590 | .andReturn(null).anyTimes(); |
597 | - replay(interfaceService); | ||
598 | 591 | ||
599 | - reset(configInfoService); | 592 | + expect(routingConfig.getBgpPeers()).andReturn(peers).anyTimes(); |
600 | - expect(configInfoService.getBgpPeers()).andReturn(peers).anyTimes(); | 593 | + expect(routingConfig.getBgpSpeakers()).andReturn(bgpSpeakers).anyTimes(); |
601 | - expect(configInfoService.getBgpSpeakers()).andReturn(bgpSpeakers).anyTimes(); | 594 | + replay(routingConfig); |
602 | - replay(configInfoService); | ||
603 | 595 | ||
604 | reset(intentService); | 596 | reset(intentService); |
605 | replay(intentService); | 597 | replay(intentService); |
... | @@ -612,17 +604,13 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { | ... | @@ -612,17 +604,13 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { |
612 | */ | 604 | */ |
613 | @Test | 605 | @Test |
614 | public void testNullBgpPeers() { | 606 | public void testNullBgpPeers() { |
615 | - reset(interfaceService); | 607 | + reset(routingConfig); |
616 | - expect(interfaceService.getInterfaces()).andReturn( | 608 | + expect(routingConfig.getInterfaces()).andReturn( |
617 | Sets.newHashSet(interfaces.values())).anyTimes(); | 609 | Sets.newHashSet(interfaces.values())).anyTimes(); |
618 | - replay(interfaceService); | ||
619 | 610 | ||
620 | - reset(configInfoService); | 611 | + expect(routingConfig.getBgpPeers()).andReturn(new HashMap<>()).anyTimes(); |
621 | - expect(configInfoService.getBgpPeers()).andReturn( | 612 | + expect(routingConfig.getBgpSpeakers()).andReturn(bgpSpeakers).anyTimes(); |
622 | - new HashMap<IpAddress, BgpPeer>()).anyTimes(); | 613 | + replay(routingConfig); |
623 | - expect(configInfoService.getBgpSpeakers()).andReturn( | ||
624 | - bgpSpeakers).anyTimes(); | ||
625 | - replay(configInfoService); | ||
626 | 614 | ||
627 | reset(intentService); | 615 | reset(intentService); |
628 | replay(intentService); | 616 | replay(intentService); |
... | @@ -635,17 +623,14 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { | ... | @@ -635,17 +623,14 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { |
635 | */ | 623 | */ |
636 | @Test | 624 | @Test |
637 | public void testNullBgpSpeakers() { | 625 | public void testNullBgpSpeakers() { |
638 | - reset(interfaceService); | 626 | + reset(routingConfig); |
639 | - expect(interfaceService.getInterfaces()).andReturn( | 627 | + expect(routingConfig.getInterfaces()).andReturn( |
640 | Sets.newHashSet(interfaces.values())).anyTimes(); | 628 | Sets.newHashSet(interfaces.values())).anyTimes(); |
641 | - replay(interfaceService); | ||
642 | 629 | ||
643 | - reset(configInfoService); | 630 | + expect(routingConfig.getBgpPeers()).andReturn(peers).anyTimes(); |
644 | - expect(configInfoService.getBgpPeers()).andReturn( | 631 | + expect(routingConfig.getBgpSpeakers()).andReturn( |
645 | - peers).anyTimes(); | ||
646 | - expect(configInfoService.getBgpSpeakers()).andReturn( | ||
647 | Collections.emptyMap()).anyTimes(); | 632 | Collections.emptyMap()).anyTimes(); |
648 | - replay(configInfoService); | 633 | + replay(routingConfig); |
649 | 634 | ||
650 | reset(intentService); | 635 | reset(intentService); |
651 | replay(intentService); | 636 | replay(intentService); |
... | @@ -676,8 +661,7 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { | ... | @@ -676,8 +661,7 @@ public class PeerConnectivityManagerTest extends AbstractIntentTest { |
676 | "bgpSpeaker100", | 661 | "bgpSpeaker100", |
677 | "00:00:00:00:00:00:01:00", 100, | 662 | "00:00:00:00:00:00:01:00", 100, |
678 | "00:00:00:00:01:00"); | 663 | "00:00:00:00:01:00"); |
679 | - List<InterfaceAddress> interfaceAddresses100 = | 664 | + List<InterfaceAddress> interfaceAddresses100 = new LinkedList<>(); |
680 | - new LinkedList<InterfaceAddress>(); | ||
681 | interfaceAddresses100.add(new InterfaceAddress(dpid1, 1, "192.168.10.201")); | 665 | interfaceAddresses100.add(new InterfaceAddress(dpid1, 1, "192.168.10.201")); |
682 | interfaceAddresses100.add(new InterfaceAddress(dpid2, 1, "192.168.20.201")); | 666 | interfaceAddresses100.add(new InterfaceAddress(dpid2, 1, "192.168.20.201")); |
683 | bgpSpeaker100.setInterfaceAddresses(interfaceAddresses100); | 667 | bgpSpeaker100.setInterfaceAddresses(interfaceAddresses100); | ... | ... |
1 | /* | 1 | /* |
2 | - * Copyright 2014 Open Networking Laboratory | 2 | + * Copyright 2015 Open Networking Laboratory |
3 | * | 3 | * |
4 | * Licensed under the Apache License, Version 2.0 (the "License"); | 4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
5 | * you may not use this file except in compliance with the License. | 5 | * you may not use this file except in compliance with the License. |
... | @@ -13,29 +13,25 @@ | ... | @@ -13,29 +13,25 @@ |
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.sdnip.config; | 16 | +package org.onosproject.net; |
17 | - | ||
18 | -import java.util.Map; | ||
19 | - | ||
20 | -import org.onlab.packet.IpAddress; | ||
21 | 17 | ||
22 | /** | 18 | /** |
23 | - * Provides information about the BGP elements configured in the network. | 19 | + * Networking domain tools. |
24 | */ | 20 | */ |
25 | -public interface SdnIpConfigurationService { | 21 | +public final class NetTools { |
26 | 22 | ||
27 | - /** | 23 | + private NetTools() { |
28 | - * Gets the list of BGP speakers inside the SDN network. | 24 | + } |
29 | - * | ||
30 | - * @return the map of BGP speaker names to BGP speaker objects | ||
31 | - */ | ||
32 | - public Map<String, BgpSpeaker> getBgpSpeakers(); | ||
33 | 25 | ||
34 | /** | 26 | /** |
35 | - * Gets the list of configured BGP peers. | 27 | + * Converts DPIDs of the form xx:xx:xx:xx:xx:xx:xx to OpenFlow provider |
28 | + * device URIs. The is helpful for converting DPIDs coming from configuration | ||
29 | + * or REST to URIs that the core understands. | ||
36 | * | 30 | * |
37 | - * @return the map from peer IP address to BgpPeer object | 31 | + * @param dpid the DPID string to convert |
32 | + * @return the URI string for this device | ||
38 | */ | 33 | */ |
39 | - public Map<IpAddress, BgpPeer> getBgpPeers(); | 34 | + public static String dpidToUri(String dpid) { |
40 | - | 35 | + return "of:" + dpid.replace(":", ""); |
36 | + } | ||
41 | } | 37 | } | ... | ... |
-
Please register or login to post a comment