Introduce cloudkitty.utils
This introduces a new cloudkitty.utils module. Work items: * cloudkitty/utils.py has been moved to cloudkitty/utils/__init__.py . The import path does not change. * cloudkitty.json_utils has been moved to cloudkitty.utils.json * cloudkitty.validation_utils has been moved to cloudkitty.utils.validation * cloudkitty.tzutils has been moved to cloudkitty.utils.tz * Unit test layout has been adapted to the new utils layout Story: 2006941 Task: 37614 Change-Id: I2ba1577eb64e27c1e837ba9e20dec532b46fca8a
This commit is contained in:
parent
3426a6648a
commit
0dbf9a64b7
|
@ -25,8 +25,8 @@ import wsmeext.pecan as wsme_pecan
|
||||||
|
|
||||||
from cloudkitty.api.v1.datamodels import report as report_models
|
from cloudkitty.api.v1.datamodels import report as report_models
|
||||||
from cloudkitty.common import policy
|
from cloudkitty.common import policy
|
||||||
from cloudkitty import tzutils
|
|
||||||
from cloudkitty import utils as ck_utils
|
from cloudkitty import utils as ck_utils
|
||||||
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ import wsmeext.pecan as wsme_pecan
|
||||||
from cloudkitty.api.v1.datamodels import storage as storage_models
|
from cloudkitty.api.v1.datamodels import storage as storage_models
|
||||||
from cloudkitty.common import policy
|
from cloudkitty.common import policy
|
||||||
from cloudkitty import storage
|
from cloudkitty import storage
|
||||||
from cloudkitty import tzutils
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
|
|
@ -21,7 +21,7 @@ from cloudkitty.api.v2 import base
|
||||||
from cloudkitty.api.v2 import utils as api_utils
|
from cloudkitty.api.v2 import utils as api_utils
|
||||||
from cloudkitty.common import policy
|
from cloudkitty.common import policy
|
||||||
from cloudkitty import dataframe
|
from cloudkitty import dataframe
|
||||||
from cloudkitty import tzutils
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
|
|
@ -21,8 +21,8 @@ from cloudkitty.api.v2 import utils as api_utils
|
||||||
from cloudkitty.common import policy
|
from cloudkitty.common import policy
|
||||||
from cloudkitty import messaging
|
from cloudkitty import messaging
|
||||||
from cloudkitty import storage_state
|
from cloudkitty import storage_state
|
||||||
from cloudkitty import tzutils
|
from cloudkitty.utils import tz as tzutils
|
||||||
from cloudkitty import validation_utils as vutils
|
from cloudkitty.utils import validation as vutils
|
||||||
|
|
||||||
|
|
||||||
class ScopeState(base.BaseResource):
|
class ScopeState(base.BaseResource):
|
||||||
|
|
|
@ -18,7 +18,7 @@ import voluptuous
|
||||||
from cloudkitty.api.v2 import base
|
from cloudkitty.api.v2 import base
|
||||||
from cloudkitty.api.v2 import utils as api_utils
|
from cloudkitty.api.v2 import utils as api_utils
|
||||||
from cloudkitty.common import policy
|
from cloudkitty.common import policy
|
||||||
from cloudkitty import tzutils
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
|
|
||||||
class Summary(base.BaseResource):
|
class Summary(base.BaseResource):
|
||||||
|
|
|
@ -21,7 +21,7 @@ import voluptuous
|
||||||
from werkzeug import exceptions
|
from werkzeug import exceptions
|
||||||
|
|
||||||
from cloudkitty.api import v2 as v2_api
|
from cloudkitty.api import v2 as v2_api
|
||||||
from cloudkitty import json_utils as json
|
from cloudkitty.utils import json
|
||||||
|
|
||||||
|
|
||||||
class SingleQueryParam(object):
|
class SingleQueryParam(object):
|
||||||
|
@ -33,7 +33,7 @@ class SingleQueryParam(object):
|
||||||
|
|
||||||
Note that this validator uses ``voluptuous.Coerce`` internally and thus
|
Note that this validator uses ``voluptuous.Coerce`` internally and thus
|
||||||
should not be used together with
|
should not be used together with
|
||||||
``cloudkitty.validation_utils.get_string_type`` in python2.
|
``cloudkitty.utils.validation.get_string_type`` in python2.
|
||||||
|
|
||||||
:param param_type: Type of the query parameter
|
:param param_type: Type of the query parameter
|
||||||
"""
|
"""
|
||||||
|
@ -58,7 +58,7 @@ class MultiQueryParam(object):
|
||||||
|
|
||||||
Note that this validator uses ``voluptuous.Coerce`` internally and thus
|
Note that this validator uses ``voluptuous.Coerce`` internally and thus
|
||||||
should not be used together with
|
should not be used together with
|
||||||
``cloudkitty.validation_utils.get_string_type`` in python2.
|
``cloudkitty.utils.validation.get_string_type`` in python2.
|
||||||
|
|
||||||
:param param_type: Type of the query parameter
|
:param param_type: Type of the query parameter
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -31,8 +31,8 @@ from voluptuous import Schema
|
||||||
|
|
||||||
from cloudkitty import collector
|
from cloudkitty import collector
|
||||||
from cloudkitty import dataframe
|
from cloudkitty import dataframe
|
||||||
from cloudkitty import tzutils
|
|
||||||
from cloudkitty import utils as ck_utils
|
from cloudkitty import utils as ck_utils
|
||||||
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
|
@ -27,8 +27,8 @@ from cloudkitty.collector.exceptions import CollectError
|
||||||
from cloudkitty.common.prometheus_client import PrometheusClient
|
from cloudkitty.common.prometheus_client import PrometheusClient
|
||||||
from cloudkitty.common.prometheus_client import PrometheusResponseError
|
from cloudkitty.common.prometheus_client import PrometheusResponseError
|
||||||
from cloudkitty import dataframe
|
from cloudkitty import dataframe
|
||||||
from cloudkitty import tzutils
|
|
||||||
from cloudkitty import utils as ck_utils
|
from cloudkitty import utils as ck_utils
|
||||||
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
|
|
||||||
LOG = log.getLogger(__name__)
|
LOG = log.getLogger(__name__)
|
||||||
|
|
|
@ -20,9 +20,9 @@ import functools
|
||||||
import voluptuous
|
import voluptuous
|
||||||
from werkzeug import datastructures
|
from werkzeug import datastructures
|
||||||
|
|
||||||
from cloudkitty import json_utils as json
|
from cloudkitty.utils import json
|
||||||
from cloudkitty import tzutils
|
from cloudkitty.utils import tz as tzutils
|
||||||
from cloudkitty import validation_utils as vutils
|
from cloudkitty.utils import validation as vutils
|
||||||
|
|
||||||
# NOTE(peschk_l): qty and price are converted to strings to avoid
|
# NOTE(peschk_l): qty and price are converted to strings to avoid
|
||||||
# floating-point conversion issues:
|
# floating-point conversion issues:
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
# -*- coding: utf-8 -*-
|
|
||||||
# Copyright 2014 Objectif Libre
|
# Copyright 2014 Objectif Libre
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
@ -40,8 +39,8 @@ from cloudkitty import extension_manager
|
||||||
from cloudkitty import messaging
|
from cloudkitty import messaging
|
||||||
from cloudkitty import storage
|
from cloudkitty import storage
|
||||||
from cloudkitty import storage_state as state
|
from cloudkitty import storage_state as state
|
||||||
from cloudkitty import tzutils
|
|
||||||
from cloudkitty import utils as ck_utils
|
from cloudkitty import utils as ck_utils
|
||||||
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
#
|
#
|
||||||
from cloudkitty.db import api
|
from cloudkitty.db import api
|
||||||
from cloudkitty import json_utils as json
|
from cloudkitty.utils import json
|
||||||
|
|
||||||
|
|
||||||
class StateManager(object):
|
class StateManager(object):
|
||||||
|
|
|
@ -21,7 +21,7 @@ from stevedore import driver
|
||||||
|
|
||||||
from cloudkitty import dataframe
|
from cloudkitty import dataframe
|
||||||
from cloudkitty.storage import v2 as storage_v2
|
from cloudkitty.storage import v2 as storage_v2
|
||||||
from cloudkitty import tzutils
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
|
@ -25,9 +25,9 @@ from oslo_utils import uuidutils
|
||||||
import six
|
import six
|
||||||
|
|
||||||
from cloudkitty.collector import validate_conf
|
from cloudkitty.collector import validate_conf
|
||||||
from cloudkitty import json_utils as json
|
|
||||||
from cloudkitty.storage.v1.hybrid.backends import BaseHybridBackend
|
from cloudkitty.storage.v1.hybrid.backends import BaseHybridBackend
|
||||||
import cloudkitty.utils as ck_utils
|
import cloudkitty.utils as ck_utils
|
||||||
|
from cloudkitty.utils import json
|
||||||
|
|
||||||
|
|
||||||
LOG = logging.getLogger(__name__)
|
LOG = logging.getLogger(__name__)
|
||||||
|
|
|
@ -19,12 +19,12 @@ from oslo_db.sqlalchemy import utils
|
||||||
import sqlalchemy
|
import sqlalchemy
|
||||||
|
|
||||||
from cloudkitty import db
|
from cloudkitty import db
|
||||||
from cloudkitty import json_utils as json
|
|
||||||
from cloudkitty.storage import NoTimeFrame
|
from cloudkitty.storage import NoTimeFrame
|
||||||
from cloudkitty.storage import v1 as storage
|
from cloudkitty.storage import v1 as storage
|
||||||
from cloudkitty.storage.v1.sqlalchemy import migration
|
from cloudkitty.storage.v1.sqlalchemy import migration
|
||||||
from cloudkitty.storage.v1.sqlalchemy import models
|
from cloudkitty.storage.v1.sqlalchemy import models
|
||||||
from cloudkitty import utils as ck_utils
|
from cloudkitty import utils as ck_utils
|
||||||
|
from cloudkitty.utils import json
|
||||||
|
|
||||||
|
|
||||||
class SQLAlchemyStorage(storage.BaseStorage):
|
class SQLAlchemyStorage(storage.BaseStorage):
|
||||||
|
|
|
@ -17,7 +17,7 @@ from oslo_db.sqlalchemy import models
|
||||||
import sqlalchemy
|
import sqlalchemy
|
||||||
from sqlalchemy.ext import declarative
|
from sqlalchemy.ext import declarative
|
||||||
|
|
||||||
from cloudkitty import json_utils as json
|
from cloudkitty.utils import json
|
||||||
|
|
||||||
|
|
||||||
Base = declarative.declarative_base()
|
Base = declarative.declarative_base()
|
||||||
|
|
|
@ -21,7 +21,7 @@ from cloudkitty import dataframe
|
||||||
from cloudkitty.storage import v2 as v2_storage
|
from cloudkitty.storage import v2 as v2_storage
|
||||||
from cloudkitty.storage.v2.elasticsearch import client as es_client
|
from cloudkitty.storage.v2.elasticsearch import client as es_client
|
||||||
from cloudkitty.storage.v2.elasticsearch import exceptions
|
from cloudkitty.storage.v2.elasticsearch import exceptions
|
||||||
from cloudkitty import tzutils
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
LOG = log.getLogger(__name__)
|
LOG = log.getLogger(__name__)
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,8 @@ import itertools
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from cloudkitty import json_utils as json
|
|
||||||
from cloudkitty.storage.v2.elasticsearch import exceptions
|
from cloudkitty.storage.v2.elasticsearch import exceptions
|
||||||
|
from cloudkitty.utils import json
|
||||||
|
|
||||||
LOG = log.getLogger(__name__)
|
LOG = log.getLogger(__name__)
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ import six
|
||||||
|
|
||||||
from cloudkitty import dataframe
|
from cloudkitty import dataframe
|
||||||
from cloudkitty.storage import v2 as v2_storage
|
from cloudkitty.storage import v2 as v2_storage
|
||||||
from cloudkitty import tzutils
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
|
|
||||||
LOG = log.getLogger(__name__)
|
LOG = log.getLogger(__name__)
|
||||||
|
|
|
@ -20,7 +20,7 @@ from oslo_log import log
|
||||||
from cloudkitty import db
|
from cloudkitty import db
|
||||||
from cloudkitty.storage_state import migration
|
from cloudkitty.storage_state import migration
|
||||||
from cloudkitty.storage_state import models
|
from cloudkitty.storage_state import models
|
||||||
from cloudkitty import tzutils
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
|
|
||||||
LOG = log.getLogger(__name__)
|
LOG = log.getLogger(__name__)
|
||||||
|
|
|
@ -17,7 +17,7 @@ import unittest
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
from cloudkitty.api.v2.dataframes import dataframes
|
from cloudkitty.api.v2.dataframes import dataframes
|
||||||
from cloudkitty import tzutils
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
|
|
||||||
class TestDataframeListEndpoint(unittest.TestCase):
|
class TestDataframeListEndpoint(unittest.TestCase):
|
||||||
|
|
|
@ -17,7 +17,7 @@ import unittest
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
from cloudkitty.api.v2.summary import summary
|
from cloudkitty.api.v2.summary import summary
|
||||||
from cloudkitty import tzutils
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
|
|
||||||
class TestSummaryEndpoint(unittest.TestCase):
|
class TestSummaryEndpoint(unittest.TestCase):
|
||||||
|
|
|
@ -16,9 +16,9 @@
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
from cloudkitty.collector import prometheus
|
from cloudkitty.collector import prometheus
|
||||||
from cloudkitty import json_utils as json
|
|
||||||
from cloudkitty import tests
|
from cloudkitty import tests
|
||||||
from cloudkitty.tests import samples
|
from cloudkitty.tests import samples
|
||||||
|
from cloudkitty.utils import json
|
||||||
|
|
||||||
|
|
||||||
class PrometheusClientTest(tests.TestCase):
|
class PrometheusClientTest(tests.TestCase):
|
||||||
|
|
|
@ -50,8 +50,8 @@ from cloudkitty import storage_state
|
||||||
from cloudkitty import tests
|
from cloudkitty import tests
|
||||||
from cloudkitty.tests.storage.v2 import influx_utils
|
from cloudkitty.tests.storage.v2 import influx_utils
|
||||||
from cloudkitty.tests import utils as test_utils
|
from cloudkitty.tests import utils as test_utils
|
||||||
from cloudkitty import tzutils
|
|
||||||
from cloudkitty import utils as ck_utils
|
from cloudkitty import utils as ck_utils
|
||||||
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
|
|
||||||
INITIAL_DT = datetime.datetime(2015, 1, 1, tzinfo=tz.UTC)
|
INITIAL_DT = datetime.datetime(2015, 1, 1, tzinfo=tz.UTC)
|
||||||
|
@ -501,7 +501,7 @@ class InfluxStorageDataFixture(StorageDataFixture):
|
||||||
class UTCFixture(fixture.GabbiFixture):
|
class UTCFixture(fixture.GabbiFixture):
|
||||||
"""Set the local timezone to UTC"""
|
"""Set the local timezone to UTC"""
|
||||||
def start_fixture(self):
|
def start_fixture(self):
|
||||||
self._tzmock = mock.patch('cloudkitty.tzutils._LOCAL_TZ', tz.UTC)
|
self._tzmock = mock.patch('cloudkitty.utils.tz._LOCAL_TZ', tz.UTC)
|
||||||
self._tzmock.start()
|
self._tzmock.start()
|
||||||
|
|
||||||
def stop_fixture(self):
|
def stop_fixture(self):
|
||||||
|
|
|
@ -23,7 +23,7 @@ from cloudkitty import storage
|
||||||
from cloudkitty import tests
|
from cloudkitty import tests
|
||||||
from cloudkitty.tests import samples
|
from cloudkitty.tests import samples
|
||||||
from cloudkitty.tests import utils as test_utils
|
from cloudkitty.tests import utils as test_utils
|
||||||
from cloudkitty import tzutils
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
|
|
||||||
class StorageTest(tests.TestCase):
|
class StorageTest(tests.TestCase):
|
||||||
|
|
|
@ -24,7 +24,7 @@ import mock
|
||||||
from cloudkitty import dataframe
|
from cloudkitty import dataframe
|
||||||
from cloudkitty.storage.v2 import influx
|
from cloudkitty.storage.v2 import influx
|
||||||
from cloudkitty.tests import TestCase
|
from cloudkitty.tests import TestCase
|
||||||
from cloudkitty import tzutils
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
|
|
||||||
class TestInfluxDBStorage(TestCase):
|
class TestInfluxDBStorage(TestCase):
|
||||||
|
|
|
@ -23,7 +23,7 @@ from cloudkitty.tests.storage.v2 import es_utils
|
||||||
from cloudkitty.tests.storage.v2 import influx_utils
|
from cloudkitty.tests.storage.v2 import influx_utils
|
||||||
from cloudkitty.tests import TestCase
|
from cloudkitty.tests import TestCase
|
||||||
from cloudkitty.tests import utils as test_utils
|
from cloudkitty.tests import utils as test_utils
|
||||||
from cloudkitty import tzutils
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
|
|
||||||
_ES_CLIENT_PATH = ('cloudkitty.storage.v2.elasticsearch'
|
_ES_CLIENT_PATH = ('cloudkitty.storage.v2.elasticsearch'
|
||||||
|
|
|
@ -21,7 +21,7 @@ from dateutil import tz
|
||||||
from werkzeug import datastructures
|
from werkzeug import datastructures
|
||||||
|
|
||||||
from cloudkitty import dataframe
|
from cloudkitty import dataframe
|
||||||
from cloudkitty import json_utils as json
|
from cloudkitty.utils import json
|
||||||
|
|
||||||
|
|
||||||
class TestDataPoint(unittest.TestCase):
|
class TestDataPoint(unittest.TestCase):
|
||||||
|
|
|
@ -26,7 +26,7 @@ from cloudkitty import orchestrator
|
||||||
from cloudkitty.storage.v2 import influx
|
from cloudkitty.storage.v2 import influx
|
||||||
from cloudkitty import storage_state
|
from cloudkitty import storage_state
|
||||||
from cloudkitty import tests
|
from cloudkitty import tests
|
||||||
from cloudkitty import tzutils
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
|
|
||||||
class FakeKeystoneClient(object):
|
class FakeKeystoneClient(object):
|
||||||
|
|
|
@ -17,8 +17,8 @@ import decimal
|
||||||
|
|
||||||
from dateutil import tz
|
from dateutil import tz
|
||||||
|
|
||||||
from cloudkitty import json_utils as json
|
|
||||||
from cloudkitty import tests
|
from cloudkitty import tests
|
||||||
|
from cloudkitty.utils import json
|
||||||
|
|
||||||
|
|
||||||
class JSONEncoderTest(tests.TestCase):
|
class JSONEncoderTest(tests.TestCase):
|
|
@ -19,8 +19,8 @@ from dateutil import tz
|
||||||
import mock
|
import mock
|
||||||
from oslo_utils import timeutils
|
from oslo_utils import timeutils
|
||||||
|
|
||||||
from cloudkitty import tzutils
|
|
||||||
from cloudkitty import utils
|
from cloudkitty import utils
|
||||||
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
|
|
||||||
class TestTZUtils(unittest.TestCase):
|
class TestTZUtils(unittest.TestCase):
|
|
@ -16,7 +16,7 @@ import unittest
|
||||||
|
|
||||||
import voluptuous.error
|
import voluptuous.error
|
||||||
|
|
||||||
from cloudkitty import validation_utils
|
from cloudkitty.utils import validation as validation_utils
|
||||||
|
|
||||||
|
|
||||||
class DictTypeValidatorTest(unittest.TestCase):
|
class DictTypeValidatorTest(unittest.TestCase):
|
|
@ -31,7 +31,7 @@ from oslo_utils import timeutils
|
||||||
from six import moves
|
from six import moves
|
||||||
from stevedore import extension
|
from stevedore import extension
|
||||||
|
|
||||||
from cloudkitty import tzutils
|
from cloudkitty.utils import tz as tzutils
|
||||||
|
|
||||||
|
|
||||||
_ISO8601_TIME_FORMAT_SUBSECOND = '%Y-%m-%dT%H:%M:%S.%f'
|
_ISO8601_TIME_FORMAT_SUBSECOND = '%Y-%m-%dT%H:%M:%S.%f'
|
|
@ -15,7 +15,7 @@
|
||||||
#
|
#
|
||||||
import os
|
import os
|
||||||
|
|
||||||
from cloudkitty import json_utils as json
|
from cloudkitty.utils import json
|
||||||
from cloudkitty import writer
|
from cloudkitty import writer
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
---
|
||||||
|
other:
|
||||||
|
- |
|
||||||
|
Cloudkitty's ``*_utils`` modules have been grouped into the
|
||||||
|
new ``cloudkitty.utils`` module.
|
Loading…
Reference in New Issue