Skip to content

Commit a2e37fe

Browse files
committed
add unload bundle flag in pulsar admin (+CLI) and change default
1 parent 00819ec commit a2e37fe

File tree

4 files changed

+52
-18
lines changed

4 files changed

+52
-18
lines changed

pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/ClustersBase.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -708,7 +708,7 @@ public void setNamespaceIsolationPolicy(
708708
@PathParam("policyName") String policyName,
709709
@ApiParam(value = "The namespace isolation policy data", required = true)
710710
NamespaceIsolationDataImpl policyData,
711-
@DefaultValue("true")
711+
@DefaultValue("false")
712712
@QueryParam("unloadBundles") boolean unload
713713
) {
714714
validateSuperUserAccessAsync()

pulsar-client-admin-api/src/main/java/org/apache/pulsar/client/admin/Clusters.java

+33-4
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@
3838
* Admin interface for clusters management.
3939
*/
4040
public interface Clusters {
41+
42+
/**
43+
* Defaults for all the flags.
44+
*/
45+
boolean UNLOAD_BUNDLE_DEFAULT = false;
46+
4147
/**
4248
* Get the list of clusters.
4349
* <p/>
@@ -418,9 +424,15 @@ Map<String, NamespaceIsolationData> getNamespaceIsolationPolicies(String cluster
418424
* Unexpected error
419425
*/
420426
void createNamespaceIsolationPolicy(
421-
String cluster, String policyName, NamespaceIsolationData namespaceIsolationData)
427+
String cluster, String policyName, NamespaceIsolationData namespaceIsolationData, boolean unloadBundles)
422428
throws PulsarAdminException;
423429

430+
default void createNamespaceIsolationPolicy(
431+
String cluster, String policyName, NamespaceIsolationData namespaceIsolationData)
432+
throws PulsarAdminException {
433+
createNamespaceIsolationPolicy(cluster, policyName, namespaceIsolationData, UNLOAD_BUNDLE_DEFAULT);
434+
}
435+
424436
/**
425437
* Create a namespace isolation policy for a cluster asynchronously.
426438
* <p/>
@@ -437,7 +449,13 @@ void createNamespaceIsolationPolicy(
437449
* @return
438450
*/
439451
CompletableFuture<Void> createNamespaceIsolationPolicyAsync(
440-
String cluster, String policyName, NamespaceIsolationData namespaceIsolationData);
452+
String cluster, String policyName, NamespaceIsolationData namespaceIsolationData, boolean unloadBundles);
453+
454+
default CompletableFuture<Void> createNamespaceIsolationPolicyAsync(
455+
String cluster, String policyName, NamespaceIsolationData namespaceIsolationData) {
456+
return createNamespaceIsolationPolicyAsync(cluster, policyName, namespaceIsolationData, UNLOAD_BUNDLE_DEFAULT);
457+
}
458+
441459

442460
/**
443461
* Returns list of active brokers with namespace-isolation policies attached to it.
@@ -506,9 +524,15 @@ CompletableFuture<BrokerNamespaceIsolationData> getBrokerWithNamespaceIsolationP
506524
* Unexpected error
507525
*/
508526
void updateNamespaceIsolationPolicy(
509-
String cluster, String policyName, NamespaceIsolationData namespaceIsolationData)
527+
String cluster, String policyName, NamespaceIsolationData namespaceIsolationData, boolean unloadBundles)
510528
throws PulsarAdminException;
511529

530+
default void updateNamespaceIsolationPolicy(
531+
String cluster, String policyName, NamespaceIsolationData namespaceIsolationData)
532+
throws PulsarAdminException {
533+
updateNamespaceIsolationPolicy(cluster, policyName, namespaceIsolationData, UNLOAD_BUNDLE_DEFAULT);
534+
}
535+
512536
/**
513537
* Update a namespace isolation policy for a cluster asynchronously.
514538
* <p/>
@@ -526,7 +550,12 @@ void updateNamespaceIsolationPolicy(
526550
*
527551
*/
528552
CompletableFuture<Void> updateNamespaceIsolationPolicyAsync(
529-
String cluster, String policyName, NamespaceIsolationData namespaceIsolationData);
553+
String cluster, String policyName, NamespaceIsolationData namespaceIsolationData, boolean unloadBundles);
554+
555+
default CompletableFuture<Void> updateNamespaceIsolationPolicyAsync(
556+
String cluster, String policyName, NamespaceIsolationData namespaceIsolationData) {
557+
return updateNamespaceIsolationPolicyAsync(cluster, policyName, namespaceIsolationData, UNLOAD_BUNDLE_DEFAULT);
558+
}
530559

