diff --git a/.gitignore b/.gitignore index ad6e64ae7652599743f9625971681d5529b7b232..638f2ea666d0127a1cd5c45673558ed9074cc950 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,5 @@ .DS_Store target thrift -logback.xml *.swp *.pyc diff --git a/logback.xml b/logback.xml new file mode 100644 index 0000000000000000000000000000000000000000..b85b463f507fd1b4037f809bc1ed566394a67195 --- /dev/null +++ b/logback.xml @@ -0,0 +1,14 @@ +<configuration scan="true"> + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>%level [%logger:%thread] %msg%n</pattern> + </encoder> + </appender> + <root level="INFO"> + <appender-ref ref="STDOUT" /> + </root> + <logger name="org" level="WARN"/> + <logger name="LogService" level="WARN"/> <!-- Restlet access logging --> + <logger name="net.floodlightcontroller" level="INFO"/> + <logger name="net.floodlightcontroller.logging" level="WARN"/> +</configuration> diff --git a/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetwork.java b/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetwork.java index 51cd4dd1e1da9b38d161dd93a27da809681393cf..f5dfb21d4287054ddb649f038012ea9b4e78f893 100644 --- a/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetwork.java +++ b/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetwork.java @@ -2,11 +2,7 @@ package net.floodlightcontroller.virtualnetwork; import java.util.ArrayList; import java.util.Collection; -import java.util.Comparator; import java.util.Iterator; -import java.util.SortedSet; -import java.util.TreeSet; - import org.codehaus.jackson.map.annotate.JsonSerialize; import net.floodlightcontroller.util.MACAddress; @@ -37,6 +33,15 @@ public class VirtualNetwork{ this.hosts = new ArrayList<MACAddress>(); return; } + + /** + * Sets network name + * @param gateway: IP address as String + */ + public void setName(String name){ + this.name = name; + return; + } /** * Sets network gateway IP address diff --git a/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilter.java b/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilter.java index 121108ff0c8c96f91f1fe29ce59f1c1d32f0da56..012dfb6bc1790ae61f91b7268d03913dcfaa2666 100644 --- a/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilter.java +++ b/src/main/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilter.java @@ -140,7 +140,10 @@ public class VirtualNetworkFilter } } nameToGuid.put(network, guid); - vNetsByGuid.put(guid, new VirtualNetwork(network, guid)); + if (vNetsByGuid.containsKey(guid)) + vNetsByGuid.get(guid).setName(network); //network already exists, just updating name + else + vNetsByGuid.put(guid, new VirtualNetwork(network, guid)); //new network // If they don't specify a new gateway the old one will be preserved if ((gateway != null) && (gateway != 0)) { diff --git a/src/test/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilterTest.java b/src/test/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilterTest.java index 8a66f2af27bf619f07c27c0248244c9d1324af1b..32afe4e160d9b365846523790a35c0128a22d42f 100644 --- a/src/test/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilterTest.java +++ b/src/test/java/net/floodlightcontroller/virtualnetwork/VirtualNetworkFilterTest.java @@ -214,12 +214,20 @@ public class VirtualNetworkFilterTest extends FloodlightTestCase { assertTrue(vns.gatewayToGuid.get(IPv4.toIPv4Address(gw1)).contains(guid1)); assertTrue(vns.nameToGuid.get(net1).equals(guid1)); assertTrue(vns.guidToGateway.get(guid1).equals(IPv4.toIPv4Address(gw1))); - + assertTrue(vns.vNetsByGuid.get(guid1).name.equals(net1)); + assertTrue(vns.vNetsByGuid.get(guid1).guid.equals(guid1)); + assertTrue(vns.vNetsByGuid.get(guid1).gateway.equals(gw1)); + assertTrue(vns.vNetsByGuid.get(guid1).hosts.size()==0); + // Test creating network without a gateway vns.createNetwork(guid2, net2, null); assertTrue(vns.nameToGuid.get(net2).equals(guid2)); assertTrue(vns.guidToGateway.get(guid2) == null); assertTrue(vns.gatewayToGuid.get(IPv4.toIPv4Address(gw1)).size() == 1); + assertTrue(vns.vNetsByGuid.get(guid2).name.equals(net2)); + assertTrue(vns.vNetsByGuid.get(guid2).guid.equals(guid2)); + assertTrue(vns.vNetsByGuid.get(guid2).gateway == null); + assertTrue(vns.vNetsByGuid.get(guid2).hosts.size()==0); // Test creating a network that shares the gateway with net1 vns.createNetwork(guid3, net3, IPv4.toIPv4Address(gw1)); @@ -228,11 +236,17 @@ public class VirtualNetworkFilterTest extends FloodlightTestCase { assertTrue(vns.gatewayToGuid.get(IPv4.toIPv4Address(gw1)).size() == 2); assertTrue(vns.nameToGuid.get(net3).equals(guid3)); assertTrue(vns.guidToGateway.get(guid3).equals(IPv4.toIPv4Address(gw1))); + assertTrue(vns.vNetsByGuid.get(guid3).name.equals(net3)); + assertTrue(vns.vNetsByGuid.get(guid3).guid.equals(guid3)); + assertTrue(vns.vNetsByGuid.get(guid3).gateway.equals(gw1)); + assertTrue(vns.vNetsByGuid.get(guid3).hosts.size()==0); + } @Test public void testModifyNetwork() { // Create some networks + testCreateNetwork(); // Modify net2 to add a gateway vns.createNetwork(guid2, net2, IPv4.toIPv4Address(gw1)); @@ -246,8 +260,10 @@ public class VirtualNetworkFilterTest extends FloodlightTestCase { vns.createNetwork(guid2, "newnet2", null); // Make sure the gateway is still there assertTrue(vns.gatewayToGuid.get(IPv4.toIPv4Address(gw1)).contains(guid2)); + assertTrue(vns.vNetsByGuid.get(guid2).gateway.equals(gw1)); // make sure the new name mapping was learned assertTrue(vns.nameToGuid.get("newnet2").equals(guid2)); + assertTrue(vns.vNetsByGuid.get(guid2).name.equals("newnet2")); // and the old one was deleted assertFalse(vns.nameToGuid.containsKey(net2)); } @@ -262,6 +278,7 @@ public class VirtualNetworkFilterTest extends FloodlightTestCase { assertTrue(vns.gatewayToGuid.get(IPv4.toIPv4Address(gw1)).size() == 2); assertFalse(vns.nameToGuid.containsKey(net2)); assertFalse(vns.guidToGateway.containsKey(net2)); + assertTrue(vns.vNetsByGuid.get(guid2)==null); } @Test @@ -270,25 +287,38 @@ public class VirtualNetworkFilterTest extends FloodlightTestCase { vns.addHost(mac1, guid1, hostPort1); assertTrue(vns.macToGuid.get(mac1).equals(guid1)); assertTrue(vns.portToMac.get(hostPort1).equals(mac1)); + assertTrue(vns.vNetsByGuid.get(guid1).hosts.contains(mac1)); vns.addHost(mac2, guid1, hostPort2); assertTrue(vns.macToGuid.get(mac2).equals(guid1)); assertTrue(vns.portToMac.get(hostPort2).equals(mac2)); + assertTrue(vns.vNetsByGuid.get(guid1).hosts.contains(mac2)); vns.addHost(mac3, guid3, hostPort3); vns.addHost(mac4, guid3, hostPort4); + assertTrue(vns.vNetsByGuid.get(guid3).hosts.contains(mac4)); } @Test public void testDeleteHost() { testAddHost(); + + String host1Guid = vns.macToGuid.get(mac1); vns.deleteHost(mac1, null); assertFalse(vns.macToGuid.containsKey(mac1)); assertFalse(vns.portToMac.containsKey(hostPort1)); + assertFalse(vns.vNetsByGuid.get(host1Guid).hosts.contains(mac1)); + + String host2Guid = vns.macToGuid.get(vns.portToMac.get(hostPort2)); vns.deleteHost(null, hostPort2); assertFalse(vns.macToGuid.containsKey(mac2)); assertFalse(vns.portToMac.containsKey(hostPort2)); + assertFalse(vns.vNetsByGuid.get(host2Guid).hosts.contains(mac2)); + + String host3Guid = vns.macToGuid.get(mac3); vns.deleteHost(mac3, hostPort3); assertFalse(vns.macToGuid.containsKey(mac3)); assertFalse(vns.portToMac.containsKey(hostPort3)); + assertFalse(vns.vNetsByGuid.get(host3Guid).hosts.contains(mac3)); + } @Test