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:
Luka Peschke 2019-11-25 15:14:05 +01:00
parent 3426a6648a
commit 0dbf9a64b7
39 changed files with 44 additions and 40 deletions

View File

@ -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__)

View File

@ -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

View File

@ -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

View File

@ -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):

View File

@ -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):

View File

@ -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
""" """

View File

@ -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__)

View File

@ -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__)

View File

@ -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:

View File

@ -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__)

View File

@ -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):

View File

@ -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__)

View File

@ -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__)

View File

@ -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):

View File

@ -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()

View File

@ -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__)

View File

@ -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__)

View File

@ -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__)

View File

@ -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__)

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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'

View File

@ -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):

View File

@ -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):

View File

View File

@ -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):

View File

@ -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):

View File

@ -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):

View File

@ -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'

View File

@ -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

View File

@ -0,0 +1,5 @@
---
other:
- |
Cloudkitty's ``*_utils`` modules have been grouped into the
new ``cloudkitty.utils`` module.