@POST @Path("/tenants") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) @ApiOperation(value = " Create a tenant") @ApiResponses({@ApiResponse(code = 200, message = "Success"), @ApiResponse(code = 500, message = "Error creating tenant")}) public SuccessResponse createTenant(Tenant tenant) { PinotResourceManagerResponse response; switch (tenant.getTenantRole()) { case BROKER: response = pinotHelixResourceManager.createBrokerTenant(tenant); break; case SERVER: response = pinotHelixResourceManager.createServerTenant(tenant); break; default: throw new RuntimeException("Not a valid tenant creation call"); } if (response.isSuccessful()) { return new SuccessResponse("Successfully created tenant"); } _controllerMetrics.addMeteredGlobalValue(ControllerMeter.CONTROLLER_TABLE_TENANT_CREATE_ERROR, 1L); throw new ControllerApplicationException(LOGGER, "Failed to create tenant", Response.Status.INTERNAL_SERVER_ERROR); }
@PUT @Path("/tenants") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) @ApiOperation(value = "Update a tenant") @ApiResponses(value = {@ApiResponse(code = 200, message = "Success"), @ApiResponse(code = 500, message = "Failed to update the tenant")}) public SuccessResponse updateTenant(Tenant tenant) { PinotResourceManagerResponse response; switch (tenant.getTenantRole()) { case BROKER: response = pinotHelixResourceManager.updateBrokerTenant(tenant); break; case SERVER: response = pinotHelixResourceManager.updateServerTenant(tenant); break; default: throw new RuntimeException("Not a valid tenant update call"); } if (response.isSuccessful()) { return new SuccessResponse("Updated tenant"); } _controllerMetrics.addMeteredGlobalValue(ControllerMeter.CONTROLLER_TABLE_TENANT_UPDATE_ERROR, 1L); throw new ControllerApplicationException(LOGGER, "Failed to update tenant", Response.Status.INTERNAL_SERVER_ERROR); }
@Test public void testDeserializeFromJson() throws IOException { Tenant tenant = new Tenant(); tenant.setTenantRole(TenantRole.SERVER); tenant.setTenantName("newTenant"); tenant.setNumberOfInstances(10); tenant.setOfflineInstances(5); tenant.setRealtimeInstances(5); tenant = JsonUtils.stringToObject(JsonUtils.objectToString(tenant), Tenant.class); assertEquals(tenant.getTenantRole(), TenantRole.SERVER); assertEquals(tenant.getTenantName(), "newTenant"); assertEquals(tenant.getNumberOfInstances(), 10); assertEquals(tenant.getOfflineInstances(), 5); assertEquals(tenant.getRealtimeInstances(), 5); } }