| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to You under the Apache License, Version 2.0 |
| # (the "License"); you may not use this file except in compliance with |
| # the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| import logging |
| |
| from mock import MagicMock |
| |
| from ..mock import models as mock_models |
| |
| |
| def setup_logger(logger_name, |
| level=logging.INFO, |
| handlers=None, |
| remove_existing_handlers=True, |
| logger_format=None, |
| propagate=True): |
| """ |
| :param logger_name: Name of the logger. |
| :param level: Level for the logger (not for specific handler). |
| :param handlers: An optional list of handlers (formatter will be |
| overridden); If None, only a StreamHandler for |
| sys.stdout will be used. |
| :param remove_existing_handlers: Determines whether to remove existing |
| handlers before adding new ones |
| :param logger_format: the format this logger will have. |
| :param propagate: propagate the message the parent logger. |
| :return: A logger instance. |
| :rtype: logging.Logger |
| """ |
| |
| logger = logging.getLogger(logger_name) |
| |
| if remove_existing_handlers: |
| for handler in logger.handlers: |
| logger.removeHandler(handler) |
| |
| for handler in handlers: |
| if logger_format: |
| formatter = logging.Formatter(fmt=logger_format) |
| handler.setFormatter(formatter) |
| logger.addHandler(handler) |
| |
| logger.setLevel(level) |
| if not propagate: |
| logger.propagate = False |
| |
| return logger |
| |
| |
| class MockStorage(object): |
| |
| def __init__(self): |
| self.service_template = MockServiceTemplateStorage() |
| self.service = MockServiceStorage() |
| self.node_template = MockNodeTemplateStorage() |
| self.node = MockNodeStorage() |
| |
| |
| class MockServiceTemplateStorage(object): |
| |
| def __init__(self): |
| self.list = MagicMock(return_value=[mock_models.create_service_template()]) |
| self.get_by_name = MagicMock(return_value=mock_models.create_service_template()) |
| |
| |
| class MockServiceStorage(object): |
| |
| def __init__(self): |
| |
| self.s = mock_models.create_service_with_dependencies() |
| |
| self.list = MagicMock(return_value=[self.s]) |
| self.create = MagicMock(return_value=self.s) |
| self.get = MagicMock( |
| return_value=mock_models.create_service_with_dependencies(include_node=True)) |
| self.get_by_name = MagicMock(return_value=self.s) |
| self.delete = MagicMock() |
| |
| |
| class MockNodeTemplateStorage(object): |
| def __init__(self): |
| self.get = MagicMock(return_value=mock_models.create_node_template_with_dependencies()) |
| self.list = MagicMock(return_value=[mock_models.create_node_template_with_dependencies()]) |
| |
| |
| class MockNodeStorage(object): |
| def __init__(self): |
| self.get = MagicMock(return_value=mock_models.create_node_with_dependencies()) |
| self.list = MagicMock(return_value=[mock_models.create_node_with_dependencies()]) |