if (account.isSuperadmin()) { responder.sendJson(HttpResponseStatus.OK, taskQueueService.getTaskQueueMetricsSnapshot()); } else if (account.isAdmin()) { String tenantName = request.getHeader(Constants.TENANT_HEADER); Map<String, QueueMetrics> responseBody = ImmutableMap.of(tenantName, taskQueueService.getTaskQueueMetricsSnapshot(account.getTenantId())); responder.sendJson(HttpResponseStatus.OK, responseBody); } else {
taskQueueService.finishClusterTask(finishRequest); responder.sendStatus(HttpResponseStatus.OK); } catch (IllegalStateException e) {
/** * Take a task from the queue to execute. Post body must contain a workerId key, which must also be passed back * when finishing a task. Tasks are returned as a json object with taskId, jobId, clusterId, taskName and nodeId * as key value pairs, and with a config key whose value is a json object with all the configuration settings. * * @param request The request to take a task. * @param responder Responder to send the response. */ @POST @Path("/take") public void handleTakeTask(HttpRequest request, HttpResponder responder) { TakeTaskRequest takeRequest = HttpHelper.decodeRequestBody(request, responder, TakeTaskRequest.class, gson); try { String taskJson = taskQueueService.takeNextClusterTask(takeRequest); if (taskJson == null) { responder.sendStatus(HttpResponseStatus.NO_CONTENT); return; } responder.sendString(HttpResponseStatus.OK, taskJson); } catch (IOException e) { LOG.error("Exception while taking task.", e); responder.sendError(HttpResponseStatus.INTERNAL_SERVER_ERROR, "Error taking task."); } catch (MissingEntityException e) { responder.sendError(HttpResponseStatus.FORBIDDEN, "Provisioner " + takeRequest.getProvisionerId() + " is not registered."); } }
finishNodeAction(clusterTask, finishRequest); serverStats.setQueueLength(getTotalQueueSize());
taskConfig.getProvider().addFields(sensitiveFields); taskJson = gson.toJson(taskObject); startNodeAction(clusterTask); if (clusterTask != null) { serverStats.setQueueLength(getTotalQueueSize());
expected.put(Constants.SUPERADMIN_TENANT, new QueueMetrics(0, 0)); Assert.assertEquals(expected.get("tenant1"), service.getTaskQueueMetricsSnapshot("id1")); Assert.assertEquals(expected.get("tenant2"), service.getTaskQueueMetricsSnapshot("id2")); Assert.assertEquals(expected.get("tenant3"), service.getTaskQueueMetricsSnapshot("id3")); Assert.assertEquals(expected.get("tenant4"), service.getTaskQueueMetricsSnapshot("id4")); Assert.assertEquals(new QueueMetrics(0, 0), service.getTaskQueueMetricsSnapshot("non-id")); Assert.assertEquals(expected, service.getTaskQueueMetricsSnapshot());