Initial support VM and container communication via POD and service IP
Change-Id: Ic87beee6ed122ec5551370c2b6a2789edf8fba5b
diff --git a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackNode.java b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackNode.java
index 0d72a2b..e058aaa 100644
--- a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackNode.java
+++ b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/DefaultOpenstackNode.java
@@ -20,6 +20,7 @@
import org.onlab.osgi.DefaultServiceDirectory;
import org.onlab.packet.IpAddress;
import org.onlab.packet.MacAddress;
+import org.onosproject.net.Annotations;
import org.onosproject.net.DeviceId;
import org.onosproject.net.Port;
import org.onosproject.net.PortNumber;
@@ -242,6 +243,24 @@
}
@Override
+ public MacAddress portMacByName(String portName) {
+ if (portName == null) {
+ return null;
+ } else {
+ return macAddress(this.intgBridge, portName);
+ }
+ }
+
+ @Override
+ public PortNumber portNumByName(String portName) {
+ if (portName == null) {
+ return null;
+ } else {
+ return portNumber(this.intgBridge, portName);
+ }
+ }
+
+ @Override
public MacAddress vlanPortMac() {
if (vlanIntf == null) {
return null;
@@ -394,6 +413,25 @@
return neutronConfig;
}
+ private MacAddress macAddress(DeviceId deviceId, String portName) {
+ Port port = port(deviceId, portName);
+ Annotations annots = port.annotations();
+ return annots != null ? MacAddress.valueOf(annots.value(PORT_MAC)) : null;
+ }
+
+ private PortNumber portNumber(DeviceId deviceId, String portName) {
+ Port port = port(deviceId, portName);
+ return port != null ? port.number() : null;
+ }
+
+ private Port port(DeviceId deviceId, String portName) {
+ DeviceService deviceService = DefaultServiceDirectory.getService(DeviceService.class);
+ return deviceService.getPorts(deviceId).stream()
+ .filter(p -> p.isEnabled() &&
+ Objects.equals(p.annotations().value(PORT_NAME), portName))
+ .findAny().orElse(null);
+ }
+
/**
* Returns new builder instance.
*
diff --git a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java
index 8a0e1eb..6396b29 100644
--- a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java
+++ b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNode.java
@@ -130,6 +130,22 @@
PortNumber patchPortNum();
/**
+ * Returns the port MAC address with the given patch port name.
+ *
+ * @param portName patch port name
+ * @return port MAC address
+ */
+ MacAddress portMacByName(String portName);
+
+ /**
+ * Returns the port number with the given patch port name.
+ *
+ * @param portName patch port name
+ * @return port number
+ */
+ PortNumber portNumByName(String portName);
+
+ /**
* Returns the vlan port MAC address.
*
* @return mac address; null if vlan port does not exist
diff --git a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNodeService.java b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNodeService.java
index a692109..8f641f5 100644
--- a/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNodeService.java
+++ b/apps/openstacknode/api/src/main/java/org/onosproject/openstacknode/api/OpenstackNodeService.java
@@ -15,6 +15,7 @@
*/
package org.onosproject.openstacknode.api;
+import org.onlab.packet.IpAddress;
import org.onosproject.event.ListenerService;
import org.onosproject.net.DeviceId;
import org.onosproject.openstacknode.api.OpenstackNode.NodeType;
@@ -77,6 +78,14 @@
OpenstackNode node(DeviceId deviceId);
/**
+ * Returns the node with the specified management IP address.
+ *
+ * @param mgmtIp management IP
+ * @return openstack node
+ */
+ OpenstackNode node(IpAddress mgmtIp);
+
+ /**
* Adds the vf port to the given openstack node.
*
* @param osNode openstack node
diff --git a/apps/openstacknode/api/src/test/java/org/onosproject/openstacknode/api/OpenstackNodeAdapter.java b/apps/openstacknode/api/src/test/java/org/onosproject/openstacknode/api/OpenstackNodeAdapter.java
index 5e6f703..1922ec1 100644
--- a/apps/openstacknode/api/src/test/java/org/onosproject/openstacknode/api/OpenstackNodeAdapter.java
+++ b/apps/openstacknode/api/src/test/java/org/onosproject/openstacknode/api/OpenstackNodeAdapter.java
@@ -94,6 +94,16 @@
}
@Override
+ public MacAddress portMacByName(String portName) {
+ return null;
+ }
+
+ @Override
+ public PortNumber portNumByName(String portName) {
+ return null;
+ }
+
+ @Override
public MacAddress vlanPortMac() {
return null;
}