Adding experimental tunnel primitive and small API tweaks
Change-Id: Id7a950ab7b2e001d0527e935c077c538dfede7fd
Showing
4 changed files
with
58 additions
and
6 deletions
... | @@ -32,11 +32,12 @@ public interface IntentDomainProvider { | ... | @@ -32,11 +32,12 @@ public interface IntentDomainProvider { |
32 | * can be used. Request contexts can be explictly cancelled, or they will | 32 | * can be used. Request contexts can be explictly cancelled, or they will |
33 | * eventually time out so that resources can be reused. | 33 | * eventually time out so that resources can be reused. |
34 | * | 34 | * |
35 | + * @param domain intent domain for the request | ||
35 | * @param primitive intent primitive | 36 | * @param primitive intent primitive |
36 | * @return request contexts that contain resources to satisfy the intent | 37 | * @return request contexts that contain resources to satisfy the intent |
37 | */ | 38 | */ |
38 | //TODO Consider an iterable and/or holds (only hold one or two reservation(s) at a time) | 39 | //TODO Consider an iterable and/or holds (only hold one or two reservation(s) at a time) |
39 | - List<RequestContext> request(IntentPrimitive primitive); | 40 | + List<RequestContext> request(IntentDomain domain, IntentPrimitive primitive); |
40 | 41 | ||
41 | /** | 42 | /** |
42 | * Request that the provider attempt to modify an existing resource to satisfy | 43 | * Request that the provider attempt to modify an existing resource to satisfy | ... | ... |
... | @@ -21,21 +21,27 @@ import com.google.common.annotations.Beta; | ... | @@ -21,21 +21,27 @@ import com.google.common.annotations.Beta; |
21 | * The abstract base class for the resource that satisfies an intent primitive. | 21 | * The abstract base class for the resource that satisfies an intent primitive. |
22 | */ | 22 | */ |
23 | @Beta | 23 | @Beta |
24 | -public abstract class IntentResource { | 24 | +public class IntentResource { |
25 | 25 | ||
26 | private final IntentPrimitive primitive; | 26 | private final IntentPrimitive primitive; |
27 | + private final long tunnelId; | ||
27 | 28 | ||
28 | // TODO add other common fields | 29 | // TODO add other common fields |
29 | //String ingressTag; | 30 | //String ingressTag; |
30 | //String egressTag; | 31 | //String egressTag; |
31 | //etc. | 32 | //etc. |
32 | 33 | ||
33 | - IntentResource(IntentPrimitive primitive) { | 34 | + public IntentResource(IntentPrimitive primitive, long tunnelId) { |
34 | this.primitive = primitive; | 35 | this.primitive = primitive; |
36 | + this.tunnelId = tunnelId; | ||
35 | } | 37 | } |
36 | 38 | ||
37 | public IntentPrimitive primitive() { | 39 | public IntentPrimitive primitive() { |
38 | return primitive; | 40 | return primitive; |
39 | } | 41 | } |
40 | 42 | ||
43 | + public long tunnelId() { | ||
44 | + return tunnelId; | ||
45 | + } | ||
46 | + | ||
41 | } | 47 | } | ... | ... |
... | @@ -27,10 +27,21 @@ import com.google.common.annotations.Beta; | ... | @@ -27,10 +27,21 @@ import com.google.common.annotations.Beta; |
27 | */ | 27 | */ |
28 | @Beta | 28 | @Beta |
29 | public class RequestContext { | 29 | public class RequestContext { |
30 | - IntentDomain domain; | 30 | + private final IntentDomain domain; |
31 | - IntentResource resource; | 31 | + private final IntentResource resource; |
32 | //TODO other common parameters: | 32 | //TODO other common parameters: |
33 | //String cost; | 33 | //String cost; |
34 | 34 | ||
35 | - //TODO getters/setters | 35 | + public RequestContext(IntentDomain domain, IntentResource resource) { |
36 | + this.domain = domain; | ||
37 | + this.resource = resource; | ||
38 | + } | ||
39 | + | ||
40 | + public IntentDomain domain() { | ||
41 | + return domain; | ||
42 | + } | ||
43 | + | ||
44 | + public IntentResource resource() { | ||
45 | + return resource; | ||
46 | + } | ||
36 | } | 47 | } | ... | ... |
1 | +/* | ||
2 | + * Copyright 2015 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | +package org.onosproject.incubator.net.domain; | ||
17 | + | ||
18 | +import org.onosproject.core.ApplicationId; | ||
19 | +import org.onosproject.net.ConnectPoint; | ||
20 | + | ||
21 | +/** | ||
22 | + * Provides connectivity through a domain. | ||
23 | + */ | ||
24 | +public class TunnelPrimitive extends IntentPrimitive { | ||
25 | + | ||
26 | + private final ConnectPoint one; | ||
27 | + private final ConnectPoint two; | ||
28 | + | ||
29 | + public TunnelPrimitive(ApplicationId appId, ConnectPoint one, ConnectPoint two) { | ||
30 | + super(appId); | ||
31 | + this.one = one; | ||
32 | + this.two = two; | ||
33 | + } | ||
34 | +} |
-
Please register or login to post a comment