public static <T> T getEntity(WebTarget target, String fieldName, Class<T> clazz) { return getEntity(target, fieldName, DEFAULT_MEDIA_TYPE, clazz); }
public static <T> T postForm(WebTarget target, MultivaluedMap<String, String> form, Class<T> clazz) { return postForm(target, form, DEFAULT_MEDIA_TYPE, clazz); }
public static <T> List<T> getEntities(WebTarget target, String fieldName, Class<T> clazz) { return getEntities(target, fieldName, DEFAULT_MEDIA_TYPE, clazz); }
@Override public Map run() { return JsonClientUtil.postEntity(client.target(requestUrl), bodyObject, STORM_REST_API_MEDIA_TYPE, Map.class); } });
public static <T> T getEntity(WebTarget target, Class<T> clazz) { return getEntity(target, DEFAULT_MEDIA_TYPE, clazz); }
@Override public Map run() { return JsonClientUtil.postForm(client.target(requestUrl), new MultivaluedHashMap<>(), STORM_REST_API_MEDIA_TYPE, Map.class); } });
public static <T> List<T> getEntities(WebTarget target, Class<T> clazz) { return getEntities(target, DEFAULT_MEDIA_TYPE, clazz); }
@Override public Map run() { return JsonClientUtil.getEntity(client.target(requestUrl), STORM_REST_API_MEDIA_TYPE, Map.class); } });
private List<Map<String, ?>> getMetricsMap(String topologyName, String componentId, String metricName, long from, long to) { URI targetUri = composeQueryParameters(topologyName, componentId, metricName, from, to); log.debug("Calling {} for querying metric", targetUri.toString()); Map<String, ?> responseMap = JsonClientUtil.getEntity(client.target(targetUri), Map.class); return (List<Map<String, ?>>) responseMap.get("metrics"); }
@Override public List<String> getComponentNodes(String serviceName, String componentName) { List<String> componentNodes = new ArrayList<>(); String targetUrl = String.format(apiRootUrl + COMPONENT_URL, serviceName, componentName); LOG.debug("host components URI: {}", targetUrl); Map<String, ?> responseMap = JsonClientUtil.getEntity(client.target(targetUrl), AMBARI_REST_API_MEDIA_TYPE, Map.class); List<Map<String, ?>> hostComponents = (List<Map<String, ?>>) responseMap.get( AmbariRestAPIConstants.AMBARI_JSON_SCHEMA_HOST_COMPONENTS); if (hostComponents.size() > 0) { for (Map<String, ?> hostComponent : hostComponents) { Map<String, ?> hostRoles = (Map<String, ?>) hostComponent.get(AmbariRestAPIConstants.AMBARI_JSON_SCHEMA_HOST_ROLES); String hostName = (String) hostRoles.get(AmbariRestAPIConstants.AMBARI_JSON_SCHEMA_HOST_NAME); componentNodes.add(hostName); } } return componentNodes; }
@Override public List<String> getComponents(String serviceName) { List<String> componentNames = new ArrayList<>(); String targetUrl = String.format(apiRootUrl + SERVICE_URL, serviceName); LOG.debug("components URI: {}", targetUrl); Map<String, ?> responseMap = JsonClientUtil.getEntity(client.target(targetUrl), AMBARI_REST_API_MEDIA_TYPE, Map.class); List<Map<String, ?>> components = (List<Map<String, ?>>) responseMap.get(AmbariRestAPIConstants.AMBARI_JSON_SCHEMA_COMPONENTS); if (components.size() > 0) { for (Map<String, ?> component : components) { Map<String, ?> componentInfo = (Map<String, ?>) component.get(AmbariRestAPIConstants.ABARI_JSON_SCHEMA_SERVICE_COMPONENT_INFO); String componentName = (String) componentInfo.get(AmbariRestAPIConstants.AMBARI_JSON_SCHEMA_COMPONENT_NAME); componentNames.add(componentName); } } return componentNames; }
private String getDesiredTag(String confName) { String targetUrl = apiRootUrl + "?fields=Clusters/desired_configs"; try { Map<String, ?> responseMap = JsonClientUtil.getEntity(client.target(targetUrl), AMBARI_REST_API_MEDIA_TYPE, Map.class); Map<String, ?> clustersItem = (Map<String, ?>) responseMap.get(AmbariRestAPIConstants.AMBARI_JSON_SCHEMA_COMMON_CLUSTERS); Map<String, ?> desiredConfigsItem = (Map<String, ?>) clustersItem.get(AmbariRestAPIConstants.AMBARI_JSON_SCHEMA_COMMON_DESIRED_CONFIGS); Map<String, ?> desiredTagItem = (Map<String, ?>) desiredConfigsItem.get(confName); if (desiredTagItem != null) { return (String) desiredTagItem.get(AmbariRestAPIConstants.AMBARI_JSON_SCHEMA_COMMON_TAG); } return null; } catch (WebApplicationException e) { throw WrappedWebApplicationException.of(e); } }
private Map<String, String> getProperties(ServiceConfigurationItem confItem) { String targetUrl = confItem.getHref(); LOG.debug("configuration item URI: {}", targetUrl); try { Map<String, ?> responseMap = JsonClientUtil.getEntity(client.target(targetUrl), AMBARI_REST_API_MEDIA_TYPE, Map.class); List<Map<String, ?>> items = (List<Map<String, ?>>) responseMap.get(AmbariRestAPIConstants.AMBARI_JSON_SCHEMA_COMMON_ITEMS); if (items.size() > 0) { return (Map<String, String>) items.get(0).get(AmbariRestAPIConstants.AMBARI_JSON_SCHEMA_COMMON_PROPERTIES); } return Collections.emptyMap(); } catch (WebApplicationException e) { throw WrappedWebApplicationException.of(e); } }
/** * {@inheritDoc} */ @Override public Map<Long, Double> getMetrics(String topologyName, String componentId, String metricName, AggregateFunction aggrFunction, long from, long to) { URI targetUri = composeQueryParameters(topologyName, componentId, metricName, aggrFunction, from, to); log.debug("Calling {} for querying metric", targetUri.toString()); List<Map<String, ?>> responseList = JsonClientUtil.getEntity(client.target(targetUri), List.class); if (responseList.isEmpty()) { return Collections.emptyMap(); } Map<String, ?> metrics = responseList.get(0); List<List<Number>> dataPoints = (List<List<Number>>) metrics.get("datapoints"); return formatDataPointsFromGraphiteToMap(dataPoints); }
@Override public List<String> getServices() { List<String> serviceNames = new ArrayList<>(); String targetUrl = apiRootUrl + SERVICES_URL; LOG.debug("services URI: {}", targetUrl); try { Map<String, ?> responseMap = JsonClientUtil.getEntity(client.target(targetUrl), AMBARI_REST_API_MEDIA_TYPE, Map.class); List<Map<String, ?>> services = (List<Map<String, ?>>) responseMap.get(AmbariRestAPIConstants.AMBARI_JSON_SCHEMA_COMMON_ITEMS); if (services.size() > 0) { for (Map<String, ?> service : services) { Map<String, ?> componentInfo = (Map<String, ?>) service.get(AmbariRestAPIConstants.AMBARI_JSON_SCHEMA_SERVICE_INFO); String serviceName = (String) componentInfo.get(AmbariRestAPIConstants.AMBARI_JSON_SCHEMA_SERVICE_NAME); serviceNames.add(serviceName); } } return serviceNames; } catch (WebApplicationException e) { throw WrappedWebApplicationException.of(e); } }
public Optional<String> getStormViewUrl() { try { String targetUrl = findRootUrlForView(apiRootUrl) + AMBARI_VIEWS_STORM_MONITORING_URL; LOG.debug("storm view URI: {}", targetUrl); Map<String, ?> responseMap = JsonClientUtil.getEntity(client.target(targetUrl), AMBARI_REST_API_MEDIA_TYPE, Map.class); List<Map<String, ?>> items = (List<Map<String, ?>>) responseMap.get(AmbariRestAPIConstants.AMBARI_JSON_SCHEMA_COMMON_VERSIONS); if (items.size() == 0) { return Optional.empty(); } String versionUrl = (String) items.get(0).get("href"); responseMap = JsonClientUtil.getEntity(client.target(versionUrl), AMBARI_REST_API_MEDIA_TYPE, Map.class); items = (List<Map<String, ?>>) responseMap.get(AmbariRestAPIConstants.AMBARI_JSON_SCHEMA_COMMON_INSTANCES); if (items.size() == 0) { return Optional.empty(); } String instancesUrl = (String) items.get(0).get("href"); responseMap = JsonClientUtil.getEntity(client.target(instancesUrl), AMBARI_REST_API_MEDIA_TYPE, Map.class); Map<String, ?> responseMap2 = (Map<String, ?>) responseMap.get(AmbariRestAPIConstants.AMBARI_JSON_SCHEMA_COMMON_VIEW_INSTANCE_INFO); String contextPath = (String) responseMap2.get(AmbariRestAPIConstants.AMBARI_JSON_SCHEMA_CONTEXT_PATH); // page doesn't open without hash path from Ambari 2.4, not sure for other version return Optional.of(findSiteUrl(apiRootUrl) + "/#/main" + contextPath); } catch (Exception ex) { LOG.warn("Error getting storm view URL from Ambari", ex); return Optional.empty(); } }
Map<String, ?> responseMap = JsonClientUtil.getEntity(client.target(targetUri), Map.class); List<Map<String, ?>> metrics = (List<Map<String, ?>>) responseMap.get("metrics");
/** * {@inheritDoc} */ @Override public Map<String, Map<Long, Double>> getRawMetrics(String metricName, String parameters, long from, long to) { Map<String, String> queryParams = parseParameters(parameters); URI targetUri = composeRawQueryParameters(metricName, queryParams, from, to); log.debug("Calling {} for querying metric", targetUri.toString()); List<Map<String, ?>> responseList = JsonClientUtil.getEntity(client.target(targetUri), List.class); if (responseList.size() > 0) { Map<String, Map<Long, Double>> ret = new HashMap<>(responseList.size()); for (Map<String, ?> metric : responseList) { String target = (String) metric.get("target"); List<List<Number>> dataPoints = (List<List<Number>>) metric.get("datapoints"); Map<Long, Double> pointsForOutput = formatDataPointsFromGraphiteToMap(dataPoints); ret.put(target, pointsForOutput); } return ret; } else { return Collections.emptyMap(); } }
/** * {@inheritDoc} */ @Override public Map<String, Map<Long, Double>> getRawMetrics(String metricName, String parameters, long from, long to) { Map<String, String> queryParams = parseParameters(parameters); URI targetUri = composeRawQueryParameters(metricName, queryParams, from, to); log.debug("Calling {} for querying metric", targetUri.toString()); List<Map<String, ?>> responseList = JsonClientUtil.getEntity(client.target(targetUri), List.class); if (responseList.isEmpty()) { return Collections.emptyMap(); } Map<String, Map<Long, Double>> ret = new HashMap<>(responseList.size()); for (Map<String, ?> responseMap : responseList) { String retrievedMetricName = buildMetricNameFromResp(responseMap); Map<String, Number> retrievedPoints = (Map<String, Number>) responseMap.get("dps"); Map<Long, Double> pointsForOutput; if (retrievedPoints == null || retrievedPoints.isEmpty()) { pointsForOutput = Collections.emptyMap(); } else { pointsForOutput = new HashMap<>(retrievedPoints.size()); for (Map.Entry<String, Number> timestampToValue : retrievedPoints.entrySet()) { pointsForOutput.put(Long.valueOf(timestampToValue.getKey()), timestampToValue.getValue().doubleValue()); } } ret.put(retrievedMetricName, pointsForOutput); } return ret; }
/** * @return List of storm topologies as returned by Storm's REST API */ public StormTopologies getTopologies() throws IOException, PrivilegedActionException { return executeSecure(() -> { final Map<String, ?> jsonAsMap = JsonClientUtil.getEntity(httpClient.target(tplgySumUrl), Map.class); List<String> topologies = Collections.emptyList(); if (jsonAsMap != null) { final List<Map<String, String>> topologiesSummary = (List<Map<String, String>>) jsonAsMap.get(STORM_REST_API_TOPOLOGIES_KEY); if (topologiesSummary != null) { topologies = new ArrayList<>(topologiesSummary.size()); for (Map<String, String> tpSum : topologiesSummary) { topologies.add(tpSum.get(STORM_REST_API_TOPOLOGY_ID_KEY)); } } } return new StormTopologies(topologies, getSecurity()); } ); }