In vnet CLI, separates virutal port creation and binding operations.
Original usage with specifiying a phyiscal port is also in supporting.
Changes.
1. vnet-create-port allow to create virtual port
without a specific virtual port
2. vnet-bind-port command is added to newly bind or to update
3. Virtual binding point is changed from Port to ConnectPoint.
Change-Id: I4c8f9a2b9b2786ba519ead3559d7f005390fee86
diff --git a/cli/src/main/java/org/onosproject/cli/net/vnet/VirtualPortBindCommand.java b/cli/src/main/java/org/onosproject/cli/net/vnet/VirtualPortBindCommand.java
new file mode 100644
index 0000000..2eb0a56
--- /dev/null
+++ b/cli/src/main/java/org/onosproject/cli/net/vnet/VirtualPortBindCommand.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2016-present Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onosproject.cli.net.vnet;
+
+import org.apache.karaf.shell.commands.Argument;
+import org.apache.karaf.shell.commands.Command;
+import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.incubator.net.virtual.NetworkId;
+import org.onosproject.incubator.net.virtual.VirtualNetworkAdminService;
+import org.onosproject.incubator.net.virtual.VirtualNetworkService;
+import org.onosproject.incubator.net.virtual.VirtualPort;
+import org.onosproject.net.ConnectPoint;
+import org.onosproject.net.DeviceId;
+import org.onosproject.net.PortNumber;
+import org.onosproject.net.device.DeviceService;
+
+import java.util.Set;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * Binds an existing virtual port with a physical port.
+ */
+@Command(scope = "onos", name = "vnet-bind-port",
+ description = "Binds an existing virtual port with a physical port.")
+public class VirtualPortBindCommand extends AbstractShellCommand {
+ @Argument(index = 0, name = "networkId", description = "Network ID",
+ required = true, multiValued = false)
+ Long networkId = null;
+
+ @Argument(index = 1, name = "deviceId", description = "Virtual Device ID",
+ required = true, multiValued = false)
+ String deviceId = null;
+
+ @Argument(index = 2, name = "portNum", description = "Virtual device port number",
+ required = true, multiValued = false)
+ Integer portNum = null;
+
+ @Argument(index = 3, name = "physDeviceId", description = "Physical Device ID",
+ required = true, multiValued = false)
+ String physDeviceId = null;
+
+ @Argument(index = 4, name = "physPortNum", description = "Physical device port number",
+ required = true, multiValued = false)
+ Integer physPortNum = null;
+
+ @Override
+ protected void execute() {
+ VirtualNetworkAdminService service = get(VirtualNetworkAdminService.class);
+ DeviceService deviceService = get(DeviceService.class);
+
+ VirtualPort vPort = getVirtualPort(PortNumber.portNumber(portNum));
+ checkNotNull(vPort, "The virtual Port does not exist");
+
+ ConnectPoint realizedBy = new ConnectPoint(DeviceId.deviceId(physDeviceId),
+ PortNumber.portNumber(physPortNum));
+ service.bindVirtualPort(NetworkId.networkId(networkId), DeviceId.deviceId(deviceId),
+ PortNumber.portNumber(portNum), realizedBy);
+ print("Virtual port is successfully bound.");
+ }
+
+ /**
+ * Returns the virtual port matching the device and port identifier.
+ *
+ * @param aPortNumber port identifier
+ * @return matching virtual port, or null.
+ */
+ private VirtualPort getVirtualPort(PortNumber aPortNumber) {
+ VirtualNetworkService service = get(VirtualNetworkService.class);
+ Set<VirtualPort> ports = service.getVirtualPorts(NetworkId.networkId(networkId),
+ DeviceId.deviceId(deviceId));
+ return ports.stream().filter(p->p.number().equals(aPortNumber))
+ .findFirst().get();
+ }
+}
diff --git a/cli/src/main/java/org/onosproject/cli/net/vnet/VirtualPortCreateCommand.java b/cli/src/main/java/org/onosproject/cli/net/vnet/VirtualPortCreateCommand.java
index 0c2757c..c49e3c5 100644
--- a/cli/src/main/java/org/onosproject/cli/net/vnet/VirtualPortCreateCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/vnet/VirtualPortCreateCommand.java
@@ -23,12 +23,8 @@
import org.onosproject.incubator.net.virtual.VirtualDevice;
import org.onosproject.incubator.net.virtual.VirtualNetworkAdminService;
import org.onosproject.incubator.net.virtual.VirtualNetworkService;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultDevice;
-import org.onosproject.net.DefaultPort;
-import org.onosproject.net.Device;
+import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DeviceId;
-import org.onosproject.net.Port;
import org.onosproject.net.PortNumber;
import org.onosproject.net.device.DeviceService;
@@ -56,24 +52,29 @@
Integer portNum = null;
@Argument(index = 3, name = "physDeviceId", description = "Physical Device ID",
- required = true, multiValued = false)
+ required = false, multiValued = false)
String physDeviceId = null;
@Argument(index = 4, name = "physPortNum", description = "Physical device port number",
- required = true, multiValued = false)
+ required = false, multiValued = false)
Integer physPortNum = null;
@Override
protected void execute() {
VirtualNetworkAdminService service = get(VirtualNetworkAdminService.class);
DeviceService deviceService = get(DeviceService.class);
+
VirtualDevice virtualDevice = getVirtualDevice(DeviceId.deviceId(deviceId));
checkNotNull(virtualDevice, "The virtual device does not exist.");
- DefaultAnnotations annotations = DefaultAnnotations.builder().build();
- Device physDevice = new DefaultDevice(null, DeviceId.deviceId(physDeviceId),
- null, null, null, null, null, null, annotations);
- Port realizedBy = new DefaultPort(physDevice, PortNumber.portNumber(physPortNum), true);
+ ConnectPoint realizedBy = null;
+ if (physDeviceId != null && physPortNum != null) {
+ checkNotNull(physPortNum, "The physical port does not specified.");
+ realizedBy = new ConnectPoint(DeviceId.deviceId(physDeviceId),
+ PortNumber.portNumber(physPortNum));
+ checkNotNull(realizedBy, "The physical port does not exist.");
+ }
+
service.createVirtualPort(NetworkId.networkId(networkId), DeviceId.deviceId(deviceId),
PortNumber.portNumber(portNum), realizedBy);
print("Virtual port successfully created.");
diff --git a/cli/src/main/java/org/onosproject/cli/net/vnet/VirtualPortListCommand.java b/cli/src/main/java/org/onosproject/cli/net/vnet/VirtualPortListCommand.java
index 0f1c99e..a35d22a 100644
--- a/cli/src/main/java/org/onosproject/cli/net/vnet/VirtualPortListCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/vnet/VirtualPortListCommand.java
@@ -62,7 +62,8 @@
VirtualNetworkService service = get(VirtualNetworkService.class);
List<VirtualPort> virtualPorts = new ArrayList<>();
- virtualPorts.addAll(service.getVirtualPorts(NetworkId.networkId(networkId), DeviceId.deviceId(deviceId)));
+ virtualPorts.addAll(service.getVirtualPorts(NetworkId.networkId(networkId),
+ DeviceId.deviceId(deviceId)));
Collections.sort(virtualPorts, Comparators.VIRTUAL_PORT_COMPARATOR);
return virtualPorts;
}
@@ -73,7 +74,12 @@
* @param virtualPort virtual port
*/
private void printVirtualPort(VirtualPort virtualPort) {
- print(FMT_VIRTUAL_PORT, virtualPort.number(),
- virtualPort.realizedBy().element().id(), virtualPort.realizedBy().number());
+ if (virtualPort.realizedBy() == null) {
+ print(FMT_VIRTUAL_PORT, virtualPort.number(), "None", "None");
+ } else {
+ print(FMT_VIRTUAL_PORT, virtualPort.number(),
+ virtualPort.realizedBy().deviceId(),
+ virtualPort.realizedBy().port());
+ }
}
}
diff --git a/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
index 4da1d8b..69c52fe 100644
--- a/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
+++ b/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
@@ -694,6 +694,9 @@
<action class="org.onosproject.cli.net.vnet.VirtualPortCreateCommand"/>
</command>
<command>
+ <action class="org.onosproject.cli.net.vnet.VirtualPortBindCommand"/>
+ </command>
+ <command>
<action class="org.onosproject.cli.net.vnet.VirtualPortRemoveCommand"/>
</command>
<command>
diff --git a/core/common/src/main/java/org/onosproject/codec/impl/VirtualPortCodec.java b/core/common/src/main/java/org/onosproject/codec/impl/VirtualPortCodec.java
index d5f170c..77a1359 100644
--- a/core/common/src/main/java/org/onosproject/codec/impl/VirtualPortCodec.java
+++ b/core/common/src/main/java/org/onosproject/codec/impl/VirtualPortCodec.java
@@ -23,12 +23,8 @@
import org.onosproject.incubator.net.virtual.VirtualDevice;
import org.onosproject.incubator.net.virtual.VirtualNetworkService;
import org.onosproject.incubator.net.virtual.VirtualPort;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultDevice;
-import org.onosproject.net.DefaultPort;
-import org.onosproject.net.Device;
+import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DeviceId;
-import org.onosproject.net.Port;
import org.onosproject.net.PortNumber;
import java.util.Set;
@@ -60,8 +56,8 @@
.put(NETWORK_ID, vPort.networkId().toString())
.put(DEVICE_ID, vPort.element().id().toString())
.put(PORT_NUM, vPort.number().toString())
- .put(PHYS_DEVICE_ID, vPort.realizedBy().element().id().toString())
- .put(PHYS_PORT_NUM, vPort.realizedBy().number().toString());
+ .put(PHYS_DEVICE_ID, vPort.realizedBy().deviceId().toString())
+ .put(PHYS_PORT_NUM, vPort.realizedBy().port().toString());
return result;
}
@@ -86,10 +82,7 @@
DeviceId physDId = DeviceId.deviceId(extractMember(PHYS_DEVICE_ID, json));
PortNumber physPortNum = PortNumber.portNumber(extractMember(PHYS_PORT_NUM, json));
- DefaultAnnotations annotations = DefaultAnnotations.builder().build();
- Device physDevice = new DefaultDevice(null, physDId,
- null, null, null, null, null, null, annotations);
- Port realizedBy = new DefaultPort(physDevice, physPortNum, true);
+ ConnectPoint realizedBy = new ConnectPoint(physDId, physPortNum);
return new DefaultVirtualPort(nId, vDev, portNum, realizedBy);
}
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/VirtualNetworkIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/VirtualNetworkIntentCompiler.java
index 8c04c6a..5eac0d4 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/VirtualNetworkIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/VirtualNetworkIntentCompiler.java
@@ -202,7 +202,7 @@
for (VirtualPort port : ports) {
if (port.element().id().equals(virtualCp.elementId()) &&
port.number().equals(virtualCp.port())) {
- return new ConnectPoint(port.realizedBy().element().id(), port.realizedBy().number());
+ return new ConnectPoint(port.realizedBy().deviceId(), port.realizedBy().port());
}
}
return null;
diff --git a/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/VirtualNetworkIntentCompilerTest.java b/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/VirtualNetworkIntentCompilerTest.java
index 8b3387a..8ac8a92 100644
--- a/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/VirtualNetworkIntentCompilerTest.java
+++ b/core/net/src/test/java/org/onosproject/net/intent/impl/compiler/VirtualNetworkIntentCompilerTest.java
@@ -153,28 +153,28 @@
manager.createVirtualDevice(virtualNetwork.id(), DID4);
Port port1 = new DefaultPort(virtualDevice1, PortNumber.portNumber(1), true);
- manager.createVirtualPort(virtualNetwork.id(), virtualDevice1.id(), port1.number(), port1);
cp1 = new ConnectPoint(virtualDevice1.id(), port1.number());
+ manager.createVirtualPort(virtualNetwork.id(), virtualDevice1.id(), port1.number(), cp1);
Port port2 = new DefaultPort(virtualDevice1, PortNumber.portNumber(2), true);
- manager.createVirtualPort(virtualNetwork.id(), virtualDevice1.id(), port2.number(), port2);
cp2 = new ConnectPoint(virtualDevice1.id(), port2.number());
+ manager.createVirtualPort(virtualNetwork.id(), virtualDevice1.id(), port2.number(), cp2);
Port port3 = new DefaultPort(virtualDevice2, PortNumber.portNumber(3), true);
- manager.createVirtualPort(virtualNetwork.id(), virtualDevice2.id(), port3.number(), port3);
cp3 = new ConnectPoint(virtualDevice2.id(), port3.number());
+ manager.createVirtualPort(virtualNetwork.id(), virtualDevice2.id(), port3.number(), cp3);
Port port4 = new DefaultPort(virtualDevice2, PortNumber.portNumber(4), true);
- manager.createVirtualPort(virtualNetwork.id(), virtualDevice2.id(), port4.number(), port4);
cp4 = new ConnectPoint(virtualDevice2.id(), port4.number());
+ manager.createVirtualPort(virtualNetwork.id(), virtualDevice2.id(), port4.number(), cp4);
Port port5 = new DefaultPort(virtualDevice3, PortNumber.portNumber(5), true);
- manager.createVirtualPort(virtualNetwork.id(), virtualDevice3.id(), port5.number(), port5);
cp5 = new ConnectPoint(virtualDevice3.id(), port5.number());
+ manager.createVirtualPort(virtualNetwork.id(), virtualDevice3.id(), port5.number(), cp5);
Port port6 = new DefaultPort(virtualDevice3, PortNumber.portNumber(6), true);
- manager.createVirtualPort(virtualNetwork.id(), virtualDevice3.id(), port6.number(), port6);
cp6 = new ConnectPoint(virtualDevice3.id(), port6.number());
+ manager.createVirtualPort(virtualNetwork.id(), virtualDevice3.id(), port6.number(), cp6);
link1 = manager.createVirtualLink(virtualNetwork.id(), cp1, cp3);
virtualNetworkManagerStore.updateLink(link1, link1.tunnelId(), Link.State.ACTIVE);
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/DefaultVirtualPort.java b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/DefaultVirtualPort.java
index 4b72772..8c4488e 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/DefaultVirtualPort.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/DefaultVirtualPort.java
@@ -16,11 +16,11 @@
package org.onosproject.incubator.net.virtual;
+import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DefaultAnnotations;
import org.onosproject.net.DefaultPort;
import org.onosproject.net.Device;
import org.onosproject.net.Element;
-import org.onosproject.net.Port;
import org.onosproject.net.PortNumber;
import java.util.Objects;
@@ -32,11 +32,11 @@
*/
public final class DefaultVirtualPort extends DefaultPort implements VirtualPort {
-
private final NetworkId networkId;
- private final Port realizedBy;
+ private final ConnectPoint realizedBy;
- public DefaultVirtualPort(NetworkId networkId, Device device, PortNumber portNumber, Port realizedBy) {
+ public DefaultVirtualPort(NetworkId networkId, Device device,
+ PortNumber portNumber, ConnectPoint realizedBy) {
super((Element) device, portNumber, false, DefaultAnnotations.builder().build());
this.networkId = networkId;
this.realizedBy = realizedBy;
@@ -47,7 +47,7 @@
}
@Override
- public Port realizedBy() {
+ public ConnectPoint realizedBy() {
return realizedBy;
}
@@ -65,6 +65,7 @@
DefaultVirtualPort that = (DefaultVirtualPort) obj;
return super.equals(that) &&
Objects.equals(this.networkId, that.networkId) &&
+ Objects.equals(this.number(), that.number()) &&
Objects.equals(this.realizedBy, that.realizedBy);
}
return false;
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkAdminService.java b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkAdminService.java
index 04d1911..38e745f 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkAdminService.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkAdminService.java
@@ -23,7 +23,6 @@
import org.onosproject.net.DeviceId;
import org.onosproject.net.HostId;
import org.onosproject.net.HostLocation;
-import org.onosproject.net.Port;
import org.onosproject.net.PortNumber;
import java.util.Set;
@@ -154,7 +153,19 @@
* @throws org.onlab.util.ItemNotFoundException if no such network or device is found
*/
VirtualPort createVirtualPort(NetworkId networkId, DeviceId deviceId,
- PortNumber portNumber, Port realizedBy);
+ PortNumber portNumber, ConnectPoint realizedBy);
+
+ /**
+ * Binds an existing virtual port on the specified device.
+ *
+ * @param networkId network identifier
+ * @param deviceId virtual device identifier
+ * @param portNumber virtual port number
+ * @param realizedBy underlying physical port using which this virtual port is realized
+ * @throws org.onlab.util.ItemNotFoundException if no such network or device is found
+ */
+ void bindVirtualPort(NetworkId networkId, DeviceId deviceId,
+ PortNumber portNumber, ConnectPoint realizedBy);
/**
* Removes the specified virtual port.
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkStore.java b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkStore.java
index 5deff3c..516d901 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkStore.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualNetworkStore.java
@@ -24,7 +24,6 @@
import org.onosproject.net.HostId;
import org.onosproject.net.HostLocation;
import org.onosproject.net.Link;
-import org.onosproject.net.Port;
import org.onosproject.net.PortNumber;
import org.onosproject.net.intent.Intent;
import org.onosproject.net.intent.IntentData;
@@ -156,7 +155,18 @@
* @return the virtual port
*/
VirtualPort addPort(NetworkId networkId, DeviceId deviceId,
- PortNumber portNumber, Port realizedBy);
+ PortNumber portNumber, ConnectPoint realizedBy);
+
+ /**
+ * Binds an existing virtual port to the network.
+ *
+ * @param networkId network identifier
+ * @param deviceId device identifier
+ * @param portNumber port number
+ * @param realizedBy underlying port which realizes the virtual port
+ */
+ void bindPort(NetworkId networkId, DeviceId deviceId,
+ PortNumber portNumber, ConnectPoint realizedBy);
/**
* Removes the specified port from the given device and network.
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualPort.java b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualPort.java
index c83f62b..461c9ce 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualPort.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/virtual/VirtualPort.java
@@ -16,6 +16,7 @@
package org.onosproject.incubator.net.virtual;
import com.google.common.annotations.Beta;
+import org.onosproject.net.ConnectPoint;
import org.onosproject.net.Port;
/**
@@ -29,6 +30,5 @@
*
* @return underlying port which realizes this virtual port
*/
- Port realizedBy();
-
+ ConnectPoint realizedBy();
}
diff --git a/incubator/api/src/test/java/org/onosproject/incubator/net/virtual/DefaultVirtualPortTest.java b/incubator/api/src/test/java/org/onosproject/incubator/net/virtual/DefaultVirtualPortTest.java
index 6b83e3a..9bc521d 100644
--- a/incubator/api/src/test/java/org/onosproject/incubator/net/virtual/DefaultVirtualPortTest.java
+++ b/incubator/api/src/test/java/org/onosproject/incubator/net/virtual/DefaultVirtualPortTest.java
@@ -18,8 +18,7 @@
import com.google.common.testing.EqualsTester;
import org.junit.Test;
-import org.onosproject.net.DefaultPort;
-import org.onosproject.net.Port;
+import org.onosproject.net.ConnectPoint;
import org.onosproject.net.PortNumber;
import org.onosproject.net.TestDeviceParams;
@@ -29,7 +28,6 @@
* Test of the default virtual port model entity.
*/
public class DefaultVirtualPortTest extends TestDeviceParams {
-
/**
* Checks that the DefaultVirtualPort class is immutable.
*/
@@ -45,18 +43,22 @@
DefaultVirtualDevice device2 =
new DefaultVirtualDevice(NetworkId.networkId(0), DID2);
- Port portA = new DefaultPort(device1, PortNumber.portNumber(1), true);
- Port portB = new DefaultPort(device1, PortNumber.portNumber(2), true);
- Port portC = new DefaultPort(device2, PortNumber.portNumber(2), true);
+ ConnectPoint cpA = new ConnectPoint(device1.id(), PortNumber.portNumber(1));
+ ConnectPoint cpB = new ConnectPoint(device1.id(), PortNumber.portNumber(2));
+ ConnectPoint cpC = new ConnectPoint(device2.id(), PortNumber.portNumber(2));
DefaultVirtualPort port1 =
- new DefaultVirtualPort(NetworkId.networkId(0), device1, PortNumber.portNumber(1), portA);
+ new DefaultVirtualPort(NetworkId.networkId(0), device1,
+ PortNumber.portNumber(1), cpA);
DefaultVirtualPort port2 =
- new DefaultVirtualPort(NetworkId.networkId(0), device1, PortNumber.portNumber(1), portA);
+ new DefaultVirtualPort(NetworkId.networkId(0), device1,
+ PortNumber.portNumber(1), cpA);
DefaultVirtualPort port3 =
- new DefaultVirtualPort(NetworkId.networkId(0), device1, PortNumber.portNumber(2), portB);
+ new DefaultVirtualPort(NetworkId.networkId(0), device1,
+ PortNumber.portNumber(2), cpB);
DefaultVirtualPort port4 =
- new DefaultVirtualPort(NetworkId.networkId(1), device2, PortNumber.portNumber(2), portC);
+ new DefaultVirtualPort(NetworkId.networkId(1), device2,
+ PortNumber.portNumber(2), cpC);
new EqualsTester().addEqualityGroup(port1, port2).addEqualityGroup(port3)
diff --git a/incubator/net/src/main/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkManager.java b/incubator/net/src/main/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkManager.java
index 56c4fd5..b75c2d5 100644
--- a/incubator/net/src/main/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkManager.java
+++ b/incubator/net/src/main/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkManager.java
@@ -50,7 +50,6 @@
import org.onosproject.net.HostId;
import org.onosproject.net.HostLocation;
import org.onosproject.net.Link;
-import org.onosproject.net.Port;
import org.onosproject.net.PortNumber;
import org.onosproject.net.device.DeviceService;
import org.onosproject.net.host.HostService;
@@ -225,7 +224,8 @@
Set<VirtualPort> ports = store.getPorts(networkId, virtualCp.deviceId());
for (VirtualPort port : ports) {
if (port.number().equals(virtualCp.port())) {
- return new ConnectPoint(port.realizedBy().element().id(), port.realizedBy().number());
+ return new ConnectPoint(port.realizedBy().deviceId(),
+ port.realizedBy().port());
}
}
return null;
@@ -242,8 +242,8 @@
ConnectPoint physicalCp) {
Set<VirtualPort> ports = store.getPorts(networkId, null);
for (VirtualPort port : ports) {
- if (port.realizedBy().element().id().equals(physicalCp.elementId()) &&
- port.realizedBy().number().equals(physicalCp.port())) {
+ if (port.realizedBy().deviceId().equals(physicalCp.elementId()) &&
+ port.realizedBy().port().equals(physicalCp.port())) {
return new ConnectPoint(port.element().id(), port.number());
}
}
@@ -260,7 +260,7 @@
@Override
public VirtualPort createVirtualPort(NetworkId networkId, DeviceId deviceId,
- PortNumber portNumber, Port realizedBy) {
+ PortNumber portNumber, ConnectPoint realizedBy) {
checkNotNull(networkId, NETWORK_NULL);
checkNotNull(deviceId, DEVICE_NULL);
checkNotNull(portNumber, "Port description cannot be null");
@@ -268,6 +268,17 @@
}
@Override
+ public void bindVirtualPort(NetworkId networkId, DeviceId deviceId,
+ PortNumber portNumber, ConnectPoint realizedBy) {
+ checkNotNull(networkId, NETWORK_NULL);
+ checkNotNull(deviceId, DEVICE_NULL);
+ checkNotNull(portNumber, "Port description cannot be null");
+ checkNotNull(realizedBy, "Physical port description cannot be null");
+
+ store.bindPort(networkId, deviceId, portNumber, realizedBy);
+ }
+
+ @Override
public void removeVirtualPort(NetworkId networkId, DeviceId deviceId, PortNumber portNumber) {
checkNotNull(networkId, NETWORK_NULL);
checkNotNull(deviceId, DEVICE_NULL);
diff --git a/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkDeviceServiceTest.java b/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkDeviceServiceTest.java
index d44d038..b682d05 100644
--- a/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkDeviceServiceTest.java
+++ b/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkDeviceServiceTest.java
@@ -30,11 +30,10 @@
import org.onosproject.incubator.net.virtual.VirtualNetwork;
import org.onosproject.incubator.net.virtual.VirtualPort;
import org.onosproject.incubator.store.virtual.impl.DistributedVirtualNetworkStore;
-import org.onosproject.net.DefaultPort;
+import org.onosproject.net.ConnectPoint;
import org.onosproject.net.Device;
import org.onosproject.net.MastershipRole;
import org.onosproject.net.NetTestTools;
-import org.onosproject.net.Port;
import org.onosproject.net.PortNumber;
import org.onosproject.net.TestDeviceParams;
import org.onosproject.net.device.DeviceService;
@@ -232,10 +231,10 @@
DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
- Port port = new DefaultPort(virtualDevice, PortNumber.portNumber(1), true);
+ ConnectPoint cp = new ConnectPoint(virtualDevice.id(), PortNumber.portNumber(1));
- manager.createVirtualPort(virtualNetwork.id(), virtualDevice.id(), PortNumber.portNumber(1), port);
- manager.createVirtualPort(virtualNetwork.id(), virtualDevice.id(), PortNumber.portNumber(2), port);
+ manager.createVirtualPort(virtualNetwork.id(), virtualDevice.id(), PortNumber.portNumber(1), cp);
+ manager.createVirtualPort(virtualNetwork.id(), virtualDevice.id(), PortNumber.portNumber(2), cp);
// test the getPorts() method
assertEquals("The port set size did not match.", 2,
@@ -256,11 +255,11 @@
DeviceService deviceService = manager.get(virtualNetwork.id(), DeviceService.class);
- Port port = new DefaultPort(virtualDevice, PortNumber.portNumber(1), true);
+ ConnectPoint cp = new ConnectPoint(virtualDevice.id(), PortNumber.portNumber(1));
VirtualPort virtualPort1 = manager.createVirtualPort(virtualNetwork.id(), virtualDevice.id(),
- PortNumber.portNumber(1), port);
- manager.createVirtualPort(virtualNetwork.id(), virtualDevice.id(), PortNumber.portNumber(2), port);
+ PortNumber.portNumber(1), cp);
+ manager.createVirtualPort(virtualNetwork.id(), virtualDevice.id(), PortNumber.portNumber(2), cp);
// test the getPort() method
assertEquals("The port did not match as expected.", virtualPort1,
diff --git a/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkIntentServiceTest.java b/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkIntentServiceTest.java
index 9f5eb61..1e7625d 100644
--- a/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkIntentServiceTest.java
+++ b/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkIntentServiceTest.java
@@ -180,28 +180,28 @@
manager.createVirtualDevice(virtualNetwork.id(), DID4);
Port port1 = new DefaultPort(virtualDevice1, PortNumber.portNumber(1), true);
- manager.createVirtualPort(virtualNetwork.id(), virtualDevice1.id(), port1.number(), port1);
cp1 = new ConnectPoint(virtualDevice1.id(), port1.number());
+ manager.createVirtualPort(virtualNetwork.id(), virtualDevice1.id(), port1.number(), cp1);
Port port2 = new DefaultPort(virtualDevice1, PortNumber.portNumber(2), true);
- manager.createVirtualPort(virtualNetwork.id(), virtualDevice1.id(), port2.number(), port2);
cp2 = new ConnectPoint(virtualDevice1.id(), port2.number());
+ manager.createVirtualPort(virtualNetwork.id(), virtualDevice1.id(), port2.number(), cp2);
Port port3 = new DefaultPort(virtualDevice2, PortNumber.portNumber(3), true);
- manager.createVirtualPort(virtualNetwork.id(), virtualDevice2.id(), port3.number(), port3);
cp3 = new ConnectPoint(virtualDevice2.id(), port3.number());
+ manager.createVirtualPort(virtualNetwork.id(), virtualDevice2.id(), port3.number(), cp3);
Port port4 = new DefaultPort(virtualDevice2, PortNumber.portNumber(4), true);
- manager.createVirtualPort(virtualNetwork.id(), virtualDevice2.id(), port4.number(), port4);
cp4 = new ConnectPoint(virtualDevice2.id(), port4.number());
+ manager.createVirtualPort(virtualNetwork.id(), virtualDevice2.id(), port4.number(), cp4);
Port port5 = new DefaultPort(virtualDevice3, PortNumber.portNumber(5), true);
- manager.createVirtualPort(virtualNetwork.id(), virtualDevice3.id(), port5.number(), port5);
cp5 = new ConnectPoint(virtualDevice3.id(), port5.number());
+ manager.createVirtualPort(virtualNetwork.id(), virtualDevice3.id(), port5.number(), cp5);
Port port6 = new DefaultPort(virtualDevice3, PortNumber.portNumber(6), true);
- manager.createVirtualPort(virtualNetwork.id(), virtualDevice3.id(), port6.number(), port6);
cp6 = new ConnectPoint(virtualDevice3.id(), port6.number());
+ manager.createVirtualPort(virtualNetwork.id(), virtualDevice3.id(), port6.number(), cp6);
link1 = manager.createVirtualLink(virtualNetwork.id(), cp1, cp3);
virtualNetworkManagerStore.updateLink(link1, link1.tunnelId(), Link.State.ACTIVE);
diff --git a/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkLinkServiceTest.java b/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkLinkServiceTest.java
index 82c7044..53b21d7 100644
--- a/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkLinkServiceTest.java
+++ b/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkLinkServiceTest.java
@@ -31,7 +31,6 @@
import org.onosproject.incubator.net.virtual.VirtualNetwork;
import org.onosproject.incubator.store.virtual.impl.DistributedVirtualNetworkStore;
import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultPort;
import org.onosproject.net.Link;
import org.onosproject.net.NetTestTools;
import org.onosproject.net.PortNumber;
@@ -99,11 +98,11 @@
manager.createVirtualDevice(virtualNetwork.id(), DID2);
ConnectPoint src = new ConnectPoint(srcVirtualDevice.id(), PortNumber.portNumber(1));
manager.createVirtualPort(virtualNetwork.id(), src.deviceId(), src.port(),
- new DefaultPort(srcVirtualDevice, src.port(), true));
+ new ConnectPoint(srcVirtualDevice.id(), src.port()));
ConnectPoint dst = new ConnectPoint(dstVirtualDevice.id(), PortNumber.portNumber(2));
manager.createVirtualPort(virtualNetwork.id(), dst.deviceId(), dst.port(),
- new DefaultPort(dstVirtualDevice, dst.port(), true));
+ new ConnectPoint(dstVirtualDevice.id(), dst.port()));
VirtualLink link1 = manager.createVirtualLink(virtualNetwork.id(), src, dst);
VirtualLink link2 = manager.createVirtualLink(virtualNetwork.id(), dst, src);
diff --git a/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkManagerTest.java b/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkManagerTest.java
index 644ba0c..81fbdf5 100644
--- a/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkManagerTest.java
+++ b/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkManagerTest.java
@@ -42,11 +42,9 @@
import org.onosproject.incubator.net.virtual.VirtualPort;
import org.onosproject.incubator.store.virtual.impl.DistributedVirtualNetworkStore;
import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultPort;
import org.onosproject.net.DeviceId;
import org.onosproject.net.Link;
import org.onosproject.net.NetTestTools;
-import org.onosproject.net.Port;
import org.onosproject.net.PortNumber;
import org.onosproject.net.TestDeviceParams;
import org.onosproject.net.intent.FakeIntentManager;
@@ -321,11 +319,11 @@
manager.createVirtualDevice(virtualNetwork1.id(), DID2);
ConnectPoint src = new ConnectPoint(srcVirtualDevice.id(), PortNumber.portNumber(1));
manager.createVirtualPort(virtualNetwork1.id(), src.deviceId(), src.port(),
- new DefaultPort(srcVirtualDevice, src.port(), true));
+ new ConnectPoint(srcVirtualDevice.id(), src.port()));
ConnectPoint dst = new ConnectPoint(dstVirtualDevice.id(), PortNumber.portNumber(2));
manager.createVirtualPort(virtualNetwork1.id(), dst.deviceId(), dst.port(),
- new DefaultPort(dstVirtualDevice, dst.port(), true));
+ new ConnectPoint(dstVirtualDevice.id(), dst.port()));
manager.createVirtualLink(virtualNetwork1.id(), src, dst);
manager.createVirtualLink(virtualNetwork1.id(), dst, src);
@@ -362,11 +360,11 @@
manager.createVirtualDevice(virtualNetwork1.id(), DID2);
ConnectPoint src = new ConnectPoint(srcVirtualDevice.id(), PortNumber.portNumber(1));
manager.createVirtualPort(virtualNetwork1.id(), src.deviceId(), src.port(),
- new DefaultPort(srcVirtualDevice, src.port(), true));
+ new ConnectPoint(srcVirtualDevice.id(), src.port()));
ConnectPoint dst = new ConnectPoint(dstVirtualDevice.id(), PortNumber.portNumber(2));
manager.createVirtualPort(virtualNetwork1.id(), dst.deviceId(), dst.port(),
- new DefaultPort(dstVirtualDevice, dst.port(), true));
+ new ConnectPoint(dstVirtualDevice.id(), dst.port()));
manager.createVirtualLink(virtualNetwork1.id(), src, dst);
manager.createVirtualLink(virtualNetwork1.id(), src, dst);
@@ -381,16 +379,15 @@
VirtualNetwork virtualNetwork1 = manager.createVirtualNetwork(TenantId.tenantId(tenantIdValue1));
VirtualDevice virtualDevice =
manager.createVirtualDevice(virtualNetwork1.id(), DID1);
- Port port = new DefaultPort(virtualDevice, PortNumber.portNumber(1), true);
+ ConnectPoint cp = new ConnectPoint(virtualDevice.id(), PortNumber.portNumber(1));
- manager.createVirtualPort(virtualNetwork1.id(), virtualDevice.id(), PortNumber.portNumber(1), port);
- manager.createVirtualPort(virtualNetwork1.id(), virtualDevice.id(), PortNumber.portNumber(2), port);
+ manager.createVirtualPort(virtualNetwork1.id(), virtualDevice.id(), PortNumber.portNumber(1), cp);
+ manager.createVirtualPort(virtualNetwork1.id(), virtualDevice.id(), PortNumber.portNumber(2), cp);
Set<VirtualPort> virtualPorts = manager.getVirtualPorts(virtualNetwork1.id(), virtualDevice.id());
assertNotNull("The virtual port set should not be null", virtualPorts);
assertEquals("The virtual port set size did not match.", 2, virtualPorts.size());
-
for (VirtualPort virtualPort : virtualPorts) {
manager.removeVirtualPort(virtualNetwork1.id(),
(DeviceId) virtualPort.element().id(), virtualPort.number());
@@ -403,7 +400,7 @@
// Add/remove the virtual port again.
VirtualPort virtualPort = manager.createVirtualPort(virtualNetwork1.id(), virtualDevice.id(),
- PortNumber.portNumber(1), port);
+ PortNumber.portNumber(1), cp);
manager.removeVirtualPort(virtualNetwork1.id(), (DeviceId) virtualPort.element().id(), virtualPort.number());
virtualPorts = manager.getVirtualPorts(virtualNetwork1.id(), virtualDevice.id());
assertTrue("The virtual port set should be empty.", virtualPorts.isEmpty());
@@ -519,48 +516,39 @@
ConnectPoint cp1 = new ConnectPoint(virtualDevice1.id(), PortNumber.portNumber(1));
manager.createVirtualPort(virtualNetwork.id(), virtualDevice1.id(),
- PortNumber.portNumber(1),
- new DefaultPort(virtualDevice1, PortNumber.portNumber(1), true));
+ PortNumber.portNumber(1), cp1);
ConnectPoint cp2 = new ConnectPoint(virtualDevice1.id(), PortNumber.portNumber(2));
manager.createVirtualPort(virtualNetwork.id(), virtualDevice1.id(),
- PortNumber.portNumber(2),
- new DefaultPort(virtualDevice1, PortNumber.portNumber(2), true));
+ PortNumber.portNumber(2), cp2);
ConnectPoint cp3 = new ConnectPoint(virtualDevice2.id(), PortNumber.portNumber(3));
manager.createVirtualPort(virtualNetwork.id(), virtualDevice2.id(),
- PortNumber.portNumber(3),
- new DefaultPort(virtualDevice2, PortNumber.portNumber(3), true));
+ PortNumber.portNumber(3), cp3);
ConnectPoint cp4 = new ConnectPoint(virtualDevice2.id(), PortNumber.portNumber(4));
manager.createVirtualPort(virtualNetwork.id(), virtualDevice2.id(),
- PortNumber.portNumber(4),
- new DefaultPort(virtualDevice2, PortNumber.portNumber(4), true));
+ PortNumber.portNumber(4), cp4);
ConnectPoint cp5 = new ConnectPoint(virtualDevice3.id(), PortNumber.portNumber(5));
manager.createVirtualPort(virtualNetwork.id(), virtualDevice3.id(),
- PortNumber.portNumber(5),
- new DefaultPort(virtualDevice3, PortNumber.portNumber(5), true));
+ PortNumber.portNumber(5), cp5);
cp6 = new ConnectPoint(virtualDevice3.id(), PortNumber.portNumber(6));
manager.createVirtualPort(virtualNetwork.id(), virtualDevice3.id(),
- PortNumber.portNumber(6),
- new DefaultPort(virtualDevice3, PortNumber.portNumber(6), true));
+ PortNumber.portNumber(6), cp6);
cp7 = new ConnectPoint(virtualDevice4.id(), PortNumber.portNumber(7));
manager.createVirtualPort(virtualNetwork.id(), virtualDevice4.id(),
- PortNumber.portNumber(7),
- new DefaultPort(virtualDevice4, PortNumber.portNumber(7), true));
+ PortNumber.portNumber(7), cp7);
ConnectPoint cp8 = new ConnectPoint(virtualDevice4.id(), PortNumber.portNumber(8));
manager.createVirtualPort(virtualNetwork.id(), virtualDevice4.id(),
- PortNumber.portNumber(8),
- new DefaultPort(virtualDevice4, PortNumber.portNumber(8), true));
+ PortNumber.portNumber(8), cp8);
ConnectPoint cp9 = new ConnectPoint(virtualDevice5.id(), PortNumber.portNumber(9));
manager.createVirtualPort(virtualNetwork.id(), virtualDevice5.id(),
- PortNumber.portNumber(9),
- new DefaultPort(virtualDevice5, PortNumber.portNumber(9), true));
+ PortNumber.portNumber(9), cp9);
VirtualLink link1 = manager.createVirtualLink(virtualNetwork.id(), cp1, cp3);
virtualNetworkManagerStore.updateLink(link1, link1.tunnelId(), Link.State.ACTIVE);
diff --git a/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkPathServiceTest.java b/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkPathServiceTest.java
index 6e5f4e8..9a1faf7 100644
--- a/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkPathServiceTest.java
+++ b/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkPathServiceTest.java
@@ -28,7 +28,6 @@
import org.onosproject.incubator.net.virtual.VirtualNetwork;
import org.onosproject.incubator.store.virtual.impl.DistributedVirtualNetworkStore;
import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultPort;
import org.onosproject.net.DeviceId;
import org.onosproject.net.DisjointPath;
import org.onosproject.net.ElementId;
@@ -141,7 +140,7 @@
VirtualNetwork vnet, VirtualDevice vDev, long portNumber) {
ConnectPoint cp = new ConnectPoint(vDev.id(), PortNumber.portNumber(portNumber));
manager.createVirtualPort(vnet.id(), cp.deviceId(), cp.port(),
- new DefaultPort(vDev, cp.port(), true));
+ new ConnectPoint(vDev.id(), cp.port()));
return cp;
}
diff --git a/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkTopologyProviderTest.java b/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkTopologyProviderTest.java
index 6f53387..d95aaf2 100644
--- a/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkTopologyProviderTest.java
+++ b/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkTopologyProviderTest.java
@@ -36,7 +36,6 @@
import org.onosproject.incubator.net.virtual.VirtualNetworkProviderService;
import org.onosproject.incubator.store.virtual.impl.DistributedVirtualNetworkStore;
import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultPort;
import org.onosproject.net.Link;
import org.onosproject.net.NetTestTools;
import org.onosproject.net.PortNumber;
@@ -152,48 +151,39 @@
cp1 = new ConnectPoint(virtualDevice1.id(), PortNumber.portNumber(1));
manager.createVirtualPort(virtualNetwork.id(), virtualDevice1.id(),
- PortNumber.portNumber(1),
- new DefaultPort(virtualDevice1, PortNumber.portNumber(1), true));
+ PortNumber.portNumber(1), cp1);
cp2 = new ConnectPoint(virtualDevice1.id(), PortNumber.portNumber(2));
manager.createVirtualPort(virtualNetwork.id(), virtualDevice1.id(),
- PortNumber.portNumber(2),
- new DefaultPort(virtualDevice1, PortNumber.portNumber(2), true));
+ PortNumber.portNumber(2), cp2);
cp3 = new ConnectPoint(virtualDevice2.id(), PortNumber.portNumber(3));
manager.createVirtualPort(virtualNetwork.id(), virtualDevice2.id(),
- PortNumber.portNumber(3),
- new DefaultPort(virtualDevice2, PortNumber.portNumber(3), true));
+ PortNumber.portNumber(3), cp3);
cp4 = new ConnectPoint(virtualDevice2.id(), PortNumber.portNumber(4));
manager.createVirtualPort(virtualNetwork.id(), virtualDevice2.id(),
- PortNumber.portNumber(4),
- new DefaultPort(virtualDevice2, PortNumber.portNumber(4), true));
+ PortNumber.portNumber(4), cp4);
cp5 = new ConnectPoint(virtualDevice3.id(), PortNumber.portNumber(5));
manager.createVirtualPort(virtualNetwork.id(), virtualDevice3.id(),
- PortNumber.portNumber(5),
- new DefaultPort(virtualDevice3, PortNumber.portNumber(5), true));
+ PortNumber.portNumber(5), cp5);
cp6 = new ConnectPoint(virtualDevice3.id(), PortNumber.portNumber(6));
manager.createVirtualPort(virtualNetwork.id(), virtualDevice3.id(),
- PortNumber.portNumber(6),
- new DefaultPort(virtualDevice3, PortNumber.portNumber(6), true));
+ PortNumber.portNumber(6), cp6);
cp7 = new ConnectPoint(virtualDevice4.id(), PortNumber.portNumber(7));
manager.createVirtualPort(virtualNetwork.id(), virtualDevice4.id(),
- PortNumber.portNumber(7),
- new DefaultPort(virtualDevice4, PortNumber.portNumber(7), true));
+ PortNumber.portNumber(7), cp7);
cp8 = new ConnectPoint(virtualDevice4.id(), PortNumber.portNumber(8));
manager.createVirtualPort(virtualNetwork.id(), virtualDevice4.id(),
- PortNumber.portNumber(8),
- new DefaultPort(virtualDevice4, PortNumber.portNumber(8), true));
+ PortNumber.portNumber(8), cp8);
cp9 = new ConnectPoint(virtualDevice5.id(), PortNumber.portNumber(9));
manager.createVirtualPort(virtualNetwork.id(), virtualDevice5.id(),
- PortNumber.portNumber(9),
- new DefaultPort(virtualDevice5, PortNumber.portNumber(9), true));
+ PortNumber.portNumber(9), cp9);
VirtualLink link1 = manager.createVirtualLink(virtualNetwork.id(), cp1, cp3);
virtualNetworkManagerStore.updateLink(link1, link1.tunnelId(), Link.State.ACTIVE);
diff --git a/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkTopologyServiceTest.java b/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkTopologyServiceTest.java
index 267e012..35ed039 100644
--- a/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkTopologyServiceTest.java
+++ b/incubator/net/src/test/java/org/onosproject/incubator/net/virtual/impl/VirtualNetworkTopologyServiceTest.java
@@ -31,7 +31,6 @@
import org.onosproject.incubator.net.virtual.VirtualNetwork;
import org.onosproject.incubator.store.virtual.impl.DistributedVirtualNetworkStore;
import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.DefaultPort;
import org.onosproject.net.DeviceId;
import org.onosproject.net.DisjointPath;
import org.onosproject.net.Link;
@@ -109,28 +108,22 @@
manager.createVirtualDevice(virtualNetwork.id(), DID4);
ConnectPoint cp1 = new ConnectPoint(virtualDevice1.id(), PortNumber.portNumber(1));
- manager.createVirtualPort(virtualNetwork.id(), cp1.deviceId(), cp1.port(),
- new DefaultPort(virtualDevice1, cp1.port(), true));
+ manager.createVirtualPort(virtualNetwork.id(), cp1.deviceId(), cp1.port(), cp1);
ConnectPoint cp2 = new ConnectPoint(virtualDevice1.id(), PortNumber.portNumber(2));
- manager.createVirtualPort(virtualNetwork.id(), cp2.deviceId(), cp2.port(),
- new DefaultPort(virtualDevice1, cp2.port(), true));
+ manager.createVirtualPort(virtualNetwork.id(), cp2.deviceId(), cp2.port(), cp2);
ConnectPoint cp3 = new ConnectPoint(virtualDevice2.id(), PortNumber.portNumber(3));
- manager.createVirtualPort(virtualNetwork.id(), cp3.deviceId(), cp3.port(),
- new DefaultPort(virtualDevice2, cp3.port(), true));
+ manager.createVirtualPort(virtualNetwork.id(), cp3.deviceId(), cp3.port(), cp3);
ConnectPoint cp4 = new ConnectPoint(virtualDevice2.id(), PortNumber.portNumber(4));
- manager.createVirtualPort(virtualNetwork.id(), cp4.deviceId(), cp4.port(),
- new DefaultPort(virtualDevice2, cp4.port(), true));
+ manager.createVirtualPort(virtualNetwork.id(), cp4.deviceId(), cp4.port(), cp4);
ConnectPoint cp5 = new ConnectPoint(virtualDevice3.id(), PortNumber.portNumber(5));
- manager.createVirtualPort(virtualNetwork.id(), cp5.deviceId(), cp5.port(),
- new DefaultPort(virtualDevice3, cp5.port(), true));
+ manager.createVirtualPort(virtualNetwork.id(), cp5.deviceId(), cp5.port(), cp5);
ConnectPoint cp6 = new ConnectPoint(virtualDevice3.id(), PortNumber.portNumber(6));
- manager.createVirtualPort(virtualNetwork.id(), cp6.deviceId(), cp6.port(),
- new DefaultPort(virtualDevice3, cp6.port(), true));
+ manager.createVirtualPort(virtualNetwork.id(), cp6.deviceId(), cp6.port(), cp6);
VirtualLink link1 = manager.createVirtualLink(virtualNetwork.id(), cp1, cp3);
virtualNetworkManagerStore.updateLink(link1, link1.tunnelId(), Link.State.ACTIVE);
@@ -197,11 +190,11 @@
topology = topologyService.currentTopology();
ConnectPoint src = new ConnectPoint(srcVirtualDevice.id(), PortNumber.portNumber(1));
manager.createVirtualPort(virtualNetwork.id(), src.deviceId(), src.port(),
- new DefaultPort(srcVirtualDevice, src.port(), true));
+ new ConnectPoint(srcVirtualDevice.id(), src.port()));
ConnectPoint dst = new ConnectPoint(dstVirtualDevice.id(), PortNumber.portNumber(2));
manager.createVirtualPort(virtualNetwork.id(), dst.deviceId(), dst.port(),
- new DefaultPort(dstVirtualDevice, dst.port(), true));
+ new ConnectPoint(dstVirtualDevice.id(), dst.port()));
VirtualLink link1 = manager.createVirtualLink(virtualNetwork.id(), src, dst);
// test the isLatest() method where a new link has been added to the current topology.
diff --git a/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/DistributedVirtualNetworkStore.java b/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/DistributedVirtualNetworkStore.java
index eb4e8b3..9007c21 100644
--- a/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/DistributedVirtualNetworkStore.java
+++ b/incubator/store/src/main/java/org/onosproject/incubator/store/virtual/impl/DistributedVirtualNetworkStore.java
@@ -53,7 +53,6 @@
import org.onosproject.net.HostId;
import org.onosproject.net.HostLocation;
import org.onosproject.net.Link;
-import org.onosproject.net.Port;
import org.onosproject.net.PortNumber;
import org.onosproject.net.intent.Intent;
import org.onosproject.net.intent.IntentData;
@@ -517,21 +516,53 @@
}
@Override
- public VirtualPort addPort(NetworkId networkId, DeviceId deviceId, PortNumber portNumber, Port realizedBy) {
+ public VirtualPort addPort(NetworkId networkId, DeviceId deviceId,
+ PortNumber portNumber, ConnectPoint realizedBy) {
checkState(networkExists(networkId), "The network has not been added.");
Set<VirtualPort> virtualPortSet = networkIdVirtualPortSetMap.get(networkId);
+
if (virtualPortSet == null) {
virtualPortSet = new HashSet<>();
}
+
Device device = deviceIdVirtualDeviceMap.get(deviceId);
checkNotNull(device, "The device has not been created for deviceId: " + deviceId);
- VirtualPort virtualPort = new DefaultVirtualPort(networkId, device, portNumber, realizedBy);
+
+ boolean exist = virtualPortSet.stream().anyMatch(
+ p -> p.element().id().equals(deviceId) &&
+ p.number().equals(portNumber));
+ checkState(!exist, "The requested Port Number is already in use");
+
+ VirtualPort virtualPort = new DefaultVirtualPort(networkId, device,
+ portNumber, realizedBy);
virtualPortSet.add(virtualPort);
networkIdVirtualPortSetMap.put(networkId, virtualPortSet);
return virtualPort;
}
@Override
+ public void bindPort(NetworkId networkId, DeviceId deviceId,
+ PortNumber portNumber, ConnectPoint realizedBy) {
+
+ Set<VirtualPort> virtualPortSet = networkIdVirtualPortSetMap
+ .get(networkId);
+
+ VirtualPort vPort = virtualPortSet.stream().filter(
+ p -> p.element().id().equals(deviceId) &&
+ p.number().equals(portNumber)).findFirst().get();
+ checkNotNull(vPort, "The virtual port has not been added.");
+
+ Device device = deviceIdVirtualDeviceMap.get(deviceId);
+ checkNotNull(device, "The device has not been created for deviceId: "
+ + deviceId);
+
+ virtualPortSet.remove(vPort);
+ vPort = new DefaultVirtualPort(networkId, device, portNumber, realizedBy);
+ virtualPortSet.add(vPort);
+ networkIdVirtualPortSetMap.put(networkId, virtualPortSet);
+ }
+
+ @Override
public void removePort(NetworkId networkId, DeviceId deviceId, PortNumber portNumber) {
checkState(networkExists(networkId), "The network has not been added.");
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/VirtualNetworkWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/VirtualNetworkWebResource.java
index dca328d..073543a 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/VirtualNetworkWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/VirtualNetworkWebResource.java
@@ -27,12 +27,8 @@
import org.onosproject.incubator.net.virtual.VirtualNetworkAdminService;
import org.onosproject.incubator.net.virtual.VirtualNetworkService;
import org.onosproject.incubator.net.virtual.VirtualPort;
-import org.onosproject.net.DefaultAnnotations;
-import org.onosproject.net.DefaultDevice;
-import org.onosproject.net.DefaultPort;
-import org.onosproject.net.Device;
+import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DeviceId;
-import org.onosproject.net.Port;
import org.onosproject.net.PortNumber;
import org.onosproject.rest.AbstractWebResource;
@@ -269,11 +265,9 @@
JsonNode specifiedPhysPortNum = jsonTree.get("physPortNum");
final NetworkId nid = NetworkId.networkId(networkId);
DeviceId vdevId = DeviceId.deviceId(virtDeviceId);
- DefaultAnnotations annotations = DefaultAnnotations.builder().build();
- Device physDevice = new DefaultDevice(null, DeviceId.deviceId(specifiedPhysDeviceId.asText()),
- null, null, null, null, null, null, annotations);
- Port realizedBy = new DefaultPort(physDevice,
- PortNumber.portNumber(specifiedPhysPortNum.asText()), true);
+
+ ConnectPoint realizedBy = new ConnectPoint(DeviceId.deviceId(specifiedPhysDeviceId.asText()),
+ PortNumber.portNumber(specifiedPhysPortNum.asText()));
VirtualPort vport = vnetAdminService.createVirtualPort(nid, vdevId,
PortNumber.portNumber(specifiedPortNum.asText()), realizedBy);
UriBuilder locationBuilder = uriInfo.getBaseUriBuilder()
diff --git a/web/api/src/test/java/org/onosproject/rest/resources/VirtualNetworkWebResourceTest.java b/web/api/src/test/java/org/onosproject/rest/resources/VirtualNetworkWebResourceTest.java
index 720bd9a..99ab656 100644
--- a/web/api/src/test/java/org/onosproject/rest/resources/VirtualNetworkWebResourceTest.java
+++ b/web/api/src/test/java/org/onosproject/rest/resources/VirtualNetworkWebResourceTest.java
@@ -53,13 +53,11 @@
import org.onosproject.net.ConnectPoint;
import org.onosproject.net.DefaultAnnotations;
import org.onosproject.net.DefaultDevice;
-import org.onosproject.net.DefaultPort;
import org.onosproject.net.Device;
import org.onosproject.net.DeviceId;
import org.onosproject.net.HostId;
import org.onosproject.net.HostLocation;
import org.onosproject.net.NetTestTools;
-import org.onosproject.net.Port;
import org.onosproject.net.PortNumber;
import javax.ws.rs.BadRequestException;
@@ -77,16 +75,8 @@
import java.util.function.BiPredicate;
import java.util.function.Function;
-import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.createMock;
-import static org.easymock.EasyMock.expect;
-import static org.easymock.EasyMock.expectLastCall;
-import static org.easymock.EasyMock.replay;
-import static org.easymock.EasyMock.verify;
-import static org.hamcrest.Matchers.containsString;
-import static org.hamcrest.Matchers.hasSize;
-import static org.hamcrest.Matchers.is;
-import static org.hamcrest.Matchers.notNullValue;
+import static org.easymock.EasyMock.*;
+import static org.hamcrest.Matchers.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.fail;
@@ -136,13 +126,13 @@
private final Device dev2 = NetTestTools.device("dev2");
private final Device dev22 = NetTestTools.device("dev22");
- private final Port port1 = new DefaultPort(dev1, portNumber(1), true);
- private final Port port2 = new DefaultPort(dev2, portNumber(2), true);
+ private final ConnectPoint cp1 = new ConnectPoint(dev1.id(), portNumber(1));
+ private final ConnectPoint cp2 = new ConnectPoint(dev2.id(), portNumber(2));
private final VirtualPort vport22 = new DefaultVirtualPort(networkId3,
- dev22, portNumber(22), port1);
+ dev22, portNumber(22), cp1);
private final VirtualPort vport23 = new DefaultVirtualPort(networkId3,
- dev22, portNumber(23), port2);
+ dev22, portNumber(23), cp2);
private final ConnectPoint cp11 = NetTestTools.connectPoint(devId1.toString(), 21);
private final ConnectPoint cp21 = NetTestTools.connectPoint(devId2.toString(), 22);
@@ -766,8 +756,8 @@
(vport, s) -> s.equals(ID) ? vport.networkId().toString()
: s.equals(DEVICE_ID) ? vport.element().id().toString()
: s.equals(PORT_NUM) ? vport.number().toString()
- : s.equals(PHYS_DEVICE_ID) ? vport.realizedBy().element().id().toString()
- : s.equals(PHYS_PORT_NUM) ? vport.realizedBy().number().toString()
+ : s.equals(PHYS_DEVICE_ID) ? vport.realizedBy().deviceId().toString()
+ : s.equals(PHYS_PORT_NUM) ? vport.realizedBy().port().toString()
: null
);
}
@@ -793,8 +783,8 @@
DefaultAnnotations annotations = DefaultAnnotations.builder().build();
Device physDevice = new DefaultDevice(null, DeviceId.deviceId("dev1"),
null, null, null, null, null, null, annotations);
- Port port1 = new DefaultPort(physDevice, portNumber(1), true);
- expect(mockVnetAdminService.createVirtualPort(networkId, deviceId, portNumber(22), port1))
+ ConnectPoint cp1 = new ConnectPoint(physDevice.id(), portNumber(1));
+ expect(mockVnetAdminService.createVirtualPort(networkId, deviceId, portNumber(22), cp1))
.andReturn(vport22);
replay(mockVnetAdminService);