Committed by
Gerrit Code Review
[Falcon] Add REST APIs for the OLT app
Change-Id: If0be7113e26b4311cb0e7496e370158d6672f1c7
Showing
4 changed files
with
227 additions
and
18 deletions
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. |
... | @@ -16,23 +16,29 @@ | ... | @@ -16,23 +16,29 @@ |
16 | --> | 16 | --> |
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/xsd/maven-4.0.0.xsd"> |
20 | - <modelVersion>4.0.0</modelVersion> | ||
21 | - | ||
22 | <parent> | 20 | <parent> |
23 | <groupId>org.onosproject</groupId> | 21 | <groupId>org.onosproject</groupId> |
24 | <artifactId>onos-apps</artifactId> | 22 | <artifactId>onos-apps</artifactId> |
25 | <version>1.5.0-SNAPSHOT</version> | 23 | <version>1.5.0-SNAPSHOT</version> |
26 | <relativePath>../pom.xml</relativePath> | 24 | <relativePath>../pom.xml</relativePath> |
27 | </parent> | 25 | </parent> |
26 | + <modelVersion>4.0.0</modelVersion> | ||
28 | 27 | ||
29 | <artifactId>onos-app-olt</artifactId> | 28 | <artifactId>onos-app-olt</artifactId> |
30 | - <packaging>bundle</packaging> | ||
31 | 29 | ||
32 | - <description>OLT application</description> | 30 | + <packaging>bundle</packaging> |
31 | + <description>OLT application for CORD</description> | ||
33 | 32 | ||
34 | <properties> | 33 | <properties> |
35 | <onos.app.name>org.onosproject.olt</onos.app.name> | 34 | <onos.app.name>org.onosproject.olt</onos.app.name> |
35 | + <web.context>/onos/olt</web.context> | ||
36 | + <api.version>1.0.0</api.version> | ||
37 | + <api.title>ONOS OLT REST API</api.title> | ||
38 | + <api.description> | ||
39 | + APIs for interacting with the CORD OLT application. | ||
40 | + </api.description> | ||
41 | + <api.package>org.onosproject.olt</api.package> | ||
36 | </properties> | 42 | </properties> |
37 | 43 | ||
38 | <dependencies> | 44 | <dependencies> |
... | @@ -41,27 +47,90 @@ | ... | @@ -41,27 +47,90 @@ |
41 | <artifactId>onos-cli</artifactId> | 47 | <artifactId>onos-cli</artifactId> |
42 | <version>${project.version}</version> | 48 | <version>${project.version}</version> |
43 | </dependency> | 49 | </dependency> |
50 | + | ||
44 | <dependency> | 51 | <dependency> |
45 | <groupId>org.apache.karaf.shell</groupId> | 52 | <groupId>org.apache.karaf.shell</groupId> |
46 | <artifactId>org.apache.karaf.shell.console</artifactId> | 53 | <artifactId>org.apache.karaf.shell.console</artifactId> |
47 | </dependency> | 54 | </dependency> |
48 | - <dependency> | ||
49 | - <groupId>com.google.guava</groupId> | ||
50 | - <artifactId>guava</artifactId> | ||
51 | - </dependency> | ||
52 | - <dependency> | ||
53 | - <groupId>org.onosproject</groupId> | ||
54 | - <artifactId>onlab-misc</artifactId> | ||
55 | - </dependency> | ||
56 | <dependency> | 55 | <dependency> |
57 | - <groupId>org.apache.felix</groupId> | 56 | + <groupId>org.onosproject</groupId> |
58 | - <artifactId>org.apache.felix.scr</artifactId> | 57 | + <artifactId>onos-rest</artifactId> |
59 | - <version>1.8.2</version> | 58 | + <version>${project.version}</version> |
60 | </dependency> | 59 | </dependency> |
61 | <dependency> | 60 | <dependency> |
61 | + <groupId>org.onosproject</groupId> | ||
62 | + <artifactId>onlab-rest</artifactId> | ||
63 | + <version>${project.version}</version> | ||
64 | + </dependency> | ||
65 | + <dependency> | ||
66 | + <groupId>javax.ws.rs</groupId> | ||
67 | + <artifactId>jsr311-api</artifactId> | ||
68 | + <version>1.1.1</version> | ||
69 | + </dependency> | ||
70 | + <dependency> | ||
71 | + <groupId>com.sun.jersey</groupId> | ||
72 | + <artifactId>jersey-servlet</artifactId> | ||
73 | + </dependency> | ||
74 | + <dependency> | ||
75 | + <groupId>com.fasterxml.jackson.core</groupId> | ||
76 | + <artifactId>jackson-databind</artifactId> | ||
77 | + </dependency> | ||
78 | + | ||
79 | + <dependency> | ||
80 | + <groupId>com.fasterxml.jackson.core</groupId> | ||
81 | + <artifactId>jackson-annotations</artifactId> | ||
82 | + </dependency> | ||
83 | + | ||
84 | + <dependency> | ||
62 | <groupId>org.osgi</groupId> | 85 | <groupId>org.osgi</groupId> |
63 | <artifactId>org.osgi.compendium</artifactId> | 86 | <artifactId>org.osgi.compendium</artifactId> |
64 | - <version>5.0.0</version> | 87 | + </dependency> |
88 | + <dependency> | ||
89 | + <groupId>org.osgi</groupId> | ||
90 | + <artifactId>org.osgi.core</artifactId> | ||
65 | </dependency> | 91 | </dependency> |
66 | </dependencies> | 92 | </dependencies> |
93 | + | ||
94 | + <build> | ||
95 | + <plugins> | ||
96 | + <plugin> | ||
97 | + <groupId>org.apache.felix</groupId> | ||
98 | + <artifactId>maven-bundle-plugin</artifactId> | ||
99 | + <extensions>true</extensions> | ||
100 | + <configuration> | ||
101 | + <instructions> | ||
102 | + <_wab>src/main/webapp/</_wab> | ||
103 | + <Include-Resource> | ||
104 | + WEB-INF/classes/apidoc/swagger.json=target/swagger.json, | ||
105 | + {maven-resources} | ||
106 | + </Include-Resource> | ||
107 | + <Bundle-SymbolicName> | ||
108 | + ${project.groupId}.${project.artifactId} | ||
109 | + </Bundle-SymbolicName> | ||
110 | + <Import-Package> | ||
111 | + org.slf4j, | ||
112 | + org.osgi.framework, | ||
113 | + org.osgi.service.*, | ||
114 | + javax.ws.rs, | ||
115 | + javax.ws.rs.core, | ||
116 | + com.sun.jersey.api.core, | ||
117 | + com.sun.jersey.spi.container.servlet, | ||
118 | + com.sun.jersey.server.impl.container.servlet, | ||
119 | + com.fasterxml.jackson.databind, | ||
120 | + com.fasterxml.jackson.databind.node, | ||
121 | + org.apache.karaf.shell.commands, | ||
122 | + org.apache.commons.lang.math.*, | ||
123 | + com.google.common.*, | ||
124 | + org.onlab.packet.*, | ||
125 | + org.onlab.rest.*, | ||
126 | + org.onosproject.*, | ||
127 | + org.onlab.util.*, | ||
128 | + org.jboss.netty.util.* | ||
129 | + </Import-Package> | ||
130 | + <Web-ContextPath>${web.context}</Web-ContextPath> | ||
131 | + </instructions> | ||
132 | + </configuration> | ||
133 | + </plugin> | ||
134 | + </plugins> | ||
135 | + </build> | ||
67 | </project> | 136 | </project> | ... | ... |
1 | +/* | ||
2 | + * Copyright 2015 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | +package org.onosproject.olt.rest; | ||
17 | + | ||
18 | +import javax.ws.rs.DELETE; | ||
19 | +import javax.ws.rs.POST; | ||
20 | +import javax.ws.rs.Path; | ||
21 | +import javax.ws.rs.PathParam; | ||
22 | +import javax.ws.rs.Produces; | ||
23 | +import javax.ws.rs.core.MediaType; | ||
24 | +import javax.ws.rs.core.Response; | ||
25 | + | ||
26 | +import org.onlab.packet.VlanId; | ||
27 | +import org.onosproject.net.ConnectPoint; | ||
28 | +import org.onosproject.net.DeviceId; | ||
29 | +import org.onosproject.net.PortNumber; | ||
30 | +import org.onosproject.olt.AccessDeviceService; | ||
31 | +import org.onosproject.rest.AbstractWebResource; | ||
32 | + | ||
33 | +/** | ||
34 | + * OLT REST APIs. | ||
35 | + */ | ||
36 | + | ||
37 | +@Path("oltapp") | ||
38 | +public class OltWebResource extends AbstractWebResource { | ||
39 | + | ||
40 | + /** | ||
41 | + * Provision a subscriber. | ||
42 | + * | ||
43 | + * @return 200 OK | ||
44 | + */ | ||
45 | + @POST | ||
46 | + @Produces(MediaType.APPLICATION_JSON) | ||
47 | + @Path("{device}/{port}/{vlan}") | ||
48 | + public Response provisionSubscriber( | ||
49 | + @PathParam("device")String device, | ||
50 | + @PathParam("port")long port, | ||
51 | + @PathParam("vlan")short vlan) { | ||
52 | + AccessDeviceService service = get(AccessDeviceService.class); | ||
53 | + DeviceId deviceId = DeviceId.deviceId(device); | ||
54 | + PortNumber portNumber = PortNumber.portNumber(port); | ||
55 | + VlanId vlanId = VlanId.vlanId(vlan); | ||
56 | + ConnectPoint connectPoint = new ConnectPoint(deviceId, portNumber); | ||
57 | + service.provisionSubscriber(connectPoint, vlanId); | ||
58 | + return ok("").build(); | ||
59 | + } | ||
60 | + | ||
61 | + /** | ||
62 | + * Remove the provisioning for a subscriber. | ||
63 | + */ | ||
64 | + @DELETE | ||
65 | + @Produces(MediaType.APPLICATION_JSON) | ||
66 | + @Path("{device}/{port}") | ||
67 | + public Response removeSubscriber( | ||
68 | + @PathParam("device")String device, | ||
69 | + @PathParam("port")long port) { | ||
70 | + AccessDeviceService service = get(AccessDeviceService.class); | ||
71 | + DeviceId deviceId = DeviceId.deviceId(device); | ||
72 | + PortNumber portNumber = PortNumber.portNumber(port); | ||
73 | + ConnectPoint connectPoint = new ConnectPoint(deviceId, portNumber); | ||
74 | + service.removeSubscriber(connectPoint); | ||
75 | + return ok("").build(); | ||
76 | + } | ||
77 | +} |
1 | +/* | ||
2 | + * Copyright 2015 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +/** | ||
18 | + * REST APIs for the OLT application. | ||
19 | + */ | ||
20 | +package org.onosproject.olt.rest; |
apps/olt/src/main/webapp/WEB-INF/web.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 | +<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" | ||
18 | + xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" | ||
19 | + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" | ||
20 | + id="ONOS" version="2.5"> | ||
21 | + <display-name>OLT REST API v1.0</display-name> | ||
22 | + | ||
23 | + <servlet> | ||
24 | + <servlet-name>JAX-RS Service</servlet-name> | ||
25 | + <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> | ||
26 | + <init-param> | ||
27 | + <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name> | ||
28 | + <param-value>com.sun.jersey.api.core.ClassNamesResourceConfig</param-value> | ||
29 | + </init-param> | ||
30 | + <init-param> | ||
31 | + <param-name>com.sun.jersey.config.property.classnames</param-name> | ||
32 | + <param-value> | ||
33 | + org.onosproject.olt.rest.OltWebResource | ||
34 | + </param-value> | ||
35 | + </init-param> | ||
36 | + <load-on-startup>1</load-on-startup> | ||
37 | + </servlet> | ||
38 | + | ||
39 | + <servlet-mapping> | ||
40 | + <servlet-name>JAX-RS Service</servlet-name> | ||
41 | + <url-pattern>/*</url-pattern> | ||
42 | + </servlet-mapping> | ||
43 | +</web-app> |
-
Please register or login to post a comment