alshabib

updating ports

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
......