@Override public Security getSecurity(Cluster cluster, SecurityContext securityContext, Subject subject) { try (KafkaMetadataService kms = KafkaMetadataService.newInstance(environmentService, cluster.getId(), securityContext)) { return kms.getSecurity(); } catch (Exception e) { throw new RuntimeException(e); } }
@GET @Path("/clusters/{clusterId}/services/kafka/brokers") @Timed public Response getBrokersByClusterId(@PathParam("clusterId") Long clusterId, @Context SecurityContext securityContext) throws Exception { SecurityUtil.checkPermissions(authorizer, securityContext, Cluster.NAMESPACE, clusterId, READ); try(final KafkaMetadataService kafkaMetadataService = KafkaMetadataService .newInstance(environmentService, clusterId, securityContext)) { return WSUtils.respondEntity(kafkaMetadataService.getBrokerHostPortFromStreamsJson(), OK); } catch (EntityNotFoundException ex) { throw com.hortonworks.streamline.common.exception.service.exception.request.EntityNotFoundException.byId(ex.getMessage()); } }
@GET @Path("/clusters/{clusterId}/services/kafka/topics") @Timed public Response getTopicsByClusterId(@PathParam("clusterId") Long clusterId, @Context SecurityContext securityContext) throws Exception { SecurityUtil.checkPermissions(authorizer, securityContext, Cluster.NAMESPACE, clusterId, READ); try(final KafkaMetadataService kafkaMetadataService = KafkaMetadataService .newInstance(environmentService, clusterId, securityContext)) { return WSUtils.respondEntity(kafkaMetadataService.getTopicsFromZk(), OK); } catch (EntityNotFoundException ex) { throw com.hortonworks.streamline.common.exception.service.exception.request.EntityNotFoundException.byId(ex.getMessage()); } } }
@Override public Map<String, Object> getHintsOnCluster(Cluster cluster, SecurityContext securityContext, Subject subject) { Map<String, Object> hintClusterMap = new HashMap<>(); try (KafkaMetadataService kms = KafkaMetadataService.newInstance(environmentService, cluster.getId(), securityContext)) { KafkaTopics topics = kms.getTopicsFromZk(); hintClusterMap.put(FIELD_NAME_TOPIC, topics.list()); fillZookeeperHints(cluster, hintClusterMap); final Map<KafkaBrokerListeners.Protocol, List<String>> protocolToHostsWithPort = kms.getKafkaBrokerListeners().getProtocolToHostsWithPort(); hintClusterMap.put(FIELD_NAME_BOOTSTRAP_SERVERS, mapValuesJoiner(protocolToHostsWithPort, ",")); hintClusterMap.put(FIELD_NAME_SECURITY_PROTOCOL, protocolToHostsWithPort.keySet()); hintClusterMap.put(FIELD_NAME_KAFKA_SERVICE_NAME, kms.getKafkaServiceName()); } catch (ServiceNotFoundException e) { // we access it from mapping information so shouldn't be here throw new IllegalStateException("Service " + Constants.Kafka.SERVICE_NAME + " in cluster " + cluster.getName() + " not found but mapping information exists."); } catch (ServiceConfigurationNotFoundException e) { // there's KAFKA service but not enough configuration info. } catch (Exception e) { throw new RuntimeException(e); } return hintClusterMap; }