use of com.linkedin.pinot.common.restlet.swagger.Paths in project pinot by linkedin.
the class PinotInstanceRestletResource method getInstanceInformation.
/**
* Gets the information for an instance.
*
* @param instanceName The instance name
*/
@HttpVerb("get")
@Summary("Gets information for an instance")
@Tags({ "instance" })
@Paths({ "/instances/{instanceName}", "/instances/{instanceName}/" })
@Responses({ @Response(statusCode = "200", description = "Information about the specified instance"), @Response(statusCode = "404", description = "The specified instance does not exist"), @Response(statusCode = "500", description = "There was an error while fetching information for the given instance") })
private Representation getInstanceInformation(@Parameter(name = "instanceName", description = "The name of the instance (eg. Server_1.2.3.4_1234 or Broker_someHost.example.com_2345)", in = "path", required = true) String instanceName) {
try {
if (!_pinotHelixResourceManager.instanceExists(instanceName)) {
setStatus(Status.CLIENT_ERROR_NOT_FOUND);
return new StringRepresentation("Error: Instance " + instanceName + " not found.");
}
InstanceConfig instanceConfig = _pinotHelixResourceManager.getHelixInstanceConfig(instanceName);
JSONObject response = new JSONObject();
response.put("instanceName", instanceConfig.getInstanceName());
response.put("hostName", instanceConfig.getHostName());
response.put("enabled", instanceConfig.getInstanceEnabled());
response.put("port", instanceConfig.getPort());
response.put("tags", new JSONArray(instanceConfig.getTags()));
return new StringRepresentation(response.toString());
} catch (Exception e) {
LOGGER.warn("Caught exception while fetching information for instance {}", instanceName, e);
setStatus(Status.SERVER_ERROR_INTERNAL);
return new StringRepresentation("{}");
}
}
use of com.linkedin.pinot.common.restlet.swagger.Paths in project pinot by linkedin.
the class PinotInstanceRestletResource method addInstance.
@HttpVerb("post")
@Summary("Adds an instance")
@Tags({ "instance" })
@Paths({ "/instances", "/instances/" })
@Responses({ @Response(statusCode = "200", description = "The instance was created successfully"), @Response(statusCode = "409", description = "The instance already exists and no action was taken"), @Response(statusCode = "500", description = "Failed to create the instance") })
private StringRepresentation addInstance(@Parameter(name = "instance", in = "body", description = "The instance to add", required = true) Instance instance) throws JSONException {
StringRepresentation presentation;
LOGGER.info("Instance creation request received for instance " + instance.toInstanceId());
final PinotResourceManagerResponse resp = _pinotHelixResourceManager.addInstance(instance);
if (resp.status == PinotResourceManagerResponse.ResponseStatus.failure) {
setStatus(Status.CLIENT_ERROR_CONFLICT);
}
presentation = new StringRepresentation(resp.toJSON().toString());
return presentation;
}
use of com.linkedin.pinot.common.restlet.swagger.Paths in project pinot by linkedin.
the class PinotInstanceRestletResource method toggleInstanceState.
/**
*
* @param instanceName: Name of the instance to enable/disable/drop
* @param state: One of '{enable|disable|drop}'
* @return StringRepresentation of state after trying to enable/disable/drop instance.
* @throws JSONException
*/
@HttpVerb("post")
@Summary("Enable, disable or drop an instance")
@Tags({ "instance" })
@Paths({ "/instances/{instanceName}/state", "/instances/{instanceName}/state" })
@Responses({ @Response(statusCode = "200", description = "The instance state was changed successfully"), @Response(statusCode = "400", description = "The state given was not enable, disable or drop"), @Response(statusCode = "404", description = "The instance was not found") })
private StringRepresentation toggleInstanceState(@Parameter(name = "instanceName", in = "path", description = "The name of the instance for which to toggle its state", required = true) String instanceName, @Parameter(name = "state", in = "body", description = "The desired instance state, either enable, disable or drop", required = true) String state) throws JSONException {
if (StateType.ENABLE.name().equalsIgnoreCase(state)) {
return new StringRepresentation(_pinotHelixResourceManager.enableInstance(instanceName).toJSON().toString());
} else if (StateType.DISABLE.name().equalsIgnoreCase(state)) {
return new StringRepresentation(_pinotHelixResourceManager.disableInstance(instanceName).toJSON().toString());
} else if (StateType.DROP.name().equalsIgnoreCase(state)) {
return new StringRepresentation(_pinotHelixResourceManager.dropInstance(instanceName).toJSON().toString());
} else {
LOGGER.error(INVALID_INSTANCE_URI_ERROR);
setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
return new StringRepresentation(INVALID_INSTANCE_URI_ERROR);
}
}
use of com.linkedin.pinot.common.restlet.swagger.Paths in project pinot by linkedin.
the class PinotInstanceRestletResource method getAllInstances.
/**
* Get all instances in the cluster
* @return List of all instances in the cluster.
* @throws JSONException
*/
@HttpVerb("get")
@Summary("Views all instances")
@Tags({ "instance" })
@Paths({ "/instances", "/instances/" })
@Responses({ @Response(statusCode = "200", description = "A list of instances") })
private Representation getAllInstances() throws JSONException {
JSONObject object = new JSONObject();
JSONArray instanceArray = new JSONArray();
List<String> instanceNames = _pinotHelixResourceManager.getAllInstanceNames();
for (String instanceName : instanceNames) {
instanceArray.put(instanceName);
}
object.put("instances", instanceArray);
return new StringRepresentation(object.toString());
}
use of com.linkedin.pinot.common.restlet.swagger.Paths in project pinot by linkedin.
the class PinotSchemaRestletResource method getSchema.
@HttpVerb("get")
@Summary("Gets a schema")
@Tags({ "schema" })
@Paths({ "/schemas/{schemaName}", "/schemas/{schemaName}/" })
@Responses({ @Response(statusCode = "200", description = "The contents of the specified schema"), @Response(statusCode = "404", description = "The specified schema does not exist") })
private Representation getSchema(@Parameter(name = "schemaName", in = "path", description = "The name of the schema to get") String schemaName) throws IOException {
LOGGER.info("looking for schema {}", schemaName);
Schema schema = _pinotHelixResourceManager.getSchema(schemaName);
if (schema == null) {
setStatus(Status.CLIENT_ERROR_NOT_FOUND);
return new StringRepresentation("{}");
}
LOGGER.info("schema string is : " + schema.getJSONSchema());
return new StringRepresentation(schema.getJSONSchema());
}
Aggregations