Converting builtin applications to be delivered in a self-contained manner via OAR files.
Change-Id: I5b7c6939aacc263248868fac2e0f69124c5f3609
Showing
62 changed files
with
605 additions
and
590 deletions
| ... | @@ -14,7 +14,11 @@ | ... | @@ -14,7 +14,11 @@ |
| 14 | ~ See the License for the specific language governing permissions and | 14 | ~ See the License for the specific language governing permissions and |
| 15 | ~ limitations under the License. | 15 | ~ limitations under the License. |
| 16 | --> | 16 | --> |
| 17 | -<app name="org.onosproject.bgprouter" origin="ON.Lab" version="1.2.0" | 17 | +<app name="org.onosproject.bgprouter" origin="ON.Lab" version="${feature.version}" |
| 18 | - features="onos-app-bgprouter"> | 18 | + featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" |
| 19 | - <description>BGP router application</description> | 19 | + features="${project.artifactId}"> |
| 20 | + <description>${project.description}</description> | ||
| 21 | + <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact> | ||
| 22 | + <artifact>mvn:${project.groupId}/onos-app-routing-api/${project.version}</artifact> | ||
| 23 | + <artifact>mvn:${project.groupId}/onos-app-routing/${project.version}</artifact> | ||
| 20 | </app> | 24 | </app> | ... | ... |
| 1 | +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | ||
| 1 | <!-- | 2 | <!-- |
| 2 | - ~ Copyright 2014 Open Networking Laboratory | 3 | + ~ Copyright 2015 Open Networking Laboratory |
| 3 | ~ | 4 | ~ |
| 4 | ~ Licensed under the Apache License, Version 2.0 (the "License"); | 5 | ~ 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 not use this file except in compliance with the License. |
| ... | @@ -13,15 +14,15 @@ | ... | @@ -13,15 +14,15 @@ |
| 13 | ~ See the License for the specific language governing permissions and | 14 | ~ See the License for the specific language governing permissions and |
| 14 | ~ limitations under the License. | 15 | ~ limitations under the License. |
| 15 | --> | 16 | --> |
| 16 | -<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"> | 17 | +<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="${project.artifactId}-${feature.version}"> |
| 17 | - | 18 | + <repository>mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features</repository> |
| 18 | - <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0"> | 19 | + <feature name="${project.artifactId}" version="${feature.version}" |
| 19 | - <command> | 20 | + description="${project.description}"> |
| 20 | - <action class="org.onosproject.metrics.topology.cli.TopologyEventsListCommand"/> | 21 | + <feature>onos-api</feature> |
| 21 | - </command> | 22 | + <feature>onos-app-proxyarp</feature> |
| 22 | - <command> | 23 | + <feature>onos-app-config</feature> |
| 23 | - <action class="org.onosproject.metrics.topology.cli.TopologyEventsMetricsCommand"/> | 24 | + <bundle>mvn:${project.groupId}/onos-app-bgprouter/${project.version}</bundle> |
| 24 | - </command> | 25 | + <bundle>mvn:${project.groupId}/onos-app-routing-api/${project.version}</bundle> |
| 25 | - </command-bundle> | 26 | + <bundle>mvn:${project.groupId}/onos-app-routing/${project.version}</bundle> |
| 26 | - | 27 | + </feature> |
| 27 | -</blueprint> | 28 | +</features> | ... | ... |
| ... | @@ -14,7 +14,9 @@ | ... | @@ -14,7 +14,9 @@ |
| 14 | ~ See the License for the specific language governing permissions and | 14 | ~ See the License for the specific language governing permissions and |
| 15 | ~ limitations under the License. | 15 | ~ limitations under the License. |
| 16 | --> | 16 | --> |
| 17 | -<app name="org.onosproject.config" origin="ON.Lab" version="1.2.0" | 17 | +<app name="org.onosproject.config" origin="ON.Lab" version="${feature.version}" |
| 18 | - features="onos-app-config"> | 18 | + featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" |
| 19 | - <description>Network configuration application</description> | 19 | + features="${project.artifactId}"> |
| 20 | + <description>${project.description}</description> | ||
| 21 | + <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact> | ||
| 20 | </app> | 22 | </app> | ... | ... |
| ... | @@ -29,7 +29,7 @@ | ... | @@ -29,7 +29,7 @@ |
| 29 | <artifactId>onos-app-config</artifactId> | 29 | <artifactId>onos-app-config</artifactId> |
| 30 | <packaging>bundle</packaging> | 30 | <packaging>bundle</packaging> |
| 31 | 31 | ||
| 32 | - <description>ONOS simple network configuration reader</description> | 32 | + <description>Network configuration application</description> |
| 33 | 33 | ||
| 34 | <dependencies> | 34 | <dependencies> |
| 35 | <dependency> | 35 | <dependency> | ... | ... |
| ... | @@ -14,7 +14,9 @@ | ... | @@ -14,7 +14,9 @@ |
| 14 | ~ See the License for the specific language governing permissions and | 14 | ~ See the License for the specific language governing permissions and |
| 15 | ~ limitations under the License. | 15 | ~ limitations under the License. |
| 16 | --> | 16 | --> |
| 17 | -<app name="org.onosproject.fwd" origin="ON.Lab" version="1.2.0" | 17 | +<app name="org.onosproject.fwd" origin="ON.Lab" version="${feature.version}" |
| 18 | - features="onos-app-fwd"> | 18 | + featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" |
| 19 | - <description>Reactive forwarding application using flow subsystem</description> | 19 | + features="${project.artifactId}"> |
| 20 | + <description>${project.description}</description> | ||
| 21 | + <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact> | ||
| 20 | </app> | 22 | </app> | ... | ... |
| ... | @@ -29,7 +29,7 @@ | ... | @@ -29,7 +29,7 @@ |
| 29 | <artifactId>onos-app-fwd</artifactId> | 29 | <artifactId>onos-app-fwd</artifactId> |
| 30 | <packaging>bundle</packaging> | 30 | <packaging>bundle</packaging> |
| 31 | 31 | ||
| 32 | - <description>ONOS simple reactive forwarding app</description> | 32 | + <description>Reactive forwarding application using flow subsystem</description> |
| 33 | 33 | ||
| 34 | <dependencies> | 34 | <dependencies> |
| 35 | <dependency> | 35 | <dependency> | ... | ... |
| ... | @@ -14,7 +14,9 @@ | ... | @@ -14,7 +14,9 @@ |
| 14 | ~ See the License for the specific language governing permissions and | 14 | ~ See the License for the specific language governing permissions and |
| 15 | ~ limitations under the License. | 15 | ~ limitations under the License. |
| 16 | --> | 16 | --> |
| 17 | -<app name="org.onosproject.metrics" origin="ON.Lab" version="1.2.0" | 17 | +<app name="org.onosproject.metrics" origin="ON.Lab" version="${feature.version}" |
| 18 | - features="onos-app-metrics"> | 18 | + featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" |
| 19 | - <description>Performance metrics collection</description> | 19 | + features="${project.artifactId}"> |
| 20 | + <description>${project.description}</description> | ||
| 21 | + <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact> | ||
| 20 | </app> | 22 | </app> | ... | ... |
| ... | @@ -17,40 +17,49 @@ | ... | @@ -17,40 +17,49 @@ |
| 17 | <project xmlns="http://maven.apache.org/POM/4.0.0" | 17 | <project xmlns="http://maven.apache.org/POM/4.0.0" |
| 18 | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | 18 | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| 19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> | 19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> |
| 20 | - <modelVersion>4.0.0</modelVersion> | 20 | + <modelVersion>4.0.0</modelVersion> |
| 21 | - | 21 | + |
| 22 | - <parent> | 22 | + <parent> |
| 23 | - <groupId>org.onosproject</groupId> | 23 | + <groupId>org.onosproject</groupId> |
| 24 | - <artifactId>onos-apps</artifactId> | 24 | + <artifactId>onos-apps</artifactId> |
| 25 | - <version>1.2.0-SNAPSHOT</version> | 25 | + <version>1.2.0-SNAPSHOT</version> |
| 26 | - <relativePath>../pom.xml</relativePath> | 26 | + <relativePath>../pom.xml</relativePath> |
| 27 | - </parent> | 27 | + </parent> |
| 28 | - | 28 | + |
| 29 | - <artifactId>onos-app-metrics</artifactId> | 29 | + <artifactId>onos-app-metrics</artifactId> |
| 30 | - <packaging>pom</packaging> | 30 | + <packaging>bundle</packaging> |
| 31 | - | 31 | + |
| 32 | - <description>ONOS metrics applications</description> | 32 | + <description>Performance metrics collection</description> |
| 33 | - | 33 | + |
| 34 | - <modules> | 34 | + <dependencies> |
| 35 | - <module>intent</module> | 35 | + <dependency> |
| 36 | - <module>topology</module> | 36 | + <groupId>org.onosproject</groupId> |
| 37 | - </modules> | 37 | + <artifactId>onlab-misc</artifactId> |
| 38 | - | 38 | + </dependency> |
| 39 | - <dependencies> | 39 | + |
| 40 | - <dependency> | 40 | + <dependency> |
| 41 | - <groupId>org.onosproject</groupId> | 41 | + <groupId>org.onosproject</groupId> |
| 42 | - <artifactId>onlab-misc</artifactId> | 42 | + <artifactId>onos-cli</artifactId> |
| 43 | - </dependency> | 43 | + <version>${project.version}</version> |
| 44 | - | 44 | + </dependency> |
| 45 | - <dependency> | 45 | + <dependency> |
| 46 | - <groupId>com.fasterxml.jackson.core</groupId> | 46 | + <groupId>org.osgi</groupId> |
| 47 | - <artifactId>jackson-databind</artifactId> | 47 | + <artifactId>org.osgi.core</artifactId> |
| 48 | - </dependency> | 48 | + </dependency> |
| 49 | - <dependency> | 49 | + |
| 50 | - <groupId>com.fasterxml.jackson.core</groupId> | 50 | + <dependency> |
| 51 | - <artifactId>jackson-annotations</artifactId> | 51 | + <groupId>org.apache.karaf.shell</groupId> |
| 52 | - </dependency> | 52 | + <artifactId>org.apache.karaf.shell.console</artifactId> |
| 53 | - | 53 | + </dependency> |
| 54 | - </dependencies> | 54 | + |
| 55 | + <dependency> | ||
| 56 | + <groupId>com.fasterxml.jackson.core</groupId> | ||
| 57 | + <artifactId>jackson-databind</artifactId> | ||
| 58 | + </dependency> | ||
| 59 | + <dependency> | ||
| 60 | + <groupId>com.fasterxml.jackson.core</groupId> | ||
| 61 | + <artifactId>jackson-annotations</artifactId> | ||
| 62 | + </dependency> | ||
| 63 | + </dependencies> | ||
| 55 | 64 | ||
| 56 | </project> | 65 | </project> | ... | ... |
| ... | @@ -14,14 +14,19 @@ | ... | @@ -14,14 +14,19 @@ |
| 14 | ~ limitations under the License. | 14 | ~ limitations under the License. |
| 15 | --> | 15 | --> |
| 16 | <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"> | 16 | <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"> |
| 17 | + <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0"> | ||
| 18 | + <command> | ||
| 19 | + <action class="org.onosproject.metrics.intent.cli.IntentEventsListCommand"/> | ||
| 20 | + </command> | ||
| 21 | + <command> | ||
| 22 | + <action class="org.onosproject.metrics.intent.cli.IntentEventsMetricsCommand"/> | ||
| 23 | + </command> | ||
| 17 | 24 | ||
| 18 | - <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0"> | 25 | + <command> |
| 19 | - <command> | 26 | + <action class="org.onosproject.metrics.topology.cli.TopologyEventsListCommand"/> |
| 20 | - <action class="org.onosproject.metrics.intent.cli.IntentEventsListCommand"/> | 27 | + </command> |
| 21 | - </command> | 28 | + <command> |
| 22 | - <command> | 29 | + <action class="org.onosproject.metrics.topology.cli.TopologyEventsMetricsCommand"/> |
| 23 | - <action class="org.onosproject.metrics.intent.cli.IntentEventsMetricsCommand"/> | 30 | + </command> |
| 24 | - </command> | 31 | + </command-bundle> |
| 25 | - </command-bundle> | ||
| 26 | - | ||
| 27 | </blueprint> | 32 | </blueprint> | ... | ... |
apps/metrics/topology/pom.xml
deleted
100644 → 0
| 1 | -<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | -<!-- | ||
| 3 | - ~ Copyright 2014 Open Networking Laboratory | ||
| 4 | - ~ | ||
| 5 | - ~ Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 6 | - ~ you may not use this file except in compliance with the License. | ||
| 7 | - ~ You may obtain a copy of the License at | ||
| 8 | - ~ | ||
| 9 | - ~ http://www.apache.org/licenses/LICENSE-2.0 | ||
| 10 | - ~ | ||
| 11 | - ~ Unless required by applicable law or agreed to in writing, software | ||
| 12 | - ~ distributed under the License is distributed on an "AS IS" BASIS, | ||
| 13 | - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 14 | - ~ See the License for the specific language governing permissions and | ||
| 15 | - ~ limitations under the License. | ||
| 16 | - --> | ||
| 17 | -<project xmlns="http://maven.apache.org/POM/4.0.0" | ||
| 18 | - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
| 19 | - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> | ||
| 20 | - <modelVersion>4.0.0</modelVersion> | ||
| 21 | - | ||
| 22 | - <parent> | ||
| 23 | - <groupId>org.onosproject</groupId> | ||
| 24 | - <artifactId>onos-app-metrics</artifactId> | ||
| 25 | - <version>1.2.0-SNAPSHOT</version> | ||
| 26 | - <relativePath>../pom.xml</relativePath> | ||
| 27 | - </parent> | ||
| 28 | - | ||
| 29 | - <artifactId>onos-app-metrics-topology</artifactId> | ||
| 30 | - <packaging>bundle</packaging> | ||
| 31 | - | ||
| 32 | - <description>ONOS topology metrics application</description> | ||
| 33 | - | ||
| 34 | - <dependencies> | ||
| 35 | - <dependency> | ||
| 36 | - <groupId>org.onosproject</groupId> | ||
| 37 | - <artifactId>onos-cli</artifactId> | ||
| 38 | - <version>${project.version}</version> | ||
| 39 | - </dependency> | ||
| 40 | - <dependency> | ||
| 41 | - <groupId>org.osgi</groupId> | ||
| 42 | - <artifactId>org.osgi.core</artifactId> | ||
| 43 | - </dependency> | ||
| 44 | - | ||
| 45 | - <dependency> | ||
| 46 | - <groupId>org.apache.karaf.shell</groupId> | ||
| 47 | - <artifactId>org.apache.karaf.shell.console</artifactId> | ||
| 48 | - </dependency> | ||
| 49 | - </dependencies> | ||
| 50 | - | ||
| 51 | -</project> |
| ... | @@ -14,7 +14,9 @@ | ... | @@ -14,7 +14,9 @@ |
| 14 | ~ See the License for the specific language governing permissions and | 14 | ~ See the License for the specific language governing permissions and |
| 15 | ~ limitations under the License. | 15 | ~ limitations under the License. |
| 16 | --> | 16 | --> |
| 17 | -<app name="org.onosproject.mobility" origin="ON.Lab" version="1.2.0" | 17 | +<app name="org.onosproject.mobility" origin="ON.Lab" version="${feature.version}" |
| 18 | - features="onos-app-mobility"> | 18 | + featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" |
| 19 | - <description>Host mobility application</description> | 19 | + features="${project.artifactId}"> |
| 20 | + <description>${project.description}</description> | ||
| 21 | + <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact> | ||
| 20 | </app> | 22 | </app> | ... | ... |
| ... | @@ -29,7 +29,7 @@ | ... | @@ -29,7 +29,7 @@ |
| 29 | <artifactId>onos-app-mobility</artifactId> | 29 | <artifactId>onos-app-mobility</artifactId> |
| 30 | <packaging>bundle</packaging> | 30 | <packaging>bundle</packaging> |
| 31 | 31 | ||
| 32 | - <description>ONOS simple Mobility app</description> | 32 | + <description>Host mobility application</description> |
| 33 | 33 | ||
| 34 | <dependencies> | 34 | <dependencies> |
| 35 | <dependency> | 35 | <dependency> | ... | ... |
| ... | @@ -14,7 +14,9 @@ | ... | @@ -14,7 +14,9 @@ |
| 14 | ~ See the License for the specific language governing permissions and | 14 | ~ See the License for the specific language governing permissions and |
| 15 | ~ limitations under the License. | 15 | ~ limitations under the License. |
| 16 | --> | 16 | --> |
| 17 | -<app name="org.onosproject.optical" origin="ON.Lab" version="1.2.0" | 17 | +<app name="org.onosproject.optical" origin="ON.Lab" version="${feature.version}" |
| 18 | - features="onos-app-optical"> | 18 | + featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" |
| 19 | - <description>Packet/Optical use-case application</description> | 19 | + features="${project.artifactId}"> |
| 20 | + <description>${project.description}</description> | ||
| 21 | + <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact> | ||
| 20 | </app> | 22 | </app> | ... | ... |
| ... | @@ -29,7 +29,7 @@ | ... | @@ -29,7 +29,7 @@ |
| 29 | <artifactId>onos-app-optical</artifactId> | 29 | <artifactId>onos-app-optical</artifactId> |
| 30 | <packaging>bundle</packaging> | 30 | <packaging>bundle</packaging> |
| 31 | 31 | ||
| 32 | - <description>ONOS application for packet/optical deployments</description> | 32 | + <description>Packet/Optical use-case application</description> |
| 33 | 33 | ||
| 34 | <dependencies> | 34 | <dependencies> |
| 35 | 35 | ... | ... |
| ... | @@ -14,7 +14,9 @@ | ... | @@ -14,7 +14,9 @@ |
| 14 | ~ See the License for the specific language governing permissions and | 14 | ~ See the License for the specific language governing permissions and |
| 15 | ~ limitations under the License. | 15 | ~ limitations under the License. |
| 16 | --> | 16 | --> |
| 17 | -<app name="org.onosproject.proxyarp" origin="ON.Lab" version="1.2.0" | 17 | +<app name="org.onosproject.proxyarp" origin="ON.Lab" version="${feature.version}" |
| 18 | - features="onos-app-proxyarp"> | 18 | + featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" |
| 19 | - <description>Proxy ARP/NDP application</description> | 19 | + features="${project.artifactId}"> |
| 20 | + <description>${project.description}</description> | ||
| 21 | + <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact> | ||
| 20 | </app> | 22 | </app> | ... | ... |
| ... | @@ -29,7 +29,7 @@ | ... | @@ -29,7 +29,7 @@ |
| 29 | <artifactId>onos-app-proxyarp</artifactId> | 29 | <artifactId>onos-app-proxyarp</artifactId> |
| 30 | <packaging>bundle</packaging> | 30 | <packaging>bundle</packaging> |
| 31 | 31 | ||
| 32 | - <description>ONOS simple proxy arp module</description> | 32 | + <description>Proxy ARP/NDP application</description> |
| 33 | 33 | ||
| 34 | <dependencies> | 34 | <dependencies> |
| 35 | <dependency> | 35 | <dependency> | ... | ... |
| ... | @@ -14,7 +14,9 @@ | ... | @@ -14,7 +14,9 @@ |
| 14 | ~ See the License for the specific language governing permissions and | 14 | ~ See the License for the specific language governing permissions and |
| 15 | ~ limitations under the License. | 15 | ~ limitations under the License. |
| 16 | --> | 16 | --> |
| 17 | -<app name="org.onosproject.reactive.routing" origin="ON.Lab" version="1.2.0" | 17 | +<app name="org.onosproject.routing" origin="ON.Lab" version="${feature.version}" |
| 18 | - features="onos-app-reactive-routing"> | 18 | + featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" |
| 19 | - <description> ONOS SDN/IP reactive routing </description> | 19 | + features="${project.artifactId}"> |
| 20 | + <description>${project.description}</description> | ||
| 21 | + <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact> | ||
| 20 | </app> | 22 | </app> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -14,38 +14,34 @@ | ... | @@ -14,38 +14,34 @@ |
| 14 | ~ See the License for the specific language governing permissions and | 14 | ~ See the License for the specific language governing permissions and |
| 15 | ~ limitations under the License. | 15 | ~ limitations under the License. |
| 16 | --> | 16 | --> |
| 17 | -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | 17 | +<project xmlns="http://maven.apache.org/POM/4.0.0" |
| 18 | - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | 18 | + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| 19 | - <modelVersion>4.0.0</modelVersion> | 19 | + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| 20 | + <modelVersion>4.0.0</modelVersion> | ||
| 20 | 21 | ||
| 21 | - <artifactId>onos-app-reactive-routing</artifactId> | 22 | + <artifactId>onos-app-reactive-routing</artifactId> |
| 22 | - <packaging>bundle</packaging> | 23 | + <packaging>bundle</packaging> |
| 23 | - <description> SDN-IP reactive routing </description> | 24 | + <description>SDN-IP reactive routing application</description> |
| 24 | 25 | ||
| 25 | - <parent> | 26 | + <parent> |
| 26 | - <groupId>org.onosproject</groupId> | 27 | + <groupId>org.onosproject</groupId> |
| 27 | - <artifactId>onos-apps</artifactId> | 28 | + <artifactId>onos-apps</artifactId> |
| 28 | - <version>1.2.0-SNAPSHOT</version> | 29 | + <version>1.2.0-SNAPSHOT</version> |
| 29 | - <relativePath>../pom.xml</relativePath> | 30 | + <relativePath>../pom.xml</relativePath> |
| 30 | - </parent> | 31 | + </parent> |
| 31 | 32 | ||
| 32 | - <dependencies> | 33 | + <dependencies> |
| 33 | - <dependency> | 34 | + <dependency> |
| 34 | - <groupId>org.onosproject</groupId> | 35 | + <groupId>org.onosproject</groupId> |
| 35 | - <artifactId>onos-app-routing-api</artifactId> | 36 | + <artifactId>onos-app-routing-api</artifactId> |
| 36 | - <version>${project.version}</version> | 37 | + <version>${project.version}</version> |
| 37 | - </dependency> | 38 | + </dependency> |
| 38 | 39 | ||
| 39 | - <dependency> | 40 | + <dependency> |
| 40 | - <groupId>org.onosproject</groupId> | 41 | + <groupId>org.onosproject</groupId> |
| 41 | - <artifactId>onos-app-routing</artifactId> | 42 | + <artifactId>onos-app-routing</artifactId> |
| 42 | - <version>${project.version}</version> | 43 | + <version>${project.version}</version> |
| 43 | - </dependency> | 44 | + </dependency> |
| 44 | - | 45 | + </dependencies> |
| 45 | - <dependency> | ||
| 46 | - <groupId>org.onosproject</groupId> | ||
| 47 | - <artifactId>onos-api</artifactId> | ||
| 48 | - </dependency> | ||
| 49 | - </dependencies> | ||
| 50 | 46 | ||
| 51 | </project> | 47 | </project> |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -14,7 +14,11 @@ | ... | @@ -14,7 +14,11 @@ |
| 14 | ~ See the License for the specific language governing permissions and | 14 | ~ See the License for the specific language governing permissions and |
| 15 | ~ limitations under the License. | 15 | ~ limitations under the License. |
| 16 | --> | 16 | --> |
| 17 | -<app name="org.onosproject.sdnip" origin="ON.Lab" version="1.2.0" | 17 | +<app name="org.onosproject.sdnip" origin="ON.Lab" version="${feature.version}" |
| 18 | - features="onos-app-sdnip"> | 18 | + featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" |
| 19 | - <description>SDN/IP use-case application</description> | 19 | + features="${project.artifactId}"> |
| 20 | + <description>${project.description}</description> | ||
| 21 | + <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact> | ||
| 22 | + <artifact>mvn:${project.groupId}/onos-app-routing-api/${project.version}</artifact> | ||
| 23 | + <artifact>mvn:${project.groupId}/onos-app-routing/${project.version}</artifact> | ||
| 20 | </app> | 24 | </app> | ... | ... |
apps/sdnip/features.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | ||
| 2 | +<!-- | ||
| 3 | + ~ Copyright 2015 Open Networking Laboratory | ||
| 4 | + ~ | ||
| 5 | + ~ Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 6 | + ~ you may not use this file except in compliance with the License. | ||
| 7 | + ~ You may obtain a copy of the License at | ||
| 8 | + ~ | ||
| 9 | + ~ http://www.apache.org/licenses/LICENSE-2.0 | ||
| 10 | + ~ | ||
| 11 | + ~ Unless required by applicable law or agreed to in writing, software | ||
| 12 | + ~ distributed under the License is distributed on an "AS IS" BASIS, | ||
| 13 | + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 14 | + ~ See the License for the specific language governing permissions and | ||
| 15 | + ~ limitations under the License. | ||
| 16 | + --> | ||
| 17 | +<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="${project.artifactId}-${feature.version}"> | ||
| 18 | + <repository>mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features</repository> | ||
| 19 | + <feature name="onos-app-sdnip" version="${feature.version}" | ||
| 20 | + description="${project.description}"> | ||
| 21 | + <feature>onos-api</feature> | ||
| 22 | + <feature>onos-app-proxyarp</feature> | ||
| 23 | + <feature>onos-app-config</feature> | ||
| 24 | + <bundle>mvn:${project.groupId}/onos-app-sdnip/${project.version}</bundle> | ||
| 25 | + <bundle>mvn:${project.groupId}/onos-app-bgprouter/${project.version}</bundle> | ||
| 26 | + <bundle>mvn:${project.groupId}/onos-app-routing-api/${project.version}</bundle> | ||
| 27 | + <bundle>mvn:${project.groupId}/onos-app-routing/${project.version}</bundle> | ||
| 28 | + </feature> | ||
| 29 | +</features> |
| ... | @@ -17,78 +17,78 @@ | ... | @@ -17,78 +17,78 @@ |
| 17 | <project xmlns="http://maven.apache.org/POM/4.0.0" | 17 | <project xmlns="http://maven.apache.org/POM/4.0.0" |
| 18 | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | 18 | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| 19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> | 19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> |
| 20 | - <modelVersion>4.0.0</modelVersion> | 20 | + <modelVersion>4.0.0</modelVersion> |
| 21 | 21 | ||
| 22 | - <parent> | 22 | + <parent> |
| 23 | - <groupId>org.onosproject</groupId> | 23 | + <groupId>org.onosproject</groupId> |
| 24 | - <artifactId>onos-apps</artifactId> | 24 | + <artifactId>onos-apps</artifactId> |
| 25 | - <version>1.2.0-SNAPSHOT</version> | 25 | + <version>1.2.0-SNAPSHOT</version> |
| 26 | - <relativePath>../pom.xml</relativePath> | 26 | + <relativePath>../pom.xml</relativePath> |
| 27 | - </parent> | 27 | + </parent> |
| 28 | 28 | ||
| 29 | - <artifactId>onos-app-sdnip</artifactId> | 29 | + <artifactId>onos-app-sdnip</artifactId> |
| 30 | - <packaging>bundle</packaging> | 30 | + <packaging>bundle</packaging> |
| 31 | 31 | ||
| 32 | - <description>SDN-IP peering application</description> | 32 | + <description>SDN-IP peering application</description> |
| 33 | 33 | ||
| 34 | - <dependencies> | 34 | + <dependencies> |
| 35 | - <dependency> | 35 | + <dependency> |
| 36 | - <groupId>com.google.guava</groupId> | 36 | + <groupId>com.google.guava</groupId> |
| 37 | - <artifactId>guava</artifactId> | 37 | + <artifactId>guava</artifactId> |
| 38 | - </dependency> | 38 | + </dependency> |
| 39 | 39 | ||
| 40 | - <dependency> | 40 | + <dependency> |
| 41 | - <groupId>org.onosproject</groupId> | 41 | + <groupId>org.onosproject</groupId> |
| 42 | - <artifactId>onlab-misc</artifactId> | 42 | + <artifactId>onlab-misc</artifactId> |
| 43 | - </dependency> | 43 | + </dependency> |
| 44 | 44 | ||
| 45 | - <dependency> | 45 | + <dependency> |
| 46 | - <groupId>org.onosproject</groupId> | 46 | + <groupId>org.onosproject</groupId> |
| 47 | - <artifactId>onlab-junit</artifactId> | 47 | + <artifactId>onlab-junit</artifactId> |
| 48 | - <scope>test</scope> | 48 | + <scope>test</scope> |
| 49 | - </dependency> | 49 | + </dependency> |
| 50 | 50 | ||
| 51 | - <dependency> | 51 | + <dependency> |
| 52 | - <groupId>org.onosproject</groupId> | 52 | + <groupId>org.onosproject</groupId> |
| 53 | - <artifactId>onos-api</artifactId> | 53 | + <artifactId>onos-api</artifactId> |
| 54 | - <version>${project.version}</version> | 54 | + <version>${project.version}</version> |
| 55 | - <scope>test</scope> | 55 | + <scope>test</scope> |
| 56 | - <classifier>tests</classifier> | 56 | + <classifier>tests</classifier> |
| 57 | - </dependency> | 57 | + </dependency> |
| 58 | 58 | ||
| 59 | - <dependency> | 59 | + <dependency> |
| 60 | - <groupId>org.onosproject</groupId> | 60 | + <groupId>org.onosproject</groupId> |
| 61 | - <artifactId>onos-app-routing-api</artifactId> | 61 | + <artifactId>onos-app-routing</artifactId> |
| 62 | - <version>${project.version}</version> | 62 | + <version>${project.version}</version> |
| 63 | - </dependency> | 63 | + </dependency> |
| 64 | 64 | ||
| 65 | - <dependency> | 65 | + <dependency> |
| 66 | - <groupId>org.onosproject</groupId> | 66 | + <groupId>org.onosproject</groupId> |
| 67 | - <artifactId>onos-cli</artifactId> | 67 | + <artifactId>onos-cli</artifactId> |
| 68 | - <version>${project.version}</version> | 68 | + <version>${project.version}</version> |
| 69 | - </dependency> | 69 | + </dependency> |
| 70 | 70 | ||
| 71 | - <dependency> | 71 | + <dependency> |
| 72 | - <groupId>org.onosproject</groupId> | 72 | + <groupId>org.onosproject</groupId> |
| 73 | - <artifactId>onos-app-config</artifactId> | 73 | + <artifactId>onos-app-config</artifactId> |
| 74 | - <version>${project.version}</version> | 74 | + <version>${project.version}</version> |
| 75 | - </dependency> | 75 | + </dependency> |
| 76 | 76 | ||
| 77 | - <dependency> | 77 | + <dependency> |
| 78 | - <groupId>org.apache.karaf.shell</groupId> | 78 | + <groupId>org.apache.karaf.shell</groupId> |
| 79 | - <artifactId>org.apache.karaf.shell.console</artifactId> | 79 | + <artifactId>org.apache.karaf.shell.console</artifactId> |
| 80 | - </dependency> | 80 | + </dependency> |
| 81 | 81 | ||
| 82 | - <dependency> | 82 | + <dependency> |
| 83 | - <groupId>org.osgi</groupId> | 83 | + <groupId>org.osgi</groupId> |
| 84 | - <artifactId>org.osgi.core</artifactId> | 84 | + <artifactId>org.osgi.core</artifactId> |
| 85 | - </dependency> | 85 | + </dependency> |
| 86 | 86 | ||
| 87 | - <dependency> | 87 | + <dependency> |
| 88 | - <groupId>org.easymock</groupId> | 88 | + <groupId>org.easymock</groupId> |
| 89 | - <artifactId>easymock</artifactId> | 89 | + <artifactId>easymock</artifactId> |
| 90 | - <scope>test</scope> | 90 | + <scope>test</scope> |
| 91 | - </dependency> | 91 | + </dependency> |
| 92 | - </dependencies> | 92 | + </dependencies> |
| 93 | 93 | ||
| 94 | </project> | 94 | </project> | ... | ... |
| ... | @@ -14,7 +14,10 @@ | ... | @@ -14,7 +14,10 @@ |
| 14 | ~ See the License for the specific language governing permissions and | 14 | ~ See the License for the specific language governing permissions and |
| 15 | ~ limitations under the License. | 15 | ~ limitations under the License. |
| 16 | --> | 16 | --> |
| 17 | -<app name="org.onosproject.intentperf" origin="ON.Lab" version="1.2.0" | ||
| 18 | - features="onos-app-intent-perf"> | ||
| 19 | - <description>Intent performance test application</description> | ||
| 20 | -</app> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 17 | +<app name="org.onosproject.segmentrouting" origin="ON.Lab" version="${feature.version}" | ||
| 18 | + featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" | ||
| 19 | + features="${project.artifactId}"> | ||
| 20 | + <description>${project.description}</description> | ||
| 21 | + <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact> | ||
| 22 | +</app> | ||
| 23 | + | ... | ... |
| ... | @@ -13,26 +13,21 @@ | ... | @@ -13,26 +13,21 @@ |
| 13 | ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 13 | ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 14 | ~ See the License for the specific language governing permissions and | 14 | ~ See the License for the specific language governing permissions and |
| 15 | ~ limitations under the License. | 15 | ~ limitations under the License. |
| 16 | - --><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | 16 | + --> |
| 17 | +<project xmlns="http://maven.apache.org/POM/4.0.0" | ||
| 18 | + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
| 19 | + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | ||
| 17 | <modelVersion>4.0.0</modelVersion> | 20 | <modelVersion>4.0.0</modelVersion> |
| 18 | <parent> | 21 | <parent> |
| 19 | - <artifactId>onos-apps</artifactId> | 22 | + <artifactId>onos-apps</artifactId> |
| 20 | - <groupId>org.onosproject</groupId> | 23 | + <groupId>org.onosproject</groupId> |
| 21 | - <version>1.2.0-SNAPSHOT</version> | 24 | + <version>1.2.0-SNAPSHOT</version> |
| 22 | - </parent> | 25 | + <relativePath>../pom.xml</relativePath> |
| 26 | + </parent> | ||
| 23 | 27 | ||
| 24 | <artifactId>onos-app-segmentrouting</artifactId> | 28 | <artifactId>onos-app-segmentrouting</artifactId> |
| 25 | <packaging>bundle</packaging> | 29 | <packaging>bundle</packaging> |
| 26 | 30 | ||
| 27 | - <description>ONOS OSGi bundle archetype</description> | 31 | + <description>Segment routing application</description> |
| 28 | - <url>http://onosproject.org</url> | ||
| 29 | - | ||
| 30 | - <dependencies> | ||
| 31 | - <dependency> | ||
| 32 | - <groupId>org.onosproject</groupId> | ||
| 33 | - <artifactId>onos-app-grouphandler</artifactId> | ||
| 34 | - <version>1.2.0-SNAPSHOT</version> | ||
| 35 | - </dependency> | ||
| 36 | - </dependencies> | ||
| 37 | 32 | ||
| 38 | </project> | 33 | </project> | ... | ... |
| ... | @@ -14,7 +14,10 @@ | ... | @@ -14,7 +14,10 @@ |
| 14 | ~ See the License for the specific language governing permissions and | 14 | ~ See the License for the specific language governing permissions and |
| 15 | ~ limitations under the License. | 15 | ~ limitations under the License. |
| 16 | --> | 16 | --> |
| 17 | -<app name="org.onosproject.demo" origin="ON.Lab" version="1.2.0" | 17 | +<app name="org.onosproject.demo" origin="ON.Lab" version="${feature.version}" |
| 18 | - features="onos-app-demo"> | 18 | + featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" |
| 19 | - <description>Flow throughput test application</description> | 19 | + features="${project.artifactId}"> |
| 20 | + <description>${project.description}</description> | ||
| 21 | + <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact> | ||
| 20 | </app> | 22 | </app> |
| 23 | + | ... | ... |
| ... | @@ -29,7 +29,7 @@ | ... | @@ -29,7 +29,7 @@ |
| 29 | <artifactId>onos-app-demo</artifactId> | 29 | <artifactId>onos-app-demo</artifactId> |
| 30 | <packaging>bundle</packaging> | 30 | <packaging>bundle</packaging> |
| 31 | 31 | ||
| 32 | - <description>ONOS demo app bundle</description> | 32 | + <description>Flow throughput test application</description> |
| 33 | 33 | ||
| 34 | <properties> | 34 | <properties> |
| 35 | <web.context>/onos/demo</web.context> | 35 | <web.context>/onos/demo</web.context> | ... | ... |
| ... | @@ -14,7 +14,9 @@ | ... | @@ -14,7 +14,9 @@ |
| 14 | ~ See the License for the specific language governing permissions and | 14 | ~ See the License for the specific language governing permissions and |
| 15 | ~ limitations under the License. | 15 | ~ limitations under the License. |
| 16 | --> | 16 | --> |
| 17 | -<app name="org.onosproject.election" origin="ON.Lab" version="1.2.0" | 17 | +<app name="org.onosproject.election" origin="ON.Lab" version="${feature.version}" |
| 18 | - features="onos-app-election"> | 18 | + featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" |
| 19 | - <description>Master election test application</description> | 19 | + features="${project.artifactId}"> |
| 20 | + <description>${project.description}</description> | ||
| 21 | + <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact> | ||
| 20 | </app> | 22 | </app> | ... | ... |
| ... | @@ -30,7 +30,7 @@ | ... | @@ -30,7 +30,7 @@ |
| 30 | <artifactId>onos-app-election</artifactId> | 30 | <artifactId>onos-app-election</artifactId> |
| 31 | <packaging>bundle</packaging> | 31 | <packaging>bundle</packaging> |
| 32 | 32 | ||
| 33 | - <description>ONOS app leadership election test</description> | 33 | + <description>Master election test application</description> |
| 34 | 34 | ||
| 35 | <dependencies> | 35 | <dependencies> |
| 36 | 36 | ... | ... |
| ... | @@ -14,7 +14,9 @@ | ... | @@ -14,7 +14,9 @@ |
| 14 | ~ See the License for the specific language governing permissions and | 14 | ~ See the License for the specific language governing permissions and |
| 15 | ~ limitations under the License. | 15 | ~ limitations under the License. |
| 16 | --> | 16 | --> |
| 17 | -<app name="org.onosproject.openflow" origin="ON.Lab" version="1.2.0" | 17 | +<app name="org.onosproject.intentperf" origin="ON.Lab" version="${feature.version}" |
| 18 | - features="onos-openflow"> | 18 | + featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" |
| 19 | - <description>OpenFlow protocol southbound providers</description> | 19 | + features="${project.artifactId}"> |
| 20 | + <description>${project.description}</description> | ||
| 21 | + <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact> | ||
| 20 | </app> | 22 | </app> | ... | ... |
| ... | @@ -29,15 +29,10 @@ | ... | @@ -29,15 +29,10 @@ |
| 29 | <artifactId>onos-app-intent-perf</artifactId> | 29 | <artifactId>onos-app-intent-perf</artifactId> |
| 30 | <packaging>bundle</packaging> | 30 | <packaging>bundle</packaging> |
| 31 | 31 | ||
| 32 | - <description>ONOS intent perf app bundle</description> | 32 | + <description>Intent performance test application</description> |
| 33 | 33 | ||
| 34 | <dependencies> | 34 | <dependencies> |
| 35 | <dependency> | 35 | <dependency> |
| 36 | - <groupId>org.apache.karaf.shell</groupId> | ||
| 37 | - <artifactId>org.apache.karaf.shell.console</artifactId> | ||
| 38 | - </dependency> | ||
| 39 | - | ||
| 40 | - <dependency> | ||
| 41 | <groupId>org.onosproject</groupId> | 36 | <groupId>org.onosproject</groupId> |
| 42 | <artifactId>onos-cli</artifactId> | 37 | <artifactId>onos-cli</artifactId> |
| 43 | <version>${project.version}</version> | 38 | <version>${project.version}</version> |
| ... | @@ -46,6 +41,10 @@ | ... | @@ -46,6 +41,10 @@ |
| 46 | <groupId>org.osgi</groupId> | 41 | <groupId>org.osgi</groupId> |
| 47 | <artifactId>org.osgi.compendium</artifactId> | 42 | <artifactId>org.osgi.compendium</artifactId> |
| 48 | </dependency> | 43 | </dependency> |
| 44 | + <dependency> | ||
| 45 | + <groupId>org.apache.karaf.shell</groupId> | ||
| 46 | + <artifactId>org.apache.karaf.shell.console</artifactId> | ||
| 47 | + </dependency> | ||
| 49 | <!-- Required for javadoc generation --> | 48 | <!-- Required for javadoc generation --> |
| 50 | <dependency> | 49 | <dependency> |
| 51 | <groupId>org.osgi</groupId> | 50 | <groupId>org.osgi</groupId> |
| ... | @@ -53,24 +52,4 @@ | ... | @@ -53,24 +52,4 @@ |
| 53 | </dependency> | 52 | </dependency> |
| 54 | </dependencies> | 53 | </dependencies> |
| 55 | 54 | ||
| 56 | - <build> | ||
| 57 | - <plugins> | ||
| 58 | - <plugin> | ||
| 59 | - <groupId>org.apache.maven.plugins</groupId> | ||
| 60 | - <artifactId>maven-assembly-plugin</artifactId> | ||
| 61 | - <version>2.5.3</version> | ||
| 62 | - <configuration> | ||
| 63 | - <descriptor>src/assembly/bin.xml</descriptor> | ||
| 64 | - </configuration> | ||
| 65 | - <executions> | ||
| 66 | - <execution> | ||
| 67 | - <phase>package</phase> | ||
| 68 | - <goals> | ||
| 69 | - <goal>single</goal> | ||
| 70 | - </goals> | ||
| 71 | - </execution> | ||
| 72 | - </executions> | ||
| 73 | - </plugin> | ||
| 74 | - </plugins> | ||
| 75 | - </build> | ||
| 76 | </project> | 55 | </project> | ... | ... |
| 1 | -<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | -<!-- | ||
| 3 | - ~ Copyright 2015 Open Networking Laboratory | ||
| 4 | - ~ | ||
| 5 | - ~ Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 6 | - ~ you may not use this file except in compliance with the License. | ||
| 7 | - ~ You may obtain a copy of the License at | ||
| 8 | - ~ | ||
| 9 | - ~ http://www.apache.org/licenses/LICENSE-2.0 | ||
| 10 | - ~ | ||
| 11 | - ~ Unless required by applicable law or agreed to in writing, software | ||
| 12 | - ~ distributed under the License is distributed on an "AS IS" BASIS, | ||
| 13 | - ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 14 | - ~ See the License for the specific language governing permissions and | ||
| 15 | - ~ limitations under the License. | ||
| 16 | - --> | ||
| 17 | -<assembly | ||
| 18 | - xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" | ||
| 19 | - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
| 20 | - xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> | ||
| 21 | - <formats> | ||
| 22 | - <format>zip</format> | ||
| 23 | - </formats> | ||
| 24 | - <id>onos</id> | ||
| 25 | - <includeBaseDirectory>false</includeBaseDirectory> | ||
| 26 | - <files> | ||
| 27 | - <file> | ||
| 28 | - <source>src/assembly/app.xml</source> | ||
| 29 | - <destName>app.xml</destName> | ||
| 30 | - </file> | ||
| 31 | - <file> | ||
| 32 | - <source>target/${project.artifactId}-${project.version}.jar</source> | ||
| 33 | - <destName>m2/org/onosproject/${project.artifactId}/${project.version}/${project.artifactId}-${project.version}.jar</destName> | ||
| 34 | - </file> | ||
| 35 | - </files> | ||
| 36 | -</assembly> | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -18,17 +18,17 @@ package org.onosproject.cli; | ... | @@ -18,17 +18,17 @@ package org.onosproject.cli; |
| 18 | import com.fasterxml.jackson.databind.ObjectMapper; | 18 | import com.fasterxml.jackson.databind.ObjectMapper; |
| 19 | import com.fasterxml.jackson.databind.node.ObjectNode; | 19 | import com.fasterxml.jackson.databind.node.ObjectNode; |
| 20 | import org.apache.karaf.shell.commands.Option; | 20 | import org.apache.karaf.shell.commands.Option; |
| 21 | -import org.apache.karaf.shell.console.OsgiCommandSupport; | 21 | +import org.apache.karaf.shell.console.AbstractAction; |
| 22 | +import org.onlab.osgi.DefaultServiceDirectory; | ||
| 23 | +import org.onlab.osgi.ServiceNotFoundException; | ||
| 22 | import org.onosproject.core.ApplicationId; | 24 | import org.onosproject.core.ApplicationId; |
| 23 | import org.onosproject.core.CoreService; | 25 | import org.onosproject.core.CoreService; |
| 24 | import org.onosproject.net.Annotations; | 26 | import org.onosproject.net.Annotations; |
| 25 | -import org.onlab.osgi.DefaultServiceDirectory; | ||
| 26 | -import org.onlab.osgi.ServiceNotFoundException; | ||
| 27 | 27 | ||
| 28 | /** | 28 | /** |
| 29 | * Base abstraction of Karaf shell commands. | 29 | * Base abstraction of Karaf shell commands. |
| 30 | */ | 30 | */ |
| 31 | -public abstract class AbstractShellCommand extends OsgiCommandSupport { | 31 | +public abstract class AbstractShellCommand extends AbstractAction { |
| 32 | 32 | ||
| 33 | @Option(name = "-j", aliases = "--json", description = "Output JSON", | 33 | @Option(name = "-j", aliases = "--json", description = "Output JSON", |
| 34 | required = false, multiValued = false) | 34 | required = false, multiValued = false) | ... | ... |
| ... | @@ -21,6 +21,9 @@ import org.onosproject.app.ApplicationAdminService; | ... | @@ -21,6 +21,9 @@ import org.onosproject.app.ApplicationAdminService; |
| 21 | import org.onosproject.cli.AbstractShellCommand; | 21 | import org.onosproject.cli.AbstractShellCommand; |
| 22 | import org.onosproject.core.ApplicationId; | 22 | import org.onosproject.core.ApplicationId; |
| 23 | 23 | ||
| 24 | +import java.io.IOException; | ||
| 25 | +import java.net.URL; | ||
| 26 | + | ||
| 24 | /** | 27 | /** |
| 25 | * Manages application inventory. | 28 | * Manages application inventory. |
| 26 | */ | 29 | */ |
| ... | @@ -34,11 +37,11 @@ public class ApplicationCommand extends AbstractShellCommand { | ... | @@ -34,11 +37,11 @@ public class ApplicationCommand extends AbstractShellCommand { |
| 34 | static final String DEACTIVATE = "deactivate"; | 37 | static final String DEACTIVATE = "deactivate"; |
| 35 | 38 | ||
| 36 | @Argument(index = 0, name = "command", | 39 | @Argument(index = 0, name = "command", |
| 37 | - description = "Command name (activate|deactivate|uninstall)", | 40 | + description = "Command name (install|activate|deactivate|uninstall)", |
| 38 | required = true, multiValued = false) | 41 | required = true, multiValued = false) |
| 39 | String command = null; | 42 | String command = null; |
| 40 | 43 | ||
| 41 | - @Argument(index = 1, name = "names", description = "Application name(s)", | 44 | + @Argument(index = 1, name = "names", description = "Application name(s) or URL(s)", |
| 42 | required = true, multiValued = true) | 45 | required = true, multiValued = true) |
| 43 | String[] names = null; | 46 | String[] names = null; |
| 44 | 47 | ||
| ... | @@ -46,27 +49,55 @@ public class ApplicationCommand extends AbstractShellCommand { | ... | @@ -46,27 +49,55 @@ public class ApplicationCommand extends AbstractShellCommand { |
| 46 | protected void execute() { | 49 | protected void execute() { |
| 47 | ApplicationAdminService service = get(ApplicationAdminService.class); | 50 | ApplicationAdminService service = get(ApplicationAdminService.class); |
| 48 | if (command.equals(INSTALL)) { | 51 | if (command.equals(INSTALL)) { |
| 49 | - print("Not supported via CLI yet."); | 52 | + for (String name : names) { |
| 53 | + if (!installApp(service, name)) { | ||
| 54 | + return; | ||
| 55 | + } | ||
| 56 | + } | ||
| 50 | 57 | ||
| 51 | } else { | 58 | } else { |
| 52 | for (String name : names) { | 59 | for (String name : names) { |
| 53 | - ApplicationId appId = service.getId(name); | 60 | + if (!manageApp(service, name)) { |
| 54 | - if (appId == null) { | ||
| 55 | - print("No such application: %s", name); | ||
| 56 | return; | 61 | return; |
| 57 | } | 62 | } |
| 63 | + } | ||
| 64 | + } | ||
| 65 | + } | ||
| 58 | 66 | ||
| 59 | - if (command.equals(UNINSTALL)) { | 67 | + // Installs the application from input of the specified URL |
| 60 | - service.uninstall(appId); | 68 | + private boolean installApp(ApplicationAdminService service, String url) { |
| 61 | - } else if (command.equals(ACTIVATE)) { | 69 | + try { |
| 62 | - service.activate(appId); | 70 | + if (url.equals("-")) { |
| 63 | - } else if (command.equals(DEACTIVATE)) { | 71 | + service.install(System.in); |
| 64 | - service.deactivate(appId); | 72 | + } else { |
| 65 | - } else { | 73 | + service.install(new URL(url).openStream()); |
| 66 | - print("Unsupported command: %s", command); | ||
| 67 | - } | ||
| 68 | } | 74 | } |
| 75 | + } catch (IOException e) { | ||
| 76 | + error("Unable to get URL: %s", url); | ||
| 77 | + return false; | ||
| 78 | + } | ||
| 79 | + return true; | ||
| 80 | + } | ||
| 81 | + | ||
| 82 | + // Manages the specified application. | ||
| 83 | + private boolean manageApp(ApplicationAdminService service, String name) { | ||
| 84 | + ApplicationId appId = service.getId(name); | ||
| 85 | + if (appId == null) { | ||
| 86 | + print("No such application: %s", name); | ||
| 87 | + return false; | ||
| 88 | + } | ||
| 89 | + | ||
| 90 | + if (command.equals(UNINSTALL)) { | ||
| 91 | + service.uninstall(appId); | ||
| 92 | + } else if (command.equals(ACTIVATE)) { | ||
| 93 | + service.activate(appId); | ||
| 94 | + } else if (command.equals(DEACTIVATE)) { | ||
| 95 | + service.deactivate(appId); | ||
| 96 | + } else { | ||
| 97 | + print("Unsupported command: %s", command); | ||
| 98 | + return false; | ||
| 69 | } | 99 | } |
| 100 | + return true; | ||
| 70 | } | 101 | } |
| 71 | 102 | ||
| 72 | } | 103 | } | ... | ... |
| ... | @@ -15,7 +15,6 @@ | ... | @@ -15,7 +15,6 @@ |
| 15 | */ | 15 | */ |
| 16 | package org.onosproject.cli.app; | 16 | package org.onosproject.cli.app; |
| 17 | 17 | ||
| 18 | -import com.google.common.collect.Sets; | ||
| 19 | import org.apache.karaf.shell.console.completer.ArgumentCompleter; | 18 | import org.apache.karaf.shell.console.completer.ArgumentCompleter; |
| 20 | import org.apache.karaf.shell.console.completer.StringsCompleter; | 19 | import org.apache.karaf.shell.console.completer.StringsCompleter; |
| 21 | import org.onosproject.app.ApplicationService; | 20 | import org.onosproject.app.ApplicationService; |
| ... | @@ -23,11 +22,8 @@ import org.onosproject.app.ApplicationState; | ... | @@ -23,11 +22,8 @@ import org.onosproject.app.ApplicationState; |
| 23 | import org.onosproject.cli.AbstractCompleter; | 22 | import org.onosproject.cli.AbstractCompleter; |
| 24 | import org.onosproject.core.Application; | 23 | import org.onosproject.core.Application; |
| 25 | 24 | ||
| 26 | -import java.util.Arrays; | ||
| 27 | -import java.util.Collections; | ||
| 28 | import java.util.Iterator; | 25 | import java.util.Iterator; |
| 29 | import java.util.List; | 26 | import java.util.List; |
| 30 | -import java.util.Set; | ||
| 31 | import java.util.SortedSet; | 27 | import java.util.SortedSet; |
| 32 | 28 | ||
| 33 | import static org.onosproject.app.ApplicationState.ACTIVE; | 29 | import static org.onosproject.app.ApplicationState.ACTIVE; |
| ... | @@ -48,13 +44,14 @@ public class ApplicationNameCompleter extends AbstractCompleter { | ... | @@ -48,13 +44,14 @@ public class ApplicationNameCompleter extends AbstractCompleter { |
| 48 | String cmd = list.getArguments()[1]; | 44 | String cmd = list.getArguments()[1]; |
| 49 | 45 | ||
| 50 | // Grab apps already on the command (to prevent tab-completed duplicates) | 46 | // Grab apps already on the command (to prevent tab-completed duplicates) |
| 51 | - final Set previousApps; | 47 | + // FIXME: This does not work. |
| 52 | - if (list.getArguments().length > 2) { | 48 | +// final Set previousApps; |
| 53 | - previousApps = Sets.newHashSet( | 49 | +// if (list.getArguments().length > 2) { |
| 54 | - Arrays.copyOfRange(list.getArguments(), 2, list.getArguments().length)); | 50 | +// previousApps = Sets.newHashSet( |
| 55 | - } else { | 51 | +// Arrays.copyOfRange(list.getArguments(), 2, list.getArguments().length)); |
| 56 | - previousApps = Collections.emptySet(); | 52 | +// } else { |
| 57 | - } | 53 | +// previousApps = Collections.emptySet(); |
| 54 | +// } | ||
| 58 | 55 | ||
| 59 | // Fetch our service and feed it's offerings to the string completer | 56 | // Fetch our service and feed it's offerings to the string completer |
| 60 | ApplicationService service = get(ApplicationService.class); | 57 | ApplicationService service = get(ApplicationService.class); |
| ... | @@ -63,9 +60,9 @@ public class ApplicationNameCompleter extends AbstractCompleter { | ... | @@ -63,9 +60,9 @@ public class ApplicationNameCompleter extends AbstractCompleter { |
| 63 | while (it.hasNext()) { | 60 | while (it.hasNext()) { |
| 64 | Application app = it.next(); | 61 | Application app = it.next(); |
| 65 | ApplicationState state = service.getState(app.id()); | 62 | ApplicationState state = service.getState(app.id()); |
| 66 | - if (previousApps.contains(app.id().name())) { | 63 | +// if (previousApps.contains(app.id().name())) { |
| 67 | - continue; | 64 | +// continue; |
| 68 | - } | 65 | +// } |
| 69 | if (cmd.equals("uninstall") || | 66 | if (cmd.equals("uninstall") || |
| 70 | (cmd.equals("activate") && state == INSTALLED) || | 67 | (cmd.equals("activate") && state == INSTALLED) || |
| 71 | (cmd.equals("deactivate") && state == ACTIVE)) { | 68 | (cmd.equals("deactivate") && state == ACTIVE)) { | ... | ... |
| ... | @@ -58,6 +58,8 @@ import static com.google.common.io.Files.write; | ... | @@ -58,6 +58,8 @@ import static com.google.common.io.Files.write; |
| 58 | public class ApplicationArchive | 58 | public class ApplicationArchive |
| 59 | extends AbstractStore<ApplicationEvent, ApplicationStoreDelegate> { | 59 | extends AbstractStore<ApplicationEvent, ApplicationStoreDelegate> { |
| 60 | 60 | ||
| 61 | + private static Logger log = LoggerFactory.getLogger(ApplicationArchive.class); | ||
| 62 | + | ||
| 61 | // Magic strings to search for at the beginning of the archive stream | 63 | // Magic strings to search for at the beginning of the archive stream |
| 62 | private static final String XML_MAGIC = "<?xml "; | 64 | private static final String XML_MAGIC = "<?xml "; |
| 63 | 65 | ||
| ... | @@ -72,7 +74,7 @@ public class ApplicationArchive | ... | @@ -72,7 +74,7 @@ public class ApplicationArchive |
| 72 | private static final String FEATURES = "[@features]"; | 74 | private static final String FEATURES = "[@features]"; |
| 73 | private static final String DESCRIPTION = "description"; | 75 | private static final String DESCRIPTION = "description"; |
| 74 | 76 | ||
| 75 | - private static Logger log = LoggerFactory.getLogger(ApplicationArchive.class); | 77 | + private static final String OAR = ".oar"; |
| 76 | private static final String APP_XML = "app.xml"; | 78 | private static final String APP_XML = "app.xml"; |
| 77 | private static final String M2_PREFIX = "m2"; | 79 | private static final String M2_PREFIX = "m2"; |
| 78 | 80 | ||
| ... | @@ -222,7 +224,7 @@ public class ApplicationArchive | ... | @@ -222,7 +224,7 @@ public class ApplicationArchive |
| 222 | */ | 224 | */ |
| 223 | public synchronized InputStream getApplicationInputStream(String appName) { | 225 | public synchronized InputStream getApplicationInputStream(String appName) { |
| 224 | try { | 226 | try { |
| 225 | - File appFile = appFile(appName, appName + ".zip"); | 227 | + File appFile = appFile(appName, appName + OAR); |
| 226 | return new FileInputStream(appFile.exists() ? appFile : appFile(appName, APP_XML)); | 228 | return new FileInputStream(appFile.exists() ? appFile : appFile(appName, APP_XML)); |
| 227 | } catch (FileNotFoundException e) { | 229 | } catch (FileNotFoundException e) { |
| 228 | throw new ApplicationException("Application " + appName + " not found"); | 230 | throw new ApplicationException("Application " + appName + " not found"); |
| ... | @@ -304,7 +306,7 @@ public class ApplicationArchive | ... | @@ -304,7 +306,7 @@ public class ApplicationArchive |
| 304 | // Saves the specified ZIP stream into a file under app-specific directory. | 306 | // Saves the specified ZIP stream into a file under app-specific directory. |
| 305 | private void saveApplication(InputStream stream, ApplicationDescription desc) | 307 | private void saveApplication(InputStream stream, ApplicationDescription desc) |
| 306 | throws IOException { | 308 | throws IOException { |
| 307 | - Files.write(toByteArray(stream), appFile(desc.name(), desc.name() + ".zip")); | 309 | + Files.write(toByteArray(stream), appFile(desc.name(), desc.name() + OAR)); |
| 308 | } | 310 | } |
| 309 | 311 | ||
| 310 | // Installs application artifacts into M2 repository. | 312 | // Installs application artifacts into M2 repository. | ... | ... |
| ... | @@ -97,14 +97,6 @@ | ... | @@ -97,14 +97,6 @@ |
| 97 | <bundle>mvn:org.onosproject/onlab-netty/@ONOS-VERSION</bundle> | 97 | <bundle>mvn:org.onosproject/onlab-netty/@ONOS-VERSION</bundle> |
| 98 | </feature> | 98 | </feature> |
| 99 | 99 | ||
| 100 | - <feature name="onos-core-trivial" version="@FEATURE-VERSION" | ||
| 101 | - description="ONOS core components"> | ||
| 102 | - <feature>onos-api</feature> | ||
| 103 | - <bundle>mvn:org.onosproject/onos-core-net/@ONOS-VERSION</bundle> | ||
| 104 | - <bundle>mvn:org.onosproject/onos-core-common/@ONOS-VERSION</bundle> | ||
| 105 | - <bundle>mvn:org.onosproject/onos-core-trivial/@ONOS-VERSION</bundle> | ||
| 106 | - </feature> | ||
| 107 | - | ||
| 108 | <feature name="onos-rest" version="@FEATURE-VERSION" | 100 | <feature name="onos-rest" version="@FEATURE-VERSION" |
| 109 | description="ONOS REST API components"> | 101 | description="ONOS REST API components"> |
| 110 | <feature>onos-api</feature> | 102 | <feature>onos-api</feature> |
| ... | @@ -128,11 +120,7 @@ | ... | @@ -128,11 +120,7 @@ |
| 128 | <bundle>mvn:org.onosproject/onos-cli/@ONOS-VERSION</bundle> | 120 | <bundle>mvn:org.onosproject/onos-cli/@ONOS-VERSION</bundle> |
| 129 | </feature> | 121 | </feature> |
| 130 | 122 | ||
| 131 | - <feature name="onos-null" version="@FEATURE-VERSION" | 123 | + <!-- ONOS OpenFlow provider app features --> |
| 132 | - description="ONOS Null providers"> | ||
| 133 | - <feature>onos-api</feature> | ||
| 134 | - <bundle>mvn:org.onosproject/onos-null-provider/@ONOS-VERSION</bundle> | ||
| 135 | - </feature> | ||
| 136 | 124 | ||
| 137 | <feature name="onos-openflow" version="@FEATURE-VERSION" | 125 | <feature name="onos-openflow" version="@FEATURE-VERSION" |
| 138 | description="ONOS OpenFlow API, Controller & Providers"> | 126 | description="ONOS OpenFlow API, Controller & Providers"> |
| ... | @@ -151,146 +139,14 @@ | ... | @@ -151,146 +139,14 @@ |
| 151 | <bundle>mvn:org.onosproject/onos-of-provider-group/@ONOS-VERSION</bundle> | 139 | <bundle>mvn:org.onosproject/onos-of-provider-group/@ONOS-VERSION</bundle> |
| 152 | </feature> | 140 | </feature> |
| 153 | 141 | ||
| 154 | - <!-- ONOS built-in app features --> | 142 | + <!-- Deprecated! For standalone testing only. --> |
| 155 | - | ||
| 156 | - <feature name="onos-app-fwd" version="@FEATURE-VERSION" | ||
| 157 | - description="ONOS sample forwarding application"> | ||
| 158 | - <feature>onos-api</feature> | ||
| 159 | - <bundle>mvn:org.onosproject/onos-app-fwd/@ONOS-VERSION</bundle> | ||
| 160 | - </feature> | ||
| 161 | - | ||
| 162 | - <feature name="onos-app-mobility" version="@FEATURE-VERSION" | ||
| 163 | - description="ONOS sample mobility application"> | ||
| 164 | - <feature>onos-api</feature> | ||
| 165 | - <bundle>mvn:org.onosproject/onos-app-mobility/@ONOS-VERSION</bundle> | ||
| 166 | - </feature> | ||
| 167 | - | ||
| 168 | - <feature name="onos-app-proxyarp" version="@FEATURE-VERSION" | ||
| 169 | - description="ONOS sample proxyarp application"> | ||
| 170 | - <feature>onos-api</feature> | ||
| 171 | - <bundle>mvn:org.onosproject/onos-app-proxyarp/@ONOS-VERSION</bundle> | ||
| 172 | - </feature> | ||
| 173 | - | ||
| 174 | - <feature name="onos-app-config" version="@FEATURE-VERSION" | ||
| 175 | - description="ONOS network config reader"> | ||
| 176 | - <feature>onos-api</feature> | ||
| 177 | - <bundle>mvn:org.onosproject/onos-app-config/@ONOS-VERSION</bundle> | ||
| 178 | - </feature> | ||
| 179 | - | ||
| 180 | - <feature name="onos-app-optical" version="@FEATURE-VERSION" | ||
| 181 | - description="ONOS optical network config"> | ||
| 182 | - <feature>onos-api</feature> | ||
| 183 | - <bundle>mvn:org.onosproject/onos-app-optical/@ONOS-VERSION</bundle> | ||
| 184 | - </feature> | ||
| 185 | - | ||
| 186 | - <feature name="onos-app-reactive-routing" version="@FEATURE-VERSION" | ||
| 187 | - description="ONOS SDN/IP reactive routing"> | ||
| 188 | - <feature>onos-app-sdnip</feature> | ||
| 189 | - <bundle>mvn:org.onosproject/onos-app-reactive-routing/@ONOS-VERSION</bundle> | ||
| 190 | - </feature> | ||
| 191 | - | ||
| 192 | - <feature name="onos-app-sdnip" version="@FEATURE-VERSION" | ||
| 193 | - description="SDN-IP peering application"> | ||
| 194 | - <feature>onos-api</feature> | ||
| 195 | - <feature>onos-app-proxyarp</feature> | ||
| 196 | - <feature>onos-app-config</feature> | ||
| 197 | - <bundle>mvn:org.onosproject/onos-app-sdnip/@ONOS-VERSION</bundle> | ||
| 198 | - <bundle>mvn:org.onosproject/onos-app-routing-api/@ONOS-VERSION</bundle> | ||
| 199 | - <bundle>mvn:org.onosproject/onos-app-routing/@ONOS-VERSION</bundle> | ||
| 200 | - </feature> | ||
| 201 | 143 | ||
| 202 | - <feature name="onos-app-bgprouter" version="@FEATURE-VERSION" | 144 | + <feature name="onos-core-trivial" version="@FEATURE-VERSION" |
| 203 | - description="BGP router application"> | 145 | + description="ONOS core components"> |
| 204 | - <feature>onos-api</feature> | ||
| 205 | - <feature>onos-app-proxyarp</feature> | ||
| 206 | - <feature>onos-app-config</feature> | ||
| 207 | - <bundle>mvn:org.onosproject/onos-app-bgprouter/@ONOS-VERSION</bundle> | ||
| 208 | - <bundle>mvn:org.onosproject/onos-app-routing-api/@ONOS-VERSION</bundle> | ||
| 209 | - <bundle>mvn:org.onosproject/onos-app-routing/@ONOS-VERSION</bundle> | ||
| 210 | - </feature> | ||
| 211 | - | ||
| 212 | - <feature name="onos-app-metrics" version="@FEATURE-VERSION" | ||
| 213 | - description="ONOS metrics applications"> | ||
| 214 | - <feature>onos-app-metrics-intent</feature> | ||
| 215 | - <feature>onos-app-metrics-topology</feature> | ||
| 216 | - </feature> | ||
| 217 | - | ||
| 218 | - <feature name="onos-app-metrics-intent" version="@FEATURE-VERSION" | ||
| 219 | - description="ONOS intent metrics application"> | ||
| 220 | - <feature>onos-api</feature> | ||
| 221 | - <bundle>mvn:org.onosproject/onos-app-metrics-intent/@ONOS-VERSION</bundle> | ||
| 222 | - </feature> | ||
| 223 | - | ||
| 224 | - <feature name="onos-app-metrics-topology" version="@FEATURE-VERSION" | ||
| 225 | - description="ONOS topology metrics application"> | ||
| 226 | - <feature>onos-api</feature> | ||
| 227 | - <bundle>mvn:org.onosproject/onos-app-metrics-topology/@ONOS-VERSION</bundle> | ||
| 228 | - </feature> | ||
| 229 | - | ||
| 230 | - | ||
| 231 | - <!-- ONOS test app features --> | ||
| 232 | - | ||
| 233 | - <feature name="onos-app-intent-perf" version="@FEATURE-VERSION" | ||
| 234 | - description="ONOS intent perf applications"> | ||
| 235 | - <feature>onos-api</feature> | ||
| 236 | - <bundle>mvn:org.onosproject/onos-app-intent-perf/@ONOS-VERSION</bundle> | ||
| 237 | - </feature> | ||
| 238 | - | ||
| 239 | - <feature name="onos-app-election" version="@FEATURE-VERSION" | ||
| 240 | - description="ONOS app leadership election test"> | ||
| 241 | - <feature>onos-api</feature> | ||
| 242 | - <bundle>mvn:org.onosproject/onos-app-election/@ONOS-VERSION</bundle> | ||
| 243 | - </feature> | ||
| 244 | - | ||
| 245 | - <feature name="onos-app-demo" version="@FEATURE-VERSION" | ||
| 246 | - description="ONOS demo applications"> | ||
| 247 | - <feature>onos-api</feature> | ||
| 248 | - <bundle>mvn:org.onosproject/onlab-misc/@ONOS-VERSION</bundle> | ||
| 249 | - <bundle>mvn:org.onosproject/onos-app-demo/@ONOS-VERSION</bundle> | ||
| 250 | - </feature> | ||
| 251 | - | ||
| 252 | - | ||
| 253 | - <!-- ONOS sample app features: to be moved to a different repo --> | ||
| 254 | - | ||
| 255 | - <feature name="onos-app-tvue" version="@FEATURE-VERSION" | ||
| 256 | - description="ONOS sample topology viewer application"> | ||
| 257 | - <feature>onos-api</feature> | ||
| 258 | - <feature>onos-thirdparty-web</feature> | ||
| 259 | - <bundle>mvn:org.onosproject/onlab-rest/@ONOS-VERSION</bundle> | ||
| 260 | - <bundle>mvn:org.onosproject/onos-app-tvue/@ONOS-VERSION</bundle> | ||
| 261 | - </feature> | ||
| 262 | - | ||
| 263 | - <feature name="onos-app-ifwd" version="@FEATURE-VERSION" | ||
| 264 | - description="ONOS sample forwarding application using intents"> | ||
| 265 | - <feature>onos-api</feature> | ||
| 266 | - <bundle>mvn:org.onosproject/onos-app-ifwd/@ONOS-VERSION</bundle> | ||
| 267 | - </feature> | ||
| 268 | - | ||
| 269 | - <feature name="onos-app-database-perf" version="@FEATURE-VERSION" | ||
| 270 | - description="ONOS partitioned database perf application"> | ||
| 271 | - <feature>onos-api</feature> | ||
| 272 | - <bundle>mvn:org.onosproject/onos-app-database-perf/@ONOS-VERSION</bundle> | ||
| 273 | - </feature> | ||
| 274 | - | ||
| 275 | - <feature name="onos-app-calendar" version="@FEATURE-VERSION" | ||
| 276 | - description="REST interface for scheduling intents from an external calendar"> | ||
| 277 | - <feature>onos-api</feature> | ||
| 278 | - <feature>onos-thirdparty-web</feature> | ||
| 279 | - <bundle>mvn:org.onosproject/onos-app-calendar/@ONOS-VERSION</bundle> | ||
| 280 | - </feature> | ||
| 281 | - | ||
| 282 | - <feature name="onos-app-grouphandler" version="@FEATURE-VERSION" | ||
| 283 | - description="Group Handler Sample App"> | ||
| 284 | - <feature>onos-api</feature> | ||
| 285 | - <bundle>mvn:org.onosproject/onos-app-grouphandler/@ONOS-VERSION</bundle> | ||
| 286 | - </feature> | ||
| 287 | - | ||
| 288 | - <feature name="onos-app-segmentrouting" version="@FEATURE-VERSION" | ||
| 289 | - description="Segment routing application"> | ||
| 290 | <feature>onos-api</feature> | 146 | <feature>onos-api</feature> |
| 291 | - <bundle>mvn:org.onosproject/onos-app-segmentrouting/@ONOS-VERSION</bundle> | 147 | + <bundle>mvn:org.onosproject/onos-core-net/@ONOS-VERSION</bundle> |
| 292 | - <bundle>mvn:org.onosproject/onos-app-grouphandler/@ONOS-VERSION</bundle> | 148 | + <bundle>mvn:org.onosproject/onos-core-common/@ONOS-VERSION</bundle> |
| 149 | + <bundle>mvn:org.onosproject/onos-core-trivial/@ONOS-VERSION</bundle> | ||
| 293 | </feature> | 150 | </feature> |
| 294 | 151 | ||
| 295 | - | ||
| 296 | </features> | 152 | </features> | ... | ... |
| ... | @@ -14,7 +14,9 @@ | ... | @@ -14,7 +14,9 @@ |
| 14 | ~ See the License for the specific language governing permissions and | 14 | ~ See the License for the specific language governing permissions and |
| 15 | ~ limitations under the License. | 15 | ~ limitations under the License. |
| 16 | --> | 16 | --> |
| 17 | -<app name="org.onosproject.null" origin="ON.Lab" version="1.2.0" | 17 | +<app name="org.onosproject.null" origin="ON.Lab" version="${feature.version}" |
| 18 | - features="onos-null"> | 18 | + featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features" |
| 19 | - <description>Null southbound providers for testing</description> | 19 | + features="${project.artifactId}"> |
| 20 | + <description>${project.description}</description> | ||
| 21 | + <artifact>mvn:${project.groupId}/${project.artifactId}/${project.version}</artifact> | ||
| 20 | </app> | 22 | </app> | ... | ... |
| ... | @@ -136,8 +136,8 @@ class NullPacketProvider extends NullProviders.AbstractNullProvider | ... | @@ -136,8 +136,8 @@ class NullPacketProvider extends NullProviders.AbstractNullProvider |
| 136 | 136 | ||
| 137 | @Override | 137 | @Override |
| 138 | public void run(Timeout to) { | 138 | public void run(Timeout to) { |
| 139 | - if (!devices.isEmpty()) { | 139 | + if (!devices.isEmpty() && !to.isCancelled()) { |
| 140 | - sendEvent(devices.get(currentDevice)); | 140 | + sendEvent(devices.get(Math.max(currentDevice, devices.size()))); |
| 141 | currentDevice = (currentDevice + 1) % devices.size(); | 141 | currentDevice = (currentDevice + 1) % devices.size(); |
| 142 | timeout = timer.newTimeout(to.getTask(), delay, TimeUnit.MILLISECONDS); | 142 | timeout = timer.newTimeout(to.getTask(), delay, TimeUnit.MILLISECONDS); |
| 143 | } | 143 | } | ... | ... |
providers/openflow/app/app.xml
0 → 100644
| 1 | +<?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | +<!-- | ||
| 3 | + ~ Copyright 2015 Open Networking Laboratory | ||
| 4 | + ~ | ||
| 5 | + ~ Licensed under the Apache License, Version 2.0 (the "License"); | ||
| 6 | + ~ you may not use this file except in compliance with the License. | ||
| 7 | + ~ You may obtain a copy of the License at | ||
| 8 | + ~ | ||
| 9 | + ~ http://www.apache.org/licenses/LICENSE-2.0 | ||
| 10 | + ~ | ||
| 11 | + ~ Unless required by applicable law or agreed to in writing, software | ||
| 12 | + ~ distributed under the License is distributed on an "AS IS" BASIS, | ||
| 13 | + ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
| 14 | + ~ See the License for the specific language governing permissions and | ||
| 15 | + ~ limitations under the License. | ||
| 16 | + --> | ||
| 17 | +<app name="org.onosproject.openflow" origin="ON.Lab" version="${feature.version}" | ||
| 18 | + features="onos-openflow"> | ||
| 19 | + <description>OpenFlow protocol southbound providers</description> | ||
| 20 | + | ||
| 21 | + <artifact>mvn:${project.groupId}/onos-of-api/${project.version}</artifact> | ||
| 22 | + <artifact>mvn:${project.groupId}/onos-of-drivers/${project.version}</artifact> | ||
| 23 | + <artifact>mvn:${project.groupId}/onos-of-ctl/${project.version}</artifact> | ||
| 24 | + <artifact>mvn:${project.groupId}/onos-drivers/${project.version}</artifact> | ||
| 25 | + | ||
| 26 | + <artifact>mvn:${project.groupId}/onos-lldp-provider/${project.version}</artifact> | ||
| 27 | + <artifact>mvn:${project.groupId}/onos-host-provider/${project.version}</artifact> | ||
| 28 | + <artifact>mvn:${project.groupId}/onos-of-provider-device/${project.version}</artifact> | ||
| 29 | + <artifact>mvn:${project.groupId}/onos-of-provider-packet/${project.version}</artifact> | ||
| 30 | + <artifact>mvn:${project.groupId}/onos-of-provider-flow/${project.version}</artifact> | ||
| 31 | + <artifact>mvn:${project.groupId}/onos-of-provider-group/${project.version}</artifact> | ||
| 32 | +</app> |
| 1 | <?xml version="1.0" encoding="UTF-8"?> | 1 | <?xml version="1.0" encoding="UTF-8"?> |
| 2 | <!-- | 2 | <!-- |
| 3 | - ~ Copyright 2014 Open Networking Laboratory | 3 | + ~ Copyright 2015 Open Networking Laboratory |
| 4 | ~ | 4 | ~ |
| 5 | ~ Licensed under the Apache License, Version 2.0 (the "License"); | 5 | ~ Licensed under the Apache License, Version 2.0 (the "License"); |
| 6 | ~ you may not use this file except in compliance with the License. | 6 | ~ you may not use this file except in compliance with the License. |
| ... | @@ -17,35 +17,70 @@ | ... | @@ -17,35 +17,70 @@ |
| 17 | <project xmlns="http://maven.apache.org/POM/4.0.0" | 17 | <project xmlns="http://maven.apache.org/POM/4.0.0" |
| 18 | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | 18 | xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| 19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> | 19 | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> |
| 20 | - <modelVersion>4.0.0</modelVersion> | 20 | + <modelVersion>4.0.0</modelVersion> |
| 21 | 21 | ||
| 22 | - <parent> | 22 | + <parent> |
| 23 | - <groupId>org.onosproject</groupId> | 23 | + <groupId>org.onosproject</groupId> |
| 24 | - <artifactId>onos-app-metrics</artifactId> | 24 | + <artifactId>onos-of-providers</artifactId> |
| 25 | - <version>1.2.0-SNAPSHOT</version> | 25 | + <version>1.2.0-SNAPSHOT</version> |
| 26 | - <relativePath>../pom.xml</relativePath> | 26 | + <relativePath>../pom.xml</relativePath> |
| 27 | - </parent> | 27 | + </parent> |
| 28 | 28 | ||
| 29 | - <artifactId>onos-app-metrics-intent</artifactId> | 29 | + <artifactId>onos-of-providers-app</artifactId> |
| 30 | - <packaging>bundle</packaging> | 30 | + <packaging>pom</packaging> |
| 31 | 31 | ||
| 32 | - <description>ONOS intent metrics application</description> | 32 | + <description>ONOS OpenFlow providers app</description> |
| 33 | 33 | ||
| 34 | - <dependencies> | 34 | + <dependencies> |
| 35 | - <dependency> | 35 | + <dependency> |
| 36 | - <groupId>org.onosproject</groupId> | 36 | + <groupId>org.onosproject</groupId> |
| 37 | - <artifactId>onos-cli</artifactId> | 37 | + <artifactId>onos-of-api</artifactId> |
| 38 | - <version>${project.version}</version> | 38 | + </dependency> |
| 39 | - </dependency> | 39 | + <dependency> |
| 40 | - <dependency> | 40 | + <groupId>org.onosproject</groupId> |
| 41 | - <groupId>org.osgi</groupId> | 41 | + <artifactId>onos-of-drivers</artifactId> |
| 42 | - <artifactId>org.osgi.core</artifactId> | 42 | + <version>${project.version}</version> |
| 43 | - </dependency> | 43 | + </dependency> |
| 44 | - | 44 | + <dependency> |
| 45 | - <dependency> | 45 | + <groupId>org.onosproject</groupId> |
| 46 | - <groupId>org.apache.karaf.shell</groupId> | 46 | + <artifactId>onos-of-ctl</artifactId> |
| 47 | - <artifactId>org.apache.karaf.shell.console</artifactId> | 47 | + <version>${project.version}</version> |
| 48 | - </dependency> | 48 | + </dependency> |
| 49 | - </dependencies> | 49 | + <dependency> |
| 50 | + <groupId>org.onosproject</groupId> | ||
| 51 | + <artifactId>onos-drivers</artifactId> | ||
| 52 | + <version>${project.version}</version> | ||
| 53 | + </dependency> | ||
| 54 | + <dependency> | ||
| 55 | + <groupId>org.onosproject</groupId> | ||
| 56 | + <artifactId>onos-of-provider-device</artifactId> | ||
| 57 | + <version>${project.version}</version> | ||
| 58 | + </dependency> | ||
| 59 | + <dependency> | ||
| 60 | + <groupId>org.onosproject</groupId> | ||
| 61 | + <artifactId>onos-of-provider-packet</artifactId> | ||
| 62 | + <version>${project.version}</version> | ||
| 63 | + </dependency> | ||
| 64 | + <dependency> | ||
| 65 | + <groupId>org.onosproject</groupId> | ||
| 66 | + <artifactId>onos-of-provider-flow</artifactId> | ||
| 67 | + <version>${project.version}</version> | ||
| 68 | + </dependency> | ||
| 69 | + <dependency> | ||
| 70 | + <groupId>org.onosproject</groupId> | ||
| 71 | + <artifactId>onos-of-provider-group</artifactId> | ||
| 72 | + <version>${project.version}</version> | ||
| 73 | + </dependency> | ||
| 74 | + <dependency> | ||
| 75 | + <groupId>org.onosproject</groupId> | ||
| 76 | + <artifactId>onos-lldp-provider</artifactId> | ||
| 77 | + <version>${project.version}</version> | ||
| 78 | + </dependency> | ||
| 79 | + <dependency> | ||
| 80 | + <groupId>org.onosproject</groupId> | ||
| 81 | + <artifactId>onos-host-provider</artifactId> | ||
| 82 | + <version>${project.version}</version> | ||
| 83 | + </dependency> | ||
| 84 | + </dependencies> | ||
| 50 | 85 | ||
| 51 | </project> | 86 | </project> | ... | ... |
| ... | @@ -36,6 +36,7 @@ | ... | @@ -36,6 +36,7 @@ |
| 36 | <module>packet</module> | 36 | <module>packet</module> |
| 37 | <module>flow</module> | 37 | <module>flow</module> |
| 38 | <module>group</module> | 38 | <module>group</module> |
| 39 | + <module>app</module> | ||
| 39 | </modules> | 40 | </modules> |
| 40 | 41 | ||
| 41 | <dependencies> | 42 | <dependencies> | ... | ... |
| ... | @@ -28,8 +28,8 @@ fi | ... | @@ -28,8 +28,8 @@ fi |
| 28 | echo "Apache Karaf bits $KARAF_ZIP or $KARAF_TAR not found" && exit 1 | 28 | echo "Apache Karaf bits $KARAF_ZIP or $KARAF_TAR not found" && exit 1 |
| 29 | 29 | ||
| 30 | # Unroll the Apache Karaf bits, prune them and make ONOS top-level directories. | 30 | # Unroll the Apache Karaf bits, prune them and make ONOS top-level directories. |
| 31 | -[ -f $KARAF_ZIP ] && unzip -q $KARAF_ZIP && rm -rf $KARAF_DIST/demos | 31 | +[ -f $KARAF_ZIP ] && unzip -q $KARAF_ZIP && rm -rf $ONOS_STAGE/$KARAF_DIST/demos |
| 32 | -[ -f $KARAF_TAR ] && tar zxf $KARAF_TAR && rm -rf $KARAF_DIST/demos | 32 | +[ -f $KARAF_TAR ] && tar zxf $KARAF_TAR && rm -rf $ONOS_STAGE/$KARAF_DIST/demos |
| 33 | mkdir bin | 33 | mkdir bin |
| 34 | 34 | ||
| 35 | # Stage the ONOS admin scripts and patch in Karaf service wrapper extras | 35 | # Stage the ONOS admin scripts and patch in Karaf service wrapper extras |
| ... | @@ -38,14 +38,7 @@ cp -r $ONOS_ROOT/tools/package/debian $ONOS_STAGE/debian | ... | @@ -38,14 +38,7 @@ cp -r $ONOS_ROOT/tools/package/debian $ONOS_STAGE/debian |
| 38 | cp -r $ONOS_ROOT/tools/package/etc/* $ONOS_STAGE/$KARAF_DIST/etc | 38 | cp -r $ONOS_ROOT/tools/package/etc/* $ONOS_STAGE/$KARAF_DIST/etc |
| 39 | 39 | ||
| 40 | # Stage all builtin ONOS apps for factory install | 40 | # Stage all builtin ONOS apps for factory install |
| 41 | -mkdir $ONOS_STAGE/apps | 41 | +onos-stage-apps $ONOS_STAGE/apps $ONOS_STAGE/$KARAF_DIST/system |
| 42 | -find $ONOS_ROOT -name 'app.xml' | egrep -v '/src/test/|/target/|org\.foo\.' | \ | ||
| 43 | - xargs grep 'name=' | sed 's/<app name="//g;s/".*//g' | while read line; do | ||
| 44 | - appxml=${line%:*} | ||
| 45 | - app=${line#*:} | ||
| 46 | - mkdir $ONOS_STAGE/apps/$app | ||
| 47 | - cp $appxml $ONOS_STAGE/apps/$app/app.xml | ||
| 48 | - done | ||
| 49 | 42 | ||
| 50 | # Patch-in proper Karaf version into the startup script | 43 | # Patch-in proper Karaf version into the startup script |
| 51 | sed "s/\$KARAF_VERSION/$KARAF_VERSION/g" \ | 44 | sed "s/\$KARAF_VERSION/$KARAF_VERSION/g" \ |
| ... | @@ -54,14 +47,13 @@ sed "s/\$KARAF_VERSION/$KARAF_VERSION/g" \ | ... | @@ -54,14 +47,13 @@ sed "s/\$KARAF_VERSION/$KARAF_VERSION/g" \ |
| 54 | $ONOS_ROOT/tools/package/bin/onos > bin/onos | 47 | $ONOS_ROOT/tools/package/bin/onos > bin/onos |
| 55 | 48 | ||
| 56 | # Stage the ONOS bundles, but only those that match the version | 49 | # Stage the ONOS bundles, but only those that match the version |
| 57 | -mkdir -p $KARAF_DIST/system/org/onosproject | 50 | +mkdir -p $ONOS_STAGE/$KARAF_DIST/system/org/onosproject |
| 58 | -# cp -r $M2_REPO/org/onosproject/ $KARAF_DIST/system/org/ | ||
| 59 | find $M2_REPO/org/onosproject/ -type d -name $ONOS_POM_VERSION | while read line; do | 51 | find $M2_REPO/org/onosproject/ -type d -name $ONOS_POM_VERSION | while read line; do |
| 60 | path=${line#*/onosproject/} | 52 | path=${line#*/onosproject/} |
| 61 | artifact=${path%/$ONOS_POM_VERSION} | 53 | artifact=${path%/$ONOS_POM_VERSION} |
| 62 | - mkdir -p $KARAF_DIST/system/org/onosproject/$artifact | 54 | + mkdir -p $ONOS_STAGE/$KARAF_DIST/system/org/onosproject/$artifact |
| 63 | cp -r $M2_REPO/org/onosproject/$artifact/$ONOS_POM_VERSION \ | 55 | cp -r $M2_REPO/org/onosproject/$artifact/$ONOS_POM_VERSION \ |
| 64 | - $KARAF_DIST/system/org/onosproject/$artifact/$ONOS_POM_VERSION | 56 | + $ONOS_STAGE/$KARAF_DIST/system/org/onosproject/$artifact/$ONOS_POM_VERSION |
| 65 | done | 57 | done |
| 66 | 58 | ||
| 67 | # ONOS Patching ---------------------------------------------------------------- | 59 | # ONOS Patching ---------------------------------------------------------------- |
| ... | @@ -84,6 +76,7 @@ echo $ONOS_VERSION > $ONOS_STAGE/VERSION | ... | @@ -84,6 +76,7 @@ echo $ONOS_VERSION > $ONOS_STAGE/VERSION |
| 84 | 76 | ||
| 85 | # Now package up the ONOS tar file | 77 | # Now package up the ONOS tar file |
| 86 | cd $ONOS_STAGE_ROOT | 78 | cd $ONOS_STAGE_ROOT |
| 79 | +rm -f $ONOS_TAR $ONOS_ZIP | ||
| 87 | COPYFILE_DISABLE=1 tar zcf $ONOS_TAR $ONOS_BITS | 80 | COPYFILE_DISABLE=1 tar zcf $ONOS_TAR $ONOS_BITS |
| 88 | which zip >/dev/null && zip -rq $ONOS_ZIP $ONOS_BITS | 81 | which zip >/dev/null && zip -rq $ONOS_ZIP $ONOS_BITS |
| 89 | ls -l $ONOS_TAR $ONOS_ZIP 2>/dev/null | 82 | ls -l $ONOS_TAR $ONOS_ZIP 2>/dev/null | ... | ... |
| ... | @@ -56,7 +56,7 @@ fi | ... | @@ -56,7 +56,7 @@ fi |
| 56 | 56 | ||
| 57 | if ! grep -q ",onos-api," $KARAF_ROOT/etc/org.apache.karaf.features.cfg; then | 57 | if ! grep -q ",onos-api," $KARAF_ROOT/etc/org.apache.karaf.features.cfg; then |
| 58 | # Patch the Apache Karaf distribution file to load default ONOS boot features | 58 | # Patch the Apache Karaf distribution file to load default ONOS boot features |
| 59 | - export BOOT_FEATURES="webconsole,onos-api,onos-core,onos-cli,onos-rest,onos-gui,onos-openflow" | 59 | + export BOOT_FEATURES="webconsole,onos-api,onos-core,onos-cli,onos-rest,onos-gui" |
| 60 | echo "Adding ONOS boot features $BOOT_FEATURES..." | 60 | echo "Adding ONOS boot features $BOOT_FEATURES..." |
| 61 | perl -pi.old -e "s|^(featuresBoot=.*)|\1,$BOOT_FEATURES|" \ | 61 | perl -pi.old -e "s|^(featuresBoot=.*)|\1,$BOOT_FEATURES|" \ |
| 62 | $KARAF_ROOT/etc/org.apache.karaf.features.cfg | 62 | $KARAF_ROOT/etc/org.apache.karaf.features.cfg |
| ... | @@ -89,19 +89,11 @@ cp $ONOS_ROOT/tools/package/etc/hazelcast.xml $KARAF_ROOT/etc/hazelcast.xml | ... | @@ -89,19 +89,11 @@ cp $ONOS_ROOT/tools/package/etc/hazelcast.xml $KARAF_ROOT/etc/hazelcast.xml |
| 89 | perl -pi.old -e "s/192.168.56/$SUBNET/" $KARAF_ROOT/etc/hazelcast.xml | 89 | perl -pi.old -e "s/192.168.56/$SUBNET/" $KARAF_ROOT/etc/hazelcast.xml |
| 90 | perl -pi.old -e "s/ <name>onos</ <name>$IP</" $KARAF_ROOT/etc/hazelcast.xml | 90 | perl -pi.old -e "s/ <name>onos</ <name>$IP</" $KARAF_ROOT/etc/hazelcast.xml |
| 91 | 91 | ||
| 92 | - | ||
| 93 | echo "Staging builtin apps..." | 92 | echo "Staging builtin apps..." |
| 94 | rm -fr $STAGE/apps | 93 | rm -fr $STAGE/apps |
| 95 | -mkdir -p $STAGE/apps | 94 | +onos-stage-apps $STAGE/apps $KARAF_ROOT/system |
| 96 | -find $ONOS_ROOT -name 'app.xml' | egrep -v '/src/test/|/target/|org\.foo\.' | \ | ||
| 97 | - xargs grep 'name=' | sed 's/<app name="//g;s/".*//g' | while read line; do | ||
| 98 | - appxml=${line%:*} | ||
| 99 | - app=${line#*:} | ||
| 100 | - mkdir $STAGE/apps/$app | ||
| 101 | - cp $appxml $STAGE/apps/$app/app.xml | ||
| 102 | - done | ||
| 103 | 95 | ||
| 104 | echo "Customizing apps to be auto-activated..." | 96 | echo "Customizing apps to be auto-activated..." |
| 105 | -for app in $(echo $ONOS_APPS | tr ',' ' '); do | 97 | +for app in $(echo ${ONOS_APPS:-openflow} | tr ',' ' '); do |
| 106 | touch $STAGE/apps/org.onosproject.$app/active | 98 | touch $STAGE/apps/org.onosproject.$app/active |
| 107 | done | 99 | done | ... | ... |
tools/test/bin/onos-stage-apps
0 → 100755
| 1 | +#!/bin/bash | ||
| 2 | +# ----------------------------------------------------------------------------- | ||
| 3 | +# Stages builtin ONOS apps into the specified directory for packaging. | ||
| 4 | +# ----------------------------------------------------------------------------- | ||
| 5 | + | ||
| 6 | +[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1 | ||
| 7 | +. $ONOS_ROOT/tools/build/envDefaults | ||
| 8 | + | ||
| 9 | +export APPS=${1:-/tmp/apps} | ||
| 10 | +export KARAF_M2=${2:-/tmp/karaf/system} | ||
| 11 | +export AUX=$APPS/aux | ||
| 12 | + | ||
| 13 | +# Bail on any errors | ||
| 14 | +set -e | ||
| 15 | + | ||
| 16 | +mkdir -p $APPS $KARAF_M2 | ||
| 17 | +rm -fr $AUX | ||
| 18 | + | ||
| 19 | +find $M2_REPO/org/onosproject/ -name "*.oar" -path "*/${ONOS_POM_VERSION}/*" | while read line; do | ||
| 20 | + mkdir -p $AUX && cd $AUX | ||
| 21 | + cp $line $AUX | ||
| 22 | + jar -xf $AUX/*.oar | ||
| 23 | + name=$(grep "name=" $AUX/app.xml | sed 's/<app name="//g;s/".*//g') | ||
| 24 | + mkdir -p $APPS/$name | ||
| 25 | + cp $AUX/app.xml $APPS/$name/app.xml | ||
| 26 | + cp $AUX/*.oar $APPS/$name/$name.oar | ||
| 27 | + cp -rf $AUX/m2/* $KARAF_M2 | ||
| 28 | + rm -fr $AUX | ||
| 29 | +done |
| ... | @@ -77,6 +77,7 @@ | ... | @@ -77,6 +77,7 @@ |
| 77 | org.slf4j, | 77 | org.slf4j, |
| 78 | org.osgi.framework, | 78 | org.osgi.framework, |
| 79 | javax.ws.rs,javax.ws.rs.core,javax.ws.rs.ext, | 79 | javax.ws.rs,javax.ws.rs.core,javax.ws.rs.ext, |
| 80 | + javax.servlet.*, | ||
| 80 | com.sun.jersey.api, | 81 | com.sun.jersey.api, |
| 81 | com.sun.jersey.spi.container.servlet, | 82 | com.sun.jersey.spi.container.servlet, |
| 82 | com.sun.jersey.server.impl.container.servlet, | 83 | com.sun.jersey.server.impl.container.servlet, | ... | ... |
| ... | @@ -18,9 +18,11 @@ package org.onosproject.ui.impl; | ... | @@ -18,9 +18,11 @@ package org.onosproject.ui.impl; |
| 18 | import com.fasterxml.jackson.databind.node.ArrayNode; | 18 | import com.fasterxml.jackson.databind.node.ArrayNode; |
| 19 | import com.fasterxml.jackson.databind.node.ObjectNode; | 19 | import com.fasterxml.jackson.databind.node.ObjectNode; |
| 20 | import com.google.common.collect.ImmutableSet; | 20 | import com.google.common.collect.ImmutableSet; |
| 21 | +import org.onosproject.app.ApplicationAdminService; | ||
| 21 | import org.onosproject.app.ApplicationService; | 22 | import org.onosproject.app.ApplicationService; |
| 22 | import org.onosproject.app.ApplicationState; | 23 | import org.onosproject.app.ApplicationState; |
| 23 | import org.onosproject.core.Application; | 24 | import org.onosproject.core.Application; |
| 25 | +import org.onosproject.core.ApplicationId; | ||
| 24 | 26 | ||
| 25 | import java.util.Arrays; | 27 | import java.util.Arrays; |
| 26 | import java.util.List; | 28 | import java.util.List; |
| ... | @@ -37,11 +39,20 @@ public class ApplicationViewMessageHandler extends AbstractTabularViewMessageHan | ... | @@ -37,11 +39,20 @@ public class ApplicationViewMessageHandler extends AbstractTabularViewMessageHan |
| 37 | * Creates a new message handler for the application messages. | 39 | * Creates a new message handler for the application messages. |
| 38 | */ | 40 | */ |
| 39 | protected ApplicationViewMessageHandler() { | 41 | protected ApplicationViewMessageHandler() { |
| 40 | - super(ImmutableSet.of("appDataRequest")); | 42 | + super(ImmutableSet.of("appDataRequest", "appManagementRequest")); |
| 41 | } | 43 | } |
| 42 | 44 | ||
| 43 | @Override | 45 | @Override |
| 44 | public void process(ObjectNode message) { | 46 | public void process(ObjectNode message) { |
| 47 | + String type = string(message, "event", "unknown"); | ||
| 48 | + if (type.equals("appDataRequest")) { | ||
| 49 | + sendAppList(message); | ||
| 50 | + } else if (type.equals("appManagementRequest")) { | ||
| 51 | + processManagementCommand(message); | ||
| 52 | + } | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + private void sendAppList(ObjectNode message) { | ||
| 45 | ObjectNode payload = payload(message); | 56 | ObjectNode payload = payload(message); |
| 46 | String sortCol = string(payload, "sortCol", "id"); | 57 | String sortCol = string(payload, "sortCol", "id"); |
| 47 | String sortDir = string(payload, "sortDir", "asc"); | 58 | String sortDir = string(payload, "sortDir", "asc"); |
| ... | @@ -58,6 +69,24 @@ public class ApplicationViewMessageHandler extends AbstractTabularViewMessageHan | ... | @@ -58,6 +69,24 @@ public class ApplicationViewMessageHandler extends AbstractTabularViewMessageHan |
| 58 | connection().sendMessage("appDataResponse", 0, rootNode); | 69 | connection().sendMessage("appDataResponse", 0, rootNode); |
| 59 | } | 70 | } |
| 60 | 71 | ||
| 72 | + private void processManagementCommand(ObjectNode message) { | ||
| 73 | + ObjectNode payload = payload(message); | ||
| 74 | + String action = string(payload, "action"); | ||
| 75 | + String name = string(payload, "name"); | ||
| 76 | + if (action != null && name != null) { | ||
| 77 | + ApplicationAdminService service = get(ApplicationAdminService.class); | ||
| 78 | + ApplicationId appId = service.getId(name); | ||
| 79 | + if (action.equals("activate")) { | ||
| 80 | + service.activate(appId); | ||
| 81 | + } else if (action.equals("deactivate")) { | ||
| 82 | + service.deactivate(appId); | ||
| 83 | + } else if (action.equals("uninstall")) { | ||
| 84 | + service.uninstall(appId); | ||
| 85 | + } | ||
| 86 | + sendAppList(message); | ||
| 87 | + } | ||
| 88 | + } | ||
| 89 | + | ||
| 61 | private TableRow[] generateTableRows(ApplicationService service) { | 90 | private TableRow[] generateTableRows(ApplicationService service) { |
| 62 | List<TableRow> list = service.getApplications().stream() | 91 | List<TableRow> list = service.getApplications().stream() |
| 63 | .map(application -> new ApplicationTableRow(service, application)) | 92 | .map(application -> new ApplicationTableRow(service, application)) | ... | ... |
| ... | @@ -628,7 +628,9 @@ public class TopologyViewMessageHandler extends TopologyViewMessageHandlerBase { | ... | @@ -628,7 +628,9 @@ public class TopologyViewMessageHandler extends TopologyViewMessageHandlerBase { |
| 628 | public void event(MastershipEvent event) { | 628 | public void event(MastershipEvent event) { |
| 629 | sendAllInstances("updateInstance"); | 629 | sendAllInstances("updateInstance"); |
| 630 | Device device = deviceService.getDevice(event.subject()); | 630 | Device device = deviceService.getDevice(event.subject()); |
| 631 | - sendMessage(deviceMessage(new DeviceEvent(DEVICE_UPDATED, device))); | 631 | + if (device != null) { |
| 632 | + sendMessage(deviceMessage(new DeviceEvent(DEVICE_UPDATED, device))); | ||
| 633 | + } | ||
| 632 | } | 634 | } |
| 633 | } | 635 | } |
| 634 | 636 | ... | ... |
| ... | @@ -160,7 +160,6 @@ | ... | @@ -160,7 +160,6 @@ |
| 160 | <url-pattern>/websock/*</url-pattern> | 160 | <url-pattern>/websock/*</url-pattern> |
| 161 | </servlet-mapping> | 161 | </servlet-mapping> |
| 162 | 162 | ||
| 163 | - | ||
| 164 | <servlet> | 163 | <servlet> |
| 165 | <servlet-name>Legacy Web Socket Service</servlet-name> | 164 | <servlet-name>Legacy Web Socket Service</servlet-name> |
| 166 | <servlet-class>org.onosproject.ui.impl.GuiWebSocketServlet</servlet-class> | 165 | <servlet-class>org.onosproject.ui.impl.GuiWebSocketServlet</servlet-class> | ... | ... |
| ... | @@ -37,25 +37,45 @@ div.ctrl-btns div { | ... | @@ -37,25 +37,45 @@ div.ctrl-btns div { |
| 37 | cursor: pointer; | 37 | cursor: pointer; |
| 38 | } | 38 | } |
| 39 | 39 | ||
| 40 | -.light .ctrl-btns g.icon use { | 40 | + |
| 41 | - fill: #fff; | 41 | +/* Inactive */ |
| 42 | +.light .ctrl-btns div g.icon rect, | ||
| 43 | +.light .ctrl-btns div:hover g.icon rect { | ||
| 44 | + fill: #eee; | ||
| 45 | +} | ||
| 46 | +.dark .ctrl-btns div g.icon rect, | ||
| 47 | +.dark .ctrl-btns div:hover g.icon rect { | ||
| 48 | + fill: #222; | ||
| 42 | } | 49 | } |
| 43 | -.dark .ctrl-btns g.icon use { | 50 | + |
| 51 | +.light .ctrl-btns div g.icon use { | ||
| 52 | + fill: #ddd; | ||
| 53 | +} | ||
| 54 | +.dark .ctrl-btns div g.icon use { | ||
| 44 | fill: #333; | 55 | fill: #333; |
| 45 | } | 56 | } |
| 46 | 57 | ||
| 47 | -.light .ctrl-btns g.icon rect { | 58 | +/* Active hover */ |
| 48 | - fill: #bbb; | 59 | +.light .ctrl-btns div.active:hover g.icon rect { |
| 60 | + fill: #800; | ||
| 49 | } | 61 | } |
| 50 | -.dark .ctrl-btns g.icon rect { | 62 | + |
| 51 | - fill: #444; | 63 | +.dark .ctrl-btns div.active:hover g.icon rect { |
| 64 | + fill: #CE5650; | ||
| 52 | } | 65 | } |
| 53 | 66 | ||
| 54 | -/* Inactive */ | 67 | +/* Active */ |
| 55 | -.light .ctrl-btns .disabled g.icon rect { | 68 | +.light .ctrl-btns div.active g.icon use { |
| 69 | + fill: #fff; | ||
| 70 | +} | ||
| 71 | +.dark .ctrl-btns div.active g.icon use { | ||
| 56 | fill: #eee; | 72 | fill: #eee; |
| 57 | } | 73 | } |
| 58 | -.dark .ctrl-btns .disabled g.icon rect { | 74 | + |
| 59 | - fill: #111; | 75 | +.light .ctrl-btns div.active g.icon rect { |
| 76 | + fill: #bbb; | ||
| 77 | +} | ||
| 78 | +.dark .ctrl-btns div.active g.icon rect { | ||
| 79 | + fill: #444; | ||
| 60 | } | 80 | } |
| 61 | 81 | ... | ... |
| ... | @@ -3,11 +3,16 @@ | ... | @@ -3,11 +3,16 @@ |
| 3 | <div class="tabular-header"> | 3 | <div class="tabular-header"> |
| 4 | <h2>Applications ({{ctrl.tableData.length}} total)</h2> | 4 | <h2>Applications ({{ctrl.tableData.length}} total)</h2> |
| 5 | <div class="ctrl-btns"> | 5 | <div class="ctrl-btns"> |
| 6 | - <div icon icon-size="36" icon-id="plus"></div> | 6 | + <div id="app-install" icon icon-size="36" icon-id="plus" class="active"></div> |
| 7 | - <div icon icon-size="36" icon-id="minus" class="disabled"></div> | 7 | + <div id="app-activate" icon icon-size="36" icon-id="play"></div> |
| 8 | - <div icon icon-size="36" icon-id="play" class="disabled"></div> | 8 | + <div id="app-deactivate" icon icon-size="36" icon-id="stop"></div> |
| 9 | - <div icon icon-size="36" icon-id="stop" class="disabled"></div> | 9 | + <div id="app-uninstall" icon icon-size="36" icon-id="minus"></div> |
| 10 | </div> | 10 | </div> |
| 11 | + | ||
| 12 | + <form id="app-form" method="POST" action="/onos/v1/applications/upload" enctype="multipart/form-data" style="display:none"> | ||
| 13 | + <input type="file" id="file" accept=".oar"> | ||
| 14 | + <button type="submit" id="app-upload">Upload</button> | ||
| 15 | + </form> | ||
| 11 | </div> | 16 | </div> |
| 12 | 17 | ||
| 13 | <table class="summary-list" | 18 | <table class="summary-list" |
| ... | @@ -20,7 +25,7 @@ | ... | @@ -20,7 +25,7 @@ |
| 20 | <th colId="id" sortable>App ID </th> | 25 | <th colId="id" sortable>App ID </th> |
| 21 | <th colId="version" sortable>Version </th> | 26 | <th colId="version" sortable>Version </th> |
| 22 | <th colId="origin" sortable>Origin </th> | 27 | <th colId="origin" sortable>Origin </th> |
| 23 | - <th colId="desc" col-width="400px">Description </th> | 28 | + <th colId="desc" col-width="640px">Description </th> |
| 24 | </tr> | 29 | </tr> |
| 25 | </thead> | 30 | </thead> |
| 26 | 31 | ... | ... |
| 1 | /* | 1 | /* |
| 2 | * Copyright 2015 Open Networking Laboratory | 2 | * Copyright 2015 Open Networking Laboratory |
| 3 | * | 3 | * |
| 4 | - * Licensed under the Apache License, Version 2.0 (the "License"); | 4 | + * Licensed under the Apache License, Version 2.0 (the 'License'); |
| 5 | * you may not use this file except in compliance with 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 | 6 | * You may obtain a copy of the License at |
| 7 | * | 7 | * |
| 8 | * http://www.apache.org/licenses/LICENSE-2.0 | 8 | * http://www.apache.org/licenses/LICENSE-2.0 |
| 9 | * | 9 | * |
| 10 | * Unless required by applicable law or agreed to in writing, software | 10 | * Unless required by applicable law or agreed to in writing, software |
| 11 | - * distributed under the License is distributed on an "AS IS" BASIS, | 11 | + * distributed under the License is distributed on an 'AS IS' BASIS, |
| 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 13 | * See the License for the specific language governing permissions and | 13 | * See the License for the specific language governing permissions and |
| 14 | * limitations under the License. | 14 | * limitations under the License. |
| ... | @@ -21,19 +21,49 @@ | ... | @@ -21,19 +21,49 @@ |
| 21 | (function () { | 21 | (function () { |
| 22 | 'use strict'; | 22 | 'use strict'; |
| 23 | 23 | ||
| 24 | - var selRow; | 24 | + var selRow, selection; |
| 25 | 25 | ||
| 26 | angular.module('ovApp', []) | 26 | angular.module('ovApp', []) |
| 27 | .controller('OvAppCtrl', | 27 | .controller('OvAppCtrl', |
| 28 | - ['$log', '$scope', 'TableBuilderService', | 28 | + ['$log', '$scope', 'TableBuilderService', 'WebSocketService', |
| 29 | 29 | ||
| 30 | - function ($log, $scope, tbs) { | 30 | + function ($log, $scope, tbs, wss) { |
| 31 | function selCb($event, row) { | 31 | function selCb($event, row) { |
| 32 | selRow = angular.element($event.currentTarget); | 32 | selRow = angular.element($event.currentTarget); |
| 33 | - // adjust which toolbar buttons are selected | 33 | + selection = row; |
| 34 | $log.debug('Got a click on:', row); | 34 | $log.debug('Got a click on:', row); |
| 35 | + // adjust which toolbar buttons are selected | ||
| 36 | + d3.select('#app-activate').classed('active', row && row.state === 'INSTALLED'); | ||
| 37 | + d3.select('#app-deactivate').classed('active', row && row.state === 'ACTIVE'); | ||
| 38 | + d3.select('#app-uninstall').classed('active', row); | ||
| 35 | } | 39 | } |
| 36 | 40 | ||
| 41 | + d3.select('#app-install').on('click', function () { | ||
| 42 | + $log.debug('Initiating install'); | ||
| 43 | + var evt = document.createEvent("HTMLEvents"); | ||
| 44 | + evt.initEvent("click", true, true); | ||
| 45 | + document.getElementById('file').dispatchEvent(evt); | ||
| 46 | + }); | ||
| 47 | + | ||
| 48 | + function appAction(action) { | ||
| 49 | + if (selection) { | ||
| 50 | + $log.debug('Initiating uninstall of', selection); | ||
| 51 | + wss.sendEvent('appManagementRequest', {action: action, name: selection.id}); | ||
| 52 | + } | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + d3.select('#file').on('change', function () { | ||
| 56 | + var file = document.getElementById('file').value.replace('C:\\fakepath\\', ''); | ||
| 57 | + $log.info('Handling file', file); | ||
| 58 | + var evt = document.createEvent("HTMLEvents"); | ||
| 59 | + evt.initEvent("click", true, true); | ||
| 60 | + document.getElementById('app-upload').dispatchEvent(evt); | ||
| 61 | + }); | ||
| 62 | + | ||
| 63 | + d3.select('#app-uninstall').on('click', function () { appAction('uninstall'); }); | ||
| 64 | + d3.select('#app-activate').on('click', function () { appAction('activate'); }); | ||
| 65 | + d3.select('#app-deactivate').on('click', function () { appAction('deactivate'); }); | ||
| 66 | + | ||
| 37 | tbs.buildTable({ | 67 | tbs.buildTable({ |
| 38 | self: this, | 68 | self: this, |
| 39 | scope: $scope, | 69 | scope: $scope, | ... | ... |
-
Please register or login to post a comment