Committed by
Gerrit Code Review
[Falcon] CORD-368 Skeleton of service dependency APIs
- Changed service ID from VNI to network ID - Added REST APIs(POST/DELETE/PUT) - Added interfaces to CordVtnService(create/remove) - Renamed Service/ServiceId to more specific Change-Id: I80322fea28a7740a2cc7723b576e7bb9ff08389e
Showing
8 changed files
with
254 additions
and
57 deletions
... | @@ -33,6 +33,13 @@ | ... | @@ -33,6 +33,13 @@ |
33 | 33 | ||
34 | <properties> | 34 | <properties> |
35 | <onos.app.name>org.onosproject.cordvtn</onos.app.name> | 35 | <onos.app.name>org.onosproject.cordvtn</onos.app.name> |
36 | + <web.context>/onos/cordvtn</web.context> | ||
37 | + <api.version>1.0.0</api.version> | ||
38 | + <api.title>CORD VTN REST API</api.title> | ||
39 | + <api.description> | ||
40 | + APIs for interacting with the CORD VTN application. | ||
41 | + </api.description> | ||
42 | + <api.package>org.onosproject.cordvtn.rest</api.package> | ||
36 | <onos.app.requires> | 43 | <onos.app.requires> |
37 | org.onosproject.ovsdb, | 44 | org.onosproject.ovsdb, |
38 | org.onosproject.openstackswitching | 45 | org.onosproject.openstackswitching |
... | @@ -102,4 +109,47 @@ | ... | @@ -102,4 +109,47 @@ |
102 | </dependency> | 109 | </dependency> |
103 | </dependencies> | 110 | </dependencies> |
104 | 111 | ||
112 | + <build> | ||
113 | + <plugins> | ||
114 | + <plugin> | ||
115 | + <groupId>org.apache.felix</groupId> | ||
116 | + <artifactId>maven-bundle-plugin</artifactId> | ||
117 | + <extensions>true</extensions> | ||
118 | + <configuration> | ||
119 | + <instructions> | ||
120 | + <_wab>src/main/webapp/</_wab> | ||
121 | + <Include-Resource> | ||
122 | + WEB-INF/classes/apidoc/swagger.json=target/swagger.json, | ||
123 | + {maven-resources} | ||
124 | + </Include-Resource> | ||
125 | + <Bundle-SymbolicName> | ||
126 | + ${project.groupId}.${project.artifactId} | ||
127 | + </Bundle-SymbolicName> | ||
128 | + <Import-Package> | ||
129 | + org.slf4j, | ||
130 | + org.osgi.framework, | ||
131 | + javax.ws.rs, | ||
132 | + javax.ws.rs.core, | ||
133 | + com.sun.jersey.api.core, | ||
134 | + com.sun.jersey.spi.container.servlet, | ||
135 | + com.sun.jersey.server.impl.container.servlet, | ||
136 | + com.fasterxml.jackson.databind, | ||
137 | + com.fasterxml.jackson.databind.node, | ||
138 | + com.fasterxml.jackson.core, | ||
139 | + org.apache.karaf.shell.commands, | ||
140 | + org.apache.karaf.shell.console, | ||
141 | + com.google.common.*, | ||
142 | + org.onlab.packet.*, | ||
143 | + org.onlab.rest.*, | ||
144 | + org.onosproject.*, | ||
145 | + org.onlab.util.*, | ||
146 | + org.jboss.netty.util.* | ||
147 | + </Import-Package> | ||
148 | + <Web-ContextPath>${web.context}</Web-ContextPath> | ||
149 | + </instructions> | ||
150 | + </configuration> | ||
151 | + </plugin> | ||
152 | + </plugins> | ||
153 | + </build> | ||
154 | + | ||
105 | </project> | 155 | </project> | ... | ... |
... | @@ -21,7 +21,7 @@ import org.onlab.packet.IpPrefix; | ... | @@ -21,7 +21,7 @@ import org.onlab.packet.IpPrefix; |
21 | 21 | ||
22 | import java.util.Objects; | 22 | import java.util.Objects; |
23 | 23 | ||
24 | -public final class Service { | 24 | +public final class CordService { |
25 | 25 | ||
26 | enum ServiceType { | 26 | enum ServiceType { |
27 | PRIVATE, | 27 | PRIVATE, |
... | @@ -31,8 +31,8 @@ public final class Service { | ... | @@ -31,8 +31,8 @@ public final class Service { |
31 | PUBLIC_INDIRECT | 31 | PUBLIC_INDIRECT |
32 | } | 32 | } |
33 | 33 | ||
34 | - private final ServiceId serviceId; | 34 | + private final CordServiceId id; |
35 | - private final String networkId; | 35 | + private final long segmentationId; |
36 | private final ServiceType serviceType; | 36 | private final ServiceType serviceType; |
37 | private final IpPrefix serviceIpRange; | 37 | private final IpPrefix serviceIpRange; |
38 | private final IpAddress serviceIp; | 38 | private final IpAddress serviceIp; |
... | @@ -40,16 +40,16 @@ public final class Service { | ... | @@ -40,16 +40,16 @@ public final class Service { |
40 | /** | 40 | /** |
41 | * Default constructor. | 41 | * Default constructor. |
42 | * | 42 | * |
43 | - * @param serviceId service id | 43 | + * @param id service id, which is identical to OpenStack network id |
44 | - * @param networkId OpenStack Neutron network id | 44 | + * @param segmentationId segmentation id, which is identical to VNI |
45 | * @param serviceType service type | 45 | * @param serviceType service type |
46 | * @param serviceIpRange service ip range | 46 | * @param serviceIpRange service ip range |
47 | * @param serviceIp service ip | 47 | * @param serviceIp service ip |
48 | */ | 48 | */ |
49 | - public Service(ServiceId serviceId, String networkId, ServiceType serviceType, | 49 | + public CordService(CordServiceId id, long segmentationId, ServiceType serviceType, |
50 | IpPrefix serviceIpRange, IpAddress serviceIp) { | 50 | IpPrefix serviceIpRange, IpAddress serviceIp) { |
51 | - this.serviceId = serviceId; | 51 | + this.id = id; |
52 | - this.networkId = networkId; | 52 | + this.segmentationId = segmentationId; |
53 | this.serviceType = serviceType; | 53 | this.serviceType = serviceType; |
54 | this.serviceIpRange = serviceIpRange; | 54 | this.serviceIpRange = serviceIpRange; |
55 | this.serviceIp = serviceIp; | 55 | this.serviceIp = serviceIp; |
... | @@ -60,17 +60,17 @@ public final class Service { | ... | @@ -60,17 +60,17 @@ public final class Service { |
60 | * | 60 | * |
61 | * @return service id | 61 | * @return service id |
62 | */ | 62 | */ |
63 | - public ServiceId serviceId() { | 63 | + public CordServiceId id() { |
64 | - return serviceId; | 64 | + return id; |
65 | } | 65 | } |
66 | 66 | ||
67 | /** | 67 | /** |
68 | - * Returns OpenStack Neutron network ID of this service. | 68 | + * Returns segmentation ID of this service. |
69 | * | 69 | * |
70 | - * @return network id | 70 | + * @return segmentation id |
71 | */ | 71 | */ |
72 | - public String networkId() { | 72 | + public long segmentationId() { |
73 | - return networkId; | 73 | + return segmentationId; |
74 | } | 74 | } |
75 | 75 | ||
76 | /** | 76 | /** |
... | @@ -102,7 +102,7 @@ public final class Service { | ... | @@ -102,7 +102,7 @@ public final class Service { |
102 | 102 | ||
103 | @Override | 103 | @Override |
104 | public int hashCode() { | 104 | public int hashCode() { |
105 | - return Objects.hash(serviceId); | 105 | + return Objects.hash(id); |
106 | } | 106 | } |
107 | 107 | ||
108 | @Override | 108 | @Override |
... | @@ -110,18 +110,18 @@ public final class Service { | ... | @@ -110,18 +110,18 @@ public final class Service { |
110 | if (this == obj) { | 110 | if (this == obj) { |
111 | return true; | 111 | return true; |
112 | } | 112 | } |
113 | - if (!(obj instanceof Service)) { | 113 | + if (!(obj instanceof CordService)) { |
114 | return false; | 114 | return false; |
115 | } | 115 | } |
116 | - final Service other = (Service) obj; | 116 | + final CordService other = (CordService) obj; |
117 | - return Objects.equals(this.serviceId, other.serviceId); | 117 | + return Objects.equals(this.id, other.id); |
118 | } | 118 | } |
119 | 119 | ||
120 | @Override | 120 | @Override |
121 | public String toString() { | 121 | public String toString() { |
122 | return MoreObjects.toStringHelper(this) | 122 | return MoreObjects.toStringHelper(this) |
123 | - .add("serviceId", serviceId) | 123 | + .add("id", id) |
124 | - .add("networkId", networkId) | 124 | + .add("segmentationId", segmentationId) |
125 | .add("serviceType", serviceType) | 125 | .add("serviceType", serviceType) |
126 | .add("serviceIpRange", serviceIpRange) | 126 | .add("serviceIpRange", serviceIpRange) |
127 | .add("serviceIp", serviceIp) | 127 | .add("serviceIp", serviceIp) | ... | ... |
... | @@ -19,30 +19,33 @@ import com.google.common.base.MoreObjects; | ... | @@ -19,30 +19,33 @@ import com.google.common.base.MoreObjects; |
19 | 19 | ||
20 | import java.util.Objects; | 20 | import java.util.Objects; |
21 | 21 | ||
22 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
23 | + | ||
22 | /** | 24 | /** |
23 | * Representation of service identifier. | 25 | * Representation of service identifier. |
24 | */ | 26 | */ |
25 | -public final class ServiceId { | 27 | +public final class CordServiceId { |
26 | 28 | ||
27 | - private final long serviceId; | 29 | + private final String id; |
28 | 30 | ||
29 | /** | 31 | /** |
30 | * Default constructor. | 32 | * Default constructor. |
31 | * | 33 | * |
32 | - * @param serviceId service identifier | 34 | + * @param id service identifier |
33 | */ | 35 | */ |
34 | - private ServiceId(long serviceId) { | 36 | + private CordServiceId(String id) { |
35 | - this.serviceId = serviceId; | 37 | + this.id = id; |
36 | } | 38 | } |
37 | 39 | ||
38 | /** | 40 | /** |
39 | - * Returns the ServiceId with value. | 41 | + * Returns the CordServiceId with value. |
40 | * | 42 | * |
41 | - * @param serviceId service id | 43 | + * @param id service id |
42 | - * @return ServiceId | 44 | + * @return CordServiceId |
43 | */ | 45 | */ |
44 | - public static ServiceId of(long serviceId) { | 46 | + public static CordServiceId of(String id) { |
45 | - return new ServiceId(serviceId); | 47 | + checkNotNull(id); |
48 | + return new CordServiceId(id); | ||
46 | } | 49 | } |
47 | 50 | ||
48 | /** | 51 | /** |
... | @@ -50,13 +53,13 @@ public final class ServiceId { | ... | @@ -50,13 +53,13 @@ public final class ServiceId { |
50 | * | 53 | * |
51 | * @return service id | 54 | * @return service id |
52 | */ | 55 | */ |
53 | - public long serviceId() { | 56 | + public String id() { |
54 | - return serviceId; | 57 | + return id; |
55 | } | 58 | } |
56 | 59 | ||
57 | @Override | 60 | @Override |
58 | public int hashCode() { | 61 | public int hashCode() { |
59 | - return Objects.hash(serviceId); | 62 | + return Objects.hash(id); |
60 | } | 63 | } |
61 | 64 | ||
62 | @Override | 65 | @Override |
... | @@ -64,17 +67,17 @@ public final class ServiceId { | ... | @@ -64,17 +67,17 @@ public final class ServiceId { |
64 | if (this == obj) { | 67 | if (this == obj) { |
65 | return true; | 68 | return true; |
66 | } | 69 | } |
67 | - if (!(obj instanceof ServiceId)) { | 70 | + if (!(obj instanceof CordServiceId)) { |
68 | return false; | 71 | return false; |
69 | } | 72 | } |
70 | - final ServiceId other = (ServiceId) obj; | 73 | + final CordServiceId other = (CordServiceId) obj; |
71 | - return Objects.equals(this.serviceId, other.serviceId); | 74 | + return Objects.equals(this.id, other.id); |
72 | } | 75 | } |
73 | 76 | ||
74 | @Override | 77 | @Override |
75 | public String toString() { | 78 | public String toString() { |
76 | return MoreObjects.toStringHelper(this) | 79 | return MoreObjects.toStringHelper(this) |
77 | - .add("serviceId", serviceId) | 80 | + .add("id", id) |
78 | .toString(); | 81 | .toString(); |
79 | } | 82 | } |
80 | } | 83 | } | ... | ... |
... | @@ -277,11 +277,19 @@ public class CordVtn implements CordVtnService { | ... | @@ -277,11 +277,19 @@ public class CordVtn implements CordVtnService { |
277 | } | 277 | } |
278 | 278 | ||
279 | @Override | 279 | @Override |
280 | - public void createServiceDependency(ServiceId tenantServiceId, ServiceId providerServiceId) { | 280 | + public void createServiceDependency(CordServiceId tenantCordServiceId, |
281 | + CordServiceId providerCordServiceId) { | ||
282 | + CordService tenantService = getCordService(tenantCordServiceId); | ||
283 | + CordService providerService = getCordService(providerCordServiceId); | ||
284 | + | ||
285 | + // TODO populate flow rules to create service dependency | ||
281 | } | 286 | } |
282 | 287 | ||
283 | @Override | 288 | @Override |
284 | - public void removeServiceDependency(ServiceId tenantServiceId, ServiceId providerServiceId) { | 289 | + public void removeServiceDependency(CordServiceId tenantCordServiceId) { |
290 | + CordService tenantService = getCordService(tenantCordServiceId); | ||
291 | + | ||
292 | + //TODO uninstall flow rules to remove service dependency | ||
285 | } | 293 | } |
286 | 294 | ||
287 | /** | 295 | /** |
... | @@ -688,6 +696,23 @@ public class CordVtn implements CordVtnService { | ... | @@ -688,6 +696,23 @@ public class CordVtn implements CordVtnService { |
688 | } | 696 | } |
689 | 697 | ||
690 | /** | 698 | /** |
699 | + * Returns OpenStack network associated with a given CORD service. | ||
700 | + * | ||
701 | + * @param serviceId service id | ||
702 | + * @return cord service, or null if it fails to get network from OpenStack | ||
703 | + */ | ||
704 | + private CordService getCordService(CordServiceId serviceId) { | ||
705 | + OpenstackNetwork vNet = openstackService.network(serviceId.id()); | ||
706 | + if (vNet == null) { | ||
707 | + log.warn("Couldn't find OpenStack network for service {}", serviceId.id()); | ||
708 | + return null; | ||
709 | + } | ||
710 | + | ||
711 | + // TODO create CordService with network/subnet information from Neutron | ||
712 | + return null; | ||
713 | + } | ||
714 | + | ||
715 | + /** | ||
691 | * Installs flow rules for a given OpenStack network. | 716 | * Installs flow rules for a given OpenStack network. |
692 | * | 717 | * |
693 | * @param vNet OpenStack network | 718 | * @param vNet OpenStack network | ... | ... |
... | @@ -67,18 +67,17 @@ public interface CordVtnService { | ... | @@ -67,18 +67,17 @@ public interface CordVtnService { |
67 | List<CordVtnNode> getNodes(); | 67 | List<CordVtnNode> getNodes(); |
68 | 68 | ||
69 | /** | 69 | /** |
70 | - * Creates a dependency between two services. | 70 | + * Creates dependencies for a given tenant service. |
71 | * | 71 | * |
72 | - * @param tenantServiceId id of the service which has a dependency | 72 | + * @param tenantCordServiceId id of the service which has a dependency |
73 | - * @param providerServiceId id of the service which provides dependency | 73 | + * @param providerCordServiceId id of the service which provide dependency |
74 | */ | 74 | */ |
75 | - void createServiceDependency(ServiceId tenantServiceId, ServiceId providerServiceId); | 75 | + void createServiceDependency(CordServiceId tenantCordServiceId, CordServiceId providerCordServiceId); |
76 | 76 | ||
77 | /** | 77 | /** |
78 | - * Removes a dependency between two services. | 78 | + * Removes all dependencies from a given tenant service. |
79 | * | 79 | * |
80 | - * @param tenantServiceId id of the service which has a dependency | 80 | + * @param tenantCordServiceId id of the service which has a dependency |
81 | - * @param providerServiceId id of the service which provides dependency | ||
82 | */ | 81 | */ |
83 | - void removeServiceDependency(ServiceId tenantServiceId, ServiceId providerServiceId); | 82 | + void removeServiceDependency(CordServiceId tenantCordServiceId); |
84 | } | 83 | } | ... | ... |
1 | /* | 1 | /* |
2 | - * Copyright 2015 Open Networking Laboratory | 2 | + * Copyright 2014-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. |
... | @@ -13,17 +13,19 @@ | ... | @@ -13,17 +13,19 @@ |
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. |
15 | */ | 15 | */ |
16 | + | ||
16 | package org.onosproject.cordvtn.rest; | 17 | package org.onosproject.cordvtn.rest; |
17 | 18 | ||
18 | -import org.apache.felix.scr.annotations.Component; | 19 | +import org.onlab.rest.AbstractWebApplication; |
19 | -import org.onosproject.rest.AbstractApiDocRegistrator; | 20 | + |
20 | -import org.onosproject.rest.ApiDocProvider; | 21 | +import java.util.Set; |
21 | 22 | ||
22 | -@Component(immediate = true) | 23 | +/** |
23 | -public class ApiDocRegistrator extends AbstractApiDocRegistrator { | 24 | + * CORD VTN Web application. |
24 | - public ApiDocRegistrator() { | 25 | + */ |
25 | - super(new ApiDocProvider("/onos/cordvtn", | 26 | +public class CordVtnWebApplication extends AbstractWebApplication { |
26 | - "CORD VTN Service REST API", | 27 | + @Override |
27 | - ApiDocRegistrator.class.getClassLoader())); | 28 | + public Set<Class<?>> getClasses() { |
29 | + return getClasses(ServiceDependencyWebResource.class); | ||
28 | } | 30 | } |
29 | } | 31 | } | ... | ... |
... | @@ -15,13 +15,74 @@ | ... | @@ -15,13 +15,74 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.cordvtn.rest; | 16 | package org.onosproject.cordvtn.rest; |
17 | 17 | ||
18 | +import org.onosproject.cordvtn.CordVtnService; | ||
19 | +import org.onosproject.cordvtn.CordServiceId; | ||
18 | import org.onosproject.rest.AbstractWebResource; | 20 | import org.onosproject.rest.AbstractWebResource; |
19 | 21 | ||
22 | +import javax.ws.rs.Consumes; | ||
23 | +import javax.ws.rs.DELETE; | ||
24 | +import javax.ws.rs.POST; | ||
25 | +import javax.ws.rs.PUT; | ||
20 | import javax.ws.rs.Path; | 26 | import javax.ws.rs.Path; |
27 | +import javax.ws.rs.PathParam; | ||
28 | +import javax.ws.rs.Produces; | ||
29 | +import javax.ws.rs.core.MediaType; | ||
30 | +import javax.ws.rs.core.Response; | ||
31 | +import java.io.InputStream; | ||
21 | 32 | ||
22 | /** | 33 | /** |
23 | * Manages service dependency. | 34 | * Manages service dependency. |
24 | */ | 35 | */ |
25 | @Path("service-dependency") | 36 | @Path("service-dependency") |
26 | public class ServiceDependencyWebResource extends AbstractWebResource { | 37 | public class ServiceDependencyWebResource extends AbstractWebResource { |
38 | + | ||
39 | + private final CordVtnService service = get(CordVtnService.class); | ||
40 | + | ||
41 | + /** | ||
42 | + * Creates service dependencies. | ||
43 | + * | ||
44 | + * @param tServiceId tenant service id | ||
45 | + * @param pServiceId provider service id | ||
46 | + * @return 200 OK | ||
47 | + */ | ||
48 | + @POST | ||
49 | + @Path("{tenantServiceId}/{providerServiceId}") | ||
50 | + @Produces(MediaType.APPLICATION_JSON) | ||
51 | + @Consumes(MediaType.APPLICATION_JSON) | ||
52 | + public Response createServiceDependency(@PathParam("tenantServiceId") String tServiceId, | ||
53 | + @PathParam("providerServiceId") String pServiceId) { | ||
54 | + service.createServiceDependency(CordServiceId.of(tServiceId), CordServiceId.of(pServiceId)); | ||
55 | + return Response.status(Response.Status.OK).build(); | ||
56 | + } | ||
57 | + | ||
58 | + /** | ||
59 | + * Removes service dependencies. | ||
60 | + * | ||
61 | + * @param serviceId service id | ||
62 | + * @return 200 OK, or 400 Bad Request | ||
63 | + */ | ||
64 | + @DELETE | ||
65 | + @Path("{serviceId}") | ||
66 | + @Produces(MediaType.APPLICATION_JSON) | ||
67 | + public Response removeServiceDependency(@PathParam("serviceId") String serviceId) { | ||
68 | + service.removeServiceDependency(CordServiceId.of(serviceId)); | ||
69 | + return Response.status(Response.Status.OK).build(); | ||
70 | + } | ||
71 | + | ||
72 | + /** | ||
73 | + * Updates service dependencies. | ||
74 | + * | ||
75 | + * @param serviceId service id | ||
76 | + * @param stream input JSON | ||
77 | + * @return 200 OK, or 400 Bad Request | ||
78 | + */ | ||
79 | + @PUT | ||
80 | + @Path("{serviceId}") | ||
81 | + @Produces(MediaType.APPLICATION_JSON) | ||
82 | + @Consumes(MediaType.APPLICATION_JSON) | ||
83 | + public Response updateServiceDependency(@PathParam("serviceId") String serviceId, | ||
84 | + InputStream stream) { | ||
85 | + // TODO define input stream | ||
86 | + return Response.status(Response.Status.OK).build(); | ||
87 | + } | ||
27 | } | 88 | } | ... | ... |
apps/cordvtn/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" | ||
18 | + xmlns="http://java.sun.com/xml/ns/javaee" | ||
19 | + xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" | ||
20 | + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" | ||
21 | + id="ONOS" version="2.5"> | ||
22 | + <display-name>CORD VTN REST API v1.0</display-name> | ||
23 | + | ||
24 | + <security-constraint> | ||
25 | + <web-resource-collection> | ||
26 | + <web-resource-name>Secured</web-resource-name> | ||
27 | + <url-pattern>/*</url-pattern> | ||
28 | + </web-resource-collection> | ||
29 | + <auth-constraint> | ||
30 | + <role-name>admin</role-name> | ||
31 | + </auth-constraint> | ||
32 | + </security-constraint> | ||
33 | + | ||
34 | + <security-role> | ||
35 | + <role-name>admin</role-name> | ||
36 | + </security-role> | ||
37 | + | ||
38 | + <login-config> | ||
39 | + <auth-method>BASIC</auth-method> | ||
40 | + <realm-name>karaf</realm-name> | ||
41 | + </login-config> | ||
42 | + | ||
43 | + <servlet> | ||
44 | + <servlet-name>JAX-RS Service</servlet-name> | ||
45 | + <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class> | ||
46 | + <init-param> | ||
47 | + <param-name>javax.ws.rs.Application</param-name> | ||
48 | + <param-value>org.onosproject.cordvtn.rest.CordVtnWebApplication</param-value> | ||
49 | + </init-param> | ||
50 | + <load-on-startup>1</load-on-startup> | ||
51 | + </servlet> | ||
52 | + | ||
53 | + <servlet-mapping> | ||
54 | + <servlet-name>JAX-RS Service</servlet-name> | ||
55 | + <url-pattern>/*</url-pattern> | ||
56 | + </servlet-mapping> | ||
57 | +</web-app> |
-
Please register or login to post a comment