Merge "Supporting logging in heat-translator with config file"

This commit is contained in:
Jenkins 2015-09-04 17:03:43 +00:00 committed by Gerrit Code Review
commit 0ffc30381c
7 changed files with 80 additions and 12 deletions

View File

@ -11,6 +11,8 @@
# under the License. # under the License.
import logging
import logging.config
import os import os
import sys import sys
@ -33,6 +35,9 @@ This should be only used for testing purpose. The proper use of
Heat-Translator tool is via python-heatclient once it made available there. Heat-Translator tool is via python-heatclient once it made available there.
""" """
logging.config.fileConfig('heat_translator_logging.conf')
log = logging.getLogger("heat-translator")
def main(): def main():
if len(sys.argv) < 3: if len(sys.argv) < 3:

View File

@ -0,0 +1,43 @@
[loggers]
keys=root,heat-translator
[handlers]
keys=RotatingFileHandler,SysLogHandler,NullHandler
[formatters]
keys=form01
[logger_root]
level=DEBUG
handlers=NullHandler
[logger_heat-translator]
level=INFO
#one can be removed based on requirements
handlers=SysLogHandler, RotatingFileHandler
qualname=heat-translator
propagate=1
[handler_RotatingFileHandler]
class=handlers.RotatingFileHandler
level=INFO
formatter=form01
#rotation happens after 100MB
args=('/tmp/heat-translator.log', 'a', 100000000, 5, 'utf8')
[handler_SysLogHandler]
class=handlers.SysLogHandler
formatter=form01
level=INFO
args=('/dev/log', handlers.SysLogHandler.LOG_SYSLOG)
[handler_NullHandler]
class=NullHandler
formatter=form01
level=DEBUG
args=()
[formatter_form01]
format = %(asctime)s - %(name)s - %(levelname)s - %(filename)s : %(message)s
datefmt =

View File

@ -24,6 +24,7 @@ import yaml
YAML_ORDER_PARSER = toscaparser.utils.yamlparser.simple_ordered_parse YAML_ORDER_PARSER = toscaparser.utils.yamlparser.simple_ordered_parse
log = logging.getLogger('tosca') log = logging.getLogger('tosca')
log = logging.getLogger('heat-translator')
class MemoryUnit(object): class MemoryUnit(object):
@ -75,6 +76,7 @@ class MemoryUnit(object):
msg = _('Provided unit "{0}" is not valid. The valid units are' msg = _('Provided unit "{0}" is not valid. The valid units are'
' {1}').format(unit, MemoryUnit.UNIT_SIZE_DICT.keys()) ' {1}').format(unit, MemoryUnit.UNIT_SIZE_DICT.keys())
log.warning(msg)
raise ValueError(msg) raise ValueError(msg)
@ -96,10 +98,13 @@ class CompareUtils(object):
both_equal = True both_equal = True
for dict1_item, dict2_item in zip(dict1.items(), dict2.items()): for dict1_item, dict2_item in zip(dict1.items(), dict2.items()):
if dict1_item != dict2_item: if dict1_item != dict2_item:
log.warning(CompareUtils.MISMATCH_VALUE2_LABEL, msg = (_("%(label1)s: %(item1)s \n is not equal to \n:"
": %s \n is not equal to \n", "%(label2)s: %(item2)s")
CompareUtils.MISMATCH_VALUE1_LABEL, % {'label1': CompareUtils.MISMATCH_VALUE2_LABEL,
": %s", dict1_item, dict2_item) 'item1': dict1_item,
'label2': CompareUtils.MISMATCH_VALUE1_LABEL,
'item2': dict2_item})
log.warning(msg)
both_equal = False both_equal = False
break break
return both_equal return both_equal

View File

