killbill-memoizeit

jaxrs: add admin endpoint to control the healthcheck Signed-off-by:

7/17/2017 5:48:49 AM

Details

jaxrs/pom.xml 5(+5 -0)

diff --git a/jaxrs/pom.xml b/jaxrs/pom.xml
index 66a787f..bca2b90 100644
--- a/jaxrs/pom.xml
+++ b/jaxrs/pom.xml
@@ -101,6 +101,11 @@
         </dependency>
         <dependency>
             <groupId>org.kill-bill.billing</groupId>
+            <artifactId>killbill-platform-server</artifactId>
+            <classifier>classes</classifier>
+        </dependency>
+        <dependency>
+            <groupId>org.kill-bill.billing</groupId>
             <artifactId>killbill-platform-test</artifactId>
             <scope>test</scope>
         </dependency>
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AdminResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AdminResource.java
index e9af063..18099f0 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AdminResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/AdminResource.java
@@ -61,6 +61,7 @@ import org.killbill.billing.payment.api.PaymentApiException;
 import org.killbill.billing.payment.api.PaymentTransaction;
 import org.killbill.billing.payment.api.PluginProperty;
 import org.killbill.billing.payment.api.TransactionStatus;
+import org.killbill.billing.server.healthchecks.KillbillHealthcheck;
 import org.killbill.billing.tenant.api.Tenant;
 import org.killbill.billing.tenant.api.TenantApiException;
 import org.killbill.billing.tenant.api.TenantUserApi;
@@ -115,6 +116,7 @@ public class AdminResource extends JaxRsResourceBase {
     private final RecordIdApi recordIdApi;
     private final PersistentBus persistentBus;
     private final NotificationQueueService notificationQueueService;
+    private final KillbillHealthcheck killbillHealthcheck;
 
     @Inject
     public AdminResource(final JaxrsUriBuilder uriBuilder,
@@ -130,6 +132,7 @@ public class AdminResource extends JaxRsResourceBase {
                          final RecordIdApi recordIdApi,
                          final PersistentBus persistentBus,
                          final NotificationQueueService notificationQueueService,
+                         final KillbillHealthcheck killbillHealthcheck,
                          final Clock clock,
                          final Context context) {
         super(uriBuilder, tagUserApi, customFieldUserApi, auditUserApi, accountUserApi, paymentApi, null, clock, context);
@@ -140,6 +143,7 @@ public class AdminResource extends JaxRsResourceBase {
         this.cacheControllerDispatcher = cacheControllerDispatcher;
         this.persistentBus = persistentBus;
         this.notificationQueueService = notificationQueueService;
+        this.killbillHealthcheck = killbillHealthcheck;
     }
 
     @GET
@@ -421,6 +425,26 @@ public class AdminResource extends JaxRsResourceBase {
         return Response.status(Status.OK).build();
     }
 
+    @POST
+    @Path("/" + HEALTHCHECK)
+    @Produces(APPLICATION_JSON)
+    @ApiOperation(value = "Put the host out of rotation")
+    @ApiResponses(value = {})
+    public Response putInRotation(@javax.ws.rs.core.Context final HttpServletRequest request) {
+        killbillHealthcheck.putInRotation();
+        return Response.status(Status.OK).build();
+    }
+
+    @DELETE
+    @Path("/" + HEALTHCHECK)
+    @Produces(APPLICATION_JSON)
+    @ApiOperation(value = "Put the host out of rotation")
+    @ApiResponses(value = {})
+    public Response putOutOfRotation(@javax.ws.rs.core.Context final HttpServletRequest request) {
+        killbillHealthcheck.putOutOfRotation();
+        return Response.status(Status.OK).build();
+    }
+
     private Iterable<NotificationEventWithMetadata<NotificationEvent>> getNotifications(@Nullable final String queueName,
                                                                                         @Nullable final String serviceName,
                                                                                         final boolean includeInProcessing,
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
index b7d6a38..38a3986 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/JaxrsResource.java
@@ -285,6 +285,7 @@ public interface JaxrsResource {
     public static final String TRANSFER_CREDIT = "transferCredit";
 
     public static final String CACHE = "cache";
+    public static final String HEALTHCHECK = "healthcheck";
 
     public static final String QUERY_INCLUDED_DELETED = "includedDeleted";