Hyunsun Moon
Committed by Gerrit Code Review

CORD-223 Added ovsdb driver methods for bridge and tunnel interface creation

Change-Id: Ida80a4ef5b66cebb83b2629054c68a3546526d23
...@@ -36,6 +36,17 @@ public interface BridgeConfig extends HandlerBehaviour { ...@@ -36,6 +36,17 @@ public interface BridgeConfig extends HandlerBehaviour {
36 void addBridge(BridgeName bridgeName); 36 void addBridge(BridgeName bridgeName);
37 37
38 /** 38 /**
39 + * Adds a bridge with given bridge name and dpid, and sets the controller
40 + * of the bridge with given controllers.
41 + *
42 + * @param bridgeName bridge name
43 + * @param dpid dpid
44 + * @param controllers list of controller
45 + * @return true if succeeds, fail otherwise
46 + */
47 + boolean addBridge(BridgeName bridgeName, String dpid, List<ControllerInfo> controllers);
48 +
49 + /**
39 * Remove a bridge. 50 * Remove a bridge.
40 * 51 *
41 * @param bridgeName bridge name 52 * @param bridgeName bridge name
......
...@@ -32,6 +32,15 @@ public interface TunnelConfig extends HandlerBehaviour { ...@@ -32,6 +32,15 @@ public interface TunnelConfig extends HandlerBehaviour {
32 void createTunnel(TunnelDescription tunnel); 32 void createTunnel(TunnelDescription tunnel);
33 33
34 /** 34 /**
35 + * Creates a tunnel interface on a given bridge of this device.
36 + *
37 + * @param bridgeName bridge name
38 + * @param tunnel tunnel description
39 + * @return true if succeeds, false otherwise
40 + */
41 + boolean createTunnelInterface(BridgeName bridgeName, TunnelDescription tunnel);
42 +
43 + /**
35 * Removes a tunnel on this device. 44 * Removes a tunnel on this device.
36 * 45 *
37 * @param tunnel tunnel descriptor 46 * @param tunnel tunnel descriptor
......
...@@ -22,11 +22,13 @@ import java.util.Set; ...@@ -22,11 +22,13 @@ import java.util.Set;
22 import java.util.stream.Collectors; 22 import java.util.stream.Collectors;
23 23
24 import org.onlab.packet.IpAddress; 24 import org.onlab.packet.IpAddress;
25 +import org.onosproject.net.DefaultAnnotations;
25 import org.onosproject.net.DeviceId; 26 import org.onosproject.net.DeviceId;
26 import org.onosproject.net.PortNumber; 27 import org.onosproject.net.PortNumber;
27 import org.onosproject.net.behaviour.BridgeConfig; 28 import org.onosproject.net.behaviour.BridgeConfig;
28 import org.onosproject.net.behaviour.BridgeDescription; 29 import org.onosproject.net.behaviour.BridgeDescription;
29 import org.onosproject.net.behaviour.BridgeName; 30 import org.onosproject.net.behaviour.BridgeName;
31 +import org.onosproject.net.behaviour.ControllerInfo;
30 import org.onosproject.net.behaviour.DefaultBridgeDescription; 32 import org.onosproject.net.behaviour.DefaultBridgeDescription;
31 import org.onosproject.net.device.DefaultPortDescription; 33 import org.onosproject.net.device.DefaultPortDescription;
32 import org.onosproject.net.device.PortDescription; 34 import org.onosproject.net.device.PortDescription;
...@@ -52,6 +54,13 @@ public class OvsdbBridgeConfig extends AbstractHandlerBehaviour ...@@ -52,6 +54,13 @@ public class OvsdbBridgeConfig extends AbstractHandlerBehaviour
52 } 54 }
53 55
54 @Override 56 @Override
57 + public boolean addBridge(BridgeName bridgeName, String dpid, List<ControllerInfo> controllers) {
58 + DriverHandler handler = handler();
59 + OvsdbClientService clientService = getOvsdbClientService(handler);
60 + return clientService.createBridge(bridgeName.name(), dpid, controllers);
61 + }
62 +
63 + @Override
55 public void deleteBridge(BridgeName bridgeName) { 64 public void deleteBridge(BridgeName bridgeName) {
56 DriverHandler handler = handler(); 65 DriverHandler handler = handler();
57 OvsdbClientService clientService = getOvsdbClientService(handler); 66 OvsdbClientService clientService = getOvsdbClientService(handler);
...@@ -108,9 +117,10 @@ public class OvsdbBridgeConfig extends AbstractHandlerBehaviour ...@@ -108,9 +117,10 @@ public class OvsdbBridgeConfig extends AbstractHandlerBehaviour
108 return ports.stream() 117 return ports.stream()
109 .map(x -> new DefaultPortDescription( 118 .map(x -> new DefaultPortDescription(
110 PortNumber.portNumber(x.portNumber().value()), 119 PortNumber.portNumber(x.portNumber().value()),
111 - true 120 + true,
112 - ) 121 + DefaultAnnotations.builder()
113 - ) 122 + .set("portName", x.portName().value())
123 + .build()))
114 .collect(Collectors.toSet()); 124 .collect(Collectors.toSet());
115 } 125 }
116 126
......
...@@ -16,11 +16,14 @@ ...@@ -16,11 +16,14 @@
16 package org.onosproject.driver.ovsdb; 16 package org.onosproject.driver.ovsdb;
17 17
18 import java.util.Collection; 18 import java.util.Collection;
19 +import java.util.Map;
19 import java.util.Set; 20 import java.util.Set;
20 import java.util.stream.Collectors; 21 import java.util.stream.Collectors;
21 22
22 import org.onlab.packet.IpAddress; 23 import org.onlab.packet.IpAddress;
24 +import org.onosproject.net.DefaultAnnotations;
23 import org.onosproject.net.DeviceId; 25 import org.onosproject.net.DeviceId;
26 +import org.onosproject.net.behaviour.BridgeName;
24 import org.onosproject.net.behaviour.DefaultTunnelDescription; 27 import org.onosproject.net.behaviour.DefaultTunnelDescription;
25 import org.onosproject.net.behaviour.IpTunnelEndPoint; 28 import org.onosproject.net.behaviour.IpTunnelEndPoint;
26 import org.onosproject.net.behaviour.TunnelConfig; 29 import org.onosproject.net.behaviour.TunnelConfig;
...@@ -40,6 +43,8 @@ public class OvsdbTunnelConfig extends AbstractHandlerBehaviour ...@@ -40,6 +43,8 @@ public class OvsdbTunnelConfig extends AbstractHandlerBehaviour
40 implements TunnelConfig { 43 implements TunnelConfig {
41 44
42 private static final String DEFAULT_ADDRESS = "0.0.0.0"; 45 private static final String DEFAULT_ADDRESS = "0.0.0.0";
46 + private static final String OPTION_LOCAL_IP = "local_ip";
47 + private static final String OPTION_REMOTE_IP = "remote_ip";
43 48
44 @Override 49 @Override
45 public void createTunnel(TunnelDescription tunnel) { 50 public void createTunnel(TunnelDescription tunnel) {
...@@ -60,6 +65,22 @@ public class OvsdbTunnelConfig extends AbstractHandlerBehaviour ...@@ -60,6 +65,22 @@ public class OvsdbTunnelConfig extends AbstractHandlerBehaviour
60 } 65 }
61 66
62 @Override 67 @Override
68 + public boolean createTunnelInterface(BridgeName bridgeName, TunnelDescription tunnel) {
69 + Map<String, String> options = ((DefaultAnnotations) tunnel.annotations()).asMap();
70 + if (tunnel.src() != null) {
71 + options.put(OPTION_LOCAL_IP, tunnel.src().toString());
72 + }
73 + if (tunnel.dst() != null) {
74 + options.put(OPTION_REMOTE_IP, tunnel.dst().toString());
75 + }
76 +
77 + DriverHandler handler = handler();
78 + OvsdbClientService ovsdbClient = getOvsdbNode(handler);
79 + return ovsdbClient.createTunnel(bridgeName.name(), tunnel.tunnelName().toString(),
80 + tunnel.type().toString().toLowerCase(), options);
81 + }
82 +
83 + @Override
63 public void removeTunnel(TunnelDescription tunnel) { 84 public void removeTunnel(TunnelDescription tunnel) {
64 DriverHandler handler = handler(); 85 DriverHandler handler = handler();
65 OvsdbClientService ovsdbNode = getOvsdbNode(handler); 86 OvsdbClientService ovsdbNode = getOvsdbNode(handler);
......