Author: rjung
Date: Wed Jan  9 15:26:35 2008
New Revision: 610611

URL: http://svn.apache.org/viewvc?rev=610611&view=rev
Log:
Add "dump" action to status worker, which dumps
our initial configuration.

Modified:
    tomcat/connectors/trunk/jk/native/common/jk_status.c
    tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml
    tomcat/connectors/trunk/jk/xdocs/reference/status.xml

Modified: tomcat/connectors/trunk/jk/native/common/jk_status.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_status.c?rev=610611&r1=610610&r2=610611&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_status.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_status.c Wed Jan  9 15:26:35 
2008
@@ -109,8 +109,9 @@
 #define JK_STATUS_CMD_RESET                (5)
 #define JK_STATUS_CMD_VERSION              (6)
 #define JK_STATUS_CMD_RECOVER              (7)
+#define JK_STATUS_CMD_DUMP                 (8)
 #define JK_STATUS_CMD_DEF                  (JK_STATUS_CMD_LIST)
-#define JK_STATUS_CMD_MAX                  (JK_STATUS_CMD_RECOVER)
+#define JK_STATUS_CMD_MAX                  (JK_STATUS_CMD_DUMP)
 #define JK_STATUS_CMD_TEXT_UNKNOWN         ("unknown")
 #define JK_STATUS_CMD_TEXT_LIST            ("list")
 #define JK_STATUS_CMD_TEXT_SHOW            ("show")
@@ -119,6 +120,7 @@
 #define JK_STATUS_CMD_TEXT_RESET           ("reset")
 #define JK_STATUS_CMD_TEXT_VERSION         ("version")
 #define JK_STATUS_CMD_TEXT_RECOVER         ("recover")
+#define JK_STATUS_CMD_TEXT_DUMP            ("dump")
 #define JK_STATUS_CMD_TEXT_DEF             (JK_STATUS_CMD_TEXT_LIST)
 
 #define JK_STATUS_CMD_PROP_CHECK_WORKER    0x00000001
@@ -129,8 +131,9 @@
 #define JK_STATUS_CMD_PROP_BACK_LIST       0x00000020
 #define JK_STATUS_CMD_PROP_FMT             0x00000040
 #define JK_STATUS_CMD_PROP_SWITCH_RO       0x00000080
-#define JK_STATUS_CMD_PROP_LINK_HELP       0x00000100
-#define JK_STATUS_CMD_PROP_LEGEND          0x00000200
+#define JK_STATUS_CMD_PROP_DUMP_LINK       0x00000100
+#define JK_STATUS_CMD_PROP_LINK_HELP       0x00000200
+#define JK_STATUS_CMD_PROP_LEGEND          0x00000400
 
 #define JK_STATUS_MIME_UNKNOWN             (0)
 #define JK_STATUS_MIME_HTML                (1)
@@ -319,6 +322,7 @@
     JK_STATUS_CMD_TEXT_RESET,
     JK_STATUS_CMD_TEXT_VERSION,
     JK_STATUS_CMD_TEXT_RECOVER,
+    JK_STATUS_CMD_TEXT_DUMP,
     NULL
 };
 
@@ -795,6 +799,8 @@
         return JK_STATUS_CMD_VERSION;
     else if (!strcmp(cmd, JK_STATUS_CMD_TEXT_RECOVER))
         return JK_STATUS_CMD_RECOVER;
+    else if (!strcmp(cmd, JK_STATUS_CMD_TEXT_DUMP))
+        return JK_STATUS_CMD_DUMP;
     return JK_STATUS_CMD_UNKNOWN;
 }
 
@@ -831,14 +837,21 @@
   if (cmd == JK_STATUS_CMD_LIST ||
       cmd == JK_STATUS_CMD_SHOW ||
       cmd == JK_STATUS_CMD_VERSION)
