Browse Source

[(no branch)] [trac763] remove 'verbose' internals and set sev/dbglevel on -v

Jelte Jansen 14 years ago
parent
commit
63918fd91e

+ 6 - 6
src/bin/stats/stats.py.in

@@ -153,9 +153,8 @@ class SessionSubject(Subject, metaclass=Singleton):
     """
     """
     A concrete subject class which creates CC session object
     A concrete subject class which creates CC session object
     """
     """
-    def __init__(self, session=None, verbose=False):
+    def __init__(self, session=None):
         Subject.__init__(self)
         Subject.__init__(self)
-        self.verbose = verbose
         self.session=session
         self.session=session
         self.running = False
         self.running = False
 
 
@@ -175,9 +174,8 @@ class CCSessionListener(Listener):
     A concrete listener class which creates SessionSubject object and
     A concrete listener class which creates SessionSubject object and
     ModuleCCSession object
     ModuleCCSession object
     """
     """
-    def __init__(self, subject, verbose=False):
+    def __init__(self, subject):
         Listener.__init__(self, subject)
         Listener.__init__(self, subject)
-        self.verbose = verbose
         self.session = subject.session
         self.session = subject.session
         self.boot_time = get_datetime()
         self.boot_time = get_datetime()
 
 
@@ -402,8 +400,10 @@ def main(session=None):
         parser.add_option("-v", "--verbose", dest="verbose", action="store_true",
         parser.add_option("-v", "--verbose", dest="verbose", action="store_true",
                       help="display more about what is going on")
                       help="display more about what is going on")
         (options, args) = parser.parse_args()
         (options, args) = parser.parse_args()
-        subject = SessionSubject(session=session, verbose=options.verbose)
-        listener = CCSessionListener(subject, verbose=options.verbose)
+        if options.verbose:
+            isc.log.init("b10-stats", "DEBUG", 99)
+        subject = SessionSubject(session=session)
+        listener = CCSessionListener(subject)
         subject.start()
         subject.start()
         while subject.running:
         while subject.running:
             subject.check()
             subject.check()

+ 8 - 19
src/bin/stats/stats_httpd.py.in

@@ -109,9 +109,7 @@ class HttpHandler(http.server.BaseHTTPRequestHandler):
                     return None
                     return None
         except StatsHttpdError as err:
         except StatsHttpdError as err:
             self.send_error(500)
             self.send_error(500)
-            if self.server.verbose:
-                self.server.log_writer(
-                    "[b10-stats-httpd] %s\n" % err)
+            logger.error(STATS_HTTPD_SERVER_ERROR, err)
             return None
             return None
         else:
         else:
             self.send_response(200)
             self.send_response(200)
@@ -120,15 +118,6 @@ class HttpHandler(http.server.BaseHTTPRequestHandler):
             self.end_headers()
             self.end_headers()
             return body
             return body
 
 
-    def log_message(self, format, *args):
-        """Change the default log format"""
-        if self.server.verbose:
-            self.server.log_writer(
-                "[b10-stats-httpd] %s - - [%s] %s\n" %
-                (self.address_string(),
-                 self.log_date_time_string(),
-                 format%args))
-
 class HttpServerError(Exception):
 class HttpServerError(Exception):
     """Exception class for HttpServer class. It is intended to be
     """Exception class for HttpServer class. It is intended to be
     passed from the HttpServer object to the StatsHttpd object."""
     passed from the HttpServer object to the StatsHttpd object."""
@@ -145,13 +134,12 @@ class HttpServer(http.server.HTTPServer):
     sys.stderr.write. They are intended to be referred by HttpHandler
     sys.stderr.write. They are intended to be referred by HttpHandler
     object."""
     object."""
     def __init__(self, server_address, handler,
     def __init__(self, server_address, handler,
-                 xml_handler, xsd_handler, xsl_handler, log_writer, verbose=False):
+                 xml_handler, xsd_handler, xsl_handler, log_writer):
         self.server_address = server_address
         self.server_address = server_address
         self.xml_handler = xml_handler
         self.xml_handler = xml_handler
         self.xsd_handler = xsd_handler
         self.xsd_handler = xsd_handler
         self.xsl_handler = xsl_handler
         self.xsl_handler = xsl_handler
         self.log_writer = log_writer
         self.log_writer = log_writer
