[ONOS-7839] suggestedPath for optical connectivity intent with optical-rest support
Change-Id: I2b5093ac26149e450a14467c71656447233b5ce2
diff --git a/core/api/src/main/java/org/onosproject/net/intent/OpticalConnectivityIntent.java b/core/api/src/main/java/org/onosproject/net/intent/OpticalConnectivityIntent.java
index 7cf4411..59247e1 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/OpticalConnectivityIntent.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/OpticalConnectivityIntent.java
@@ -22,6 +22,7 @@
import org.onosproject.net.OchSignal;
import org.onosproject.net.OduSignalType;
import org.onosproject.net.ResourceGroup;
+import org.onosproject.net.Path;
import java.util.Collections;
import java.util.Optional;
@@ -31,6 +32,7 @@
/**
* An optical layer intent for connectivity between two OCh ports.
* No traffic selector or traffic treatment are needed.
+ * OchSignal and suggestedPath are optional.
*/
@Beta
public final class OpticalConnectivityIntent extends Intent {
@@ -38,7 +40,9 @@
private final ConnectPoint dst;
private final OduSignalType signalType;
private final boolean isBidirectional;
+
private final Optional<OchSignal> ochSignal;
+ private final Optional<Path> suggestedPath;
/**
* Creates an optical connectivity intent between the specified
@@ -51,6 +55,7 @@
* @param signalType signal type
* @param isBidirectional indicates if intent is unidirectional
* @param ochSignal optional OCh signal
+ * @param suggestedPath optional suggested path
* @param priority priority to use for flows from this intent
* @param resourceGroup resource group of this intent
*/
@@ -61,6 +66,7 @@
OduSignalType signalType,
boolean isBidirectional,
Optional<OchSignal> ochSignal,
+ Optional<Path> suggestedPath,
int priority,
ResourceGroup resourceGroup) {
super(appId, key, Collections.emptyList(), priority, resourceGroup);
@@ -69,6 +75,7 @@
this.signalType = checkNotNull(signalType);
this.isBidirectional = isBidirectional;
this.ochSignal = ochSignal;
+ this.suggestedPath = suggestedPath;
}
/**
@@ -90,6 +97,7 @@
private OduSignalType signalType;
private boolean isBidirectional;
private Optional<OchSignal> ochSignal = Optional.empty();
+ private Optional<Path> suggestedPath = Optional.empty();
@Override
public Builder appId(ApplicationId appId) {
@@ -167,6 +175,17 @@
}
/**
+ * Sets the suggestedPath of the intent.
+ *
+ * @param suggestedPath the path
+ * @return this builder
+ */
+ public Builder suggestedPath(Path suggestedPath) {
+ this.suggestedPath = Optional.ofNullable(suggestedPath);
+ return this;
+ }
+
+ /**
* Builds an optical connectivity intent from the accumulated parameters.
*
* @return point to point intent
@@ -181,6 +200,7 @@
signalType,
isBidirectional,
ochSignal,
+ suggestedPath,
priority,
resourceGroup
);
@@ -197,6 +217,7 @@
this.signalType = null;
this.isBidirectional = false;
this.ochSignal = null;
+ this.suggestedPath = null;
}
/**
@@ -240,10 +261,20 @@
*
* @return the lambda
*/
+
public Optional<OchSignal> ochSignal() {
return ochSignal;
}
+ /**
+ * Returns the suggestedPath of the intent.
+ *
+ * @return the suggestedPath
+ */
+ public Optional<Path> suggestedPath() {
+ return suggestedPath;
+ }
+
@Override
public String toString() {
return MoreObjects.toStringHelper(this)
@@ -257,6 +288,7 @@
.add("signalType", signalType)
.add("isBidirectional", isBidirectional)
.add("ochSignal", ochSignal)
+ .add("suggestedPath", suggestedPath)
.add("resourceGroup", resourceGroup())
.toString();
}