VOL-540: REST interface for provisioning/removal of HSIA service - rebased

Change-Id: I7bcd8a85cab375786ec72620e5d0d06bce084ded
diff --git a/app/src/main/java/org/opencord/olt/rest/OltWebResource.java b/app/src/main/java/org/opencord/olt/rest/OltWebResource.java
index cc75b27..4a786f0 100644
--- a/app/src/main/java/org/opencord/olt/rest/OltWebResource.java
+++ b/app/src/main/java/org/opencord/olt/rest/OltWebResource.java
@@ -20,6 +20,7 @@
 import org.onosproject.net.PortNumber;
 import org.onosproject.rest.AbstractWebResource;
 import org.opencord.olt.AccessDeviceService;
+import org.opencord.olt.AccessSubscriberId;
 
 import javax.ws.rs.DELETE;
 import javax.ws.rs.POST;
@@ -29,6 +30,8 @@
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 
+import static javax.ws.rs.core.Response.Status.NOT_FOUND;
+
 /**
  * OLT REST APIs.
  */
@@ -76,4 +79,43 @@
         service.removeSubscriber(connectPoint);
         return Response.noContent().build();
     }
+
+    /**
+     * Provision service for a subscriber.
+     *
+     * @param portName Name of the port on which the subscriber is connected
+     * @return 200 OK or 404 NOT_FOUND
+     */
+    @POST
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("services/{portName}")
+    public Response provisionServices(
+            @PathParam("portName")String portName) {
+        AccessDeviceService service = get(AccessDeviceService.class);
+
+        if (service.provisionSubscriber(new AccessSubscriberId(portName))) {
+            return ok("").build();
+        }
+        return Response.status(NOT_FOUND).build();
+    }
+
+    /**
+     * Removes services for a subscriber.
+     *
+     * @param portName Name of the port on which the subscriber is connected
+     * @return 200 OK or 404 NOT_FOUND
+     */
+    @DELETE
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("services/{portName}")
+    public Response deleteServices(
+            @PathParam("portName")String portName) {
+        AccessDeviceService service = get(AccessDeviceService.class);
+
+        if (service.removeSubscriber(new AccessSubscriberId(portName))) {
+            return ok("").build();
+        }
+        return Response.status(NOT_FOUND).build();
+    }
+
 }