You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2019/10/07 15:41:17 UTC

[pulsar] branch master updated: [pulsar-broker] fix ns-isolation api to fetch policy for specific broker (#5314)

This is an automated email from the ASF dual-hosted git repository.

mmerli pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new e1357a7  [pulsar-broker] fix ns-isolation api to fetch policy for specific broker (#5314)
e1357a7 is described below

commit e1357a7d1ae6a51dfa742986a4a2afe33beb0256
Author: Rajan Dhabalia <rd...@apache.org>
AuthorDate: Mon Oct 7 08:41:12 2019 -0700

    [pulsar-broker] fix ns-isolation api to fetch policy for specific broker (#5314)
---
 .../org/apache/pulsar/broker/admin/impl/ClustersBase.java | 15 ++++-----------
 .../policies/data/BrokerNamespaceIsolationData.java       | 12 ++++++++++++
 2 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java
index 79107b8..417a68b 100644
--- a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java
+++ b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java
@@ -631,19 +631,9 @@ public class ClustersBase extends AdminResource {
         validateSuperUserAccess();
         validateClusterExists(cluster);
 
-        Set<String> availableBrokers;
         final String nsIsolationPoliciesPath = AdminResource.path("clusters", cluster, NAMESPACE_ISOLATION_POLICIES);
         Map<String, NamespaceIsolationData> nsPolicies;
         try {
-            availableBrokers = pulsar().getLoadManager().get().getAvailableBrokers();
-        } catch (Exception e) {
-            log.error("[{}] Failed to get list of brokers in cluster {}", clientAppId(), cluster, e);
-            throw new RestException(e);
-        }
-        if (availableBrokers == null || !availableBrokers.contains(broker)) {
-            throw new RestException(Status.NOT_FOUND, "Broker is not part of active broker list " + broker);
-        }
-        try {
             Optional<NamespaceIsolationPolicies> nsPoliciesResult = namespaceIsolationPoliciesCache()
                     .get(nsIsolationPoliciesPath);
             if (!nsPoliciesResult.isPresent()) {
@@ -659,11 +649,14 @@ public class ClustersBase extends AdminResource {
         if (nsPolicies != null) {
             nsPolicies.forEach((name, policyData) -> {
                 NamespaceIsolationPolicyImpl nsPolicyImpl = new NamespaceIsolationPolicyImpl(policyData);
-                if (nsPolicyImpl.isPrimaryBroker(broker) || nsPolicyImpl.isSecondaryBroker(broker)) {
+                boolean isPrimary = nsPolicyImpl.isPrimaryBroker(broker);
+                if (isPrimary || nsPolicyImpl.isSecondaryBroker(broker)) {
                     if (brokerIsolationData.namespaceRegex == null) {
                         brokerIsolationData.namespaceRegex = Lists.newArrayList();
                     }
                     brokerIsolationData.namespaceRegex.addAll(policyData.namespaces);
+                    brokerIsolationData.isPrimary = isPrimary;
+                    brokerIsolationData.policyName = name;
                 }
             });
         }
diff --git a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java
index 53faf0a..8adc23a 100644
--- a/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java
+++ b/pulsar-common/src/main/java/org/apache/pulsar/common/policies/data/BrokerNamespaceIsolationData.java
@@ -39,6 +39,18 @@ public class BrokerNamespaceIsolationData {
     )
     public String brokerName;
     @ApiModelProperty(
+            name = "policyName",
+            value = "Policy name",
+            example = "my-policy"
+        )
+    public String policyName;
+    @ApiModelProperty(
+            name = "isPrimary",
+            value = "Is Primary broker",
+            example = "true/false"
+        )
+    public boolean isPrimary;
+    @ApiModelProperty(
         name = "namespaceRegex",
         value = "The namespace-isolation policies attached to this broker"
     )