+      props |= JK_STATUS_CMD_PROP_DUMP_LINK;
+  if (cmd == JK_STATUS_CMD_LIST ||
+      cmd == JK_STATUS_CMD_SHOW ||
+      cmd == JK_STATUS_CMD_VERSION ||
+      cmd == JK_STATUS_CMD_DUMP)
       props |= JK_STATUS_CMD_PROP_HEAD |
                JK_STATUS_CMD_PROP_FMT;
   if (cmd == JK_STATUS_CMD_SHOW ||
-      cmd == JK_STATUS_CMD_VERSION)
+      cmd == JK_STATUS_CMD_VERSION ||
+      cmd == JK_STATUS_CMD_DUMP)
       props |= JK_STATUS_CMD_PROP_BACK_LIST;
   if (cmd == JK_STATUS_CMD_SHOW ||
       cmd == JK_STATUS_CMD_EDIT ||
-      cmd == JK_STATUS_CMD_VERSION)
+      cmd == JK_STATUS_CMD_VERSION ||
+      cmd == JK_STATUS_CMD_DUMP)
       props |= JK_STATUS_CMD_PROP_BACK_LINK;
   if (cmd != JK_STATUS_CMD_EDIT &&
       cmd != JK_STATUS_CMD_UPDATE &&
@@ -846,7 +859,8 @@
       cmd != JK_STATUS_CMD_RECOVER)
       props |= JK_STATUS_CMD_PROP_READONLY;
   if (cmd != JK_STATUS_CMD_LIST &&
-      cmd != JK_STATUS_CMD_VERSION)
+      cmd != JK_STATUS_CMD_VERSION &&
+      cmd != JK_STATUS_CMD_DUMP)
       props |= JK_STATUS_CMD_PROP_CHECK_WORKER;
       
     return props;
@@ -3108,6 +3122,63 @@
     return JK_FALSE;
 }
 
