[jira] [Commented] (KAFKA-6476) Document dynamic config update

2018-02-14 Thread ASF GitHub Bot (JIRA)

[ 
https://issues.apache.org/jira/browse/KAFKA-6476?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16364852#comment-16364852
 ] 

ASF GitHub Bot commented on KAFKA-6476:
---

rajinisivaram closed pull request #4558: KAFKA-6476: Documentation for dynamic 
broker configuration
URL: https://github.com/apache/kafka/pull/4558
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git 
a/clients/src/main/java/org/apache/kafka/common/config/ConfigDef.java 
b/clients/src/main/java/org/apache/kafka/common/config/ConfigDef.java
index bb199dde202..a1c0e3be574 100644
--- a/clients/src/main/java/org/apache/kafka/common/config/ConfigDef.java
+++ b/clients/src/main/java/org/apache/kafka/common/config/ConfigDef.java
@@ -1091,16 +1091,40 @@ protected String getConfigValue(ConfigKey key, String 
headerName) {
 }
 
 public String toHtmlTable() {
+return toHtmlTable(Collections.emptyMap());
+}
+
+private void addHeader(StringBuilder builder, String headerName) {
+builder.append("");
+builder.append(headerName);
+builder.append("\n");
+}
+
+private void addColumnValue(StringBuilder builder, String value) {
+builder.append("");
+builder.append(value);
+builder.append("");
+}
+
+/**
+ * Converts this config into an HTML table that can be embedded into docs.
+ * If dynamicUpdateModes is non-empty, a "Dynamic Update 
Mode" column
+ * will be included n the table with the value of the update mode. Default
+ * mode is "read-only".
+ * @param dynamicUpdateModes Config name -> update mode mapping
+ */
+public String toHtmlTable(Map dynamicUpdateModes) {
+boolean hasUpdateModes = !dynamicUpdateModes.isEmpty();
 List configs = sortedConfigs();
 StringBuilder b = new StringBuilder();
 b.append("\n");
 b.append("\n");
 // print column headers
 for (String headerName : headers()) {
-b.append("");
-b.append(headerName);
-b.append("\n");
+addHeader(b, headerName);
 }
+if (hasUpdateModes)
+addHeader(b, "Dynamic Update Mode");
 b.append("\n");
 for (ConfigKey key : configs) {
 if (key.internalConfig) {
@@ -1109,10 +1133,15 @@ public String toHtmlTable() {
 b.append("\n");
 // print column values
 for (String headerName : headers()) {
-b.append("");
-b.append(getConfigValue(key, headerName));
+addColumnValue(b, getConfigValue(key, headerName));
 b.append("");
 }
+if (hasUpdateModes) {
+String updateMode = dynamicUpdateModes.get(key.name);
+if (updateMode == null)
+updateMode = "read-only";
+addColumnValue(b, updateMode);
+}
 b.append("\n");
 }
 b.append("");
diff --git 
a/clients/src/test/java/org/apache/kafka/common/config/ConfigDefTest.java 
b/clients/src/test/java/org/apache/kafka/common/config/ConfigDefTest.java
index 339c51aa4b1..affa5dd4436 100644
--- a/clients/src/test/java/org/apache/kafka/common/config/ConfigDefTest.java
+++ b/clients/src/test/java/org/apache/kafka/common/config/ConfigDefTest.java
@@ -39,6 +39,7 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 public class ConfigDefTest {
@@ -367,6 +368,32 @@ public void testInternalConfigDoesntShowUpInDocs() throws 
Exception {
 assertFalse(configDef.toRst().contains("my.config"));
 }
 
+@Test
+public void testDynamicUpdateModeInDocs() throws Exception {
+final ConfigDef configDef = new ConfigDef()
+.define("my.broker.config", Type.LONG, Importance.HIGH, "docs")
+.define("my.cluster.config", Type.LONG, Importance.HIGH, 
"docs")
+.define("my.readonly.config", Type.LONG, Importance.HIGH, 
"docs");
+final Map updateModes = new HashMap<>();
+updateModes.put("my.broker.config", "per-broker");
+updateModes.put("my.cluster.config", "cluster-wide");
+final String html = configDef.toHtmlTable(updateModes);
+Set configsInHtml = new HashSet();
+for (String line : html.split("\n")) {
+if (line.contains("my.broker.config")) {
+assertTrue(line.contains("per-broker"));
+configsInHtml.add("my.broker.config");
+} else if 

[jira] [Commented] (KAFKA-6476) Document dynamic config update

2018-02-12 Thread ASF GitHub Bot (JIRA)

[ 
https://issues.apache.org/jira/browse/KAFKA-6476?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16360908#comment-16360908
 ] 

ASF GitHub Bot commented on KAFKA-6476:
---

rajinisivaram opened a new pull request #4558: KAFKA-6476: Documentation for 
dynamic broker configuration
URL: https://github.com/apache/kafka/pull/4558
 
 
   Docs for dynamic broker configuration (KIP-226).
   
   ### Committer Checklist (excluded from commit message)
   - [ ] Verify design and implementation 
   - [ ] Verify test coverage and CI build status
   - [ ] Verify documentation (including upgrade notes)
   


This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


> Document dynamic config update
> --
>
> Key: KAFKA-6476
> URL: https://issues.apache.org/jira/browse/KAFKA-6476
> Project: Kafka
>  Issue Type: Sub-task
>  Components: core, documentation
>Reporter: Rajini Sivaram
>Assignee: Rajini Sivaram
>Priority: Major
> Fix For: 1.2.0
>
>
> Add documentation for dynamic broker config update.
> Include:
>   - Command line options for kafka-configs.sh with examples
>   - Configs that can be updated along with constraints applied
>   - Secret rotation for password encoder
> Also add a new column for broker configs to indicate which configs can be  
> dynamically updated,



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)