Committed by
Gerrit Code Review
encasulation CLI paramter and completer ONOS-3446
Change-Id: I7ceabf34ae9e055c511302341bbf86488a112f5f
Showing
3 changed files
with
60 additions
and
12 deletions
| ... | @@ -26,6 +26,7 @@ import org.onlab.util.Bandwidth; | ... | @@ -26,6 +26,7 @@ import org.onlab.util.Bandwidth; |
| 26 | import org.onosproject.cli.AbstractShellCommand; | 26 | import org.onosproject.cli.AbstractShellCommand; |
| 27 | import org.onosproject.core.ApplicationId; | 27 | import org.onosproject.core.ApplicationId; |
| 28 | import org.onosproject.core.CoreService; | 28 | import org.onosproject.core.CoreService; |
| 29 | +import org.onosproject.net.EncapsulationType; | ||
| 29 | import org.onosproject.net.Link; | 30 | import org.onosproject.net.Link; |
| 30 | import org.onosproject.net.PortNumber; | 31 | import org.onosproject.net.PortNumber; |
| 31 | import org.onosproject.net.flow.DefaultTrafficSelector; | 32 | import org.onosproject.net.flow.DefaultTrafficSelector; |
| ... | @@ -36,6 +37,7 @@ import org.onosproject.net.intent.Constraint; | ... | @@ -36,6 +37,7 @@ import org.onosproject.net.intent.Constraint; |
| 36 | import org.onosproject.net.intent.Intent; | 37 | import org.onosproject.net.intent.Intent; |
| 37 | import org.onosproject.net.intent.Key; | 38 | import org.onosproject.net.intent.Key; |
| 38 | import org.onosproject.net.intent.constraint.BandwidthConstraint; | 39 | import org.onosproject.net.intent.constraint.BandwidthConstraint; |
| 40 | +import org.onosproject.net.intent.constraint.EncapsulationConstraint; | ||
| 39 | import org.onosproject.net.intent.constraint.LambdaConstraint; | 41 | import org.onosproject.net.intent.constraint.LambdaConstraint; |
| 40 | import org.onosproject.net.intent.constraint.LinkTypeConstraint; | 42 | import org.onosproject.net.intent.constraint.LinkTypeConstraint; |
| 41 | import org.onosproject.net.intent.constraint.PartialFailureConstraint; | 43 | import org.onosproject.net.intent.constraint.PartialFailureConstraint; |
| ... | @@ -116,14 +118,6 @@ public abstract class ConnectivityIntentCommand extends AbstractShellCommand { | ... | @@ -116,14 +118,6 @@ public abstract class ConnectivityIntentCommand extends AbstractShellCommand { |
| 116 | required = false, multiValued = true) | 118 | required = false, multiValued = true) |
| 117 | private List<String> extHdrStringList = null; | 119 | private List<String> extHdrStringList = null; |
| 118 | 120 | ||
| 119 | - @Option(name = "-b", aliases = "--bandwidth", description = "Bandwidth", | ||
| 120 | - required = false, multiValued = false) | ||
| 121 | - private String bandwidthString = null; | ||
| 122 | - | ||
| 123 | - @Option(name = "-l", aliases = "--lambda", description = "Lambda", | ||
| 124 | - required = false, multiValued = false) | ||
| 125 | - private boolean lambda = false; | ||
| 126 | - | ||
| 127 | @Option(name = "-a", aliases = "--appId", description = "Application Id", | 121 | @Option(name = "-a", aliases = "--appId", description = "Application Id", |
| 128 | required = false, multiValued = false) | 122 | required = false, multiValued = false) |
| 129 | private String appId = null; | 123 | private String appId = null; |
| ... | @@ -132,10 +126,6 @@ public abstract class ConnectivityIntentCommand extends AbstractShellCommand { | ... | @@ -132,10 +126,6 @@ public abstract class ConnectivityIntentCommand extends AbstractShellCommand { |
| 132 | required = false, multiValued = false) | 126 | required = false, multiValued = false) |
| 133 | private String intentKey = null; | 127 | private String intentKey = null; |
| 134 | 128 | ||
| 135 | - @Option(name = "--partial", description = "Allow partial installation", | ||
| 136 | - required = false, multiValued = false) | ||
| 137 | - private boolean partial = false; | ||
| 138 | - | ||
| 139 | 129 | ||
| 140 | // Treatments | 130 | // Treatments |
| 141 | @Option(name = "--setEthSrc", description = "Rewrite Source MAC Address", | 131 | @Option(name = "--setEthSrc", description = "Rewrite Source MAC Address", |
| ... | @@ -176,6 +166,24 @@ public abstract class ConnectivityIntentCommand extends AbstractShellCommand { | ... | @@ -176,6 +166,24 @@ public abstract class ConnectivityIntentCommand extends AbstractShellCommand { |
| 176 | required = false, multiValued = false) | 166 | required = false, multiValued = false) |
| 177 | private int priority = Intent.DEFAULT_INTENT_PRIORITY; | 167 | private int priority = Intent.DEFAULT_INTENT_PRIORITY; |
| 178 | 168 | ||
| 169 | + // Constraints | ||
| 170 | + @Option(name = "-b", aliases = "--bandwidth", description = "Bandwidth", | ||
| 171 | + required = false, multiValued = false) | ||
| 172 | + private String bandwidthString = null; | ||
| 173 | + | ||
| 174 | + @Option(name = "-l", aliases = "--lambda", description = "Lambda", | ||
| 175 | + required = false, multiValued = false) | ||
| 176 | + private boolean lambda = false; | ||
| 177 | + | ||
| 178 | + @Option(name = "--partial", description = "Allow partial installation", | ||
| 179 | + required = false, multiValued = false) | ||
| 180 | + private boolean partial = false; | ||
| 181 | + | ||
| 182 | + @Option(name = "-e", aliases = "--encapsulation", description = "Encapsulation type", | ||
| 183 | + required = false, multiValued = false) | ||
| 184 | + private String encapsulationString = null; | ||
| 185 | + | ||
| 186 | + | ||
| 179 | /** | 187 | /** |
| 180 | * Constructs a traffic selector based on the command line arguments | 188 | * Constructs a traffic selector based on the command line arguments |
| 181 | * presented to the command. | 189 | * presented to the command. |
| ... | @@ -373,10 +381,17 @@ public abstract class ConnectivityIntentCommand extends AbstractShellCommand { | ... | @@ -373,10 +381,17 @@ public abstract class ConnectivityIntentCommand extends AbstractShellCommand { |
| 373 | } | 381 | } |
| 374 | constraints.add(new LinkTypeConstraint(lambda, Link.Type.OPTICAL)); | 382 | constraints.add(new LinkTypeConstraint(lambda, Link.Type.OPTICAL)); |
| 375 | 383 | ||
| 384 | + // Check for partial failure specification | ||
| 376 | if (partial) { | 385 | if (partial) { |
| 377 | constraints.add(new PartialFailureConstraint()); | 386 | constraints.add(new PartialFailureConstraint()); |
| 378 | } | 387 | } |
| 379 | 388 | ||
| 389 | + // Check for encapsulation specification | ||
| 390 | + if (!isNullOrEmpty(encapsulationString)) { | ||
| 391 | + final EncapsulationType encapType = EncapsulationType.valueOf(encapsulationString); | ||
| 392 | + constraints.add(new EncapsulationConstraint(encapType)); | ||
| 393 | + } | ||
| 394 | + | ||
| 380 | return constraints; | 395 | return constraints; |
| 381 | } | 396 | } |
| 382 | 397 | ... | ... |
| 1 | +package org.onosproject.cli.net; | ||
| 2 | + | ||
| 3 | +import org.apache.karaf.shell.console.Completer; | ||
| 4 | +import org.apache.karaf.shell.console.completer.StringsCompleter; | ||
| 5 | +import org.onosproject.net.EncapsulationType; | ||
| 6 | + | ||
| 7 | +import java.util.List; | ||
| 8 | +import java.util.SortedSet; | ||
| 9 | + | ||
| 10 | +/** | ||
| 11 | + * Encapsulation type completer. | ||
| 12 | + */ | ||
| 13 | +public class EncapTypeCompleter implements Completer { | ||
| 14 | + | ||
| 15 | + @Override | ||
| 16 | + public int complete(String buffer, int cursor, List<String> candidates) { | ||
| 17 | + // Delegate string completer | ||
| 18 | + StringsCompleter delegate = new StringsCompleter(); | ||
| 19 | + SortedSet<String> strings = delegate.getStrings(); | ||
| 20 | + | ||
| 21 | + for (EncapsulationType encapType : EncapsulationType.values()) { | ||
| 22 | + strings.add(encapType.toString()); | ||
| 23 | + } | ||
| 24 | + | ||
| 25 | + // Now let the completer do the work for figuring out what to offer. | ||
| 26 | + return delegate.complete(buffer, cursor, candidates); | ||
| 27 | + } | ||
| 28 | +} |
| ... | @@ -201,6 +201,7 @@ | ... | @@ -201,6 +201,7 @@ |
| 201 | <entry key="--icmp6Code" value-ref="Icmp6CodeCompleter"/> | 201 | <entry key="--icmp6Code" value-ref="Icmp6CodeCompleter"/> |
| 202 | <entry key="--extHdr" value-ref="ExtHeaderCompleter"/> | 202 | <entry key="--extHdr" value-ref="ExtHeaderCompleter"/> |
| 203 | <entry key="-a" value-ref="allAppNameCompleter"/> | 203 | <entry key="-a" value-ref="allAppNameCompleter"/> |
| 204 | + <entry key="-e" value-ref="encapTypeCompleter"/> | ||
| 204 | </optional-completers> | 205 | </optional-completers> |
| 205 | </command> | 206 | </command> |
| 206 | <command> | 207 | <command> |
| ... | @@ -216,6 +217,7 @@ | ... | @@ -216,6 +217,7 @@ |
| 216 | <entry key="--icmp6Code" value-ref="Icmp6CodeCompleter"/> | 217 | <entry key="--icmp6Code" value-ref="Icmp6CodeCompleter"/> |
| 217 | <entry key="--extHdr" value-ref="ExtHeaderCompleter"/> | 218 | <entry key="--extHdr" value-ref="ExtHeaderCompleter"/> |
| 218 | <entry key="-a" value-ref="allAppNameCompleter"/> | 219 | <entry key="-a" value-ref="allAppNameCompleter"/> |
| 220 | + <entry key="-e" value-ref="encapTypeCompleter"/> | ||
| 219 | </optional-completers> | 221 | </optional-completers> |
| 220 | </command> | 222 | </command> |
| 221 | <command> | 223 | <command> |
| ... | @@ -252,6 +254,7 @@ | ... | @@ -252,6 +254,7 @@ |
| 252 | <entry key="--icmp6Code" value-ref="Icmp6CodeCompleter"/> | 254 | <entry key="--icmp6Code" value-ref="Icmp6CodeCompleter"/> |
| 253 | <entry key="--extHdr" value-ref="ExtHeaderCompleter"/> | 255 | <entry key="--extHdr" value-ref="ExtHeaderCompleter"/> |
| 254 | <entry key="-a" value-ref="allAppNameCompleter"/> | 256 | <entry key="-a" value-ref="allAppNameCompleter"/> |
| 257 | + <entry key="-e" value-ref="encapTypeCompleter"/> | ||
| 255 | </optional-completers> | 258 | </optional-completers> |
| 256 | </command> | 259 | </command> |
| 257 | <command> | 260 | <command> |
| ... | @@ -266,6 +269,7 @@ | ... | @@ -266,6 +269,7 @@ |
| 266 | <entry key="--icmp6Code" value-ref="Icmp6CodeCompleter"/> | 269 | <entry key="--icmp6Code" value-ref="Icmp6CodeCompleter"/> |
| 267 | <entry key="--extHdr" value-ref="ExtHeaderCompleter"/> | 270 | <entry key="--extHdr" value-ref="ExtHeaderCompleter"/> |
| 268 | <entry key="-a" value-ref="allAppNameCompleter"/> | 271 | <entry key="-a" value-ref="allAppNameCompleter"/> |
| 272 | + <entry key="-e" value-ref="encapTypeCompleter"/> | ||
| 269 | </optional-completers> | 273 | </optional-completers> |
| 270 | </command> | 274 | </command> |
| 271 | <command> | 275 | <command> |
| ... | @@ -499,5 +503,6 @@ | ... | @@ -499,5 +503,6 @@ |
| 499 | <bean id="startStopCompleter" class="org.onosproject.cli.StartStopCompleter"/> | 503 | <bean id="startStopCompleter" class="org.onosproject.cli.StartStopCompleter"/> |
| 500 | <bean id="metricNameCompleter" class="org.onosproject.cli.MetricNameCompleter"/> | 504 | <bean id="metricNameCompleter" class="org.onosproject.cli.MetricNameCompleter"/> |
| 501 | <bean id="upDownCompleter" class="org.onosproject.cli.UpDownCompleter"/> | 505 | <bean id="upDownCompleter" class="org.onosproject.cli.UpDownCompleter"/> |
| 506 | + <bean id="encapTypeCompleter" class="org.onosproject.cli.net.EncapTypeCompleter"/> | ||
| 502 | 507 | ||
| 503 | </blueprint> | 508 | </blueprint> | ... | ... |
-
Please register or login to post a comment