Committed by
Gerrit Code Review
Added a more intuitive app management CLI; deprecated the old one for now.
Change-Id: I4f884cbf442b21c08415fe3ca3228edbbb5893f7
Showing
6 changed files
with
138 additions
and
11 deletions
... | @@ -24,6 +24,7 @@ import org.onosproject.core.ApplicationId; | ... | @@ -24,6 +24,7 @@ import org.onosproject.core.ApplicationId; |
24 | /** | 24 | /** |
25 | * Activates an installed application. | 25 | * Activates an installed application. |
26 | */ | 26 | */ |
27 | +@Deprecated | ||
27 | @Command(scope = "onos", name = "app-activate", | 28 | @Command(scope = "onos", name = "app-activate", |
28 | description = "Activates an installed application") | 29 | description = "Activates an installed application") |
29 | public class ApplicationActivateCommand extends AbstractShellCommand { | 30 | public class ApplicationActivateCommand extends AbstractShellCommand { | ... | ... |
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.cli.app; | ||
17 | + | ||
18 | +import org.apache.karaf.shell.commands.Argument; | ||
19 | +import org.apache.karaf.shell.commands.Command; | ||
20 | +import org.onosproject.app.ApplicationAdminService; | ||
21 | +import org.onosproject.cli.AbstractShellCommand; | ||
22 | +import org.onosproject.core.ApplicationId; | ||
23 | + | ||
24 | +/** | ||
25 | + * Manages application inventory. | ||
26 | + */ | ||
27 | +@Command(scope = "onos", name = "app", | ||
28 | + description = "Manages application inventory") | ||
29 | +public class ApplicationCommand extends AbstractShellCommand { | ||
30 | + | ||
31 | + static final String INSTALL = "install"; | ||
32 | + static final String UNINSTALL = "uninstall"; | ||
33 | + static final String ACTIVATE = "activate"; | ||
34 | + static final String DEACTIVATE = "deactivate"; | ||
35 | + | ||
36 | + @Argument(index = 0, name = "command", | ||
37 | + description = "Command name (activate|deactivate|uninstall)", | ||
38 | + required = true, multiValued = false) | ||
39 | + String command = null; | ||
40 | + | ||
41 | + @Argument(index = 1, name = "name", description = "Application name", | ||
42 | + required = true, multiValued = false) | ||
43 | + String name = null; | ||
44 | + | ||
45 | + @Override | ||
46 | + protected void execute() { | ||
47 | + ApplicationAdminService service = get(ApplicationAdminService.class); | ||
48 | + if (command.equals(INSTALL)) { | ||
49 | + print("Not supported via CLI yet."); | ||
50 | + | ||
51 | + } else { | ||
52 | + ApplicationId appId = service.getId(name); | ||
53 | + if (appId == null) { | ||
54 | + print("No such application: %s", name); | ||
55 | + return; | ||
56 | + } | ||
57 | + | ||
58 | + if (command.equals(UNINSTALL)) { | ||
59 | + service.uninstall(appId); | ||
60 | + } else if (command.equals(ACTIVATE)) { | ||
61 | + service.activate(appId); | ||
62 | + } else if (command.equals(DEACTIVATE)) { | ||
63 | + service.deactivate(appId); | ||
64 | + } | ||
65 | + } | ||
66 | + } | ||
67 | + | ||
68 | +} |
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.cli.app; | ||
17 | + | ||
18 | +import org.apache.karaf.shell.console.Completer; | ||
19 | +import org.apache.karaf.shell.console.completer.StringsCompleter; | ||
20 | + | ||
21 | +import java.util.List; | ||
22 | +import java.util.SortedSet; | ||
23 | + | ||
24 | +import static org.onosproject.cli.app.ApplicationCommand.*; | ||
25 | + | ||
26 | +/** | ||
27 | + * Application name completer. | ||
28 | + */ | ||
29 | +public class ApplicationCommandCompleter implements Completer { | ||
30 | + @Override | ||
31 | + public int complete(String buffer, int cursor, List<String> candidates) { | ||
32 | + // Delegate string completer | ||
33 | + StringsCompleter delegate = new StringsCompleter(); | ||
34 | + SortedSet<String> strings = delegate.getStrings(); | ||
35 | + strings.add(INSTALL); | ||
36 | + strings.add(UNINSTALL); | ||
37 | + strings.add(ACTIVATE); | ||
38 | + strings.add(DEACTIVATE); | ||
39 | + | ||
40 | + // Now let the completer do the work for figuring out what to offer. | ||
41 | + return delegate.complete(buffer, cursor, candidates); | ||
42 | + } | ||
43 | + | ||
44 | +} |
... | @@ -24,6 +24,7 @@ import org.onosproject.core.ApplicationId; | ... | @@ -24,6 +24,7 @@ import org.onosproject.core.ApplicationId; |
24 | /** | 24 | /** |
25 | * Deactivates an installed application. | 25 | * Deactivates an installed application. |
26 | */ | 26 | */ |
27 | +@Deprecated | ||
27 | @Command(scope = "onos", name = "app-deactivate", | 28 | @Command(scope = "onos", name = "app-deactivate", |
28 | description = "Deactivates an installed application") | 29 | description = "Deactivates an installed application") |
29 | public class ApplicationDeactivateCommand extends AbstractShellCommand { | 30 | public class ApplicationDeactivateCommand extends AbstractShellCommand { | ... | ... |
... | @@ -24,6 +24,7 @@ import org.onosproject.core.ApplicationId; | ... | @@ -24,6 +24,7 @@ import org.onosproject.core.ApplicationId; |
24 | /** | 24 | /** |
25 | * Uninstalls an application. | 25 | * Uninstalls an application. |
26 | */ | 26 | */ |
27 | +@Deprecated | ||
27 | @Command(scope = "onos", name = "app-uninstall", | 28 | @Command(scope = "onos", name = "app-uninstall", |
28 | description = "Uninstalls an application") | 29 | description = "Uninstalls an application") |
29 | public class ApplicationUninstallCommand extends AbstractShellCommand { | 30 | public class ApplicationUninstallCommand extends AbstractShellCommand { | ... | ... |
... | @@ -25,6 +25,16 @@ | ... | @@ -25,6 +25,16 @@ |
25 | </command> | 25 | </command> |
26 | 26 | ||
27 | <command> | 27 | <command> |
28 | + <action class="org.onosproject.cli.app.ApplicationCommand"/> | ||
29 | + <completers> | ||
30 | + <ref component-id="appCommandCompleter"/> | ||
31 | + <ref component-id="appNameCompleter"/> | ||
32 | + <null/> | ||
33 | + </completers> | ||
34 | + </command> | ||
35 | + | ||
36 | + <!-- | ||
37 | + <command> | ||
28 | <action class="org.onosproject.cli.app.ApplicationActivateCommand"/> | 38 | <action class="org.onosproject.cli.app.ApplicationActivateCommand"/> |
29 | <completers> | 39 | <completers> |
30 | <ref component-id="appNameCompleter"/> | 40 | <ref component-id="appNameCompleter"/> |
... | @@ -47,6 +57,7 @@ | ... | @@ -47,6 +57,7 @@ |
47 | <null/> | 57 | <null/> |
48 | </completers> | 58 | </completers> |
49 | </command> | 59 | </command> |
60 | + --> | ||
50 | 61 | ||
51 | <command> | 62 | <command> |
52 | <action class="org.onosproject.cli.MetricsListCommand"/> | 63 | <action class="org.onosproject.cli.MetricsListCommand"/> |
... | @@ -55,14 +66,14 @@ | ... | @@ -55,14 +66,14 @@ |
55 | <command> | 66 | <command> |
56 | <action class="org.onosproject.cli.NodesListCommand"/> | 67 | <action class="org.onosproject.cli.NodesListCommand"/> |
57 | </command> | 68 | </command> |
58 | -<!-- | 69 | + <!-- |
59 | <command> | 70 | <command> |
60 | <action class="org.onosproject.cli.NodeAddCommand"/> | 71 | <action class="org.onosproject.cli.NodeAddCommand"/> |
61 | </command> | 72 | </command> |
62 | <command> | 73 | <command> |
63 | <action class="org.onosproject.cli.NodeRemoveCommand"/> | 74 | <action class="org.onosproject.cli.NodeRemoveCommand"/> |
64 | </command> | 75 | </command> |
65 | ---> | 76 | + --> |
66 | 77 | ||
67 | <command> | 78 | <command> |
68 | <action class="org.onosproject.cli.RolesCommand"/> | 79 | <action class="org.onosproject.cli.RolesCommand"/> |
... | @@ -130,7 +141,7 @@ | ... | @@ -130,7 +141,7 @@ |
130 | <command> | 141 | <command> |
131 | <action class="org.onosproject.cli.net.IntentRemoveCommand"/> | 142 | <action class="org.onosproject.cli.net.IntentRemoveCommand"/> |
132 | <completers> | 143 | <completers> |
133 | - <ref component-id="appIdNameCompleter" /> | 144 | + <ref component-id="appIdNameCompleter"/> |
134 | <ref component-id="intentIdCompleter"/> | 145 | <ref component-id="intentIdCompleter"/> |
135 | <null/> | 146 | <null/> |
136 | </completers> | 147 | </completers> |
... | @@ -165,9 +176,9 @@ | ... | @@ -165,9 +176,9 @@ |
165 | </command> | 176 | </command> |
166 | <command> | 177 | <command> |
167 | <action class="org.onosproject.cli.net.GetStatistics"/> | 178 | <action class="org.onosproject.cli.net.GetStatistics"/> |
168 | - <completers> | 179 | + <completers> |
169 | - <ref component-id="connectPointCompleter"/> | 180 | + <ref component-id="connectPointCompleter"/> |
170 | - </completers> | 181 | + </completers> |
171 | </command> | 182 | </command> |
172 | <command> | 183 | <command> |
173 | <action class="org.onosproject.cli.net.AddMultiPointToSinglePointIntentCommand"/> | 184 | <action class="org.onosproject.cli.net.AddMultiPointToSinglePointIntentCommand"/> |
... | @@ -272,13 +283,14 @@ | ... | @@ -272,13 +283,14 @@ |
272 | <action class="org.onosproject.cli.net.WipeOutCommand"/> | 283 | <action class="org.onosproject.cli.net.WipeOutCommand"/> |
273 | </command> | 284 | </command> |
274 | <command> | 285 | <command> |
275 | - <action class="org.onosproject.cli.net.AddMplsIntent" /> | 286 | + <action class="org.onosproject.cli.net.AddMplsIntent"/> |
276 | - <completers> | 287 | + <completers> |
277 | - <ref component-id="connectPointCompleter" /> | 288 | + <ref component-id="connectPointCompleter"/> |
278 | - </completers> | 289 | + </completers> |
279 | - </command> | 290 | + </command> |
280 | </command-bundle> | 291 | </command-bundle> |
281 | 292 | ||
293 | + <bean id="appCommandCompleter" class="org.onosproject.cli.app.ApplicationCommandCompleter"/> | ||
282 | <bean id="appNameCompleter" class="org.onosproject.cli.app.ApplicationNameCompleter"/> | 294 | <bean id="appNameCompleter" class="org.onosproject.cli.app.ApplicationNameCompleter"/> |
283 | <bean id="appIdNameCompleter" class="org.onosproject.cli.app.ApplicationIdNameCompleter"/> | 295 | <bean id="appIdNameCompleter" class="org.onosproject.cli.app.ApplicationIdNameCompleter"/> |
284 | <bean id="nodeIdCompleter" class="org.onosproject.cli.NodeIdCompleter"/> | 296 | <bean id="nodeIdCompleter" class="org.onosproject.cli.NodeIdCompleter"/> | ... | ... |
-
Please register or login to post a comment