From a801b0072edb49893c1c9a18283d74ba66dc70db Mon Sep 17 00:00:00 2001 From: Yujun Zhang Date: Wed, 30 Nov 2016 11:07:21 +0800 Subject: [PATCH] Move utility methods from `common/utils` to `utils` - `common` is for vitrage related methods - `utils` is for general purpose methods Change-Id: I52f654acce7887f4452415c8ca4bcfa64dfce1d0 --- vitrage/api/policy.py | 2 +- vitrage/datasources/alarm_driver_base.py | 3 +- vitrage/datasources/aodh/transformer.py | 2 +- vitrage/datasources/driver_base.py | 2 +- vitrage/datasources/launcher.py | 3 +- vitrage/datasources/nagios/config.py | 2 +- vitrage/datasources/nagios/transformer.py | 2 +- vitrage/datasources/static_physical/driver.py | 2 +- vitrage/datasources/transformer_base.py | 10 ++--- vitrage/datasources/zabbix/driver.py | 2 +- vitrage/datasources/zabbix/transformer.py | 6 +-- .../consistency/consistency_enforcer.py | 2 +- .../mappings/datasource_info_mapper.py | 2 +- .../entity_graph/processor/entity_graph.py | 2 +- vitrage/entity_graph/transformer_manager.py | 2 +- vitrage/evaluator/actions/action_executor.py | 2 +- vitrage/evaluator/scenario_repository.py | 4 +- .../consistency/test_consistency.py | 4 +- .../test_static_physical_driver.py | 2 +- .../zabbix/test_zabbix_transformer.py | 3 +- .../entity_graph/processor/test_processor.py | 2 +- .../evaluator/test_scenario_repository.py | 2 +- .../test_template_content_validator.py | 3 +- .../unit/evaluator/test_template_data.py | 2 +- .../test_template_syntax_validator.py | 2 +- vitrage/utils/__init__.py | 44 ++++++++++++++----- .../datetime_utils.py => utils/datetime.py} | 3 ++ .../{common/file_utils.py => utils/file.py} | 0 28 files changed, 70 insertions(+), 47 deletions(-) rename vitrage/{common/datetime_utils.py => utils/datetime.py} (96%) rename vitrage/{common/file_utils.py => utils/file.py} (100%) diff --git a/vitrage/api/policy.py b/vitrage/api/policy.py index b27a71bb5..7ae0011a2 100644 --- a/vitrage/api/policy.py +++ b/vitrage/api/policy.py @@ -12,7 +12,7 @@ from pecan.core import abort -from vitrage.common.utils import recursive_keypairs +from vitrage.utils import recursive_keypairs def enforce(rule, headers, enforcer, target): diff --git a/vitrage/datasources/alarm_driver_base.py b/vitrage/datasources/alarm_driver_base.py index 47419bbb9..a660073a1 100644 --- a/vitrage/datasources/alarm_driver_base.py +++ b/vitrage/datasources/alarm_driver_base.py @@ -13,10 +13,11 @@ # under the License. from oslo_log import log + from vitrage.common.constants import DatasourceProperties as DSProps from vitrage.common.constants import GraphAction -from vitrage.common import datetime_utils from vitrage.datasources.driver_base import DriverBase +from vitrage.utils import datetime as datetime_utils LOG = log.getLogger(__name__) diff --git a/vitrage/datasources/aodh/transformer.py b/vitrage/datasources/aodh/transformer.py index 4043e57b4..3b27d85ff 100644 --- a/vitrage/datasources/aodh/transformer.py +++ b/vitrage/datasources/aodh/transformer.py @@ -16,7 +16,6 @@ from vitrage.common.constants import DatasourceProperties as DSProps from vitrage.common.constants import EdgeLabel from vitrage.common.constants import EntityCategory from vitrage.common.constants import VertexProperties as VProps -from vitrage.common import datetime_utils from vitrage.datasources.alarm_transformer_base import AlarmTransformerBase from vitrage.datasources.aodh import AODH_DATASOURCE from vitrage.datasources.aodh.properties import AodhProperties as AodhProps @@ -24,6 +23,7 @@ from vitrage.datasources.aodh.properties import AodhState from vitrage.datasources import transformer_base as tbase from vitrage.datasources.transformer_base import Neighbor import vitrage.graph.utils as graph_utils +from vitrage.utils import datetime as datetime_utils class AodhTransformer(AlarmTransformerBase): diff --git a/vitrage/datasources/driver_base.py b/vitrage/datasources/driver_base.py index edeedbed4..cb1cf8efc 100644 --- a/vitrage/datasources/driver_base.py +++ b/vitrage/datasources/driver_base.py @@ -20,7 +20,7 @@ from oslo_log import log from vitrage.common.constants import DatasourceAction from vitrage.common.constants import DatasourceProperties as DSProps from vitrage.common.constants import GraphAction -from vitrage.common import datetime_utils +from vitrage.utils import datetime as datetime_utils LOG = log.getLogger(__name__) diff --git a/vitrage/datasources/launcher.py b/vitrage/datasources/launcher.py index 4bc9da7c8..d1be55fbb 100644 --- a/vitrage/datasources/launcher.py +++ b/vitrage/datasources/launcher.py @@ -18,11 +18,10 @@ import itertools from oslo_service import service as os_service from oslo_utils import importutils as utils from vitrage.common.constants import UpdateMethod -from vitrage.common.utils import opt_exists from vitrage.datasources.listener_service import ListenerService - from vitrage.datasources.services import ChangesService from vitrage.datasources.services import SnapshotsService +from vitrage.utils import opt_exists CHANGES_INTERVAL = 'changes_interval' diff --git a/vitrage/datasources/nagios/config.py b/vitrage/datasources/nagios/config.py index 8dd0fbca0..5da3166fc 100644 --- a/vitrage/datasources/nagios/config.py +++ b/vitrage/datasources/nagios/config.py @@ -16,7 +16,7 @@ import re from oslo_log import log -from vitrage.common import file_utils +from vitrage.utils import file as file_utils LOG = log.getLogger(__name__) NAGIOS_HOST = 'nagios_host' diff --git a/vitrage/datasources/nagios/transformer.py b/vitrage/datasources/nagios/transformer.py index 2d9d1ffa9..8eba5076e 100644 --- a/vitrage/datasources/nagios/transformer.py +++ b/vitrage/datasources/nagios/transformer.py @@ -18,7 +18,6 @@ from vitrage.common.constants import DatasourceProperties as DSProps from vitrage.common.constants import EdgeLabel from vitrage.common.constants import EntityCategory from vitrage.common.constants import VertexProperties as VProps -from vitrage.common import datetime_utils from vitrage.datasources.alarm_transformer_base import AlarmTransformerBase from vitrage.datasources.nagios import NAGIOS_DATASOURCE from vitrage.datasources.nagios.properties import NagiosProperties @@ -27,6 +26,7 @@ from vitrage.datasources.nova.host import NOVA_HOST_DATASOURCE from vitrage.datasources import transformer_base as tbase from vitrage.datasources.transformer_base import Neighbor import vitrage.graph.utils as graph_utils +from vitrage.utils import datetime as datetime_utils LOG = logging.getLogger(__name__) diff --git a/vitrage/datasources/static_physical/driver.py b/vitrage/datasources/static_physical/driver.py index 002dfc294..b9b8c730c 100644 --- a/vitrage/datasources/static_physical/driver.py +++ b/vitrage/datasources/static_physical/driver.py @@ -17,9 +17,9 @@ import copy from vitrage.common.constants import DatasourceProperties as DSProps from vitrage.common.constants import GraphAction from vitrage.common.constants import VertexProperties as VProps -from vitrage.common import file_utils from vitrage.datasources.driver_base import DriverBase from vitrage.datasources.static_physical import STATIC_PHYSICAL_DATASOURCE +from vitrage.utils import file as file_utils class StaticPhysicalDriver(DriverBase): diff --git a/vitrage/datasources/transformer_base.py b/vitrage/datasources/transformer_base.py index 976ba25ec..7488be3fb 100644 --- a/vitrage/datasources/transformer_base.py +++ b/vitrage/datasources/transformer_base.py @@ -15,10 +15,9 @@ import abc from collections import namedtuple +import six from oslo_log import log as logging -import six -from vitrage.common import datetime_utils import vitrage.common.constants as cons from vitrage.common.constants import DatasourceAction @@ -26,9 +25,10 @@ from vitrage.common.constants import DatasourceProperties as DSProps from vitrage.common.constants import GraphAction from vitrage.common.constants import UpdateMethod from vitrage.common.exception import VitrageTransformerError -from vitrage.common import utils from vitrage.datasources import OPENSTACK_CLUSTER import vitrage.graph.utils as graph_utils +from vitrage.utils import datetime as datetime_utils +from vitrage.utils import opt_exists LOG = logging.getLogger(__name__) @@ -130,8 +130,8 @@ class TransformerBase(object): def _create_entity_vertex(self, entity_event): if is_update_event(entity_event) and \ - utils.opt_exists(self.conf, self.get_type()) and \ - utils.opt_exists(self.conf[self.get_type()], 'update_method'): + opt_exists(self.conf, self.get_type()) and \ + opt_exists(self.conf[self.get_type()], 'update_method'): update_method = self.conf[self.get_type()].update_method.lower() if update_method == UpdateMethod.PUSH: return self._create_update_entity_vertex(entity_event) diff --git a/vitrage/datasources/zabbix/driver.py b/vitrage/datasources/zabbix/driver.py index 4baa1e492..af6cde552 100644 --- a/vitrage/datasources/zabbix/driver.py +++ b/vitrage/datasources/zabbix/driver.py @@ -19,7 +19,6 @@ from oslo_utils import importutils as utils from vitrage.common.constants import DatasourceAction from vitrage.common.constants import DatasourceProperties as DSProps -from vitrage.common import file_utils from vitrage.datasources.alarm_driver_base import AlarmDriverBase from vitrage.datasources.zabbix.properties import ZabbixProperties as ZProps from vitrage.datasources.zabbix.properties import ZabbixTriggerStatus \ @@ -27,6 +26,7 @@ from vitrage.datasources.zabbix.properties import ZabbixTriggerStatus \ from vitrage.datasources.zabbix.properties import ZabbixTriggerValue \ as TriggerValue from vitrage.datasources.zabbix import ZABBIX_DATASOURCE +from vitrage.utils import file as file_utils LOG = log.getLogger(__name__) diff --git a/vitrage/datasources/zabbix/transformer.py b/vitrage/datasources/zabbix/transformer.py index 1701aaaa5..25b541c31 100644 --- a/vitrage/datasources/zabbix/transformer.py +++ b/vitrage/datasources/zabbix/transformer.py @@ -18,8 +18,6 @@ from vitrage.common.constants import DatasourceProperties as DSProps from vitrage.common.constants import EdgeLabel from vitrage.common.constants import EntityCategory from vitrage.common.constants import VertexProperties as VProps -from vitrage.common.datetime_utils import change_time_str_format -from vitrage.common.datetime_utils import format_unix_timestamp from vitrage.datasources.alarm_properties import AlarmProperties as AlarmProps from vitrage.datasources.alarm_transformer_base import AlarmTransformerBase from vitrage.datasources.nova.host import NOVA_HOST_DATASOURCE @@ -31,9 +29,9 @@ from vitrage.datasources.zabbix.properties import ZabbixTriggerSeverity \ from vitrage.datasources.zabbix.properties import ZabbixTriggerValue\ as TriggerValue from vitrage.datasources.zabbix import ZABBIX_DATASOURCE - - import vitrage.graph.utils as graph_utils +from vitrage.utils.datetime import change_time_str_format +from vitrage.utils.datetime import format_unix_timestamp LOG = logging.getLogger(__name__) diff --git a/vitrage/entity_graph/consistency/consistency_enforcer.py b/vitrage/entity_graph/consistency/consistency_enforcer.py index eae06a353..e90b890c2 100644 --- a/vitrage/entity_graph/consistency/consistency_enforcer.py +++ b/vitrage/entity_graph/consistency/consistency_enforcer.py @@ -22,10 +22,10 @@ from vitrage.common.constants import DatasourceProperties as DSProps from vitrage.common.constants import EntityCategory from vitrage.common.constants import GraphAction from vitrage.common.constants import VertexProperties as VProps -from vitrage.common.datetime_utils import utcnow from vitrage.datasources.consistency import CONSISTENCY_DATASOURCE from vitrage.datasources import OPENSTACK_CLUSTER from vitrage.evaluator.actions.evaluator_event_transformer import VITRAGE_TYPE +from vitrage.utils.datetime import utcnow LOG = log.getLogger(__name__) diff --git a/vitrage/entity_graph/mappings/datasource_info_mapper.py b/vitrage/entity_graph/mappings/datasource_info_mapper.py index eae12f5cf..1c718555d 100644 --- a/vitrage/entity_graph/mappings/datasource_info_mapper.py +++ b/vitrage/entity_graph/mappings/datasource_info_mapper.py @@ -18,10 +18,10 @@ from oslo_log import log from vitrage.common.constants import EntityCategory from vitrage.common.constants import VertexProperties as VProps -from vitrage.common import file_utils from vitrage.entity_graph.mappings.alarm_handler import AlarmHandler from vitrage.entity_graph.mappings.resource_handler import \ ResourceHandler +from vitrage.utils import file as file_utils LOG = log.getLogger(__name__) diff --git a/vitrage/entity_graph/processor/entity_graph.py b/vitrage/entity_graph/processor/entity_graph.py index b9529a3f3..a52d62359 100644 --- a/vitrage/entity_graph/processor/entity_graph.py +++ b/vitrage/entity_graph/processor/entity_graph.py @@ -16,8 +16,8 @@ from oslo_log import log from vitrage.common.constants import EdgeProperties as EProps from vitrage.common.constants import VertexProperties as VProps -from vitrage.common.datetime_utils import utcnow from vitrage.graph import NXGraph +from vitrage.utils.datetime import utcnow LOG = log.getLogger(__name__) diff --git a/vitrage/entity_graph/transformer_manager.py b/vitrage/entity_graph/transformer_manager.py index a7add061b..ac0c05c2d 100644 --- a/vitrage/entity_graph/transformer_manager.py +++ b/vitrage/entity_graph/transformer_manager.py @@ -18,12 +18,12 @@ from oslo_utils import importutils from vitrage.common.constants import DatasourceProperties as DSProps from vitrage.common.exception import VitrageTransformerError -from vitrage.common.utils import opt_exists from vitrage.datasources.consistency import CONSISTENCY_DATASOURCE from vitrage.datasources.consistency.transformer import ConsistencyTransformer from vitrage.evaluator.actions.evaluator_event_transformer import \ EvaluatorEventTransformer from vitrage.evaluator.actions.evaluator_event_transformer import VITRAGE_TYPE +from vitrage.utils import opt_exists LOG = logging.getLogger(__name__) ENTITIES = 'entities' diff --git a/vitrage/evaluator/actions/action_executor.py b/vitrage/evaluator/actions/action_executor.py index baae0b8c6..37d18128b 100644 --- a/vitrage/evaluator/actions/action_executor.py +++ b/vitrage/evaluator/actions/action_executor.py @@ -19,7 +19,6 @@ from oslo_utils import importutils from vitrage.common.constants import DatasourceAction as AType from vitrage.common.constants import DatasourceProperties as DSProps from vitrage.common.constants import VertexProperties as VProps -from vitrage.common import datetime_utils from vitrage.evaluator.actions.base import ActionMode from vitrage.evaluator.actions.base import ActionType from vitrage.evaluator.actions.evaluator_event_transformer import VITRAGE_TYPE @@ -34,6 +33,7 @@ from vitrage.evaluator.actions.recipes.base import EVALUATOR_EVENT_TYPE from vitrage.evaluator.actions.recipes.mark_down import MarkDown from vitrage.evaluator.actions.recipes.raise_alarm import RaiseAlarm from vitrage.evaluator.actions.recipes.set_state import SetState +from vitrage.utils import datetime as datetime_utils class ActionExecutor(object): diff --git a/vitrage/evaluator/scenario_repository.py b/vitrage/evaluator/scenario_repository.py index a0bc65ae3..a9e3ae5bb 100644 --- a/vitrage/evaluator/scenario_repository.py +++ b/vitrage/evaluator/scenario_repository.py @@ -17,8 +17,6 @@ from hashlib import md5 from oslo_log import log -from vitrage.common import datetime_utils -from vitrage.common import file_utils from vitrage.evaluator.base import Template from vitrage.evaluator.template_data import RELATIONSHIP from vitrage.evaluator.template_data import TemplateData @@ -26,6 +24,8 @@ from vitrage.evaluator.template_validation.template_content_validator import \ content_validation from vitrage.evaluator.template_validation.template_syntax_validator import \ syntax_validation +from vitrage.utils import datetime as datetime_utils +from vitrage.utils import file as file_utils LOG = log.getLogger(__name__) diff --git a/vitrage/tests/functional/entity_graph/consistency/test_consistency.py b/vitrage/tests/functional/entity_graph/consistency/test_consistency.py index 51dedda97..2056c6577 100644 --- a/vitrage/tests/functional/entity_graph/consistency/test_consistency.py +++ b/vitrage/tests/functional/entity_graph/consistency/test_consistency.py @@ -13,16 +13,15 @@ # under the License. from datetime import timedelta +from six.moves import queue import time import unittest from oslo_config import cfg -from six.moves import queue from vitrage.common.constants import EdgeLabel from vitrage.common.constants import EntityCategory from vitrage.common.constants import VertexProperties as VProps -from vitrage.common.datetime_utils import utcnow from vitrage.datasources.nagios import NAGIOS_DATASOURCE from vitrage.datasources.nova.host import NOVA_HOST_DATASOURCE from vitrage.datasources.nova.instance import NOVA_INSTANCE_DATASOURCE @@ -37,6 +36,7 @@ from vitrage.evaluator.scenario_repository import ScenarioRepository import vitrage.graph.utils as graph_utils from vitrage.tests.functional.base import TestFunctionalBase from vitrage.tests.mocks import utils +from vitrage.utils.datetime import utcnow class TestConsistencyFunctional(TestFunctionalBase): diff --git a/vitrage/tests/unit/datasources/static_physical/test_static_physical_driver.py b/vitrage/tests/unit/datasources/static_physical/test_static_physical_driver.py index bd1c11fb2..46e2724bf 100644 --- a/vitrage/tests/unit/datasources/static_physical/test_static_physical_driver.py +++ b/vitrage/tests/unit/datasources/static_physical/test_static_physical_driver.py @@ -21,12 +21,12 @@ from vitrage.common.constants import DatasourceAction from vitrage.common.constants import DatasourceProperties as DSProps from vitrage.common.constants import GraphAction from vitrage.common.constants import VertexProperties as VProps -from vitrage.common import file_utils from vitrage.datasources.static_physical import driver from vitrage.datasources.static_physical import STATIC_PHYSICAL_DATASOURCE from vitrage.datasources.static_physical import SWITCH from vitrage.tests import base from vitrage.tests.mocks import utils +from vitrage.utils import file as file_utils LOG = logging.getLogger(__name__) diff --git a/vitrage/tests/unit/datasources/zabbix/test_zabbix_transformer.py b/vitrage/tests/unit/datasources/zabbix/test_zabbix_transformer.py index 4fb5027d5..a19381f8c 100644 --- a/vitrage/tests/unit/datasources/zabbix/test_zabbix_transformer.py +++ b/vitrage/tests/unit/datasources/zabbix/test_zabbix_transformer.py @@ -22,7 +22,6 @@ from vitrage.common.constants import EntityCategory from vitrage.common.constants import GraphAction from vitrage.common.constants import UpdateMethod from vitrage.common.constants import VertexProperties as VProps -from vitrage.common.datetime_utils import format_unix_timestamp from vitrage.datasources.alarm_properties import AlarmProperties as AlarmProps from vitrage.datasources.nova.host import NOVA_HOST_DATASOURCE from vitrage.datasources.nova.host.transformer import HostTransformer @@ -36,7 +35,7 @@ from vitrage.datasources.zabbix.transformer import ZabbixTransformer from vitrage.datasources.zabbix import ZABBIX_DATASOURCE from vitrage.tests import base from vitrage.tests.mocks import mock_driver as mock_sync - +from vitrage.utils.datetime import format_unix_timestamp LOG = logging.getLogger(__name__) diff --git a/vitrage/tests/unit/entity_graph/processor/test_processor.py b/vitrage/tests/unit/entity_graph/processor/test_processor.py index f37c49318..2ee37b821 100644 --- a/vitrage/tests/unit/entity_graph/processor/test_processor.py +++ b/vitrage/tests/unit/entity_graph/processor/test_processor.py @@ -18,7 +18,6 @@ from vitrage.common.constants import DatasourceAction as DSAction from vitrage.common.constants import DatasourceProperties as DSProps from vitrage.common.constants import GraphAction from vitrage.common.constants import VertexProperties as VProps -from vitrage.common.datetime_utils import utcnow from vitrage.datasources.transformer_base import Neighbor from vitrage.entity_graph.initialization_status import InitializationStatus from vitrage.entity_graph.mappings.operational_resource_state import \ @@ -26,6 +25,7 @@ from vitrage.entity_graph.mappings.operational_resource_state import \ from vitrage.entity_graph.processor import processor as proc import vitrage.graph.utils as graph_utils from vitrage.tests.unit.entity_graph.base import TestEntityGraphUnitBase +from vitrage.utils.datetime import utcnow class TestProcessor(TestEntityGraphUnitBase): diff --git a/vitrage/tests/unit/evaluator/test_scenario_repository.py b/vitrage/tests/unit/evaluator/test_scenario_repository.py index 1705dddc5..e711bcd8e 100644 --- a/vitrage/tests/unit/evaluator/test_scenario_repository.py +++ b/vitrage/tests/unit/evaluator/test_scenario_repository.py @@ -15,12 +15,12 @@ import os from oslo_config import cfg -from vitrage.common import file_utils from vitrage.evaluator.scenario_repository import ScenarioRepository from vitrage.evaluator.template_validation.template_syntax_validator import \ syntax_validation from vitrage.tests import base from vitrage.tests.mocks import utils +from vitrage.utils import file as file_utils class ScenarioRepositoryTest(base.BaseTest): diff --git a/vitrage/tests/unit/evaluator/test_template_content_validator.py b/vitrage/tests/unit/evaluator/test_template_content_validator.py index 97a7f7a80..026ca5530 100644 --- a/vitrage/tests/unit/evaluator/test_template_content_validator.py +++ b/vitrage/tests/unit/evaluator/test_template_content_validator.py @@ -15,8 +15,6 @@ import copy import logging from vitrage.common.constants import EntityCategory -from vitrage.common import file_utils - from vitrage.evaluator.actions.base import ActionType from vitrage.evaluator.template_fields import TemplateFields from vitrage.evaluator.template_validation.status_messages import status_msgs @@ -24,6 +22,7 @@ from vitrage.evaluator.template_validation import template_content_validator \ as validator from vitrage.tests import base from vitrage.tests.mocks import utils +from vitrage.utils import file as file_utils DEFINITIONS_INDEX_MOCK = { '123': {}, diff --git a/vitrage/tests/unit/evaluator/test_template_data.py b/vitrage/tests/unit/evaluator/test_template_data.py index 5d7d7a7a6..48370c45a 100644 --- a/vitrage/tests/unit/evaluator/test_template_data.py +++ b/vitrage/tests/unit/evaluator/test_template_data.py @@ -13,7 +13,6 @@ # under the License. from vitrage.common.constants import EdgeLabel -from vitrage.common import file_utils from vitrage.evaluator.template_data import ConditionVar from vitrage.evaluator.template_data import EdgeDescription from vitrage.evaluator.template_data import TemplateData @@ -21,6 +20,7 @@ from vitrage.evaluator.template_fields import TemplateFields as TFields from vitrage.graph import Vertex from vitrage.tests import base from vitrage.tests.mocks import utils +from vitrage.utils import file as file_utils class BasicTemplateTest(base.BaseTest): diff --git a/vitrage/tests/unit/evaluator/test_template_syntax_validator.py b/vitrage/tests/unit/evaluator/test_template_syntax_validator.py index 8b3c9cf20..a350a09d6 100644 --- a/vitrage/tests/unit/evaluator/test_template_syntax_validator.py +++ b/vitrage/tests/unit/evaluator/test_template_syntax_validator.py @@ -14,12 +14,12 @@ import copy import logging -from vitrage.common import file_utils from vitrage.evaluator.template_fields import TemplateFields from vitrage.evaluator.template_validation.status_messages import status_msgs from vitrage.evaluator.template_validation import template_syntax_validator from vitrage.tests import base from vitrage.tests.mocks import utils +from vitrage.utils import file as file_utils # noinspection PyAttributeOutsideInit diff --git a/vitrage/utils/__init__.py b/vitrage/utils/__init__.py index 689f4a99a..b391f27c6 100644 --- a/vitrage/utils/__init__.py +++ b/vitrage/utils/__init__.py @@ -1,14 +1,38 @@ -# Licensed 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 +# -*- encoding: utf-8 -*- +# Copyright 2015 - Alcatel-Lucent +# Copyright © 2014-2015 eNovance +# Copyright 2010 United States Government as represented by the +# Administrator of the National Aeronautics and Space Administration. +# Copyright 2011 Justin Santa Barbara # -# http://www.apache.org/licenses/LICENSE-2.0 +# Licensed 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 # -# 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. +# 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. + +from oslo_config import cfg +import six -__author__ = 'stack' +def recursive_keypairs(d, separator='.'): + # taken from ceilometer and gnocchi + for name, value in sorted(six.iteritems(d)): + if isinstance(value, dict): + for subname, subvalue in recursive_keypairs(value, separator): + yield ('%s%s%s' % (name, separator, subname), subvalue) + else: + yield name, value + + +def opt_exists(conf_parent, opt): + try: + return conf_parent[opt] + except cfg.NoSuchOptError: + return False diff --git a/vitrage/common/datetime_utils.py b/vitrage/utils/datetime.py similarity index 96% rename from vitrage/common/datetime_utils.py rename to vitrage/utils/datetime.py index 2ae899a78..742e89da1 100644 --- a/vitrage/common/datetime_utils.py +++ b/vitrage/utils/datetime.py @@ -11,6 +11,9 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. + +from __future__ import absolute_import + from datetime import datetime from oslo_utils import timeutils diff --git a/vitrage/common/file_utils.py b/vitrage/utils/file.py similarity index 100% rename from vitrage/common/file_utils.py rename to vitrage/utils/file.py