Refer to external bridge and gateway IP from k8s node store
Change-Id: I7dab97ead59e3746b67e6e3bedc3a2c6fea41bf1
diff --git a/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/codec/K8sNodeCodec.java b/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/codec/K8sNodeCodec.java
index 6676847..7c7b32b 100644
--- a/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/codec/K8sNodeCodec.java
+++ b/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/codec/K8sNodeCodec.java
@@ -44,6 +44,9 @@
private static final String INTEGRATION_BRIDGE = "integrationBridge";
private static final String EXTERNAL_BRIDGE = "externalBridge";
private static final String STATE = "state";
+ private static final String EXTERNAL_INTF = "externalInterface";
+ private static final String EXTERNAL_BRIDGE_IP = "externalBridgeIp";
+ private static final String EXTERNAL_GATEWAY_IP = "externalGatewayIp";
private static final String MISSING_MESSAGE = " is required in K8sNode";
@@ -69,6 +72,18 @@
result.put(DATA_IP, node.dataIp().toString());
}
+ if (node.extIntf() != null) {
+ result.put(EXTERNAL_INTF, node.extIntf());
+ }
+
+ if (node.extBridgeIp() != null) {
+ result.put(EXTERNAL_BRIDGE_IP, node.extBridgeIp().toString());
+ }
+
+ if (node.extGatewayIp() != null) {
+ result.put(EXTERNAL_GATEWAY_IP, node.extGatewayIp().toString());
+ }
+
return result;
}
@@ -105,6 +120,21 @@
nodeBuilder.extBridge(DeviceId.deviceId(extBridgeJson.asText()));
}
+ JsonNode extIntfJson = json.get(EXTERNAL_INTF);
+ if (extIntfJson != null) {
+ nodeBuilder.extIntf(extIntfJson.asText());
+ }
+
+ JsonNode extBridgeIpJson = json.get(EXTERNAL_BRIDGE_IP);
+ if (extBridgeIpJson != null) {
+ nodeBuilder.extBridgeIp(IpAddress.valueOf(extBridgeIpJson.asText()));
+ }
+
+ JsonNode extGatewayIpJson = json.get(EXTERNAL_GATEWAY_IP);
+ if (extGatewayIpJson != null) {
+ nodeBuilder.extGatewayIp(IpAddress.valueOf(extGatewayIpJson.asText()));
+ }
+
log.trace("node is {}", nodeBuilder.build().toString());
return nodeBuilder.build();
diff --git a/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/impl/DefaultK8sApiConfigHandler.java b/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/impl/DefaultK8sApiConfigHandler.java
index ab04556..5119500 100644
--- a/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/impl/DefaultK8sApiConfigHandler.java
+++ b/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/impl/DefaultK8sApiConfigHandler.java
@@ -38,6 +38,7 @@
import org.osgi.service.component.annotations.ReferenceCardinality;
import org.slf4j.Logger;
+import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ExecutorService;
@@ -60,6 +61,9 @@
private static final String INTERNAL_IP = "InternalIP";
private static final String K8S_ROLE = "node-role.kubernetes.io";
+ private static final String EXT_BRIDGE_IP = "external.bridge.ip";
+ private static final String EXT_GATEWAY_IP = "external.gateway.ip";
+ private static final String EXT_INTF_NAME = "external.interface.name";
@Reference(cardinality = ReferenceCardinality.MANDATORY)
protected CoreService coreService;
@@ -156,12 +160,22 @@
}
}
+ Map<String, String> annots = node.getMetadata().getAnnotations();
+
+ String extIntf = annots.get(EXT_INTF_NAME);
+ String extGatewayIpStr = annots.get(EXT_GATEWAY_IP);
+ String extBridgeIpStr = annots.get(EXT_BRIDGE_IP);
+
return DefaultK8sNode.builder()
.hostname(hostname)
.managementIp(managementIp)
.dataIp(dataIp)
- .type(nodeType) // need to get correct node type
+ .extIntf(extIntf)
+ .type(nodeType)
.state(INIT)
+ .extBridgeIp(IpAddress.valueOf(extBridgeIpStr))
+ .extGatewayIp(IpAddress.valueOf(extGatewayIpStr))
+ .podCidr(node.getSpec().getPodCIDR())
.build();
}