531560
/**
532561
* Delete a namespace isolation policy for a cluster.

pulsar-client-admin/src/main/java/org/apache/pulsar/client/admin/internal/ClustersImpl.java

+13-12
Original file line numberDiff line numberDiff line change
@@ -202,26 +202,26 @@ public CompletableFuture<BrokerNamespaceIsolationData> getBrokerWithNamespaceIso
202202

203203
@Override
204204
public void createNamespaceIsolationPolicy(String cluster, String policyName,
205-
NamespaceIsolationData namespaceIsolationData) throws PulsarAdminException {
206-
setNamespaceIsolationPolicy(cluster, policyName, namespaceIsolationData);
205+
NamespaceIsolationData namespaceIsolationData, boolean unloadBundles) throws PulsarAdminException {
206+
setNamespaceIsolationPolicy(cluster, policyName, namespaceIsolationData, unloadBundles);
207207
}
208208

209209
@Override
210210
public CompletableFuture<Void> createNamespaceIsolationPolicyAsync(
211-
String cluster, String policyName, NamespaceIsolationData namespaceIsolationData) {
212-
return setNamespaceIsolationPolicyAsync(cluster, policyName, namespaceIsolationData);
211+
String cluster, String policyName, NamespaceIsolationData namespaceIsolationData, boolean unloadBundles) {
212+
return setNamespaceIsolationPolicyAsync(cluster, policyName, namespaceIsolationData, unloadBundles);
213213
}
214214

215215
@Override
216216
public void updateNamespaceIsolationPolicy(String cluster, String policyName,
217-
NamespaceIsolationData namespaceIsolationData) throws PulsarAdminException {
218-
setNamespaceIsolationPolicy(cluster, policyName, namespaceIsolationData);
217+
NamespaceIsolationData namespaceIsolationData, boolean unloadBundles) throws PulsarAdminException {
218+
setNamespaceIsolationPolicy(cluster, policyName, namespaceIsolationData, unloadBundles);
219219
}
220220

221221
@Override
222222
public CompletableFuture<Void> updateNamespaceIsolationPolicyAsync(
223-
String cluster, String policyName, NamespaceIsolationData namespaceIsolationData) {
224-
return setNamespaceIsolationPolicyAsync(cluster, policyName, namespaceIsolationData);
223+
String cluster, String policyName, NamespaceIsolationData namespaceIsolationData, boolean unloadBundles) {
224+
return setNamespaceIsolationPolicyAsync(cluster, policyName, namespaceIsolationData, unloadBundles);
225225
}
226226

227227
@Override
@@ -236,13 +236,14 @@ public CompletableFuture<Void> deleteNamespaceIsolationPolicyAsync(String cluste
236236
}
237237

238238
private void setNamespaceIsolationPolicy(String cluster, String policyName,
239-
NamespaceIsolationData namespaceIsolationData) throws PulsarAdminException {
240-
sync(() -> setNamespaceIsolationPolicyAsync(cluster, policyName, namespaceIsolationData));
239+
NamespaceIsolationData namespaceIsolationData, boolean unloadBundles) throws PulsarAdminException {
240+
sync(() -> setNamespaceIsolationPolicyAsync(cluster, policyName, namespaceIsolationData, unloadBundles));
241241
}
242242

243243
private CompletableFuture<Void> setNamespaceIsolationPolicyAsync(String cluster, String policyName,
244-
NamespaceIsolationData namespaceIsolationData) {
245-
WebTarget path = adminClusters.path(cluster).path("namespaceIsolationPolicies").path(policyName);
244+
NamespaceIsolationData namespaceIsolationData, boolean unloadBundles) {
245+
WebTarget path = adminClusters.path(cluster).path("namespaceIsolationPolicies").path(policyName)
246+
.queryParam("unloadBundles", unloadBundles);
246247
return asyncPostRequest(path, Entity.entity(namespaceIsolationData, MediaType.APPLICATION_JSON));
247248
}
248249

pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdNamespaceIsolationPolicy.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,16 @@ private class SetPolicy extends CliCommand {
7373
required = true, split = ",")
7474
private Map<String, String> autoFailoverPolicyParams;
7575

76+
@Option(names = "--unloadBundles", description = "Unload namespace bundles after applying policy")
77+
private boolean unloadBundles;
78+
7679
void run() throws PulsarAdminException {
7780
// validate and create the POJO
7881
NamespaceIsolationData namespaceIsolationData = createNamespaceIsolationData(namespaces, primary, secondary,
7982
autoFailoverPolicyTypeName, autoFailoverPolicyParams);
8083

81-
getAdmin().clusters().createNamespaceIsolationPolicy(clusterName, policyName, namespaceIsolationData);
84+
getAdmin().clusters()
85+
.createNamespaceIsolationPolicy(clusterName, policyName, namespaceIsolationData, unloadBundles);
8286
}
8387
}
8488

0 commit comments

Comments
 (0)