added syslog functionality

This commit is contained in:
yolanda.robla@canonical.com 2014-02-03 13:34:56 +01:00
parent 8c8f33f099
commit fcd2e96b04
6 changed files with 97 additions and 9 deletions

View File

@ -26,6 +26,12 @@ options:
description: | description: |
Default role for Horizon operations that will be created in Default role for Horizon operations that will be created in
Keystone upon introduction of an identity-service relation. Keystone upon introduction of an identity-service relation.
use-syslog:
type: boolean
default: False
description: |
By default, all services will log into their corresponding log files.
Setting this to True will force all services to log to the syslog.
vip: vip:
type: string type: string
description: "Virtual IP to use to front openstack dashboard ha configuration" description: "Virtual IP to use to front openstack dashboard ha configuration"

View File

@ -80,7 +80,8 @@ class HorizonContext(OSContextGenerator):
'default_role': config('default-role'), 'default_role': config('default-role'),
"webroot": config('webroot'), "webroot": config('webroot'),
"ubuntu_theme": config('ubuntu-theme') in ['yes', True], "ubuntu_theme": config('ubuntu-theme') in ['yes', True],
"secret": config('secret') or pwgen() "secret": config('secret') or pwgen(),
"use_syslog": config('use-syslog')
} }
return ctxt return ctxt

View File

@ -1 +1 @@
31 32

View File

@ -1,8 +1,10 @@
import os import os
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
from openstack_dashboard import exceptions from openstack_dashboard import exceptions
{% if use_syslog %}
from logging.handlers import SysLogHandler
{% endif %}
DEBUG = {{ debug }} DEBUG = {{ debug }}
TEMPLATE_DEBUG = DEBUG TEMPLATE_DEBUG = DEBUG
@ -176,6 +178,13 @@ LOGGING = {
'level': 'DEBUG', 'level': 'DEBUG',
'class': 'django.utils.log.NullHandler', 'class': 'django.utils.log.NullHandler',
}, },
{% if use_syslog %}
'syslog': {
'level': 'INFO',
'class': 'logging.handlers.SysLogHandler'
'formatter': 'verbose'
}
{% endif %}
'console': { 'console': {
# Set the level to "DEBUG" for verbose output logging. # Set the level to "DEBUG" for verbose output logging.
'level': 'INFO', 'level': 'INFO',
@ -194,27 +203,51 @@ LOGGING = {
'propagate': False, 'propagate': False,
}, },
'horizon': { 'horizon': {
{% if use_syslog %}
'handlers': ['syslog'],
{% else %}
'handlers': ['console'], 'handlers': ['console'],
{% endif %}
'propagate': False, 'propagate': False,
}, },
'openstack_dashboard': { 'openstack_dashboard': {
{% if use_syslog %}
'handlers': ['syslog'],
{% else %}
'handlers': ['console'], 'handlers': ['console'],
{% endif %}
'propagate': False, 'propagate': False,
}, },
'novaclient': { 'novaclient': {
{% if use_syslog %}
'handlers': ['syslog'],
{% else %}
'handlers': ['console'], 'handlers': ['console'],
{% endif %}
'propagate': False, 'propagate': False,
}, },
'keystoneclient': { 'keystoneclient': {
{% if use_syslog %}
'handlers': ['syslog'],
{% else %}
'handlers': ['console'], 'handlers': ['console'],
{% endif %}
'propagate': False, 'propagate': False,
}, },
'glanceclient': { 'glanceclient': {
{% if use_syslog %}
'handlers': ['syslog'],
{% else %}
'handlers': ['console'], 'handlers': ['console'],
{% endif %}
'propagate': False, 'propagate': False,
}, },
'nose.plugins.manager': { 'nose.plugins.manager': {
{% if use_syslog %}
'handlers': ['syslog'],
{% else %}
'handlers': ['console'], 'handlers': ['console'],
{% endif %}
'propagate': False, 'propagate': False,
} }
} }

View File

@ -1,6 +1,9 @@
import os import os
from django.utils.translation import ugettext_lazy as _ from django.utils.translation import ugettext_lazy as _
{% if use_syslog %}
from logging.handlers import SysLogHandler
{% endif %}
from openstack_dashboard import exceptions from openstack_dashboard import exceptions
@ -248,6 +251,13 @@ LOGGING = {
'level': 'INFO', 'level': 'INFO',
'class': 'logging.StreamHandler', 'class': 'logging.StreamHandler',
}, },
{% if use_syslog %}
'syslog': {
'level': 'INFO',
'class': 'logging.handlers.SysLogHandler'
'formatter': 'verbose'
}
{% endif %}
}, },
'loggers': { 'loggers': {
# Logging from django.db.backends is VERY verbose, send to null # Logging from django.db.backends is VERY verbose, send to null
@ -261,35 +271,67 @@ LOGGING = {
'propagate': False, 'propagate': False,
}, },
'horizon': { 'horizon': {
{% if use_syslog %}
'handlers': ['syslog'],
{% else %}
'handlers': ['console'], 'handlers': ['console'],
{% endif %}
'propagate': False, 'propagate': False,
}, },
'openstack_dashboard': { 'openstack_dashboard': {
{% if use_syslog %}
'handlers': ['syslog'],
{% else %}
'handlers': ['console'], 'handlers': ['console'],
{% endif %}
'propagate': False, 'propagate': False,
}, },
'novaclient': { 'novaclient': {
{% if use_syslog %}
'handlers': ['syslog'],
{% else %}
'handlers': ['console'], 'handlers': ['console'],
{% endif %}
'propagate': False, 'propagate': False,
}, },
'cinderclient': { 'cinderclient': {
{% if use_syslog %}
'handlers': ['syslog'],
{% else %}
'handlers': ['console'], 'handlers': ['console'],
{% endif %}
'propagate': False, 'propagate': False,
}, },
'keystoneclient': { 'keystoneclient': {
{% if use_syslog %}
'handlers': ['syslog'],
{% else %}
'handlers': ['console'], 'handlers': ['console'],
{% endif %}
'propagate': False, 'propagate': False,
}, },
'glanceclient': { 'glanceclient': {
{% if use_syslog %}
'handlers': ['syslog'],
{% else %}
'handlers': ['console'], 'handlers': ['console'],
{% endif %}
'propagate': False, 'propagate': False,
}, },
'heatclient': { 'heatclient': {
{% if use_syslog %}
'handlers': ['syslog'],
{% else %}
'handlers': ['console'], 'handlers': ['console'],
{% endif %}
'propagate': False, 'propagate': False,
}, },
'nose.plugins.manager': { 'nose.plugins.manager': {
{% if use_syslog %}
'handlers': ['syslog'],
{% else %}
'handlers': ['console'], 'handlers': ['console'],
{% endif %}
'propagate': False, 'propagate': False,
} }
} }