-        self.verbose = verbose
         http.server.HTTPServer.__init__(self, server_address, handler)
         http.server.HTTPServer.__init__(self, server_address, handler)
 
 
 class StatsHttpdError(Exception):
 class StatsHttpdError(Exception):
@@ -165,8 +153,7 @@ class StatsHttpd:
     statistics module. It handles HTTP requests, and command channel
     statistics module. It handles HTTP requests, and command channel
     and config channel CC session. It uses select.select function
     and config channel CC session. It uses select.select function
     while waiting for clients requests."""
     while waiting for clients requests."""
-    def __init__(self, verbose=False):
-        self.verbose = verbose
+    def __init__(self):
         self.running = False
         self.running = False
         self.poll_intval = 0.5
         self.poll_intval = 0.5
         self.write_log = sys.stderr.write
         self.write_log = sys.stderr.write
@@ -231,7 +218,7 @@ class StatsHttpd:
             httpd = HttpServer(
             httpd = HttpServer(
                 server_address, HttpHandler,
                 server_address, HttpHandler,
                 self.xml_handler, self.xsd_handler, self.xsl_handler,
                 self.xml_handler, self.xsd_handler, self.xsl_handler,
-                self.write_log, self.verbose)
+                self.write_log)
         except (socket.gaierror, socket.error,
         except (socket.gaierror, socket.error,
                 OverflowError, TypeError) as err:
                 OverflowError, TypeError) as err:
             # try IPv4 next
             # try IPv4 next
@@ -310,7 +297,7 @@ class StatsHttpd:
         logger.debug(DBG_STATS_HTTPD_MESSAGING, STATS_HTTPD_HANDLE_CONFIG,
         logger.debug(DBG_STATS_HTTPD_MESSAGING, STATS_HTTPD_HANDLE_CONFIG,
                    new_config)
                    new_config)
         for key in new_config.keys():
         for key in new_config.keys():
-            if key not in DEFAULT_CONFIG:
+            if key not in DEFAULT_CONFIG and key != "version":
                 logger.error(STATS_HTTPD_UNKNOWN_CONFIG_ITEM, key)
                 logger.error(STATS_HTTPD_UNKNOWN_CONFIG_ITEM, key)
                 return isc.config.ccsession.create_answer(
                 return isc.config.ccsession.create_answer(
                     1, "Unknown known config: %s" % key)
                     1, "Unknown known config: %s" % key)
@@ -479,7 +466,9 @@ if __name__ == "__main__":
             "-v", "--verbose", dest="verbose", action="store_true",
             "-v", "--verbose", dest="verbose", action="store_true",
             help="display more about what is going on")
             help="display more about what is going on")
         (options, args) = parser.parse_args()
         (options, args) = parser.parse_args()
-        stats_httpd = StatsHttpd(verbose=options.verbose)
+        if options.verbose:
+            isc.log.init("b10-stats-httpd", "DEBUG", 99)
+        stats_httpd = StatsHttpd()
         stats_httpd.start()
         stats_httpd.start()
     except OptionValueError as ove:
     except OptionValueError as ove:
         logger.fatal(STATS_HTTPD_BAD_OPTION_VALUE, ove)
         logger.fatal(STATS_HTTPD_BAD_OPTION_VALUE, ove)

+ 7 - 1
src/bin/stats/stats_httpd_messages.mes

@@ -50,6 +50,12 @@ stats-httpd module will respond with an error, and the command will
 be ignored.
 be ignored.
 
 
 % STATS_HTTPD_SERVER_ERROR http server error: %1
 % STATS_HTTPD_SERVER_ERROR http server error: %1
+An internal error occurred while handling an http request. A HTTP 500
+response will be sent back, and the specific error is printed. This
+is an error condition that should not occur, and likely points to a
+module that is not responding correctly to statistic requests.
+
+% STATS_HTTPD_SERVER_INIT_ERROR http server initialization error: %1
 There was a problem initializing the http server in the stats-httpd
 There was a problem initializing the http server in the stats-httpd
 module upon receiving new configuration data.The most likely cause is a
 module upon receiving new configuration data.The most likely cause is a
 port binding problem or a bad configuration value. The specific error
 port binding problem or a bad configuration value. The specific error
@@ -59,7 +65,7 @@ error is sent back.
 % STATS_HTTPD_SHUTDOWN shutting down
 % STATS_HTTPD_SHUTDOWN shutting down
 The stats-httpd daemon will now shut down.
 The stats-httpd daemon will now shut down.
 
 
