Adding experimental tunnel primitive and small API tweaks
Change-Id: Id7a950ab7b2e001d0527e935c077c538dfede7fd
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/domain/IntentDomainProvider.java b/incubator/api/src/main/java/org/onosproject/incubator/net/domain/IntentDomainProvider.java
index bfea73d..51265f7 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/domain/IntentDomainProvider.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/domain/IntentDomainProvider.java
@@ -32,11 +32,12 @@
* can be used. Request contexts can be explictly cancelled, or they will
* eventually time out so that resources can be reused.
*
+ * @param domain intent domain for the request
* @param primitive intent primitive
* @return request contexts that contain resources to satisfy the intent
*/
//TODO Consider an iterable and/or holds (only hold one or two reservation(s) at a time)
- List<RequestContext> request(IntentPrimitive primitive);
+ List<RequestContext> request(IntentDomain domain, IntentPrimitive primitive);
/**
* Request that the provider attempt to modify an existing resource to satisfy
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/domain/IntentResource.java b/incubator/api/src/main/java/org/onosproject/incubator/net/domain/IntentResource.java
index a49bf95..6902483 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/domain/IntentResource.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/domain/IntentResource.java
@@ -21,21 +21,27 @@
* The abstract base class for the resource that satisfies an intent primitive.
*/
@Beta
-public abstract class IntentResource {
+public class IntentResource {
private final IntentPrimitive primitive;
+ private final long tunnelId;
// TODO add other common fields
//String ingressTag;
//String egressTag;
//etc.
- IntentResource(IntentPrimitive primitive) {
+ public IntentResource(IntentPrimitive primitive, long tunnelId) {
this.primitive = primitive;
+ this.tunnelId = tunnelId;
}
public IntentPrimitive primitive() {
return primitive;
}
+ public long tunnelId() {
+ return tunnelId;
+ }
+
}
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/domain/RequestContext.java b/incubator/api/src/main/java/org/onosproject/incubator/net/domain/RequestContext.java
index 81f452e..90593dd 100644
--- a/incubator/api/src/main/java/org/onosproject/incubator/net/domain/RequestContext.java
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/domain/RequestContext.java
@@ -27,10 +27,21 @@
*/
@Beta
public class RequestContext {
- IntentDomain domain;
- IntentResource resource;
+ private final IntentDomain domain;
+ private final IntentResource resource;
//TODO other common parameters:
//String cost;
- //TODO getters/setters
+ public RequestContext(IntentDomain domain, IntentResource resource) {
+ this.domain = domain;
+ this.resource = resource;
+ }
+
+ public IntentDomain domain() {
+ return domain;
+ }
+
+ public IntentResource resource() {
+ return resource;
+ }
}
diff --git a/incubator/api/src/main/java/org/onosproject/incubator/net/domain/TunnelPrimitive.java b/incubator/api/src/main/java/org/onosproject/incubator/net/domain/TunnelPrimitive.java
new file mode 100644
index 0000000..c624e92
--- /dev/null
+++ b/incubator/api/src/main/java/org/onosproject/incubator/net/domain/TunnelPrimitive.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.incubator.net.domain;
+
+import org.onosproject.core.ApplicationId;
+import org.onosproject.net.ConnectPoint;
+
+/**
+ * Provides connectivity through a domain.
+ */
+public class TunnelPrimitive extends IntentPrimitive {
+
+ private final ConnectPoint one;
+ private final ConnectPoint two;
+
+ public TunnelPrimitive(ApplicationId appId, ConnectPoint one, ConnectPoint two) {
+ super(appId);
+ this.one = one;
+ this.two = two;
+ }
+}