+static int dump_config(jk_ws_service_t *s,
+                       status_endpoint_t *p,
+                       int mime, jk_logger_t *l)
+{
+    status_worker_t *w = p->worker;
+    jk_worker_env_t *we = w->we;
+    jk_map_t *init_data = we->init_data;
+
+    JK_TRACE_ENTER(l);
+
+    if (init_data) {
+        int l = jk_map_size(init_data);
+        int i;
+        if (mime == JK_STATUS_MIME_HTML) {
+            jk_puts(s, "<hr/><h2>Configuration Data</h2><hr/>\n");
+            jk_puts(s, "This dump does not include any changes applied by the 
status worker\n");
+            jk_puts(s, "to the configuration after the initial startup\n");
+            jk_puts(s, "<PRE>\n");
+        }
+        else if (mime == JK_STATUS_MIME_XML) {
+            jk_print_xml_start_elt(s, w, 2, 0, "configuration");
+        }
+        else if (mime == JK_STATUS_MIME_TXT) {
+            jk_puts(s, "Configuration:\n");
+        }
+        for (i=0;i<l;i++) {
+            const char *name = jk_map_name_at(init_data, i);
+            if (name) {
+                const char *value = jk_map_value_at(init_data, i);
+                if (!value)
+                   value = "(null)";
+                if (mime == JK_STATUS_MIME_HTML ||
+                    mime == JK_STATUS_MIME_PROP ||
+                    mime == JK_STATUS_MIME_TXT) {
+                    jk_putv(s, name, "=", value, "\n", NULL);
+                }
+                else if (mime == JK_STATUS_MIME_XML) {
+                     jk_print_xml_att_string(s, 4, name, value);
+                }
+            }
+        }
+        if (mime == JK_STATUS_MIME_HTML) {
+            jk_puts(s, "</PRE>\n");
+        }
+        else if (mime == JK_STATUS_MIME_XML) {
+            jk_print_xml_stop_elt(s, 2, 1);
+        }
+    }
+    else {
+        JK_TRACE_EXIT(l);
+        return JK_FALSE;
+    }
+
+    JK_TRACE_EXIT(l);
+    return JK_TRUE;
+}
+
 /*
  * Return values of service() method for status worker:
  * return value  is_error              reason
@@ -3553,6 +3624,12 @@
                         jk_puts(s, "]&nbsp;&nbsp;\n");
                     }
                 }
+                if (cmd_props & JK_STATUS_CMD_PROP_DUMP_LINK) {
+                    jk_puts(s, "[");
+                    status_write_uri(s, p, "Dump", JK_STATUS_CMD_DUMP, 
JK_STATUS_MIME_UNKNOWN,
+                                     NULL, NULL, 0, 0, NULL, l);
+                    jk_puts(s, "]&nbsp;&nbsp;\n");
+                }
                 if (cmd_props & JK_STATUS_CMD_PROP_LINK_HELP) {
                     jk_puts(s, "[");
                     if (cmd == JK_STATUS_CMD_LIST) {
@@ -3581,6 +3658,11 @@
                     if(edit_worker(s, p, l) != JK_TRUE) {
                         err = "Error in generating this worker's configuration 
form.";
                     }
+                }
+            }
+            if (cmd == JK_STATUS_CMD_DUMP) {
+                if (dump_config(s, p, mime, l) == JK_FALSE) {
+                    err = "Dumping configuration failed";
                 }
             }
             if (cmd_props & JK_STATUS_CMD_PROP_LEGEND) {

Modified: tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml?rev=610611&r1=610610&r2=610611&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/miscellaneous/changelog.xml Wed Jan  9 
15:26:35 2008
@@ -44,7 +44,10 @@
   <subsection name="Native">
     <changelog>
       <update>
-        LB: Use property table to decide which cmd action uses which
+        Status: Add "dump" action to dump our initial configuration. (rjung)
+      </update>
+      <update>
+        Status: Use property table to decide which cmd action uses which
         output elements. (rjung)
       </update>
       <update>

Modified: tomcat/connectors/trunk/jk/xdocs/reference/status.xml
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/xdocs/reference/status.xml?rev=610611&r1=610610&r2=610611&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/xdocs/reference/status.xml (original)
+++ tomcat/connectors/trunk/jk/xdocs/reference/status.xml Wed Jan  9 15:26:35 
2008
@@ -94,6 +94,12 @@
 <li>
 <b>version</b>: only show version information of the web server and the JK 
software
 </li>
+<li>
+<b>dump</b>: list the original workers configuration. <b>Caution</b>: the dump 
will only contain
+the configuration that was used during startup. Any changes applied later by 
the dynamic management
+interface of the status worker itself will not be contained in this dump.
+The dump action has been added in version 1.2.27.
+</li>
 </ul>
 </p>
 </subsection>
@@ -227,7 +233,7 @@
 </source>
 When writing HTML output, the status worker then includes the line
 <source>
-<link rel="stylesheet" type="text/css" 
href="/private/admin/static/mystatus.css" />
+&lt;link rel="stylesheet" type="text/css" 
href="/private/admin/static/mystatus.css" /&gt;
 </source>
 There is no sample stylesheet included with the mod_jk release, and by default 
the attribute css
 is empty, so no stylesheet reference will be included in the pages. The HTML 
code
@@ -366,18 +372,22 @@
 <br/>
 <p>
 This section should help you building automation scripts based on the jk status
-management interface. This interface is still not stable, we expect further
-improvements in the next releases. It is well possible, that the request 
parameters
-might change in an incompatible way. So be prepared to change you scripts when
-updating to future versions.
+management interface. This interface is stable in the sense, that we only 
expect
+to add further parameters in the future. Existing parameters from previous 
versions
+will keep their original semantics. We also expect the output formats XML, 
Properties
+and Text to be kept stable. So please use those, if you want to parse status 
worker
+output in your automation scripts.
 </p>
 <subsection name="Actions">
 <br/>
 <p>
 The action is determined by the parameter <b>cmd</b>. It can have the values 
"list", "show",
-"edit", "update", "reset", "recover" and "version". If you omit the "cmd" 
parameter,
+"edit", "update", "reset", "recover", "version" and "dump". If you omit the 
"cmd" parameter,
 the default "list" will be used.
-All actions except for "list" and "refresh" need additional parameters.
+All actions except for "list", "refresh", "version" and "dump" need additional 
parameters.
+</p>
+<p>
+The action "dump" has been added in version 1.2.27.
 </p>
 </subsection>
 <subsection name="Output Format">



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to