Ray Milkey
Committed by Gerrit Code Review

Implement builders for optical intents

Change-Id: Ide728a943eb0ec3d3ba995f63c016e7d52bff65c
...@@ -286,12 +286,16 @@ public class OpticalPathProvisioner { ...@@ -286,12 +286,16 @@ public class OpticalPathProvisioner {
286 break; 286 break;
287 } 287 }
288 288
289 - Intent opticalIntent = new OpticalConnectivityIntent(appId, 289 + Intent opticalIntent = OpticalConnectivityIntent.builder()
290 - srcWdmPoint, 290 + .appId(appId)
291 - dstWdmPoint); 291 + .src(srcWdmPoint)
292 - Intent opticalIntent2 = new OpticalConnectivityIntent(appId, 292 + .dst(dstWdmPoint)
293 - dstWdmPoint, 293 + .build();
294 - srcWdmPoint); 294 + Intent opticalIntent2 = OpticalConnectivityIntent.builder()
295 + .appId(appId)
296 + .src(dstWdmPoint)
297 + .dst(srcWdmPoint)
298 + .build();
295 log.info("Creating optical intent from {} to {}", srcWdmPoint, dstWdmPoint); 299 log.info("Creating optical intent from {} to {}", srcWdmPoint, dstWdmPoint);
296 log.info("Creating optical intent from {} to {}", dstWdmPoint, srcWdmPoint); 300 log.info("Creating optical intent from {} to {}", dstWdmPoint, srcWdmPoint);
297 connectionList.add(opticalIntent); 301 connectionList.add(opticalIntent);
......
...@@ -56,7 +56,12 @@ public class AddOpticalIntentCommand extends ConnectivityIntentCommand { ...@@ -56,7 +56,12 @@ public class AddOpticalIntentCommand extends ConnectivityIntentCommand {
56 PortNumber egressPortNumber = portNumber(getPortNumber(egressDeviceString)); 56 PortNumber egressPortNumber = portNumber(getPortNumber(egressDeviceString));
57 ConnectPoint egress = new ConnectPoint(egressDeviceId, egressPortNumber); 57 ConnectPoint egress = new ConnectPoint(egressDeviceId, egressPortNumber);
58 58
59 - Intent intent = new OpticalConnectivityIntent(appId(), key(), ingress, egress); 59 + Intent intent = OpticalConnectivityIntent.builder()
60 + .appId(appId())
61 + .key(key())
62 + .src(ingress)
63 + .dst(egress)
64 + .build();
60 service.submit(intent); 65 service.submit(intent);
61 print("Optical intent submitted:\n%s", intent.toString()); 66 print("Optical intent submitted:\n%s", intent.toString());
62 } 67 }
......
...@@ -15,10 +15,12 @@ ...@@ -15,10 +15,12 @@
15 */ 15 */
16 package org.onosproject.net.intent; 16 package org.onosproject.net.intent;
17 17
18 +import java.util.Collections;
19 +
18 import org.onosproject.core.ApplicationId; 20 import org.onosproject.core.ApplicationId;
19 import org.onosproject.net.ConnectPoint; 21 import org.onosproject.net.ConnectPoint;
20 22
21 -import java.util.Collections; 23 +import static com.google.common.base.Preconditions.checkNotNull;
22 24
23 /** 25 /**
24 * An optical layer intent for connectivity from one transponder port to another 26 * An optical layer intent for connectivity from one transponder port to another
...@@ -33,32 +35,90 @@ public final class OpticalConnectivityIntent extends Intent { ...@@ -33,32 +35,90 @@ public final class OpticalConnectivityIntent extends Intent {
33 * connection points. 35 * connection points.
34 * 36 *
35 * @param appId application identification 37 * @param appId application identification
38 + * @param key intent key
36 * @param src the source transponder port 39 * @param src the source transponder port
37 * @param dst the destination transponder port 40 * @param dst the destination transponder port
38 */ 41 */
39 - public OpticalConnectivityIntent(ApplicationId appId, 42 + protected OpticalConnectivityIntent(ApplicationId appId,
40 - ConnectPoint src, ConnectPoint dst) { 43 + Key key,
44 + ConnectPoint src,
45 + ConnectPoint dst,
46 + int priority) {
47 + super(appId, key, Collections.emptyList(), priority);
48 + this.src = checkNotNull(src);
49 + this.dst = checkNotNull(dst);
50 + }
41 51
42 - this(appId, null, src, dst); 52 + /**
53 + * Returns a new optical connectivity intent builder.
54 + *
55 + * @return host to host intent builder
56 + */
57 + public static Builder builder() {
58 + return new Builder();
43 } 59 }
44 60
61 +
45 /** 62 /**
46 - * Creates an optical connectivity intent between the specified 63 + * Builder for optical connectivity intents.
47 - * connection points. 64 + */
65 + public static class Builder extends Intent.Builder {
66 + private ConnectPoint src;
67 + private ConnectPoint dst;
68 +
69 + @Override
70 + public Builder appId(ApplicationId appId) {
71 + return (Builder) super.appId(appId);
72 + }
73 +
74 + @Override
75 + public Builder key(Key key) {
76 + return (Builder) super.key(key);
77 + }
78 +
79 + @Override
80 + public Builder priority(int priority) {
81 + return (Builder) super.priority(priority);
82 + }
83 +
84 + /**
85 + * Sets the source for the intent that will be built.
48 * 86 *
49 - * @param appId application identification 87 + * @param src source to use for built intent
50 - * @param key intent key 88 + * @return this builder
51 - * @param src the source transponder port
52 - * @param dst the destination transponder port
53 */ 89 */
54 - public OpticalConnectivityIntent(ApplicationId appId, 90 + public Builder src(ConnectPoint src) {
55 - Key key,
56 - ConnectPoint src, ConnectPoint dst) {
57 - super(appId, key, Collections.emptyList(), DEFAULT_INTENT_PRIORITY);
58 this.src = src; 91 this.src = src;
92 + return this;
93 + }
94 +
95 + /**
96 + * Sets the destination for the intent that will be built.
97 + *
98 + * @param dst dest to use for built intent
99 + * @return this builder
100 + */
101 + public Builder dst(ConnectPoint dst) {
59 this.dst = dst; 102 this.dst = dst;
103 + return this;
60 } 104 }
61 105
106 + /**
107 + * Builds an optical connectivity intent from the accumulated parameters.
108 + *
109 + * @return point to point intent
110 + */
111 + public OpticalConnectivityIntent build() {
112 +
113 + return new OpticalConnectivityIntent(
114 + appId,
115 + key,
116 + src,
117 + dst,
118 + priority
119 + );
120 + }
121 + }
62 122
63 /** 123 /**
64 * Constructor for serializer. 124 * Constructor for serializer.
......
...@@ -15,14 +15,15 @@ ...@@ -15,14 +15,15 @@
15 */ 15 */
16 package org.onosproject.net.intent; 16 package org.onosproject.net.intent;
17 17
18 -import com.google.common.base.MoreObjects; 18 +import java.util.Collection;
19 -import com.google.common.collect.ImmutableSet; 19 +
20 import org.onosproject.core.ApplicationId; 20 import org.onosproject.core.ApplicationId;
21 import org.onosproject.net.ConnectPoint; 21 import org.onosproject.net.ConnectPoint;
22 import org.onosproject.net.Link; 22 import org.onosproject.net.Link;
23 import org.onosproject.net.Path; 23 import org.onosproject.net.Path;
24 24
25 -import java.util.Collection; 25 +import com.google.common.base.MoreObjects;
26 +import com.google.common.collect.ImmutableSet;
26 27
27 import static com.google.common.base.Preconditions.checkNotNull; 28 import static com.google.common.base.Preconditions.checkNotNull;
28 29
...@@ -33,12 +34,16 @@ public final class OpticalPathIntent extends Intent { ...@@ -33,12 +34,16 @@ public final class OpticalPathIntent extends Intent {
33 private final Path path; 34 private final Path path;
34 35
35 36
36 - public OpticalPathIntent(ApplicationId appId, 37 + private OpticalPathIntent(ApplicationId appId,
38 + Key key,
37 ConnectPoint src, 39 ConnectPoint src,
38 ConnectPoint dst, 40 ConnectPoint dst,
39 - Path path) { 41 + Path path,
40 - super(appId, null, ImmutableSet.copyOf(path.links()), 42 + int priority) {
41 - Intent.DEFAULT_INTENT_PRIORITY); 43 + super(appId,
44 + key,
45 + ImmutableSet.copyOf(path.links()),
46 + priority);
42 this.src = checkNotNull(src); 47 this.src = checkNotNull(src);
43 this.dst = checkNotNull(dst); 48 this.dst = checkNotNull(dst);
44 this.path = checkNotNull(path); 49 this.path = checkNotNull(path);
...@@ -50,6 +55,92 @@ public final class OpticalPathIntent extends Intent { ...@@ -50,6 +55,92 @@ public final class OpticalPathIntent extends Intent {
50 this.path = null; 55 this.path = null;
51 } 56 }
52 57
58 + /**
59 + * Returns a new optical connectivity intent builder.
60 + *
61 + * @return host to host intent builder
62 + */
63 + public static Builder builder() {
64 + return new Builder();
65 + }
66 +
67 +
68 + /**
69 + * Builder for optical path intents.
70 + */
71 + public static class Builder extends Intent.Builder {
72 + private ConnectPoint src;
73 + private ConnectPoint dst;
74 + private Path path;
75 + Key key;
76 +
77 + @Override
78 + public Builder appId(ApplicationId appId) {
79 + return (Builder) super.appId(appId);
80 + }
81 +
82 + @Override
83 + public Builder key(Key key) {
84 + return (Builder) super.key(key);
85 + }
86 +
87 + @Override
88 + public Builder priority(int priority) {
89 + return (Builder) super.priority(priority);
90 + }
91 +
92 + /**
93 + * Sets the source for the intent that will be built.
94 + *
95 + * @param src source to use for built intent
96 + * @return this builder
97 + */
98 + public Builder src(ConnectPoint src) {
99 + this.src = src;
100 + return this;
101 + }
102 +
103 + /**
104 + * Sets the destination for the intent that will be built.
105 + *
106 + * @param dst dest to use for built intent
107 + * @return this builder
108 + */
109 + public Builder dst(ConnectPoint dst) {
110 + this.dst = dst;
111 + return this;
112 + }
113 +
114 + /**
115 + * Sets the path for the intent that will be built.
116 + *
117 + * @param path path to use for built intent
118 + * @return this builder
119 + */
120 + public Builder path(Path path) {
121 + this.path = path;
122 + return this;
123 + }
124 +
125 + /**
126 + * Builds an optical path intent from the accumulated parameters.
127 + *
128 + * @return optical path intent
129 + */
130 + public OpticalPathIntent build() {
131 +
132 + return new OpticalPathIntent(
133 + appId,
134 + key,
135 + src,
136 + dst,
137 + path,
138 + priority
139 + );
140 + }
141 + }
142 +
143 +
53 public ConnectPoint src() { 144 public ConnectPoint src() {
54 return src; 145 return src;
55 } 146 }
......
...@@ -15,7 +15,9 @@ ...@@ -15,7 +15,9 @@
15 */ 15 */
16 package org.onosproject.net.intent.impl.compiler; 16 package org.onosproject.net.intent.impl.compiler;
17 17
18 -import com.google.common.collect.ImmutableList; 18 +import java.util.List;
19 +import java.util.Set;
20 +
19 import org.apache.felix.scr.annotations.Activate; 21 import org.apache.felix.scr.annotations.Activate;
20 import org.apache.felix.scr.annotations.Component; 22 import org.apache.felix.scr.annotations.Component;
21 import org.apache.felix.scr.annotations.Deactivate; 23 import org.apache.felix.scr.annotations.Deactivate;
...@@ -36,8 +38,7 @@ import org.onosproject.net.topology.Topology; ...@@ -36,8 +38,7 @@ import org.onosproject.net.topology.Topology;
36 import org.onosproject.net.topology.TopologyEdge; 38 import org.onosproject.net.topology.TopologyEdge;
37 import org.onosproject.net.topology.TopologyService; 39 import org.onosproject.net.topology.TopologyService;
38 40
39 -import java.util.List; 41 +import com.google.common.collect.ImmutableList;
40 -import java.util.Set;
41 42
42 /** 43 /**
43 * An intent compiler for {@link org.onosproject.net.intent.OpticalConnectivityIntent}. 44 * An intent compiler for {@link org.onosproject.net.intent.OpticalConnectivityIntent}.
...@@ -67,10 +68,12 @@ public class OpticalConnectivityIntentCompiler implements IntentCompiler<Optical ...@@ -67,10 +68,12 @@ public class OpticalConnectivityIntentCompiler implements IntentCompiler<Optical
67 Set<LinkResourceAllocations> resources) { 68 Set<LinkResourceAllocations> resources) {
68 // TODO: compute multiple paths using the K-shortest path algorithm 69 // TODO: compute multiple paths using the K-shortest path algorithm
69 Path path = calculateOpticalPath(intent.getSrc(), intent.getDst()); 70 Path path = calculateOpticalPath(intent.getSrc(), intent.getDst());
70 - Intent newIntent = new OpticalPathIntent(intent.appId(), 71 + Intent newIntent = OpticalPathIntent.builder()
71 - intent.getSrc(), 72 + .appId(intent.appId())
72 - intent.getDst(), 73 + .src(intent.getSrc())
73 - path); 74 + .dst(intent.getDst())
75 + .path(path)
76 + .build();
74 return ImmutableList.of(newIntent); 77 return ImmutableList.of(newIntent);
75 } 78 }
76 79
......
...@@ -57,10 +57,11 @@ public class OpticalPathIntentInstallerTest extends IntentInstallerTest { ...@@ -57,10 +57,11 @@ public class OpticalPathIntentInstallerTest extends IntentInstallerTest {
57 new IntentInstallerTest.MockIntentManager(OpticalPathIntent.class); 57 new IntentInstallerTest.MockIntentManager(OpticalPathIntent.class);
58 installer.resourceService = new IntentTestsMocks.MockResourceService(); 58 installer.resourceService = new IntentTestsMocks.MockResourceService();
59 59
60 - intent = new OpticalPathIntent(APP_ID, 60 + intent = OpticalPathIntent.builder().appId(APP_ID)
61 - d1p1, 61 + .src(d1p1)
62 - d3p1, 62 + .dst(d3p1)
63 - new DefaultPath(PID, links, hops)); 63 + .path(new DefaultPath(PID, links, hops))
64 + .build();
64 } 65 }
65 66
66 /** 67 /**
......