-% STATS_HTTPD_START_SERVER_ERROR http server error: %1
+% STATS_HTTPD_START_SERVER_INIT_ERROR http server initialization error: %1
 There was a problem initializing the http server in the stats-httpd
 There was a problem initializing the http server in the stats-httpd
 module upon startup. The most likely cause is that it was not able
 module upon startup. The most likely cause is that it was not able
 to bind to the listening port. The specific error is printed, and the
 to bind to the listening port. The specific error is printed, and the

+ 4 - 30
src/bin/stats/tests/b10-stats-httpd_test.py

@@ -57,13 +57,9 @@ class TestHttpHandler(unittest.TestCase):
     """Tests for HttpHandler class"""
     """Tests for HttpHandler class"""
 
 
     def setUp(self):
     def setUp(self):
-        self.verbose = True
-        self.stats_httpd = stats_httpd.StatsHttpd(self.verbose)
+        self.stats_httpd = stats_httpd.StatsHttpd()
         self.assertTrue(type(self.stats_httpd.httpd) is list)
         self.assertTrue(type(self.stats_httpd.httpd) is list)
         self.httpd = self.stats_httpd.httpd
         self.httpd = self.stats_httpd.httpd
-        for ht in self.httpd:
-            self.assertTrue(ht.verbose)
-        self.stats_httpd.cc_session.verbose = False
 
 
     def test_do_GET(self):
     def test_do_GET(self):
         for ht in self.httpd:
         for ht in self.httpd:
@@ -155,21 +151,6 @@ class TestHttpHandler(unittest.TestCase):
         handler.do_HEAD()
         handler.do_HEAD()
         self.assertEqual(handler.response.code, 404)
         self.assertEqual(handler.response.code, 404)
 
 
-    def test_log_message(self):
-        for ht in self.httpd:
-            self._test_log_message(ht._handler)
-
-    def _test_log_message(self, handler):
-        # switch write_log function
-        handler.server.log_writer = handler.response._write_log
-        log_message = 'ABCDEFG'
-        handler.log_message("%s", log_message)
-        self.assertEqual(handler.response.log, 
-                         "[b10-stats-httpd] %s - - [%s] %s\n" %
-                         (handler.address_string(),
-                          handler.log_date_time_string(),
-                          log_message))
-
 class TestHttpServerError(unittest.TestCase):
 class TestHttpServerError(unittest.TestCase):
     """Tests for HttpServerError exception"""
     """Tests for HttpServerError exception"""
 
 
@@ -183,12 +164,9 @@ class TestHttpServer(unittest.TestCase):
     """Tests for HttpServer class"""
     """Tests for HttpServer class"""
 
 
     def test_httpserver(self):
     def test_httpserver(self):
-        self.verbose = True
-        self.stats_httpd = stats_httpd.StatsHttpd(self.verbose)
-        self.stats_httpd.cc_session.verbose = False
+        self.stats_httpd = stats_httpd.StatsHttpd()
         for ht in self.stats_httpd.httpd:
         for ht in self.stats_httpd.httpd:
             self.assertTrue(ht.server_address in self.stats_httpd.http_addrs)
             self.assertTrue(ht.server_address in self.stats_httpd.http_addrs)
-            self.assertEqual(ht.verbose, self.verbose)
             self.assertEqual(ht.xml_handler, self.stats_httpd.xml_handler)
             self.assertEqual(ht.xml_handler, self.stats_httpd.xml_handler)
             self.assertEqual(ht.xsd_handler, self.stats_httpd.xsd_handler)
             self.assertEqual(ht.xsd_handler, self.stats_httpd.xsd_handler)
             self.assertEqual(ht.xsl_handler, self.stats_httpd.xsl_handler)
             self.assertEqual(ht.xsl_handler, self.stats_httpd.xsl_handler)
@@ -209,17 +187,14 @@ class TestStatsHttpd(unittest.TestCase):
     """Tests for StatsHttpd class"""
     """Tests for StatsHttpd class"""
 
 
     def setUp(self):
     def setUp(self):
-        self.verbose = True
         fake_socket._CLOSED = False
         fake_socket._CLOSED = False
         fake_socket.has_ipv6 = True
         fake_socket.has_ipv6 = True
-        self.stats_httpd = stats_httpd.StatsHttpd(self.verbose)
-        self.stats_httpd.cc_session.verbose = False
+        self.stats_httpd = stats_httpd.StatsHttpd()
 
 
     def tearDown(self):
     def tearDown(self):
         self.stats_httpd.stop()
         self.stats_httpd.stop()
 
 
     def test_init(self):
     def test_init(self):
