I tested it on Fedora 20 and with this patch Kimchi does not list the
VMs anymore:
[alinefm@alinefm kimchi]$ curl -H "Content-Type: application/json" -H
"Accept: application/json"
http://localhost:8010/vms -X GET -d'{}'
[
{},
{},
{},
{},
{}
]
On 10/15/2014 04:36 PM, Daniel Henrique Barboza wrote:
When building kimchi's RPM, some messages are getting
logged in /var/log/messages because cherrypy is logging
in the standard output. This happens because a function
in FeatureTests is enabling log.screen regardless of the
current environment. This patch makes a verification that
prevents the screen log to be enabled in the production
environment.
Signed-off-by: Daniel Henrique Barboza <danielhb(a)linux.vnet.ibm.com>
---
src/kimchi/featuretests.py | 31 ++++++++++++++++---------------
src/kimchi/server.py | 6 +++++-
2 files changed, 21 insertions(+), 16 deletions(-)
diff --git a/src/kimchi/featuretests.py b/src/kimchi/featuretests.py
index c6f4687..f1eb8ae 100644
--- a/src/kimchi/featuretests.py
+++ b/src/kimchi/featuretests.py
@@ -80,30 +80,31 @@ SCSI_FC_XML = """
class FeatureTests(object):
@staticmethod
- def disable_screen_error_logging():
+ def disable_libvirt_error_logging():
def libvirt_errorhandler(userdata, error):
# A libvirt error handler to ignore annoying messages in stderr
pass
+ # Filter functions are enable only in production env
+ if cherrypy.config.get('environment') != 'production':
+ return
# Register the error handler to hide libvirt error in stderr
libvirt.registerErrorHandler(f=libvirt_errorhandler, ctx=None)
- # Disable cherrypy screen logging, in order to log errors on kimchi
- # file without displaying them on screen
- cherrypy.log.screen = False
@staticmethod
- def enable_screen_error_logging():
+ def enable_libvirt_error_logging():
+ # Filter functions are enable only in production env
+ if cherrypy.config.get('environment') != 'production':
+ return
# Unregister the error handler
libvirt.registerErrorHandler(f=None, ctx=None)
- # Enable cherrypy screen logging
- cherrypy.log.screen = True
@staticmethod
def libvirt_supports_iso_stream(protocol):
xml = ISO_STREAM_XML % {'protocol': protocol}
conn = None
try:
- FeatureTests.disable_screen_error_logging()
+ FeatureTests.disable_libvirt_error_logging()
conn = libvirt.open(None)
dom = conn.defineXML(xml)
dom.undefine()
@@ -112,7 +113,7 @@ class FeatureTests(object):
kimchi_log.error(e.message)
return False
finally:
- FeatureTests.enable_screen_error_logging()
+ FeatureTests.enable_libvirt_error_logging()
conn is None or conn.close()
@staticmethod
@@ -123,7 +124,7 @@ class FeatureTests(object):
return xml
try:
conn = libvirt.open(None)
- FeatureTests.disable_screen_error_logging()
+ FeatureTests.disable_libvirt_error_logging()
conn.findStoragePoolSources('netfs', _get_xml(), 0)
except libvirt.libvirtError as e:
kimchi_log.error(e.message)
@@ -132,7 +133,7 @@ class FeatureTests(object):
# it returns 38--general system call failure
return False
finally:
- FeatureTests.enable_screen_error_logging()
+ FeatureTests.enable_libvirt_error_logging()
conn is None or conn.close()
return True
@@ -173,7 +174,7 @@ class FeatureTests(object):
@staticmethod
def libvirt_support_fc_host():
try:
- FeatureTests.disable_screen_error_logging()
+ FeatureTests.disable_libvirt_error_logging()
conn = libvirt.open(None)
pool = None
pool = conn.storagePoolDefineXML(SCSI_FC_XML, 0)
@@ -182,7 +183,7 @@ class FeatureTests(object):
# Libvirt requires adapter name, not needed when supports to FC
return False
finally:
- FeatureTests.enable_screen_error_logging()
+ FeatureTests.enable_libvirt_error_logging()
pool is None or pool.undefine()
conn is None or conn.close()
return True
@@ -192,8 +193,8 @@ class FeatureTests(object):
KIMCHI_META_URL = "https://github.com/kimchi-project/kimchi/"
KIMCHI_NAMESPACE = "kimchi"
with RollbackContext() as rollback:
- FeatureTests.disable_screen_error_logging()
- rollback.prependDefer(FeatureTests.enable_screen_error_logging)
+ FeatureTests.disable_libvirt_error_logging()
+ rollback.prependDefer(FeatureTests.enable_libvirt_error_logging)
conn = libvirt.open(None)
rollback.prependDefer(conn.close)
dom = conn.defineXML(SIMPLE_VM_XML)
diff --git a/src/kimchi/server.py b/src/kimchi/server.py
index 8d166e5..6cc7143 100644
--- a/src/kimchi/server.py
+++ b/src/kimchi/server.py
@@ -91,13 +91,17 @@ class Server(object):
max_body_size_in_bytes = eval(options.max_body_size) * 1024
cherrypy.server.max_request_body_size = max_body_size_in_bytes
- cherrypy.log.screen = True
cherrypy.log.access_file = options.access_log
cherrypy.log.error_file = options.error_log
logLevel = LOGGING_LEVEL.get(options.log_level, logging.DEBUG)
dev_env = options.environment != 'production'
+ # Enable cherrypy screen logging if running environment
+ # is not 'production'
+ if dev_env:
+ cherrypy.log.screen = True
+
# Create handler to rotate access log file
h = logging.handlers.RotatingFileHandler(options.access_log, 'a',
10000000, 1000)