// todo: for api/v1/hosts we also end up here so we need to ensure proper 400 response // todo: since a user shouldn't be posing to that endpoint private RequestStatusResponse submitHostRequests(Request request) throws SystemException { ScaleClusterRequest requestRequest; try { requestRequest = new ScaleClusterRequest(request.getProperties()); } catch (InvalidTopologyTemplateException e) { throw new IllegalArgumentException("Invalid Add Hosts Template: " + e, e); } try { return topologyManager.scaleHosts(requestRequest); } catch (InvalidTopologyException e) { throw new IllegalArgumentException("Topology validation failed: " + e, e); } catch (AmbariException e) { // todo: handle non-system exceptions e.printStackTrace(); // todo: for now just throw SystemException throw new SystemException("Unable to add hosts", e); } }
/** * Register information about the host (Internal API to be used for Ambari Agent) * * @response.representation.200.doc This API is invoked by Ambari agent running on a cluster to * register with the server. * @response.representation.200.mediaType application/json * @response.representation.406.doc Error in register message format * @response.representation.408.doc Request Timed out * @param message Register message * @throws InvalidStateTransitionException * @throws AmbariException * @throws Exception */ @Path("register/{hostName}") @POST @Consumes(MediaType.APPLICATION_JSON) @Produces({MediaType.APPLICATION_JSON}) public RegistrationResponse register(Register message, @Context HttpServletRequest req) throws WebApplicationException, InvalidStateTransitionException { /* Call into the heartbeat handler */ RegistrationResponse response = null; try { response = hh.handleRegistration(message); LOG.debug("Sending registration response " + response); } catch (AmbariException ex) { response = new RegistrationResponse(); response.setResponseId(-1); response.setResponseStatus(RegistrationStatus.FAILED); response.setExitstatus(1); response.setLog(ex.getMessage()); return response; } return response; }