Ray Milkey

ONOS-535 - capture and display ip address and port of switches

Change-Id: I1671113b35853e258986568cec3a385c281e1147
...@@ -142,4 +142,9 @@ public interface OpenFlowSwitch { ...@@ -142,4 +142,9 @@ public interface OpenFlowSwitch {
142 */ 142 */
143 public boolean isOptical(); 143 public boolean isOptical();
144 144
145 + /**
146 + * Identifies the channel used to communicate with the switch.
147 + */
148 + public String channelId();
149 +
145 } 150 }
......
...@@ -17,11 +17,15 @@ ...@@ -17,11 +17,15 @@
17 package org.onosproject.openflow.controller.driver; 17 package org.onosproject.openflow.controller.driver;
18 18
19 import java.io.IOException; 19 import java.io.IOException;
20 +import java.net.InetSocketAddress;
21 +import java.net.SocketAddress;
20 import java.util.Collections; 22 import java.util.Collections;
21 import java.util.List; 23 import java.util.List;
22 import java.util.concurrent.atomic.AtomicInteger; 24 import java.util.concurrent.atomic.AtomicInteger;
23 25
24 import org.jboss.netty.channel.Channel; 26 import org.jboss.netty.channel.Channel;
27 +import org.onlab.packet.Ip4Address;
28 +import org.onlab.packet.IpAddress;
25 import org.onosproject.openflow.controller.Dpid; 29 import org.onosproject.openflow.controller.Dpid;
26 import org.onosproject.openflow.controller.RoleState; 30 import org.onosproject.openflow.controller.RoleState;
27 import org.projectfloodlight.openflow.protocol.OFDescStatsReply; 31 import org.projectfloodlight.openflow.protocol.OFDescStatsReply;
...@@ -48,6 +52,7 @@ public abstract class AbstractOpenFlowSwitch implements OpenFlowSwitchDriver { ...@@ -48,6 +52,7 @@ public abstract class AbstractOpenFlowSwitch implements OpenFlowSwitchDriver {
48 protected final Logger log = LoggerFactory.getLogger(getClass()); 52 protected final Logger log = LoggerFactory.getLogger(getClass());
49 53
50 protected Channel channel; 54 protected Channel channel;
55 + protected String channelId;
51 56
52 private boolean connected; 57 private boolean connected;
53 protected boolean startDriverHandshakeCalled = false; 58 protected boolean startDriverHandshakeCalled = false;
...@@ -123,8 +128,24 @@ public abstract class AbstractOpenFlowSwitch implements OpenFlowSwitchDriver { ...@@ -123,8 +128,24 @@ public abstract class AbstractOpenFlowSwitch implements OpenFlowSwitchDriver {
123 @Override 128 @Override
124 public final void setChannel(Channel channel) { 129 public final void setChannel(Channel channel) {
125 this.channel = channel; 130 this.channel = channel;
131 + final SocketAddress address = channel.getRemoteAddress();
132 + if (address instanceof InetSocketAddress) {
133 + final InetSocketAddress inetAddress = (InetSocketAddress) address;
134 + final IpAddress ipAddress = IpAddress.valueOf(inetAddress.getAddress());
135 + if (ipAddress.version() == Ip4Address.VERSION) {
136 + channelId = ipAddress.toString() + ':' + inetAddress.getPort();
137 + } else {
138 + channelId = '[' + ipAddress.toString() + "]:" + inetAddress.getPort();
139 + }
140 + }
126 }; 141 };
127 142
143 + @Override
144 + public String channelId() {
145 + return channelId;
146 + }
147 +
148 +
128 //************************ 149 //************************
129 // Switch features related 150 // Switch features related
130 //************************ 151 //************************
......
...@@ -300,5 +300,11 @@ public class RoleManagerTest { ...@@ -300,5 +300,11 @@ public class RoleManagerTest {
300 failed = requested; 300 failed = requested;
301 } 301 }
302 302
303 + @Override
304 + public String channelId() {
305 + return "1.2.3.4:1";
306 + }
307 +
308 +
303 } 309 }
304 } 310 }
......
...@@ -186,8 +186,12 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr ...@@ -186,8 +186,12 @@ public class OpenFlowDeviceProvider extends AbstractProvider implements DevicePr
186 Device.Type deviceType = sw.isOptical() ? Device.Type.ROADM : 186 Device.Type deviceType = sw.isOptical() ? Device.Type.ROADM :
187 Device.Type.SWITCH; 187 Device.Type.SWITCH;
188 ChassisId cId = new ChassisId(dpid.value()); 188 ChassisId cId = new ChassisId(dpid.value());
189 +
189 SparseAnnotations annotations = DefaultAnnotations.builder() 190 SparseAnnotations annotations = DefaultAnnotations.builder()
190 - .set("protocol", sw.factory().getVersion().toString()).build(); 191 + .set("protocol", sw.factory().getVersion().toString())
192 + .set("channelId", sw.channelId())
193 + .build();
194 +
191 DeviceDescription description = 195 DeviceDescription description =
192 new DefaultDeviceDescription(did.uri(), deviceType, 196 new DefaultDeviceDescription(did.uri(), deviceType,
193 sw.manufacturerDescription(), 197 sw.manufacturerDescription(),
......
...@@ -383,7 +383,12 @@ public class OpenFlowDeviceProviderTest { ...@@ -383,7 +383,12 @@ public class OpenFlowDeviceProviderTest {
383 } 383 }
384 384
385 @Override 385 @Override
386 - public void returnRoleReply(RoleState requested, RoleState reponse) { 386 + public void returnRoleReply(RoleState requested, RoleState response) {
387 + }
388 +
389 + @Override
390 + public String channelId() {
391 + return "1.2.3.4:1";
387 } 392 }
388 393
389 } 394 }
......
...@@ -490,5 +490,11 @@ public class OpenFlowLinkProviderTest { ...@@ -490,5 +490,11 @@ public class OpenFlowLinkProviderTest {
490 public void returnRoleReply(RoleState requested, RoleState reponse) { 490 public void returnRoleReply(RoleState requested, RoleState reponse) {
491 } 491 }
492 492
493 + @Override
494 + public String channelId() {
495 + return "1.2.3.4:1";
496 + }
497 +
498 +
493 } 499 }
494 } 500 }
......
...@@ -423,6 +423,11 @@ public class OpenFlowPacketProviderTest { ...@@ -423,6 +423,11 @@ public class OpenFlowPacketProviderTest {
423 public void returnRoleReply(RoleState requested, RoleState reponse) { 423 public void returnRoleReply(RoleState requested, RoleState reponse) {
424 } 424 }
425 425
426 + @Override
427 + public String channelId() {
428 + return "1.2.3.4:1";
429 + }
430 +
426 } 431 }
427 432
428 } 433 }
......