Toshio Koide

Update resource manager API and objects.

1 +package org.onlab.onos.net.resource;
2 +
3 +/**
4 + * Representation of allocated bandwidth resource.
5 + */
6 +public interface BandwidthResourceAllocation extends BandwidthResourceRequest {
7 +
8 +}
1 +package org.onlab.onos.net.resource;
2 +
3 +/**
4 + * Representation of a request for bandwidth resource.
5 + */
6 +public interface BandwidthResourceRequest {
7 + /**
8 + * Returns the bandwidth resource.
9 + *
10 + * @return the bandwidth resource
11 + */
12 + Bandwidth bandwidth();
13 +}
...@@ -30,6 +30,7 @@ public final class Lambda extends LinkResource { ...@@ -30,6 +30,7 @@ public final class Lambda extends LinkResource {
30 30
31 /** 31 /**
32 * Returns lambda as an int value. 32 * Returns lambda as an int value.
33 + *
33 * @return lambda as an int value 34 * @return lambda as an int value
34 */ 35 */
35 public int toInt() { 36 public int toInt() {
......
1 +package org.onlab.onos.net.resource;
2 +
3 +/**
4 + * Representation of allocated lambda resource.
5 + */
6 +public interface LambdaResourceAllocation extends LambdaResourceRequest {
7 + /**
8 + * Returns the lambda resource.
9 + *
10 + * @return the lambda resource
11 + */
12 + Lambda lambda();
13 +}
1 +package org.onlab.onos.net.resource;
2 +
3 +/**
4 + * Representation of a request for lambda resource.
5 + */
6 +public interface LambdaResourceRequest {
7 +
8 +}
1 +package org.onlab.onos.net.resource;
2 +
3 +import org.onlab.onos.net.Link;
4 +
5 +/**
6 + * Representation of allocated link resources.
7 + */
8 +public interface LinkResourceAllocations extends LinkResourceRequest {
9 + /**
10 + * Returns allocated resource for the given link.
11 + *
12 + * @param link the target link
13 + * @return allocated resource for the link
14 + */
15 + ResourceAllocation getResourceAllocation(Link link);
16 +}
1 +package org.onlab.onos.net.resource;
2 +
3 +import java.util.Collection;
4 +import java.util.Set;
5 +
6 +import org.onlab.onos.net.Link;
7 +import org.onlab.onos.net.intent.IntentId;
8 +
9 +/**
10 + * Representation of a request for link resource.
11 + */
12 +public interface LinkResourceRequest extends ResourceRequest {
13 +
14 + /**
15 + * Returns the {@link IntentId} associated with the request.
16 + *
17 + * @return the {@link IntentId} associated with the request
18 + */
19 + IntentId intendId();
20 +
21 + /**
22 + * Returns the set of target links.
23 + *
24 + * @return the set of target links
25 + */
26 + Collection<Link> links();
27 +
28 + /**
29 + * Returns the set of resource requests.
30 + *
31 + * @return the set of resource requests
32 + */
33 + Set<ResourceRequest> resources();
34 +}
1 package org.onlab.onos.net.resource; 1 package org.onlab.onos.net.resource;
2 2
3 -import java.util.Map;
4 -
5 import org.onlab.onos.net.Link; 3 import org.onlab.onos.net.Link;
6 import org.onlab.onos.net.intent.IntentId; 4 import org.onlab.onos.net.intent.IntentId;
7 -import org.onlab.onos.net.intent.PathIntent;
8 5
9 /** 6 /**
10 * Service for providing link resource allocation. 7 * Service for providing link resource allocation.
...@@ -12,49 +9,48 @@ import org.onlab.onos.net.intent.PathIntent; ...@@ -12,49 +9,48 @@ import org.onlab.onos.net.intent.PathIntent;
12 public interface LinkResourceService { 9 public interface LinkResourceService {
13 10
14 /** 11 /**
15 - * Allocates resources along the path. 12 + * Requests resources.
16 - * <p>
17 - * Tries to allocate given resources on the links along the path specified
18 - * by the given intent.
19 * 13 *
20 - * @param res resources to be allocated 14 + * @param req resources to be allocated
21 - * @param intent an intent to be used for specifying the path 15 + * @return allocated resources
22 */ 16 */
23 - void allocateResource(LinkResources res, PathIntent intent); 17 + LinkResourceAllocations requestResources(LinkResourceRequest req);
24 18
25 /** 19 /**
26 - * Releases resources along the path. 20 + * Releases resources.
27 * 21 *
28 - * @param intentId an ID for the intent for specifying the path 22 + * @param allocations resources to be released
29 */ 23 */
30 - void releaseResource(IntentId intentId); 24 + void releaseResources(LinkResourceAllocations allocations);
31 25
32 /** 26 /**
33 - * Returns all allocated resources to each link. 27 + * Returns all allocated resources.
34 * 28 *
35 - * @return allocated resources to each link with {@link IntentId} 29 + * @return allocated resources
36 */ 30 */
37 - Map<Link, Map<IntentId, LinkResources>> allocatedResources(); 31 + Iterable<LinkResourceAllocations> getAllocations();
38 32
39 /** 33 /**
40 * Returns all allocated resources to given link. 34 * Returns all allocated resources to given link.
41 * 35 *
42 * @param link a target link 36 * @param link a target link
43 - * @return allocated resources to the target link with {@link IntentId} 37 + * @return allocated resources
44 */ 38 */
45 - Map<IntentId, LinkResources> allocatedResources(Link link); 39 + Iterable<LinkResourceAllocations> getAllocations(Link link);
46 40
47 /** 41 /**
48 - * Returns available resources for each link. 42 + * Returns all IDs of intents using the given link.
49 * 43 *
50 - * @return available resources for each link 44 + * @param link a target link
45 + * @return IDs of intents using the link
51 */ 46 */
52 - Map<Link, LinkResources> availableResources(); 47 + Iterable<IntentId> getIntents(Link link);
53 48
54 /** 49 /**
55 * Returns available resources for given link. 50 * Returns available resources for given link.
51 + *
56 * @param link a target link 52 * @param link a target link
57 * @return available resources for the target link 53 * @return available resources for the target link
58 */ 54 */
59 - LinkResources availableResources(Link link); 55 + ResourceRequest getAvailableResources(Link link);
60 } 56 }
......
1 +package org.onlab.onos.net.resource;
2 +
3 +/**
4 + * Abstraction of allocated resource.
5 + */
6 +public interface ResourceAllocation extends ResourceRequest {
7 +
8 +}
1 +package org.onlab.onos.net.resource;
2 +
3 +/**
4 + * Representation of ID for allocated resource.
5 + */
6 +public interface ResourceId {
7 +
8 +}
1 +package org.onlab.onos.net.resource;
2 +
3 +/**
4 + * Abstraction of resource request.
5 + */
6 +public interface ResourceRequest {
7 +
8 +}