Committed by
Gerrit Code Review
Update SimpleLinkResourceStore to obtain capacities from link annotations
Change-Id: I98f8959fdc00953c98a151ad7b0bfa1041b118d7
Showing
2 changed files
with
34 additions
and
8 deletions
... | @@ -29,6 +29,8 @@ import org.apache.felix.scr.annotations.Activate; | ... | @@ -29,6 +29,8 @@ import org.apache.felix.scr.annotations.Activate; |
29 | import org.apache.felix.scr.annotations.Component; | 29 | import org.apache.felix.scr.annotations.Component; |
30 | import org.apache.felix.scr.annotations.Deactivate; | 30 | import org.apache.felix.scr.annotations.Deactivate; |
31 | import org.apache.felix.scr.annotations.Service; | 31 | import org.apache.felix.scr.annotations.Service; |
32 | +import org.onlab.onos.net.AnnotationKeys; | ||
33 | +import org.onlab.onos.net.Annotations; | ||
32 | import org.onlab.onos.net.Link; | 34 | import org.onlab.onos.net.Link; |
33 | import org.onlab.onos.net.intent.IntentId; | 35 | import org.onlab.onos.net.intent.IntentId; |
34 | import org.onlab.onos.net.resource.Bandwidth; | 36 | import org.onlab.onos.net.resource.Bandwidth; |
... | @@ -74,12 +76,26 @@ public class SimpleLinkResourceStore implements LinkResourceStore { | ... | @@ -74,12 +76,26 @@ public class SimpleLinkResourceStore implements LinkResourceStore { |
74 | * @return free resources | 76 | * @return free resources |
75 | */ | 77 | */ |
76 | private synchronized Set<ResourceAllocation> readOriginalFreeResources(Link link) { | 78 | private synchronized Set<ResourceAllocation> readOriginalFreeResources(Link link) { |
77 | - // TODO read capacity and lambda resources from topology | 79 | + Annotations annotations = link.annotations(); |
78 | Set<ResourceAllocation> allocations = new HashSet<>(); | 80 | Set<ResourceAllocation> allocations = new HashSet<>(); |
79 | - for (int i = 1; i <= 100; i++) { | 81 | + |
82 | + try { | ||
83 | + int waves = Integer.parseInt(annotations.value(AnnotationKeys.OPTICAL_WAVES)); | ||
84 | + for (int i = 1; i <= waves; i++) { | ||
80 | allocations.add(new LambdaResourceAllocation(Lambda.valueOf(i))); | 85 | allocations.add(new LambdaResourceAllocation(Lambda.valueOf(i))); |
81 | } | 86 | } |
82 | - allocations.add(new BandwidthResourceAllocation(Bandwidth.valueOf(1000000))); | 87 | + } catch (NumberFormatException e) { |
88 | + log.debug("No optical.wave annotation on link %s", link); | ||
89 | + } | ||
90 | + | ||
91 | + try { | ||
92 | + int bandwidth = Integer.parseInt(annotations.value(AnnotationKeys.BANDWIDTH)); | ||
93 | + allocations.add( | ||
94 | + new BandwidthResourceAllocation(Bandwidth.valueOf(bandwidth))); | ||
95 | + } catch (NumberFormatException e) { | ||
96 | + log.debug("No bandwidth annotation on link %s", link); | ||
97 | + } | ||
98 | + | ||
83 | return allocations; | 99 | return allocations; |
84 | } | 100 | } |
85 | 101 | ||
... | @@ -92,7 +108,8 @@ public class SimpleLinkResourceStore implements LinkResourceStore { | ... | @@ -92,7 +108,8 @@ public class SimpleLinkResourceStore implements LinkResourceStore { |
92 | * {@link BandwidthResourceAllocation} object with 0 bandwidth | 108 | * {@link BandwidthResourceAllocation} object with 0 bandwidth |
93 | * | 109 | * |
94 | */ | 110 | */ |
95 | - private synchronized BandwidthResourceAllocation getBandwidth(Set<ResourceAllocation> freeRes) { | 111 | + private synchronized BandwidthResourceAllocation getBandwidth( |
112 | + Set<ResourceAllocation> freeRes) { | ||
96 | for (ResourceAllocation res : freeRes) { | 113 | for (ResourceAllocation res : freeRes) { |
97 | if (res.type() == ResourceType.BANDWIDTH) { | 114 | if (res.type() == ResourceType.BANDWIDTH) { |
98 | return (BandwidthResourceAllocation) res; | 115 | return (BandwidthResourceAllocation) res; |
... | @@ -107,7 +124,8 @@ public class SimpleLinkResourceStore implements LinkResourceStore { | ... | @@ -107,7 +124,8 @@ public class SimpleLinkResourceStore implements LinkResourceStore { |
107 | * @param link the target link | 124 | * @param link the target link |
108 | * @param allocations the resources to be subtracted | 125 | * @param allocations the resources to be subtracted |
109 | */ | 126 | */ |
110 | - private synchronized void subtractFreeResources(Link link, LinkResourceAllocations allocations) { | 127 | + private synchronized void subtractFreeResources(Link link, |
128 | + LinkResourceAllocations allocations) { | ||
111 | // TODO Use lock or version for updating freeResources. | 129 | // TODO Use lock or version for updating freeResources. |
112 | checkNotNull(link); | 130 | checkNotNull(link); |
113 | Set<ResourceAllocation> freeRes = new HashSet<>(getFreeResources(link)); | 131 | Set<ResourceAllocation> freeRes = new HashSet<>(getFreeResources(link)); |
... | @@ -141,7 +159,8 @@ public class SimpleLinkResourceStore implements LinkResourceStore { | ... | @@ -141,7 +159,8 @@ public class SimpleLinkResourceStore implements LinkResourceStore { |
141 | * @param link the target link | 159 | * @param link the target link |
142 | * @param allocations the resources to be added | 160 | * @param allocations the resources to be added |
143 | */ | 161 | */ |
144 | - private synchronized void addFreeResources(Link link, LinkResourceAllocations allocations) { | 162 | + private synchronized void addFreeResources(Link link, |
163 | + LinkResourceAllocations allocations) { | ||
145 | // TODO Use lock or version for updating freeResources. | 164 | // TODO Use lock or version for updating freeResources. |
146 | Set<ResourceAllocation> freeRes = new HashSet<>(getFreeResources(link)); | 165 | Set<ResourceAllocation> freeRes = new HashSet<>(getFreeResources(link)); |
147 | Set<ResourceAllocation> addRes = allocations.getResourceAllocation(link); | 166 | Set<ResourceAllocation> addRes = allocations.getResourceAllocation(link); | ... | ... |
... | @@ -28,7 +28,10 @@ import java.util.Set; | ... | @@ -28,7 +28,10 @@ import java.util.Set; |
28 | import org.junit.After; | 28 | import org.junit.After; |
29 | import org.junit.Before; | 29 | import org.junit.Before; |
30 | import org.junit.Test; | 30 | import org.junit.Test; |
31 | +import org.onlab.onos.net.AnnotationKeys; | ||
32 | +import org.onlab.onos.net.Annotations; | ||
31 | import org.onlab.onos.net.ConnectPoint; | 33 | import org.onlab.onos.net.ConnectPoint; |
34 | +import org.onlab.onos.net.DefaultAnnotations; | ||
32 | import org.onlab.onos.net.DefaultLink; | 35 | import org.onlab.onos.net.DefaultLink; |
33 | import org.onlab.onos.net.Link; | 36 | import org.onlab.onos.net.Link; |
34 | import org.onlab.onos.net.provider.ProviderId; | 37 | import org.onlab.onos.net.provider.ProviderId; |
... | @@ -61,11 +64,15 @@ public class SimpleLinkResourceStoreTest { | ... | @@ -61,11 +64,15 @@ public class SimpleLinkResourceStoreTest { |
61 | * @return created {@link Link} object | 64 | * @return created {@link Link} object |
62 | */ | 65 | */ |
63 | private Link newLink(String dev1, int port1, String dev2, int port2) { | 66 | private Link newLink(String dev1, int port1, String dev2, int port2) { |
67 | + Annotations annotations = DefaultAnnotations.builder() | ||
68 | + .set(AnnotationKeys.OPTICAL_WAVES, "80") | ||
69 | + .set(AnnotationKeys.BANDWIDTH, "1000000") | ||
70 | + .build(); | ||
64 | return new DefaultLink( | 71 | return new DefaultLink( |
65 | new ProviderId("of", "foo"), | 72 | new ProviderId("of", "foo"), |
66 | new ConnectPoint(deviceId(dev1), portNumber(port1)), | 73 | new ConnectPoint(deviceId(dev1), portNumber(port1)), |
67 | new ConnectPoint(deviceId(dev2), portNumber(port2)), | 74 | new ConnectPoint(deviceId(dev2), portNumber(port2)), |
68 | - DIRECT); | 75 | + DIRECT, annotations); |
69 | } | 76 | } |
70 | 77 | ||
71 | @Before | 78 | @Before |
... | @@ -158,6 +165,6 @@ public class SimpleLinkResourceStoreTest { | ... | @@ -158,6 +165,6 @@ public class SimpleLinkResourceStoreTest { |
158 | 165 | ||
159 | final Set<LambdaResourceAllocation> res = getLambdaObjs(freeRes); | 166 | final Set<LambdaResourceAllocation> res = getLambdaObjs(freeRes); |
160 | assertNotNull(res); | 167 | assertNotNull(res); |
161 | - assertEquals(100, res.size()); | 168 | + assertEquals(80, res.size()); |
162 | } | 169 | } |
163 | } | 170 | } | ... | ... |
-
Please register or login to post a comment