Brian O'Connor

Adding experimental tunnel primitive and small API tweaks

Change-Id: Id7a950ab7b2e001d0527e935c077c538dfede7fd
......@@ -32,11 +32,12 @@ public interface IntentDomainProvider {
* 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
......
......@@ -21,21 +21,27 @@ import com.google.common.annotations.Beta;
* 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;
}
}
......
......@@ -27,10 +27,21 @@ import com.google.common.annotations.Beta;
*/
@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;
}
}
......
/*
* 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;
}
}