Support onboard kubernetes nodes through K8S API configuration
Change-Id: I060a443f45ef9c974d030415a30e9376fc82d124
diff --git a/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/impl/DefaultK8sNodeHandler.java b/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/impl/DefaultK8sNodeHandler.java
index f31301f..1c68f3d 100644
--- a/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/impl/DefaultK8sNodeHandler.java
+++ b/apps/k8s-node/app/src/main/java/org/onosproject/k8snode/impl/DefaultK8sNodeHandler.java
@@ -244,6 +244,17 @@
// do something if needed
}
+ @Override
+ public void processPreOnBoardState(K8sNode k8sNode) {
+ processInitState(k8sNode);
+ processDeviceCreatedState(k8sNode);
+ }
+
+ @Override
+ public void processOnBoardedState(K8sNode k8sNode) {
+ // do something if needed
+ }
+
/**
* Extracts properties from the component configuration context.
*
@@ -455,32 +466,14 @@
private boolean isCurrentStateDone(K8sNode k8sNode) {
switch (k8sNode.state()) {
case INIT:
- if (!isOvsdbConnected(k8sNode, ovsdbPortNum,
- ovsdbController, deviceService)) {
- return false;
- }
-
- return k8sNode.intgBridge() != null && k8sNode.extBridge() != null &&
- deviceService.isAvailable(k8sNode.intgBridge()) &&
- deviceService.isAvailable(k8sNode.extBridge()) &&
- deviceService.isAvailable(k8sNode.localBridge());
+ return isInitStateDone(k8sNode);
case DEVICE_CREATED:
- if (k8sNode.dataIp() != null &&
- !isIntfEnabled(k8sNode, VXLAN_TUNNEL)) {
- return false;
- }
- if (k8sNode.dataIp() != null &&
- !isIntfEnabled(k8sNode, GRE_TUNNEL)) {
- return false;
- }
- if (k8sNode.dataIp() != null &&
- !isIntfEnabled(k8sNode, GENEVE_TUNNEL)) {
- return false;
- }
-
- return true;
+ return isDeviceCreatedStateDone(k8sNode);
+ case PRE_ON_BOARD:
+ return isInitStateDone(k8sNode) && isDeviceCreatedStateDone(k8sNode);
case COMPLETE:
case INCOMPLETE:
+ case ON_BOARDED:
// always return false
// run init CLI to re-trigger node bootstrap
return false;
@@ -489,6 +482,35 @@
}
}
+ private boolean isInitStateDone(K8sNode k8sNode) {
+ if (!isOvsdbConnected(k8sNode, ovsdbPortNum,
+ ovsdbController, deviceService)) {
+ return false;
+ }
+
+ return k8sNode.intgBridge() != null && k8sNode.extBridge() != null &&
+ deviceService.isAvailable(k8sNode.intgBridge()) &&
+ deviceService.isAvailable(k8sNode.extBridge()) &&
+ deviceService.isAvailable(k8sNode.localBridge());
+ }
+
+ private boolean isDeviceCreatedStateDone(K8sNode k8sNode) {
+ if (k8sNode.dataIp() != null &&
+ !isIntfEnabled(k8sNode, VXLAN_TUNNEL)) {
+ return false;
+ }
+ if (k8sNode.dataIp() != null &&
+ !isIntfEnabled(k8sNode, GRE_TUNNEL)) {
+ return false;
+ }
+ if (k8sNode.dataIp() != null &&
+ !isIntfEnabled(k8sNode, GENEVE_TUNNEL)) {
+ return false;
+ }
+
+ return true;
+ }
+
/**
* Configures the kubernetes node with new state.
*