Simplified the port handling logic for VM live migration case
Change-Id: Ib28978bb2ee62c4719261c38eebb72a006f81f19
diff --git a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/DefaultInstancePort.java b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/DefaultInstancePort.java
index b1addf0..0a53885 100644
--- a/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/DefaultInstancePort.java
+++ b/apps/openstacknetworking/app/src/main/java/org/onosproject/openstacknetworking/impl/DefaultInstancePort.java
@@ -45,24 +45,30 @@
private final MacAddress macAddress;
private final IpAddress ipAddress;
private final DeviceId deviceId;
+ private final DeviceId oldDeviceId;
private final PortNumber portNumber;
+ private final PortNumber oldPortNumber;
private final State state;
// private constructor not intended for invoked from external
private DefaultInstancePort(String networkId, String portId,
MacAddress macAddress, IpAddress ipAddress,
- DeviceId deviceId, PortNumber portNumber,
+ DeviceId deviceId, DeviceId oldDeviceId,
+ PortNumber portNumber, PortNumber oldPortNumber,
State state) {
this.networkId = networkId;
this.portId = portId;
this.macAddress = macAddress;
this.ipAddress = ipAddress;
this.deviceId = deviceId;
+ this.oldDeviceId = oldDeviceId;
this.portNumber = portNumber;
+ this.oldPortNumber = oldPortNumber;
this.state = state;
}
- private DefaultInstancePort(Host host, State state) {
+ private DefaultInstancePort(Host host, State state,
+ DeviceId oldDeviceId, PortNumber oldPortNumber) {
this.networkId = host.annotations().value(ANNOTATION_NETWORK_ID);
this.portId = host.annotations().value(ANNOTATION_PORT_ID);
this.macAddress = host.mac();
@@ -72,6 +78,8 @@
this.deviceId = host.location().deviceId();
this.portNumber = host.location().port();
this.state = state;
+ this.oldDeviceId = oldDeviceId;
+ this.oldPortNumber = oldPortNumber;
}
public static DefaultInstancePort from(Host host, State state) {
@@ -83,7 +91,22 @@
checkArgument(!Strings.isNullOrEmpty(
host.annotations().value(ANNOTATION_CREATE_TIME)));
- return new DefaultInstancePort(host, state);
+ return new DefaultInstancePort(host, state, null, null);
+ }
+
+ public static DefaultInstancePort from(Host host,
+ State state,
+ DeviceId oldDeviceId,
+ PortNumber oldPortNumber) {
+ checkNotNull(host);
+ checkArgument(!Strings.isNullOrEmpty(
+ host.annotations().value(ANNOTATION_NETWORK_ID)));
+ checkArgument(!Strings.isNullOrEmpty(
+ host.annotations().value(ANNOTATION_PORT_ID)));
+ checkArgument(!Strings.isNullOrEmpty(
+ host.annotations().value(ANNOTATION_CREATE_TIME)));
+
+ return new DefaultInstancePort(host, state, oldDeviceId, oldPortNumber);
}
@Override
@@ -112,15 +135,34 @@
}
@Override
+ public DeviceId oldDeviceId() {
+ return oldDeviceId;
+ }
+
+ @Override
public PortNumber portNumber() {
return portNumber;
}
@Override
+ public PortNumber oldPortNumber() {
+ return oldPortNumber;
+ }
+
+ @Override
public State state() {
return state;
}
+ /**
+ * Obtains an instance port builder.
+ *
+ * @return instance port builder
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
@Override
public InstancePort updateState(State newState) {
return new Builder()
@@ -129,12 +171,30 @@
.macAddress(macAddress)
.ipAddress(ipAddress)
.deviceId(deviceId)
+ .oldDeviceId(oldDeviceId)
.portNumber(portNumber)
+ .oldPortNumber(oldPortNumber)
.state(newState)
.build();
}
@Override
+ public InstancePort updatePrevData(DeviceId oldDeviceId,
+ PortNumber oldPortNumber) {
+ return new Builder()
+ .networkId(networkId)
+ .portId(portId)
+ .macAddress(macAddress)
+ .ipAddress(ipAddress)
+ .deviceId(deviceId)
+ .oldDeviceId(oldDeviceId)
+ .portNumber(portNumber)
+ .oldPortNumber(oldPortNumber)
+ .state(state)
+ .build();
+ }
+
+ @Override
public String toString() {
return MoreObjects.toStringHelper(getClass())
.add("networkId", networkId)
@@ -142,7 +202,9 @@
.add("macAddress", macAddress)
.add("ipAddress", ipAddress)
.add("deviceId", deviceId)
+ .add("oldDeviceId", oldDeviceId)
.add("portNumber", portNumber)
+ .add("oldPortNumber", oldPortNumber)
.add("state", state)
.toString();
}
@@ -159,7 +221,9 @@
Objects.equals(macAddress, that.macAddress) &&
Objects.equals(ipAddress, that.ipAddress) &&
Objects.equals(deviceId, that.deviceId) &&
+ Objects.equals(oldDeviceId, that.oldDeviceId) &&
Objects.equals(portNumber, that.portNumber) &&
+ Objects.equals(oldPortNumber, that.oldPortNumber) &&
Objects.equals(state, that.state);
}
return false;
@@ -172,7 +236,9 @@
macAddress,
ipAddress,
deviceId,
+ oldDeviceId,
portNumber,
+ oldPortNumber,
state);
}
@@ -186,7 +252,9 @@
private MacAddress macAddress;
private IpAddress ipAddress;
private DeviceId deviceId;
+ private DeviceId oldDeviceId;
private PortNumber portNumber;
+ private PortNumber oldPortNumber;
private State state;
// private constructor not intended to use from external
@@ -209,7 +277,9 @@
macAddress,
ipAddress,
deviceId,
+ oldDeviceId,
portNumber,
+ oldPortNumber,
state);
}
@@ -244,12 +314,24 @@
}
@Override
+ public InstancePort.Builder oldDeviceId(DeviceId oldDeviceId) {
+ this.oldDeviceId = oldDeviceId;
+ return this;
+ }
+
+ @Override
public InstancePort.Builder portNumber(PortNumber portNumber) {
this.portNumber = portNumber;
return this;
}
@Override
+ public InstancePort.Builder oldPortNumber(PortNumber oldPortNumber) {
+ this.oldPortNumber = oldPortNumber;
+ return this;
+ }
+
+ @Override
public InstancePort.Builder state(State state) {
this.state = state;
return this;