public Map getNamespaceList()

in src/main/java/org/apache/pulsar/manager/service/impl/NamespacesServiceImpl.java [62:128]


    public Map<String, Object> getNamespaceList(Integer pageNum, Integer pageSize, String tenant, String requestHost) {
        Map<String, Object> namespacesMap = Maps.newHashMap();
        List<Map<String, Object>> namespacesArray = new ArrayList<>();
        if (directRequestBroker) {
            List<String> namespacesList;
            try {
                namespacesList = pulsarAdminService.namespaces(requestHost).getNamespaces(tenant);
            } catch (PulsarAdminException e) {
                PulsarAdminOperationException pulsarAdminOperationException
                        = new PulsarAdminOperationException("Failed to get namespaces list.");
                log.error(pulsarAdminOperationException.getMessage(), e);
                throw pulsarAdminOperationException;
            }
            if (!namespacesList.isEmpty()) {
                Optional<TopicStatsEntity> topicStatsEntityOptional = topicsStatsRepository.findMaxTime();
                Map<String, TopicStatsEntity> topicStatsEntityMap = Maps.newHashMap();
                if (topicStatsEntityOptional.isPresent()) {
                    TopicStatsEntity topicStatsEntity = topicStatsEntityOptional.get();
                    String environment = request.getHeader("environment");
                    ArrayList<String> namespaceList = new ArrayList<>();
                    for (String namespace : namespacesList) {
                        String[] path = namespace.split("/");
                        if (path.length > 1) {
                            namespaceList.add(path[1]);
                        }
                    }
                    Page<TopicStatsEntity> namespaceCountPage = brokerStatsService.findByMultiNamespace(
                            1, 1, environment, tenant,
                            namespaceList, topicStatsEntity.getTimestamp());
                    namespaceCountPage.count(true);
                    Page<TopicStatsEntity> namespaceAllCountPage = brokerStatsService.findByMultiNamespace(
                            1, (int)namespaceCountPage.getTotal(), environment, tenant,
                            namespaceList, topicStatsEntity.getTimestamp());
                    for (TopicStatsEntity statsEntity : namespaceAllCountPage) {
                        topicStatsEntityMap.put(statsEntity.getNamespace(), statsEntity);
                    }

                }
                for (String tenantNamespace : namespacesList) {
                    String[] path = tenantNamespace.split("/");
                    if (path.length > 1) {
                        String namespace = path[1];
                        Map<String, Object> topicsEntity = Maps.newHashMap();
                        Map<String, Object> topics = topicsService.getTopicsList(
                                0, 0, tenant, namespace, requestHost);
                        topicsEntity.put("topics", topics.get("total"));
                        topicsEntity.put("namespace", namespace);
                        if (topicStatsEntityMap.get(namespace) != null) {
                            TopicStatsEntity topicStatsEntity = topicStatsEntityMap.get(namespace);
                            topicsEntity.put("inMsg", topicStatsEntity.getMsgRateIn());
                            topicsEntity.put("outMsg", topicStatsEntity.getMsgRateOut());
                            topicsEntity.put("inBytes", topicStatsEntity.getMsgThroughputIn());
                            topicsEntity.put("outBytes", topicStatsEntity.getMsgThroughputOut());
                            topicsEntity.put("storageSize", topicStatsEntity.getStorageSize());
                        }
                        namespacesArray.add(topicsEntity);
                    }
                }
                namespacesMap.put("isPage", false);
                namespacesMap.put("total", namespacesList.size());
                namespacesMap.put("data", namespacesArray);
                namespacesMap.put("pageNum", 1);
                namespacesMap.put("pageSize", namespacesArray.size());
            }
        }
        return namespacesMap;
    }