Showing
1 changed file
with
24 additions
and
6 deletions
providers/of/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java
1 | package org.onlab.onos.provider.of.device.impl; | 1 | package org.onlab.onos.provider.of.device.impl; |
2 | 2 | ||
3 | +import static org.onlab.onos.net.DeviceId.deviceId; | ||
4 | +import static org.slf4j.LoggerFactory.getLogger; | ||
5 | + | ||
6 | +import java.net.URI; | ||
7 | +import java.net.URISyntaxException; | ||
8 | +import java.util.ArrayList; | ||
9 | +import java.util.List; | ||
10 | + | ||
3 | import org.apache.felix.scr.annotations.Activate; | 11 | import org.apache.felix.scr.annotations.Activate; |
4 | import org.apache.felix.scr.annotations.Component; | 12 | import org.apache.felix.scr.annotations.Component; |
5 | import org.apache.felix.scr.annotations.Deactivate; | 13 | import org.apache.felix.scr.annotations.Deactivate; |
... | @@ -7,11 +15,14 @@ import org.apache.felix.scr.annotations.Reference; | ... | @@ -7,11 +15,14 @@ import org.apache.felix.scr.annotations.Reference; |
7 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 15 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
8 | import org.onlab.onos.net.Device; | 16 | import org.onlab.onos.net.Device; |
9 | import org.onlab.onos.net.MastershipRole; | 17 | import org.onlab.onos.net.MastershipRole; |
18 | +import org.onlab.onos.net.PortNumber; | ||
10 | import org.onlab.onos.net.device.DefaultDeviceDescription; | 19 | import org.onlab.onos.net.device.DefaultDeviceDescription; |
20 | +import org.onlab.onos.net.device.DefaultPortDescription; | ||
11 | import org.onlab.onos.net.device.DeviceDescription; | 21 | import org.onlab.onos.net.device.DeviceDescription; |
12 | import org.onlab.onos.net.device.DeviceProvider; | 22 | import org.onlab.onos.net.device.DeviceProvider; |
13 | import org.onlab.onos.net.device.DeviceProviderRegistry; | 23 | import org.onlab.onos.net.device.DeviceProviderRegistry; |
14 | import org.onlab.onos.net.device.DeviceProviderService; | 24 | import org.onlab.onos.net.device.DeviceProviderService; |
25 | +import org.onlab.onos.net.device.PortDescription; | ||
15 | import org.onlab.onos.net.provider.AbstractProvider; | 26 | import org.onlab.onos.net.provider.AbstractProvider; |
16 | import org.onlab.onos.net.provider.ProviderId; | 27 | import org.onlab.onos.net.provider.ProviderId; |
17 | import org.onlab.onos.of.controller.Dpid; | 28 | import org.onlab.onos.of.controller.Dpid; |
... | @@ -19,14 +30,9 @@ import org.onlab.onos.of.controller.OpenFlowController; | ... | @@ -19,14 +30,9 @@ import org.onlab.onos.of.controller.OpenFlowController; |
19 | import org.onlab.onos.of.controller.OpenFlowSwitch; | 30 | import org.onlab.onos.of.controller.OpenFlowSwitch; |
20 | import org.onlab.onos.of.controller.OpenFlowSwitchListener; | 31 | import org.onlab.onos.of.controller.OpenFlowSwitchListener; |
21 | import org.onlab.onos.of.controller.RoleState; | 32 | import org.onlab.onos.of.controller.RoleState; |
33 | +import org.projectfloodlight.openflow.protocol.OFPortDesc; | ||
22 | import org.slf4j.Logger; | 34 | import org.slf4j.Logger; |
23 | 35 | ||
24 | -import java.net.URI; | ||
25 | -import java.net.URISyntaxException; | ||
26 | - | ||
27 | -import static org.onlab.onos.net.DeviceId.deviceId; | ||
28 | -import static org.slf4j.LoggerFactory.getLogger; | ||
29 | - | ||
30 | /** | 36 | /** |
31 | * Provider which uses an OpenFlow controller to detect network | 37 | * Provider which uses an OpenFlow controller to detect network |
32 | * infrastructure devices. | 38 | * infrastructure devices. |
... | @@ -107,6 +113,18 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr | ... | @@ -107,6 +113,18 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr |
107 | sw.softwareDescription(), | 113 | sw.softwareDescription(), |
108 | sw.softwareDescription()); | 114 | sw.softwareDescription()); |
109 | providerService.deviceConnected(deviceId(uri), description); | 115 | providerService.deviceConnected(deviceId(uri), description); |
116 | + providerService.updatePorts(deviceId(uri), buildPortDescriptions(sw.getPorts())); | ||
117 | + } | ||
118 | + | ||
119 | + private List<PortDescription> buildPortDescriptions( | ||
120 | + List<OFPortDesc> ports) { | ||
121 | + List<PortDescription> portDescs = new ArrayList<PortDescription>(); | ||
122 | + for (OFPortDesc port : ports) { | ||
123 | + PortNumber portNo = PortNumber.portNumber(port.getPortNo().getPortNumber()); | ||
124 | + | ||
125 | + portDescs.add(new DefaultPortDescription(portNo, | ||
126 | + port.getState())); | ||
127 | + } | ||
110 | } | 128 | } |
111 | 129 | ||
112 | @Override | 130 | @Override | ... | ... |
-
Please register or login to post a comment