blob: 3cbff1cc5d2642242ba2d16c23779e0af433b4cf [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.storm.daemon.ui.resources;
import com.codahale.metrics.Meter;
import java.io.UnsupportedEncodingException;
import java.util.Map;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.SecurityContext;
import org.apache.storm.daemon.ui.UIHelpers;
import org.apache.storm.metric.StormMetricsRegistry;
import org.apache.storm.thrift.TException;
import org.apache.storm.utils.ConfigUtils;
import org.apache.storm.utils.NimbusClient;
import org.apache.storm.utils.Utils;
import org.json.simple.JSONValue;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Root resource (exposed at "storm" path).
*/
@Path("/")
public class StormApiResource {
public static final Logger LOG = LoggerFactory.getLogger(StormApiResource.class);
public static final String callbackParameterName = "callback";
@Context
private HttpServletRequest servletRequest;
public static Map<String, Object> config = ConfigUtils.readStormConfig();
private final Meter clusterConfigurationRequestMeter;
private final Meter clusterSummaryRequestMeter;
private final Meter nimbusSummaryRequestMeter;
private final Meter supervisorRequestMeter;
private final Meter supervisorSummaryRequestMeter;
private final Meter allTopologiesSummaryRequestMeter;
private final Meter topologyPageRequestMeter;
private final Meter topologyMetricRequestMeter;
private final Meter buildVisualizationRequestMeter;
private final Meter mkVisualizationDataRequestMeter;
private final Meter componentPageRequestMeter;
private final Meter logConfigRequestMeter;
private final Meter activateTopologyRequestMeter;
private final Meter deactivateTopologyRequestMeter;
private final Meter debugTopologyRequestMeter;
private final Meter componentOpResponseRequestMeter;
private final Meter topologyOpResponseMeter;
private final Meter topologyLagRequestMeter;
private final Meter getOwnerResourceSummariesMeter;
@Inject
public StormApiResource(StormMetricsRegistry metricsRegistry) {
this.clusterConfigurationRequestMeter = metricsRegistry.registerMeter("ui:num-cluster-configuration-http-requests");
this.clusterSummaryRequestMeter = metricsRegistry.registerMeter("ui:num-cluster-summary-http-requests");
this.nimbusSummaryRequestMeter = metricsRegistry.registerMeter("ui:num-nimbus-summary-http-requests");
this.supervisorRequestMeter = metricsRegistry.registerMeter("ui:num-supervisor-http-requests");
this.supervisorSummaryRequestMeter = metricsRegistry.registerMeter("ui:num-supervisor-summary-http-requests");
this.allTopologiesSummaryRequestMeter = metricsRegistry.registerMeter("ui:num-all-topologies-summary-http-requests");
this.topologyPageRequestMeter = metricsRegistry.registerMeter("ui:num-topology-page-http-requests");
this.topologyMetricRequestMeter = metricsRegistry.registerMeter("ui:num-topology-metric-http-requests");
this.buildVisualizationRequestMeter = metricsRegistry.registerMeter("ui:num-build-visualization-http-requests");
this.mkVisualizationDataRequestMeter = metricsRegistry.registerMeter("ui:num-mk-visualization-data-http-requests");
this.componentPageRequestMeter = metricsRegistry.registerMeter("ui:num-component-page-http-requests");
this.logConfigRequestMeter = metricsRegistry.registerMeter("ui:num-log-config-http-requests");
this.activateTopologyRequestMeter = metricsRegistry.registerMeter("ui:num-activate-topology-http-requests");
this.deactivateTopologyRequestMeter = metricsRegistry.registerMeter("ui:num-deactivate-topology-http-requests");
this.debugTopologyRequestMeter = metricsRegistry.registerMeter("ui:num-debug-topology-http-requests");
this.componentOpResponseRequestMeter = metricsRegistry.registerMeter("ui:num-component-op-response-http-requests");
this.topologyOpResponseMeter = metricsRegistry.registerMeter("ui:num-topology-op-response-http-requests");
this.topologyLagRequestMeter = metricsRegistry.registerMeter("ui:num-topology-lag-http-requests");
this.getOwnerResourceSummariesMeter = metricsRegistry.registerMeter("ui:num-get-owner-resource-summaries-http-request");
}
/**
* /api/v1/cluster/configuration -> nimbus configuration.
*/
@GET
@Path("/cluster/configuration")
@Produces("application/json")
public Response getClusterConfiguration(@QueryParam(callbackParameterName) String callback) throws TException {
clusterConfigurationRequestMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
nimbusClient.getClient().getNimbusConf(),
callback, false, Response.Status.OK
);
}
}
/**
* /api/v1/cluster/summary -> cluster summary.
*/
@GET
@Path("/cluster/summary")
@AuthNimbusOp("getClusterInfo")
@Produces("application/json")
public Response getClusterSummary(@QueryParam(callbackParameterName) String callback) throws TException {
clusterSummaryRequestMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
String user = servletRequest.getRemoteUser();
return UIHelpers.makeStandardResponse(
UIHelpers.getClusterSummary(
nimbusClient.getClient().getClusterInfo(), user, config),
callback
);
}
}
/**
* /api/v1/nimbus/summary -> nimbus summary.
*/
@GET
@Path("/nimbus/summary")
@AuthNimbusOp("getClusterInfo")
@Produces("application/json")
public Response getNimbusSummary(@QueryParam(callbackParameterName) String callback) throws TException {
nimbusSummaryRequestMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.getNimbusSummary(
nimbusClient.getClient().getClusterInfo(), config),
callback
);
}
}
/**
* /api/v1/owner-resources -> owner resources.
*/
@GET
@Path("/owner-resources")
@AuthNimbusOp("getOwnerResourceSummaries")
@Produces("application/json")
public Response getOwnerResources(@QueryParam(callbackParameterName) String callback) throws TException {
getOwnerResourceSummariesMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.getOwnerResourceSummaries(
nimbusClient.getClient().getOwnerResourceSummaries(null), config),
callback
);
}
}
/**
* /api/v1/owner-resources/:id -> owner resources.
*/
@GET
@Path("/owner-resources/{id}")
@AuthNimbusOp(value = "getOwnerResourceSummaries")
@Produces("application/json")
public Response getOwnerResource(@PathParam("id") String id,
@QueryParam(callbackParameterName) String callback) throws TException {
getOwnerResourceSummariesMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.getOwnerResourceSummary(
nimbusClient.getClient().getOwnerResourceSummaries(id), nimbusClient.getClient(),
id, config),
callback
);
}
}
/**
* /api/v1/history/summary -> topo history.
*/
@GET
@Path("/history/summary")
@Produces("application/json")
public Response getHistorySummary(@QueryParam(callbackParameterName) String callback) throws TException {
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
String user = servletRequest.getRemoteUser();
return UIHelpers.makeStandardResponse(
UIHelpers.getTopologyHistoryInfo(
nimbusClient.getClient().getTopologyHistory(user)),
callback
);
}
}
/**
* /api/v1/supervisor/summary -> topo history.
*/
@GET
@Path("/supervisor/summary")
@AuthNimbusOp("getClusterInfo")
@Produces("application/json")
public Response getSupervisorSummary(@Context SecurityContext securityContext,
@QueryParam(callbackParameterName) String callback) throws TException {
supervisorSummaryRequestMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.getSupervisorSummary(
nimbusClient.getClient().getClusterInfo().get_supervisors(),
securityContext, config
),
callback
);
}
}
/**
* /api/v1/supervisor -> topo history.
*/
@GET
@Path("/supervisor")
@AuthNimbusOp("getSupervisorPageInfo")
@Produces("application/json")
public Response getSupervisor(@QueryParam("id") String id,
@QueryParam("host") String host,
@QueryParam("sys") boolean sys,
@QueryParam(callbackParameterName) String callback) throws TException {
supervisorRequestMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.getSupervisorPageInfo(
nimbusClient.getClient().getSupervisorPageInfo(id, host, sys),
config
),
callback
);
}
}
/**
* /api/v1/topology/summary -> topo history.
*/
@GET
@Path("/topology/summary")
@AuthNimbusOp("getClusterInfo")
@Produces("application/json")
public Response getTopologySummary(@Context SecurityContext securityContext,
@QueryParam(callbackParameterName) String callback) throws TException {
allTopologiesSummaryRequestMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.getAllTopologiesSummary(
nimbusClient.getClient().getClusterInfo().get_topologies(),
config
),
callback
);
}
}
/**
* /api/v1/topology -> topo.
*/
@GET
@Path("/topology/{id}")
@AuthNimbusOp(value = "getTopology", needsTopoId = true)
@Produces("application/json")
public Response getTopology(@PathParam("id") String id,
@DefaultValue(":all-time") @QueryParam("window") String window,
@QueryParam("sys") boolean sys,
@QueryParam(callbackParameterName) String callback) throws TException {
topologyPageRequestMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.getTopologySummary(
nimbusClient.getClient().getTopologyPageInfo(id, window, sys),
window, config,
servletRequest.getRemoteUser()
),
callback
);
}
}
/**
* /api/v1/topology-workers/:id -> topo workers.
*/
@GET
@Path("/topology-workers/{id}")
@AuthNimbusOp(value = "getTopology", needsTopoId = true)
@Produces("application/json")
public Response getTopologyWorkers(@PathParam("id") String id,
@QueryParam(callbackParameterName) String callback) throws TException {
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
id = Utils.urlDecodeUtf8(id);
return UIHelpers.makeStandardResponse(
UIHelpers.getTopologyWorkers(
nimbusClient.getClient().getTopologyInfo(id), config
),
callback
);
}
}
/**
* /api/v1/topology/:id/metrics -> metrics.
*/
@GET
@Path("/topology/{id}/metrics")
@AuthNimbusOp(value = "getTopology", needsTopoId = true)
@Produces("application/json")
public Response getTopologyMetrics(@PathParam("id") String id,
@DefaultValue(":all-time") @QueryParam("window") String window,
@QueryParam("sys") boolean sys,
@QueryParam(callbackParameterName) String callback) throws TException {
topologyMetricRequestMeter.mark();
String user = servletRequest.getRemoteUser();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.getTopologySummary(
nimbusClient.getClient().getTopologyPageInfo(id, window, sys), window, config, user
),
callback
);
}
}
/**
* /api/v1/topology/:id/lag -> lag.
*/
@GET
@Path("/topology/{id}/lag")
@AuthNimbusOp(value = "getTopology", needsTopoId = true)
@Produces("application/json")
public Response getTopologyLag(@PathParam("id") String id,
@QueryParam(callbackParameterName) String callback) throws TException {
topologyLagRequestMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.getTopologyLag(nimbusClient.getClient().getTopology(id), config),
callback
);
}
}
/**
* /api/v1/topology/:id/visualization-init -> visualization-init.
*/
@GET
@Path("/topology/{id}/visualization-init")
@AuthNimbusOp(value = "getTopology", needsTopoId = true)
@Produces("application/json")
public Response getTopologyVisializationInit(@PathParam("id") String id,
@QueryParam("sys") boolean sys,
@QueryParam(callbackParameterName) String callback,
@DefaultValue(":all-time") @QueryParam("window") String window
) throws TException {
mkVisualizationDataRequestMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.getBuildVisualization(nimbusClient.getClient(), config, window, id, sys),
callback
);
}
}
/**
* /api/v1/topology/:id/visualization -> visualization.
*/
@GET
@Path("/topology/{id}/visualization")
@AuthNimbusOp(value = "getTopology", needsTopoId = true)
@Produces("application/json")
public Response getTopologyVisualization(@PathParam("id") String id,
@QueryParam("sys") boolean sys,
@QueryParam(callbackParameterName) String callback,
@DefaultValue(":all-time") @QueryParam("window") String window
) throws TException {
buildVisualizationRequestMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.getVisualizationData(nimbusClient.getClient(), window, id, sys),
callback
);
}
}
/**
* /api/v1/topology/:id/component/:component -> component.
*/
@GET
@Path("/topology/{id}/component/{component}")
@AuthNimbusOp(value = "getTopology", needsTopoId = true)
@Produces("application/json")
public Response getTopologyComponent(@PathParam("id") String id,
@PathParam("component") String component,
@QueryParam("sys") boolean sys,
@QueryParam(callbackParameterName) String callback,
@DefaultValue(":all-time") @QueryParam("window") String window
) throws TException {
componentPageRequestMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
String user = servletRequest.getRemoteUser();
return UIHelpers.makeStandardResponse(
UIHelpers.getComponentPage(
nimbusClient.getClient(), id, component,
window, sys, user, config
),
callback
);
}
}
/**
* /api/v1/topology/:id/logconfig -> logconfig.
*/
@GET
@Path("/topology/{id}/logconfig")
@AuthNimbusOp(value = "getTopology", needsTopoId = true)
@Produces("application/json")
public Response getTopologyLogconfig(@PathParam("id") String id,
@QueryParam(callbackParameterName) String callback) throws TException {
logConfigRequestMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.getTopolgoyLogConfig(nimbusClient.getClient().getLogConfig(id)),
callback
);
}
}
/**
* /api/v1/topology/:id/logconfig -> logconfig.
*/
@POST
@Path("/topology/{id}/logconfig")
@AuthNimbusOp(value = "setLogConfig", needsTopoId = true)
@Produces("application/json")
@Consumes("application/json")
public Response putTopologyLogconfig(@PathParam("id") String id, String body,
@QueryParam(callbackParameterName) String callback) throws TException {
topologyOpResponseMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.putTopologyLogLevel(nimbusClient.getClient(),
((Map<String, Map>) JSONValue.parse(body)).get("namedLoggerLevels"), id),
callback
);
}
}
/**
* /api/v1/topology/:id/activate -> topology activate.
*/
@POST
@Path("/topology/{id}/activate")
@AuthNimbusOp(value = "activate", needsTopoId = true)
@Produces("application/json")
public Response putTopologyActivate(@PathParam("id") String id,
@QueryParam(callbackParameterName) String callback) throws TException {
activateTopologyRequestMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.putTopologyActivate(nimbusClient.getClient(), id),
callback
);
}
}
/**
* /api/v1/topology/:id/deactivate -> topology deactivate.
*/
@POST
@Path("/topology/{id}/deactivate")
@AuthNimbusOp(value = "deactivate", needsTopoId = true)
@Produces("application/json")
public Response putTopologyDeactivate(@PathParam("id") String id,
@QueryParam(callbackParameterName) String callback) throws TException {
deactivateTopologyRequestMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.putTopologyDeactivate(nimbusClient.getClient(), id),
callback
);
}
}
/**
* /api/v1/topology/:id/debug/:action/:spct -> debug action.
*/
@POST
@Path("/topology/{id}/debug/{action}/{spct}")
@AuthNimbusOp(value = "debug", needsTopoId = true)
@Produces("application/json")
public Response putTopologyDebugActionSpct(@PathParam("id") String id,
@PathParam("action") String action,
@PathParam("spct") String spct,
@QueryParam(callbackParameterName) String callback) throws TException {
debugTopologyRequestMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.putTopologyDebugActionSpct(
nimbusClient.getClient(), id, action, spct, ""
),
callback
);
}
}
/**
* /api/v1/topology/:id/component/:component/debug/:action/:spct -> debug component action.
*/
@POST
@Path("/topology/{id}/component/{component}/debug/{action}/{spct}")
@AuthNimbusOp(value = "debug", needsTopoId = true)
@Produces("application/json")
public Response putTopologyComponentDebugActionSpct(
@PathParam("id") String id,
@PathParam("component") String component,
@PathParam("action") String action,
@PathParam("spct") String spct,
@QueryParam(callbackParameterName) String callback) throws TException {
componentOpResponseRequestMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.putTopologyDebugActionSpct(
nimbusClient.getClient(), id, component, action, spct
),
callback
);
}
}
/**
* /api/v1/topology/:id/rebalance/:wait-time -> topology rebalance.
*/
@POST
@Path("/topology/{id}/rebalance/{wait-time}")
@AuthNimbusOp(value = "rebalance", needsTopoId = true)
@Produces("application/json")
public Response putTopologyRebalance(@PathParam("id") String id,
@PathParam("wait-time") String waitTime,
@QueryParam(callbackParameterName) String callback) throws TException {
topologyOpResponseMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.putTopologyRebalance(
nimbusClient.getClient(), id, waitTime
),
callback
);
}
}
/**
* /api/v1/topology/:id/kill/:wait-time -> topology kill.
*/
@POST
@Path("/topology/{id}/kill/{wait-time}")
@AuthNimbusOp(value = "killTopology", needsTopoId = true)
@Produces("application/json")
public Response putTopologyKill(
@PathParam("id") String id,
@PathParam("wait-time") String waitTime,
@QueryParam(callbackParameterName) String callback) throws TException {
topologyOpResponseMeter.mark();
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.putTopologyKill(nimbusClient.getClient(), id, waitTime),
callback
);
}
}
/**
* /api/v1/topology/:id/profiling/start/:host-port/:timeout -> profiling start.
*/
@GET
@Path("/topology/{id}/profiling/start/{host-port}/{timeout}")
@AuthNimbusOp(value = "setWorkerProfiler", needsTopoId = true)
@Produces("application/json")
public Response getTopologyProfilingStart(@PathParam("id") String id,
@PathParam("host-port") String hostPort,
@PathParam("timeout") String timeout,
@QueryParam(callbackParameterName) String callback) throws TException {
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.getTopologyProfilingStart(nimbusClient.getClient(), id, hostPort, timeout, config),
callback
);
}
}
/**
* /api/v1/topology/:id/profiling/stop/:host-port -> profiling stop.
*/
@GET
@Path("/topology/{id}/profiling/stop/{host-port}")
@AuthNimbusOp(value = "setWorkerProfiler", needsTopoId = true)
@Produces("application/json")
public Response getTopologyProfilingStop(@PathParam("id") String id,
@PathParam("host-port") String hostPort,
@QueryParam(callbackParameterName) String callback) throws TException {
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.getTopologyProfilingStop(nimbusClient.getClient(), id, hostPort, config),
callback
);
}
}
/**
* /api/v1/topology/:id/profiling/dumpprofile/:host-port -> dump profile.
*/
@GET
@Path("/topology/{id}/profiling/dumpprofile/{host-port}")
@AuthNimbusOp(value = "setWorkerProfiler", needsTopoId = true)
@Produces("application/json")
public Response getTopologyProfilingDumpProfile(@PathParam("id") String id,
@PathParam("host-port") String hostPort,
@QueryParam(callbackParameterName) String callback) throws TException {
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.getTopologyProfilingDump(nimbusClient.getClient(), id, hostPort, config),
callback
);
}
}
/**
* /api/v1/topology/:id/profiling/dumpjstack/:host-port -> dump jstack.
*/
@GET
@Path("/topology/{id}/profiling/dumpjstack/{host-port}")
@AuthNimbusOp(value = "setWorkerProfiler", needsTopoId = true)
@Produces("application/json")
public Response getTopologyProfilingDumpJstack(@PathParam("id") String id,
@PathParam("host-port") String hostPort,
@QueryParam(callbackParameterName) String callback) throws TException {
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.getTopologyProfilingDumpJstack(
nimbusClient.getClient(), id, hostPort, config
),
callback
);
}
}
/**
* /api/v1/topology/:id/profiling/restartworker/:host-port -> restart worker.
*/
@GET
@Path("/topology/{id}/profiling/restartworker/{host-port}")
@AuthNimbusOp(value = "setWorkerProfiler", needsTopoId = true)
@Produces("application/json")
public Response getTopologyProfilingRestartWorker(@PathParam("id") String id,
@PathParam("host-port") String hostPort,
@QueryParam(callbackParameterName) String callback) throws TException {
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.getTopologyProfilingRestartWorker(
nimbusClient.getClient(), id, hostPort, config
),
callback
);
}
}
/**
* /api/v1/topology/:id/profiling/dumpheap/:host-port -> dump heap.
*/
@GET
@Path("/topology/{id}/profiling/dumpheap/{host-port}")
@AuthNimbusOp(value = "setWorkerProfiler", needsTopoId = true)
@Produces("application/json")
public Response getTopologyProfilingDumpheap(@PathParam("id") String id,
@PathParam("host-port") String hostPort,
@QueryParam(callbackParameterName) String callback) throws TException {
try (NimbusClient nimbusClient = NimbusClient.getConfiguredClient(config)) {
return UIHelpers.makeStandardResponse(
UIHelpers.getTopologyProfilingDumpHeap(
nimbusClient.getClient(), id, hostPort, config
),
callback
);
}
}
}