Initial implementation of CORRUPT state (ONOS-1060)
- Added CORRUPT state to state machine and event type
- Simplified phases using new request field
- Improved null-safety by using Optionals
Change-Id: I1d576b719765b5664aef73477ee04593e8acc4fd
diff --git a/core/api/src/main/java/org/onosproject/net/intent/IntentData.java b/core/api/src/main/java/org/onosproject/net/intent/IntentData.java
index b70e7cc..6a9c9ae 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/IntentData.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/IntentData.java
@@ -22,16 +22,12 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.Collections;
import java.util.List;
import java.util.Objects;
import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.net.intent.IntentState.FAILED;
-import static org.onosproject.net.intent.IntentState.INSTALLED;
-import static org.onosproject.net.intent.IntentState.INSTALLING;
-import static org.onosproject.net.intent.IntentState.PURGE_REQ;
-import static org.onosproject.net.intent.IntentState.WITHDRAWING;
-import static org.onosproject.net.intent.IntentState.WITHDRAWN;
+import static org.onosproject.net.intent.IntentState.*;
/**
* A wrapper class that contains an intents, its state, and other metadata for
@@ -44,6 +40,7 @@
private final Intent intent;
+ private final IntentState request; //TODO perhaps we want a full fledged object for requests
private IntentState state;
private Timestamp version;
private NodeId origin;
@@ -60,6 +57,7 @@
public IntentData(Intent intent, IntentState state, Timestamp version) {
this.intent = intent;
this.state = state;
+ this.request = state;
this.version = version;
}
@@ -73,6 +71,7 @@
intent = intentData.intent;
state = intentData.state;
+ request = intentData.request;
version = intentData.version;
origin = intentData.origin;
installables = intentData.installables;
@@ -81,6 +80,7 @@
// kryo constructor
protected IntentData() {
intent = null;
+ request = null;
}
/**
@@ -101,6 +101,10 @@
return state;
}
+ public IntentState request() {
+ return request;
+ }
+
/**
* Returns the intent key.
*
@@ -175,7 +179,7 @@
* @return list of installable intents
*/
public List<Intent> installables() {
- return installables;
+ return installables != null ? installables : Collections.emptyList();
}
/**
@@ -240,6 +244,12 @@
}
return true;
+ case CORRUPT:
+ if (currentState == CORRUPT) {
+ return false;
+ }
+ return true;
+
case PURGE_REQ:
return true;