View File

@ -78,42 +78,48 @@ class TestHorizonContexts(CharmTestCase):
self.assertEquals(horizon_contexts.HorizonContext()(), self.assertEquals(horizon_contexts.HorizonContext()(),
{'compress_offline': True, 'debug': False, {'compress_offline': True, 'debug': False,
'default_role': 'Member', 'webroot': '/horizon', 'default_role': 'Member', 'webroot': '/horizon',
'ubuntu_theme': True, 'secret': 'secret'}) 'ubuntu_theme': True, 'use_syslog': False,
'secret': 'secret'})
def test_HorizonContext_debug(self): def test_HorizonContext_debug(self):
self.test_config.set('debug', 'yes') self.test_config.set('debug', 'yes')
self.assertEquals(horizon_contexts.HorizonContext()(), self.assertEquals(horizon_contexts.HorizonContext()(),
{'compress_offline': True, 'debug': True, {'compress_offline': True, 'debug': True,
'default_role': 'Member', 'webroot': '/horizon', 'default_role': 'Member', 'webroot': '/horizon',
'ubuntu_theme': True, 'secret': 'secret'}) 'ubuntu_theme': True, 'use_syslog': False,
'secret': 'secret'})
def test_HorizonContext_theme(self): def test_HorizonContext_theme(self):
self.test_config.set('ubuntu-theme', False) self.test_config.set('ubuntu-theme', False)
self.assertEquals(horizon_contexts.HorizonContext()(), self.assertEquals(horizon_contexts.HorizonContext()(),
{'compress_offline': True, 'debug': False, {'compress_offline': True, 'debug': False,
'default_role': 'Member', 'webroot': '/horizon', 'default_role': 'Member', 'webroot': '/horizon',
'ubuntu_theme': False, 'secret': 'secret'}) 'ubuntu_theme': False, 'use_syslog': False,
'secret': 'secret'})
def test_HorizonContext_compression(self): def test_HorizonContext_compression(self):
self.test_config.set('offline-compression', 'no') self.test_config.set('offline-compression', 'no')
self.assertEquals(horizon_contexts.HorizonContext()(), self.assertEquals(horizon_contexts.HorizonContext()(),
{'compress_offline': False, 'debug': False, {'compress_offline': False, 'debug': False,
'default_role': 'Member', 'webroot': '/horizon', 'default_role': 'Member', 'webroot': '/horizon',
'ubuntu_theme': True, 'secret': 'secret'}) 'ubuntu_theme': True, 'use_syslog': False,
'secret': 'secret'})
def test_HorizonContext_role(self): def test_HorizonContext_role(self):
self.test_config.set('default-role', 'foo') self.test_config.set('default-role', 'foo')
self.assertEquals(horizon_contexts.HorizonContext()(), self.assertEquals(horizon_contexts.HorizonContext()(),
{'compress_offline': True, 'debug': False, {'compress_offline': True, 'debug': False,
'default_role': 'foo', 'webroot': '/horizon', 'default_role': 'foo', 'webroot': '/horizon',
'ubuntu_theme': True, 'secret': 'secret'}) 'ubuntu_theme': True, 'use_syslog': False,
'secret': 'secret'})
def test_HorizonContext_webroot(self): def test_HorizonContext_webroot(self):
self.test_config.set('webroot', '/') self.test_config.set('webroot', '/')
self.assertEquals(horizon_contexts.HorizonContext()(), self.assertEquals(horizon_contexts.HorizonContext()(),
{'compress_offline': True, 'debug': False, {'compress_offline': True, 'debug': False,
'default_role': 'Member', 'webroot': '/', 'default_role': 'Member', 'webroot': '/',
'ubuntu_theme': True, 'secret': 'secret'}) 'ubuntu_theme': True, 'use_syslog': False,
'secret': 'secret'})
def test_IdentityServiceContext_not_related(self): def test_IdentityServiceContext_not_related(self):
self.relation_ids.return_value = [] self.relation_ids.return_value = []