@ -11,6 +11,7 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
import logging
from translator.hot.syntax.hot_template import HotTemplate from translator.hot.syntax.hot_template import HotTemplate
from translator.hot.translate_inputs import TranslateInputs from translator.hot.translate_inputs import TranslateInputs
from translator.hot.translate_node_templates import TranslateNodeTemplates from translator.hot.translate_node_templates import TranslateNodeTemplates
@ -20,6 +21,8 @@ from translator.hot.translate_outputs import TranslateOutputs
class TOSCATranslator(object): class TOSCATranslator(object):
'''Invokes translation methods.''' '''Invokes translation methods.'''
log = logging.getLogger('heat-translator')
def __init__(self, tosca, parsed_params): def __init__(self, tosca, parsed_params):
super(TOSCATranslator, self).__init__() super(TOSCATranslator, self).__init__()
self.tosca = tosca self.tosca = tosca
@ -54,6 +57,8 @@ class TOSCATranslator(object):
try: try:
self.parsed_params[node_prop.value['get_input']] self.parsed_params[node_prop.value['get_input']]
except Exception: except Exception:
raise ValueError(_('Must specify all input values in \ msg = (_('Must specify all input values in \
TOSCA template, missing %s') % TOSCA template, missing %s') %
node_prop.value['get_input']) node_prop.value['get_input'])
self.log.warning(msg)
raise ValueError(msg)

View File

@ -54,7 +54,7 @@ TOSCA_TO_HOT_INPUT_TYPES = {'string': 'string',
'null': 'string', 'null': 'string',
'PortDef': 'number'} 'PortDef': 'number'}
log = logging.getLogger('tosca') log = logging.getLogger('heat-translator')
class TranslateInputs(object): class TranslateInputs(object):
@ -83,6 +83,8 @@ class TranslateInputs(object):
elif input.default is not None: elif input.default is not None:
hot_default = input.default hot_default = input.default
else: else:
log.warning(_("Need to specify a value "
"for input {0}").format(input.name))
raise Exception(_("Need to specify a value " raise Exception(_("Need to specify a value "
"for input {0}").format(input.name)) "for input {0}").format(input.name))
if input.type == "scalar-unit.size": if input.type == "scalar-unit.size":
@ -93,6 +95,7 @@ class TranslateInputs(object):
hot_default = (ScalarUnit_Size(hot_default). hot_default = (ScalarUnit_Size(hot_default).
get_num_from_scalar_unit('GiB')) get_num_from_scalar_unit('GiB'))
if hot_default == 0: if hot_default == 0:
log.warning(_('Unit value should be > 0.'))
raise Exception(_( raise Exception(_(
'Unit value should be > 0.')) 'Unit value should be > 0.'))
elif int(hot_default) < hot_default: elif int(hot_default) < hot_default:

View File

@ -11,6 +11,7 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
import logging
import six import six
from toscaparser.functions import GetAttribute from toscaparser.functions import GetAttribute
@ -90,6 +91,7 @@ TOSCA_TO_HOT_REQUIRES = {'container': 'server', 'host': 'server',
'dependency': 'depends_on', "connects": 'depends_on'} 'dependency': 'depends_on', "connects": 'depends_on'}
TOSCA_TO_HOT_PROPERTIES = {'properties': 'input'} TOSCA_TO_HOT_PROPERTIES = {'properties': 'input'}
log = logging.getLogger('heat-translator')
class TranslateNodeTemplates(object): class TranslateNodeTemplates(object):
@ -339,9 +341,11 @@ class TranslateNodeTemplates(object):
if connect_config is not None: if connect_config is not None:
config_location = 'source' config_location = 'source'
else: else:
raise Exception(_("Template error: " msg = _("Template error: "
"no configuration found for ConnectsTo " "no configuration found for ConnectsTo "
"in {1}").format(self.nodetemplate.name)) "in {1}").format(self.nodetemplate.name)
log.warning(msg)
raise Exception(msg)
config_name = source_node.name + '_' + target_name + '_connect_config' config_name = source_node.name + '_' + target_name + '_connect_config'
implement = connect_config.get('implementation') implement = connect_config.get('implementation')
if config_location == 'target': if config_location == 'target':

View File

@ -13,6 +13,7 @@
"""Translate action implementations""" """Translate action implementations"""
import logging import logging
import logging.config
import os import os
import sys import sys
@ -22,11 +23,13 @@ from toscaparser.tosca_template import ToscaTemplate
from translator.hot.tosca_translator import TOSCATranslator from translator.hot.tosca_translator import TOSCATranslator
from translator.osc import utils from translator.osc import utils
logging.config.fileConfig('heat_translator_logging.conf')
class TranslateTemplate(command.Command): class TranslateTemplate(command.Command):
"""Translate a template""" """Translate a template"""
log = logging.getLogger(__name__ + '.TranslateTemplate') log = logging.getLogger('heat-translator' + '.TranslateTemplate')
auth_required = False auth_required = False
def get_parser(self, prog_name): def get_parser(self, prog_name):