-        self.assertTrue(self.stats_httpd.verbose)
         self.assertFalse(self.stats_httpd.mccs.get_socket()._closed)
         self.assertFalse(self.stats_httpd.mccs.get_socket()._closed)
         self.assertEqual(self.stats_httpd.mccs.get_socket().fileno(),
         self.assertEqual(self.stats_httpd.mccs.get_socket().fileno(),
                          id(self.stats_httpd.mccs.get_socket()))
                          id(self.stats_httpd.mccs.get_socket()))
@@ -317,8 +292,7 @@ class TestStatsHttpd(unittest.TestCase):
         self.stats_httpd.cc_session.group_sendmsg(
         self.stats_httpd.cc_session.group_sendmsg(
             { 'command': [ "shutdown" ] }, "StatsHttpd")
             { 'command': [ "shutdown" ] }, "StatsHttpd")
         self.stats_httpd.start()
         self.stats_httpd.start()
-        self.stats_httpd = stats_httpd.StatsHttpd(self.verbose)
-        self.stats_httpd.cc_session.verbose = False
+        self.stats_httpd = stats_httpd.StatsHttpd()
         self.assertRaises(
         self.assertRaises(
             fake_select.error, self.stats_httpd.start)
             fake_select.error, self.stats_httpd.start)
 
 

+ 7 - 7
src/bin/stats/tests/b10-stats_test.py

@@ -41,8 +41,8 @@ class TestStats(unittest.TestCase):
 
 
     def setUp(self):
     def setUp(self):
         self.session = Session()
         self.session = Session()
-        self.subject = SessionSubject(session=self.session, verbose=True)
-        self.listener = CCSessionListener(self.subject, verbose=True)
+        self.subject = SessionSubject(session=self.session)
+        self.listener = CCSessionListener(self.subject)
         self.stats_spec = self.listener.cc_session.get_module_spec().get_config_spec()
         self.stats_spec = self.listener.cc_session.get_module_spec().get_config_spec()
         self.module_name = self.listener.cc_session.get_module_spec().get_module_name()
         self.module_name = self.listener.cc_session.get_module_spec().get_module_name()
         self.stats_data = {
         self.stats_data = {
@@ -516,9 +516,9 @@ class TestStats(unittest.TestCase):
 class TestStats2(unittest.TestCase):
 class TestStats2(unittest.TestCase):
 
 
     def setUp(self):
     def setUp(self):
-        self.session = Session(verbose=True)
-        self.subject = SessionSubject(session=self.session, verbose=True)
-        self.listener = CCSessionListener(self.subject, verbose=True)
+        self.session = Session()
+        self.subject = SessionSubject(session=self.session)
+        self.listener = CCSessionListener(self.subject)
         self.module_name = self.listener.cc_session.get_module_spec().get_module_name()
         self.module_name = self.listener.cc_session.get_module_spec().get_module_name()
         # check starting
         # check starting
         self.assertFalse(self.subject.running)
         self.assertFalse(self.subject.running)
@@ -553,9 +553,9 @@ class TestStats2(unittest.TestCase):
         stats.SPECFILE_LOCATION = TEST_SPECFILE_LOCATION
         stats.SPECFILE_LOCATION = TEST_SPECFILE_LOCATION
         stats.SCHEMA_SPECFILE_LOCATION = TEST_SPECFILE_LOCATION
         stats.SCHEMA_SPECFILE_LOCATION = TEST_SPECFILE_LOCATION
         self.assertEqual(stats.SPECFILE_LOCATION, TEST_SPECFILE_LOCATION)
         self.assertEqual(stats.SPECFILE_LOCATION, TEST_SPECFILE_LOCATION)
-        self.subject = stats.SessionSubject(session=self.session, verbose=True)
+        self.subject = stats.SessionSubject(session=self.session)
         self.session = self.subject.session
         self.session = self.subject.session
-        self.listener = stats.CCSessionListener(self.subject, verbose=True)
+        self.listener = stats.CCSessionListener(self.subject)
 
 
         self.assertEqual(self.listener.stats_spec, [])
         self.assertEqual(self.listener.stats_spec, [])
         self.assertEqual(self.listener.stats_data, {})
         self.assertEqual(self.listener.stats_data, {})