1 package org.ultramonkey.l7.controller;
3 import org.apache.log4j.Logger;
4 import org.ultramonkey.l7.model.*;
5 import java.util.regex.*;
12 * class L7vsAdmController
15 * Copyright(c) NTT COMWARE 2008
20 public class L7vsAdmController {
21 private static final String l7vsadm = "/usr/sbin/l7vsadm";
23 private Logger ioCommandLogger = Logger.getLogger(LogCategorySet.GUI_IO_COMMAND);
28 * addVirtualService method
32 * @return result of l7vsadm add virtual service command.
34 public boolean addVirtualService(VirtualSetting vs) {
35 // --- debug log (in method) ---
36 if (ioCommandLogger.isDebugEnabled()) {
37 StringBuffer buf = new StringBuffer();
38 buf.append("L7vsAdmController::addVirtualService(VirtualSetting vs) in ");
39 buf.append("vs=(" + vs + ")");
40 ioCommandLogger.debug("11524 " + buf.toString());
42 // --- debug log (in method) ---
45 if (vs == null || vs.virtual == null) {
46 ioCommandLogger.warn("31003 Invalid null argument.");
47 // --- debug log (in method) ---
48 if (ioCommandLogger.isDebugEnabled()) {
49 ioCommandLogger.debug("11525 L7vsAdmController::addVirtualService(VirtualSetting vs) out return=false");
51 // --- debug log (in method) ---
55 StringBuffer command = new StringBuffer(l7vsadm + " -A -t "
56 + vs.virtual.host + ":" + vs.virtual.port + " -m "
57 + vs.protomod + " " + vs.option + " -s " + vs.sched);
59 command.append(" -u " + vs.maxconn);
61 if (vs.sorryserver != null && vs.sorryserver.host.length() > 0 && vs.sorryserver.port.length() > 0) {
62 command.append(" -b " + vs.sorryserver.host + ":"
63 + vs.sorryserver.port);
65 if (vs.sorryflag == true) {
66 command.append(" -f 1");
68 if (vs.qosservice > 0) {
69 if (vs.qosservice >= 1000000000L) {
70 long qoss = vs.qosservice / 1000000000L;
71 command.append(" -Q " + qoss + "G");
73 else if (vs.qosservice >= 1000000L) {
74 long qoss = vs.qosservice / 1000000L;
75 command.append(" -Q " + qoss + "M");
77 else if (vs.qosservice >= 1000L) {
78 long qoss = vs.qosservice / 1000L;
79 command.append(" -Q " + qoss + "K");
82 command.append(" -Q " + vs.qosservice);
85 if (vs.qosclient > 0) {
86 if (vs.qosclient >= 1000000000L) {
87 long qosc = vs.qosclient / 1000000000L;
88 command.append(" -q " + qosc + "G");
90 else if (vs.qosclient >= 1000000L) {
91 long qosc = vs.qosclient / 1000000L;
92 command.append(" -q " + qosc + "M");
94 else if (vs.qosclient >= 1000L) {
95 long qosc = vs.qosclient / 1000L;
96 command.append(" -q " + qosc + "K");
99 command.append(" -q " + vs.qosclient);
103 String result = runProcess(command.toString());
104 if (result == null || result.length() != 0) {
105 ioCommandLogger.error("41220 Command error: command=" + command);
106 ioCommandLogger.error("41221 Command error: result=" + result);
107 // --- debug log (out method) ---
108 if (ioCommandLogger.isDebugEnabled()) {
109 ioCommandLogger.debug("11526 L7vsAdmController::addVirtualService(VirtualSetting vs) out return=false");
111 // --- debug log (out method) ---
115 if (vs.real != null) {
116 for (int i = 0; i < vs.real.size(); i++) {
117 EndPoint real = vs.real.elementAt(i);
118 String realCommand = l7vsadm + " -a -t " + vs.virtual.host + ":" + vs.virtual.port + " -m "
119 + vs.protomod + " " + vs.option + " -r " + real.host + ":" + real.port + " -w " + real.weight;
120 result = runProcess(realCommand);
122 if (result == null || result.length() != 0) {
123 ioCommandLogger.error("41222 Command error: command=" + command);
124 ioCommandLogger.error("41223 Command error: result=" + result);
125 // --- debug log (out method) ---
126 if (ioCommandLogger.isDebugEnabled()) {
127 ioCommandLogger.debug("11527 L7vsAdmController::addVirtualService(VirtualSetting vs) out return=false");
129 // --- debug log (out method) ---
135 // --- debug log (out method) ---
136 if (ioCommandLogger.isDebugEnabled()) {
137 ioCommandLogger.debug("11528 L7vsAdmController::addVirtualService(VirtualSetting vs) out return=true");
139 // --- debug log (out method) ---
147 * delVirtualService method
151 * @return result of l7vsadm delete virtual service command.
153 public boolean delVirtualService(VirtualSetting vs) {
154 // --- debug log (in method) ---
155 if (ioCommandLogger.isDebugEnabled()) {
156 StringBuffer buf = new StringBuffer();
157 buf.append("L7vsAdmController::delVirtualService(VirtualSetting vs) in ");
158 buf.append("vs=(" + vs + ")");
159 ioCommandLogger.debug("11529 " + buf.toString());
161 // --- debug log (in method) ---
163 synchronized (this) {
164 if (vs == null || vs.virtual == null) {
165 ioCommandLogger.warn("31004 Invalid null argument.");
166 // --- debug log (out method) ---
167 if (ioCommandLogger.isDebugEnabled()) {
168 ioCommandLogger.debug("11530 L7vsAdmController::delVirtualService(VirtualSetting vs) out return=false");
170 // --- debug log (out method) ---
173 String command = l7vsadm + " -D -t " + vs.virtual.host + ":"
174 + vs.virtual.port + " -m " + vs.protomod + " " + vs.option;
176 String result = runProcess(command);
177 if (result == null || result.length() != 0) {
178 ioCommandLogger.error("41224 Command error: command=" + command);
179 ioCommandLogger.error("41225 Command error: result=" + result);
180 // --- debug log (out method) ---
181 if (ioCommandLogger.isDebugEnabled()) {
182 ioCommandLogger.debug("11531 L7vsAdmController::delVirtualService(VirtualSetting vs) out return=false");
184 // --- debug log (out method) ---
188 // --- debug log (out method) ---
189 if (ioCommandLogger.isDebugEnabled()) {
190 ioCommandLogger.debug("11532 L7vsAdmController::delVirtualService(VirtualSetting vs) out return=true");
192 // --- debug log (out method) ---
203 * @return result of l7vsadm list command, including virtual service
206 public L7vsAdmData getData() {
207 // --- debug log (in method) ---
208 if (ioCommandLogger.isDebugEnabled()) {
209 ioCommandLogger.debug("11533 L7vsAdmController::getData() in");
211 // --- debug log (in method) ---
213 synchronized (this) {
214 L7vsAdmData admData = new L7vsAdmData();
216 String command = l7vsadm + " -V -n";
217 String result = runProcess(command);
219 if (result == null) {
220 ioCommandLogger.error("41226 Command error: command=" + command);
221 ioCommandLogger.error("41227 Command error: result=null");
222 // --- debug log (out method) ---
223 if (ioCommandLogger.isDebugEnabled()) {
224 ioCommandLogger.debug("11534 L7vsAdmController::getData() out return=null");
226 // --- debug log (out method) ---
230 // l7vsd log level regex
231 Pattern l7vsdLogLevel = Pattern.compile(
232 "^(l7vsd_[\\w\\.]+)\\s+(debug|info|warn|error|fatal)$",
234 Matcher l7vsdLog = l7vsdLogLevel.matcher(result);
235 while (l7vsdLog.find()) {
236 LogData.LogLevel level;
237 if (l7vsdLog.group(2).equals("debug"))
238 level = LogData.LogLevel.DEBUG;
239 else if (l7vsdLog.group(2).equals("info"))
240 level = LogData.LogLevel.INFO;
241 else if (l7vsdLog.group(2).equals("warn"))
242 level = LogData.LogLevel.WARN;
243 else if (l7vsdLog.group(2).equals("error"))
244 level = LogData.LogLevel.ERROR;
245 else if (l7vsdLog.group(2).equals("fatal"))
246 level = LogData.LogLevel.FATAL;
248 ioCommandLogger.info("21092 Unknown log level: " + l7vsdLog.group(2));
252 if (l7vsdLog.group(1).equals("l7vsd_network"))
253 admData.l7vsdLogLevel.put(LogData.LogCategory.L7VSD_NETWORK,
255 else if (l7vsdLog.group(1).equals("l7vsd_network.bandwidth"))
256 admData.l7vsdLogLevel.put(
257 LogData.LogCategory.L7VSD_NETWORK_BANDWIDTH, level);
258 else if (l7vsdLog.group(1).equals("l7vsd_network.num_connection"))
259 admData.l7vsdLogLevel
260 .put(LogData.LogCategory.L7VSD_NETWORK_NUM_CONNECTION,
262 else if (l7vsdLog.group(1).equals("l7vsd_network.qos"))
263 admData.l7vsdLogLevel.put(
264 LogData.LogCategory.L7VSD_NETWORK_QOS, level);
265 else if (l7vsdLog.group(1).equals("l7vsd_virtual_service"))
266 admData.l7vsdLogLevel.put(
267 LogData.LogCategory.L7VSD_VIRTUAL_SERVICE, level);
268 else if (l7vsdLog.group(1).equals("l7vsd_real_server"))
269 admData.l7vsdLogLevel.put(
270 LogData.LogCategory.L7VSD_REAL_SERVER, level);
271 else if (l7vsdLog.group(1).equals("l7vsd_sorry_server"))
272 admData.l7vsdLogLevel.put(
273 LogData.LogCategory.L7VSD_SORRY_SERVER, level);
274 else if (l7vsdLog.group(1).equals("l7vsd_real_server.balancing"))
275 admData.l7vsdLogLevel.put(
276 LogData.LogCategory.L7VSD_REAL_SERVER_BALANCING, level);
277 else if (l7vsdLog.group(1).equals("l7vsd_replication"))
278 admData.l7vsdLogLevel.put(
279 LogData.LogCategory.L7VSD_REPLICATION, level);
280 else if (l7vsdLog.group(1).equals("l7vsd_start_stop"))
281 admData.l7vsdLogLevel.put(LogData.LogCategory.L7VSD_START_STOP,
283 else if (l7vsdLog.group(1).equals("l7vsd_system"))
284 admData.l7vsdLogLevel.put(LogData.LogCategory.L7VSD_SYSTEM,
286 else if (l7vsdLog.group(1).equals("l7vsd_system.memory"))
287 admData.l7vsdLogLevel.put(
288 LogData.LogCategory.L7VSD_SYSTEM_MEMORY, level);
289 else if (l7vsdLog.group(1).equals("l7vsd_system.socket"))
290 admData.l7vsdLogLevel.put(
291 LogData.LogCategory.L7VSD_SYSTEM_SOCKET, level);
292 else if (l7vsdLog.group(1).equals("l7vsd_system.signal"))
293 admData.l7vsdLogLevel.put(
294 LogData.LogCategory.L7VSD_SYSTEM_SIGNAL, level);
295 else if (l7vsdLog.group(1).equals("l7vsd_environment"))
296 admData.l7vsdLogLevel.put(
297 LogData.LogCategory.L7VSD_ENVIRONMENT, level);
298 else if (l7vsdLog.group(1).equals("l7vsd_environment.parameter"))
299 admData.l7vsdLogLevel.put(
300 LogData.LogCategory.L7VSD_ENVIRONMENT_PARAMETER, level);
301 else if (l7vsdLog.group(1).equals("l7vsd_logger"))
302 admData.l7vsdLogLevel.put(LogData.LogCategory.L7VSD_LOGGER,
304 else if (l7vsdLog.group(1).equals("l7vsd_parameter"))
305 admData.l7vsdLogLevel.put(LogData.LogCategory.L7VSD_PARAMETER,
307 else if (l7vsdLog.group(1).equals("l7vsd_event"))
308 admData.l7vsdLogLevel.put(LogData.LogCategory.L7VSD_EVENT,
310 else if (l7vsdLog.group(1).equals("l7vsd_schedule"))
311 admData.l7vsdLogLevel.put(LogData.LogCategory.L7VSD_SCHEDULE,
313 else if (l7vsdLog.group(1).equals("l7vsd_program"))
314 admData.l7vsdLogLevel.put(LogData.LogCategory.L7VSD_PROGRAM,
316 else if (l7vsdLog.group(1).equals("l7vsd_protocol"))
317 admData.l7vsdLogLevel.put(LogData.LogCategory.L7VSD_PROTOCOL,
319 else if (l7vsdLog.group(1).equals("l7vsd_module"))
320 admData.l7vsdLogLevel.put(LogData.LogCategory.L7VSD_MODULE,
322 else if (l7vsdLog.group(1).equals("l7vsd_all"))
323 admData.l7vsdLogLevel.put(LogData.LogCategory.L7VSD_ALL, level);
325 ioCommandLogger.info("21093 Unknown log category: " + l7vsdLog.group(1));
330 // SNMP Agent log level regex
331 Pattern snmpLogLevel = Pattern.compile(
332 "^(snmpagent_\\w+)\\s+(debug|info|warn|error|fatal)$",
334 Matcher snmpLog = snmpLogLevel.matcher(result);
335 while (snmpLog.find()) {
336 LogData.LogLevel level;
337 if (snmpLog.group(2).equals("debug"))
338 level = LogData.LogLevel.DEBUG;
339 else if (snmpLog.group(2).equals("info"))
340 level = LogData.LogLevel.INFO;
341 else if (snmpLog.group(2).equals("warn"))
342 level = LogData.LogLevel.WARN;
343 else if (snmpLog.group(2).equals("error"))
344 level = LogData.LogLevel.ERROR;
345 else if (snmpLog.group(2).equals("fatal"))
346 level = LogData.LogLevel.FATAL;
348 ioCommandLogger.info("21094 Unknown log level: " + snmpLog.group(2));
352 if (snmpLog.group(1).equals("snmpagent_start_stop"))
353 admData.snmpLogLevel.put(
354 LogData.LogCategory.SNMPAGENT_START_STOP, level);
355 else if (snmpLog.group(1).equals("snmpagent_manager_receive"))
356 admData.snmpLogLevel.put(
357 LogData.LogCategory.SNMPAGENT_MANAGER_RECEIVE, level);
358 else if (snmpLog.group(1).equals("snmpagent_manager_send"))
359 admData.snmpLogLevel.put(
360 LogData.LogCategory.SNMPAGENT_MANAGER_SEND, level);
361 else if (snmpLog.group(1).equals("snmpagent_l7vsd_receive"))
362 admData.snmpLogLevel.put(
363 LogData.LogCategory.SNMPAGENT_L7VSD_RECEIVE, level);
364 else if (snmpLog.group(1).equals("snmpagent_l7vsd_send"))
365 admData.snmpLogLevel.put(
366 LogData.LogCategory.SNMPAGENT_L7VSD_SEND, level);
367 else if (snmpLog.group(1).equals("snmpagent_logger"))
368 admData.snmpLogLevel.put(LogData.LogCategory.SNMPAGENT_LOGGER,
370 else if (snmpLog.group(1).equals("snmpagent_parameter"))
371 admData.snmpLogLevel.put(
372 LogData.LogCategory.SNMPAGENT_PARAMETER, level);
373 else if (snmpLog.group(1).equals("snmpagent_all"))
374 admData.snmpLogLevel.put(LogData.LogCategory.SNMPAGENT_ALL,
377 ioCommandLogger.info("21095 Unknown log level: " + snmpLog.group(1));
382 // Replication mode regex
383 Pattern replicationMode = Pattern.compile(
384 "^Replication Mode:\\s+(\\w+)", Pattern.MULTILINE);
385 Matcher rep = replicationMode.matcher(result);
387 if (rep.group(1).equals("MASTER"))
388 admData.replicationMode = ReplicationStatus.MASTER;
389 else if (rep.group(1).equals("MASTER_STOP"))
390 admData.replicationMode = ReplicationStatus.MASTER_STOP;
391 else if (rep.group(1).equals("SLAVE"))
392 admData.replicationMode = ReplicationStatus.SLAVE;
393 else if (rep.group(1).equals("SLAVE_STOP"))
394 admData.replicationMode = ReplicationStatus.SLAVE_STOP;
395 else if (rep.group(1).equals("SINGLE"))
396 admData.replicationMode = ReplicationStatus.SINGLE;
397 else if (rep.group(1).equals("OUT"))
398 admData.replicationMode = ReplicationStatus.OUT;
400 ioCommandLogger.info("21096 Unknown replication status: " + rep.group(1));
404 // SNMP Agent connection status regex
405 Pattern snmpStatus = Pattern.compile(
406 "^SNMPAgent Connection Status:\\s+([-\\w]+)", Pattern.MULTILINE);
407 Matcher snmp = snmpStatus.matcher(result);
409 if (snmp.group(1).equals("connecting"))
410 admData.snmpStatus = SnmpAgentStatus.CONNECTING;
411 else if (snmp.group(1).equals("non-connecting"))
412 admData.snmpStatus = SnmpAgentStatus.NON_CONNECTING;
414 ioCommandLogger.info("21097 Unknown SNMP Agent status: " + snmp.group(1));
418 VirtualSetting vs = null;
420 // Virtual service regex
421 String virtualLine = "TCP (\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}):(\\d{1,5}) (\\w+) "
422 + "(\\w+) (0|1) (.*)\\s+([^\\s]+) (\\d+) (0|1)\\s+(\\d+) (\\d+) (\\d+)\\s*";
424 String realLine = "\\s+-> (\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}):(\\d{1,5})\\s+Masq\\s+"
425 + "(\\d+)\\s+(\\d+)\\s+(\\d+)\\s*";
427 Pattern virtualService = Pattern.compile("^(?:" + virtualLine + "|"
428 + realLine + ")$", Pattern.MULTILINE);
429 Matcher virtual = virtualService.matcher(result);
430 while (virtual.find()) {
432 if (virtual.group(1) != null) { // virtual service line found
434 admData.virtualSettings.add(vs);
435 vs = new VirtualSetting();
437 vs.virtual = new EndPoint(virtual.group(1), virtual.group(2));
438 vs.protomod = virtual.group(3);
439 vs.sched = virtual.group(4);
440 vs.reschedule = virtual.group(5).equals("0") ? false : true;
441 vs.option = virtual.group(6);
442 String[] sorry = virtual.group(7).split(":");
443 if (sorry.length == 2 && sorry[1] != null) {
444 vs.sorryserver = new EndPoint(sorry[0], sorry[1]);
446 vs.maxconn = Integer.parseInt(virtual.group(8));
447 vs.sorryflag = virtual.group(9).equals("0") ? false : true;
448 vs.qosservice = Long.parseLong(virtual.group(10));
449 vs.qosclient = Long.parseLong(virtual.group(11));
450 vs.throughput = Long.parseLong(virtual.group(12));
451 } else { // real server line found
453 vs.real = new Vector<EndPoint>();
454 vs.real.add(new EndPoint(virtual.group(13), virtual.group(14), Integer.parseInt(virtual
455 .group(15)), Long.parseLong(virtual.group(16)), Long
456 .parseLong(virtual.group(17))));
460 admData.virtualSettings.add(vs);
462 // --- debug log (out method) ---
463 if (ioCommandLogger.isDebugEnabled()) {
464 ioCommandLogger.debug("11535 L7vsAdmController::getData() out return=" + admData);
466 // --- debug log (out method) ---
474 * setReplicationMode method
478 * @return result of l7vsadm change replication mode command.
480 public boolean setReplicationMode(ReplicationStatus mode) {
481 // --- debug log (in method) ---
482 if (ioCommandLogger.isDebugEnabled()) {
483 StringBuffer buf = new StringBuffer();
484 buf.append("L7vsAdmController::setReplicationMode(ReplicationStatus mode) in ");
485 buf.append("mode=" + mode);
486 ioCommandLogger.debug("11536 " + buf.toString());
488 // --- debug log (in method) ---
490 synchronized (this) {
492 ioCommandLogger.error("41228 Invalid replication status: " + mode);
493 // --- debug log (out method) ---
494 if (ioCommandLogger.isDebugEnabled()) {
495 ioCommandLogger.debug("11537 L7vsAdmController::setReplicationMode(ReplicationStatus mode) out return=false");
497 // --- debug log (out method) ---
501 String command = l7vsadm + " -R -s ";
512 ioCommandLogger.error("41229 Invalid replication status: " + mode);
513 // --- debug log (out method) ---
514 if (ioCommandLogger.isDebugEnabled()) {
515 ioCommandLogger.debug("11538 L7vsAdmController::setReplicationMode(ReplicationStatus mode) out return=false");
517 // --- debug log (out method) ---
521 String result = runProcess(command);
522 if (result == null || result.length() != 0) {
523 ioCommandLogger.error("41230 Command error: command=" + command);
524 ioCommandLogger.error("41231 Command error: result=" + result);
525 // --- debug log (out method) ---
526 if (ioCommandLogger.isDebugEnabled()) {
527 ioCommandLogger.debug("11539 L7vsAdmController::setReplicationMode(ReplicationStatus mode) out return=false");
529 // --- debug log (out method) ---
533 // --- debug log (out method) ---
534 if (ioCommandLogger.isDebugEnabled()) {
535 ioCommandLogger.debug("11540 L7vsAdmController::setReplicationMode(ReplicationStatus mode) out return=true");
537 // --- debug log (out method) ---
549 * @return result of l7vsadm set log level command.
551 public boolean setLogLevel(HashMap<LogData.LogCategory, LogData.LogLevel> category) {
552 // --- debug log (in method) ---
553 if (ioCommandLogger.isDebugEnabled()) {
554 StringBuffer buf = new StringBuffer();
555 buf.append("L7vsAdmController::setLogLevel(HashMap<LogData.LogCategory, LogData.LogLevel> category) in ");
556 buf.append("category=" + category);
557 ioCommandLogger.debug("11541 " + buf.toString());
559 // --- debug log (in method) ---
561 synchronized (this) {
562 if (category == null) {
563 ioCommandLogger.error("41232 Invalid log category map: " + category);
564 // --- debug log (out method) ---
565 if (ioCommandLogger.isDebugEnabled()) {
566 ioCommandLogger.debug("11542 L7vsAdmController::setLogLevel(HashMap<LogData.LogCategory, LogData.LogLevel> category) out return=false");
568 // --- debug log (out method) ---
572 Iterator<LogData.LogCategory> keys = category.keySet().iterator();
573 while (keys.hasNext()) {
574 String command = l7vsadm;
575 LogData.LogCategory c = (LogData.LogCategory) keys.next();
578 switch (category.get(c)) {
584 command += " -L -c l7vsd_network";
590 case L7VSD_NETWORK_BANDWIDTH:
591 switch (category.get(c)) {
597 command += " -L -c l7vsd_network.bandwidth";
603 case L7VSD_NETWORK_NUM_CONNECTION:
604 switch (category.get(c)) {
610 command += " -L -c l7vsd_network.num_connection";
616 case L7VSD_NETWORK_QOS:
617 switch (category.get(c)) {
623 command += " -L -c l7vsd_network.qos";
629 case L7VSD_VIRTUAL_SERVICE:
630 switch (category.get(c)) {
636 command += " -L -c l7vsd_virtual_service";
642 case L7VSD_REAL_SERVER:
643 switch (category.get(c)) {
649 command += " -L -c l7vsd_real_server";
655 case L7VSD_SORRY_SERVER:
656 switch (category.get(c)) {
662 command += " -L -c l7vsd_sorry_server";
668 case L7VSD_REAL_SERVER_BALANCING:
669 switch (category.get(c)) {
675 command += " -L -c l7vsd_real_server.balancing";
681 case L7VSD_REPLICATION:
682 switch (category.get(c)) {
688 command += " -L -c l7vsd_replication";
694 case L7VSD_START_STOP:
695 switch (category.get(c)) {
701 command += " -L -c l7vsd_start_stop";
708 switch (category.get(c)) {
714 command += " -L -c l7vsd_system";
720 case L7VSD_SYSTEM_MEMORY:
721 switch (category.get(c)) {
727 command += " -L -c l7vsd_system.memory";
733 case L7VSD_SYSTEM_SOCKET:
734 switch (category.get(c)) {
740 command += " -L -c l7vsd_system.socket";
746 case L7VSD_SYSTEM_SIGNAL:
747 switch (category.get(c)) {
753 command += " -L -c l7vsd_system.signal";
759 case L7VSD_ENVIRONMENT:
760 switch (category.get(c)) {
766 command += " -L -c l7vsd_environment";
772 case L7VSD_ENVIRONMENT_PARAMETER:
773 switch (category.get(c)) {
779 command += " -L -c l7vsd_environment.parameter";
786 switch (category.get(c)) {
792 command += " -L -c l7vsd_logger";
798 case L7VSD_PARAMETER:
799 switch (category.get(c)) {
805 command += " -L -c l7vsd_parameter";
812 switch (category.get(c)) {
818 command += " -L -c l7vsd_event";
825 switch (category.get(c)) {
831 command += " -L -c l7vsd_schedule";
838 switch (category.get(c)) {
844 command += " -L -c l7vsd_program";
851 switch (category.get(c)) {
857 command += " -L -c l7vsd_protocol";
864 switch (category.get(c)) {
870 command += " -L -c l7vsd_module";
877 switch (category.get(c)) {
883 command += " -L -c all";
889 case SNMPAGENT_START_STOP:
890 switch (category.get(c)) {
896 command += " -S -c snmpagent_start_stop";
902 case SNMPAGENT_MANAGER_RECEIVE:
903 switch (category.get(c)) {
909 command += " -S -c snmpagent_manager_receive";
915 case SNMPAGENT_MANAGER_SEND:
916 switch (category.get(c)) {
922 command += " -S -c snmpagent_manager_send";
928 case SNMPAGENT_L7VSD_RECEIVE:
929 switch (category.get(c)) {
935 command += " -S -c snmpagent_l7vsd_receive";
941 case SNMPAGENT_L7VSD_SEND:
942 switch (category.get(c)) {
948 command += " -S -c snmpagent_l7vsd_send";
954 case SNMPAGENT_LOGGER:
955 switch (category.get(c)) {
961 command += " -S -c snmpagent_logger";
967 case SNMPAGENT_PARAMETER:
968 switch (category.get(c)) {
974 command += " -S -c snmpagent_parameter";
981 switch (category.get(c)) {
987 command += " -S -c all";
994 ioCommandLogger.info("21098 Unknown log category: " + c);
995 // --- debug log (out method) ---
996 if (ioCommandLogger.isDebugEnabled()) {
997 ioCommandLogger.debug("11543 L7vsAdmController::setLogLevel(HashMap<LogData.LogCategory, LogData.LogLevel> category) out return=false");
999 // --- debug log (out method) ---
1003 switch (category.get(c)) {
1005 command += " -l debug";
1008 command += " -l info";
1011 command += " -l warn";
1014 command += " -l error";
1017 command += " -l fatal";
1020 ioCommandLogger.info("21099 Unknown log level: " + category.get(c));
1021 // --- debug log (out method) ---
1022 if (ioCommandLogger.isDebugEnabled()) {
1023 ioCommandLogger.debug("11544 L7vsAdmController::setLogLevel(HashMap<LogData.LogCategory, LogData.LogLevel> category) out return=false");
1025 // --- debug log (out method) ---
1029 String result = runProcess(command);
1030 if (result == null || result.length() != 0) {
1031 ioCommandLogger.error("41233 Command error: command=" + command);
1032 ioCommandLogger.error("41234 Command error: result=" + result);
1033 // --- debug log (out method) ---
1034 if (ioCommandLogger.isDebugEnabled()) {
1035 ioCommandLogger.debug("11545 L7vsAdmController::setLogLevel(HashMap<LogData.LogCategory, LogData.LogLevel> category) out return=false");
1037 // --- debug log (out method) ---
1041 // --- debug log (out method) ---
1042 if (ioCommandLogger.isDebugEnabled()) {
1043 ioCommandLogger.debug("11546 L7vsAdmController::setLogLevel(HashMap<LogData.LogCategory, LogData.LogLevel> category) out return=true");
1045 // --- debug log (out method) ---
1053 * dumpReplicationData method
1056 * @return result of l7vsadm replication dump command.
1058 public boolean dumpReplicationData() {
1059 // --- debug log (in method) ---
1060 if (ioCommandLogger.isDebugEnabled()) {
1061 ioCommandLogger.debug("11547 L7vsAdmController::dumpReplicationData() in");
1063 // --- debug log (in method) ---
1065 synchronized (this) {
1066 String command = l7vsadm + " -R -d";
1067 String result = runProcess(command);
1068 if (result == null || result.length() != 0) {
1069 ioCommandLogger.error("41235 Command error: command=" + command);
1070 ioCommandLogger.error("41236 Command error: result=" + result);
1071 // --- debug log (out method) ---
1072 if (ioCommandLogger.isDebugEnabled()) {
1073 ioCommandLogger.debug("11548 L7vsAdmController::dumpReplicationData() out return=false");
1075 // --- debug log (out method) ---
1079 // --- debug log (out method) ---
1080 if (ioCommandLogger.isDebugEnabled()) {
1081 ioCommandLogger.debug("11549 L7vsAdmController::dumpReplicationData() out return=true");
1083 // --- debug log (out method) ---
1095 * @return result of l7vsadm reload config command.
1097 public boolean reloadConf(L7vsConfCategory c) {
1098 // --- debug log (in method) ---
1099 if (ioCommandLogger.isDebugEnabled()) {
1100 StringBuffer buf = new StringBuffer();
1101 buf.append("L7vsAdmController::reloadConf(L7vsConfCategory c) in ");
1102 buf.append("c=" + c);
1103 ioCommandLogger.debug("11550 " + buf.toString());
1105 // --- debug log (in method) ---
1107 synchronized (this) {
1109 ioCommandLogger.error("41237 Invalid argument: " + c);
1110 // --- debug log (out method) ---
1111 if (ioCommandLogger.isDebugEnabled()) {
1112 ioCommandLogger.debug("11551 L7vsAdmController::reloadConf(L7vsConfCategory c) out return=false");
1114 // --- debug log (out method) ---
1118 String command = l7vsadm + " -P -r ";
1139 command += "service";
1142 command += "module";
1145 command += "replication";
1148 command += "logger";
1151 command += "l7vsadm";
1154 command += "snmpagent";
1157 ioCommandLogger.error("41238 Unknown log category: " + c);
1158 // --- debug log (out method) ---
1159 if (ioCommandLogger.isDebugEnabled()) {
1160 ioCommandLogger.debug("11552 L7vsAdmController::reloadConf(L7vsConfCategory c) out return=false");
1162 // --- debug log (out method) ---
1166 String result = runProcess(command);
1167 if (result == null || result.length() != 0) {
1168 ioCommandLogger.error("41239 Command error: command=" + command);
1169 ioCommandLogger.error("41240 Command error: result=" + result);
1170 // --- debug log (out method) ---
1171 if (ioCommandLogger.isDebugEnabled()) {
1172 ioCommandLogger.debug("11553 L7vsAdmController::reloadConf(L7vsConfCategory c) out return=false");
1174 // --- debug log (out method) ---
1178 // --- debug log (out method) ---
1179 if (ioCommandLogger.isDebugEnabled()) {
1180 ioCommandLogger.debug("11554 L7vsAdmController::reloadConf(L7vsConfCategory c) out return=true");
1182 // --- debug log (out method) ---
1194 * @return result string of command execution
1196 protected String runProcess(String command) {
1197 // --- debug log (in method) ---
1198 if (ioCommandLogger.isDebugEnabled()) {
1199 StringBuffer buf = new StringBuffer();
1200 buf.append("L7vsAdmController::runProcess(String command) in ");
1201 buf.append("command=\"" + command + "\"");
1202 ioCommandLogger.debug("11555 " + buf.toString());
1204 // --- debug log (in method) ---
1206 synchronized (this) {
1207 StringBuffer result = new StringBuffer();
1210 // TODO using sudo command temporally
1211 Process ps = Runtime.getRuntime().exec("sudo " + command);
1212 InputStream stderr = ps.getErrorStream();
1213 BufferedReader br = new BufferedReader(new InputStreamReader(stderr));
1215 while ((line = br.readLine()) != null) {
1216 result.append(line + "\n");
1218 InputStream stdout = ps.getInputStream();
1219 br = new BufferedReader(new InputStreamReader(stdout));
1220 while ((line = br.readLine()) != null) {
1221 result.append(line + "\n");
1225 .compile("^COMMON ERROR.*timeout");
1226 Matcher m = p.matcher(result);
1228 Parameter param = Parameter.getInstance();
1229 param.setValue(Parameter.L7VSADM_TIMEOUT_FLAG, "yes");
1231 Parameter param = Parameter.getInstance();
1232 param.setValue(Parameter.L7VSADM_TIMEOUT_FLAG, null);
1234 } catch (Exception e) {
1235 ioCommandLogger.error("41241 Exception occured: " + e.getMessage());
1239 // --- debug log (out method) ---
1240 if (ioCommandLogger.isDebugEnabled()) {
1241 ioCommandLogger.debug("11556 L7vsAdmController::runProcess(String command) out return=" + result);
1243 // --- debug log (out method) ---
1244 return (result == null) ? null : result.toString();