From c612727ff8a166e27154e5b3d62a2943f227446a Mon Sep 17 00:00:00 2001 From: ZhiQiang Fan Date: Fri, 16 Jan 2015 18:35:10 +0800 Subject: [PATCH] use oslo.log instead of oslo-incubator code oslo.log has graduated from oslo-incubator, and openstack.common.log has been removed from oslo-incubator, so let's use the new one. NOTE1:openstack.common.log registers its options at import time, but oslo.log needs to call register_options() explicitly. NOTE2: split unit test case in tests/objectstore/test_swift_middleware.py to avoid duplicate cli option register exception, see NOTE1. Change-Id: Ida30808dbe0c584919755c207ca4ee4b91963a17 --- ceilometer/agent/base.py | 2 +- ceilometer/agent/discovery/endpoint.py | 2 +- ceilometer/agent/discovery/tenant.py | 2 +- ceilometer/agent/manager.py | 2 +- ceilometer/agent/plugin_base.py | 2 +- ceilometer/alarm/evaluator/__init__.py | 2 +- ceilometer/alarm/evaluator/combination.py | 3 +- ceilometer/alarm/evaluator/gnocchi.py | 2 +- ceilometer/alarm/evaluator/threshold.py | 2 +- ceilometer/alarm/notifier/log.py | 3 +- ceilometer/alarm/notifier/rest.py | 2 +- ceilometer/alarm/rpc.py | 2 +- ceilometer/alarm/service.py | 2 +- ceilometer/alarm/storage/impl_db2.py | 2 +- ceilometer/alarm/storage/impl_hbase.py | 3 +- ceilometer/alarm/storage/impl_log.py | 3 +- ceilometer/alarm/storage/impl_mongodb.py | 2 +- ceilometer/alarm/storage/impl_sqlalchemy.py | 2 +- ceilometer/alarm/storage/pymongo_base.py | 3 +- ceilometer/api/app.py | 3 +- ceilometer/api/controllers/v2/alarms.py | 2 +- ceilometer/api/controllers/v2/events.py | 2 +- ceilometer/api/controllers/v2/meters.py | 2 +- ceilometer/api/controllers/v2/query.py | 2 +- ceilometer/api/middleware.py | 2 +- ceilometer/cmd/polling.py | 2 +- ceilometer/collector.py | 2 +- ceilometer/compute/notifications/cpu.py | 3 +- ceilometer/compute/pollsters/cpu.py | 4 +- ceilometer/compute/pollsters/disk.py | 2 +- ceilometer/compute/pollsters/memory.py | 4 +- ceilometer/compute/pollsters/net.py | 2 +- ceilometer/compute/virt/hyperv/inspector.py | 2 +- ceilometer/compute/virt/hyperv/utilsv2.py | 2 +- ceilometer/compute/virt/inspector.py | 2 +- ceilometer/compute/virt/libvirt/inspector.py | 2 +- ceilometer/coordination.py | 2 +- ceilometer/dispatcher/__init__.py | 2 +- ceilometer/dispatcher/database.py | 3 +- ceilometer/dispatcher/http.py | 2 +- ceilometer/energy/kwapi.py | 2 +- ceilometer/event/converter.py | 2 +- .../event/storage/impl_elasticsearch.py | 2 +- ceilometer/event/storage/impl_hbase.py | 3 +- ceilometer/event/storage/impl_log.py | 3 +- ceilometer/event/storage/impl_mongodb.py | 2 +- ceilometer/event/storage/impl_sqlalchemy.py | 2 +- ceilometer/event/storage/pymongo_base.py | 2 +- ceilometer/hardware/discovery.py | 2 +- ceilometer/hardware/plugin.py | 2 +- ceilometer/ipmi/notifications/ironic.py | 2 +- ceilometer/ipmi/pollsters/node.py | 2 +- ceilometer/ipmi/pollsters/sensor.py | 2 +- ceilometer/network/floatingip.py | 2 +- ceilometer/network/notifications.py | 2 +- ceilometer/network/services/base.py | 3 +- ceilometer/network/services/fwaas.py | 3 +- ceilometer/network/services/lbaas.py | 2 +- ceilometer/network/services/vpnaas.py | 3 +- .../network/statistics/opencontrail/client.py | 2 +- .../network/statistics/opendaylight/client.py | 2 +- .../network/statistics/opendaylight/driver.py | 3 +- ceilometer/neutron_client.py | 3 +- ceilometer/notification.py | 2 +- ceilometer/notifier.py | 2 +- ceilometer/nova_client.py | 3 +- ceilometer/objectstore/rgw.py | 2 +- ceilometer/objectstore/swift.py | 2 +- ceilometer/openstack/common/local.py | 45 -- ceilometer/openstack/common/log.py | 718 ------------------ ceilometer/opts.py | 5 - ceilometer/pipeline.py | 2 +- ceilometer/publisher/file.py | 2 +- ceilometer/publisher/kafka_broker.py | 2 +- ceilometer/publisher/messaging.py | 2 +- ceilometer/publisher/udp.py | 2 +- ceilometer/service.py | 8 +- ceilometer/storage/__init__.py | 2 +- ceilometer/storage/hbase/base.py | 2 +- ceilometer/storage/hbase/inmemory.py | 2 +- ceilometer/storage/hbase/utils.py | 2 +- ceilometer/storage/impl_db2.py | 2 +- ceilometer/storage/impl_hbase.py | 2 +- ceilometer/storage/impl_log.py | 3 +- ceilometer/storage/impl_mongodb.py | 2 +- ceilometer/storage/impl_sqlalchemy.py | 2 +- ceilometer/storage/mongo/utils.py | 2 +- .../data_processing/test_notifications.py | 3 +- .../objectstore/test_swift_middleware.py | 3 +- .../tests/orchestration/test_notifications.py | 3 +- ceilometer/transformer/arithmetic.py | 2 +- ceilometer/transformer/conversions.py | 2 +- openstack-common.conf | 1 - requirements.txt | 1 + tox.ini | 1 + 95 files changed, 114 insertions(+), 865 deletions(-) delete mode 100644 ceilometer/openstack/common/local.py delete mode 100644 ceilometer/openstack/common/log.py diff --git a/ceilometer/agent/base.py b/ceilometer/agent/base.py index 7c59657b5b..c1429f2913 100644 --- a/ceilometer/agent/base.py +++ b/ceilometer/agent/base.py @@ -25,6 +25,7 @@ import random from oslo_config import cfg from oslo_context import context +from oslo_log import log import six from six import moves from six.moves.urllib import parse as urlparse @@ -33,7 +34,6 @@ from stevedore import extension from ceilometer.agent import plugin_base from ceilometer import coordination from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer.openstack.common import service as os_service from ceilometer import pipeline as publish_pipeline from ceilometer import utils diff --git a/ceilometer/agent/discovery/endpoint.py b/ceilometer/agent/discovery/endpoint.py index 89761ec66d..bf7f5ad281 100644 --- a/ceilometer/agent/discovery/endpoint.py +++ b/ceilometer/agent/discovery/endpoint.py @@ -13,10 +13,10 @@ # under the License. from oslo_config import cfg +from oslo_log import log from ceilometer.agent import plugin_base as plugin from ceilometer.i18n import _LW -from ceilometer.openstack.common import log LOG = log.getLogger(__name__) diff --git a/ceilometer/agent/discovery/tenant.py b/ceilometer/agent/discovery/tenant.py index 4395c1a6bf..4351dda958 100644 --- a/ceilometer/agent/discovery/tenant.py +++ b/ceilometer/agent/discovery/tenant.py @@ -13,9 +13,9 @@ # under the License. from oslo_config import cfg +from oslo_log import log from ceilometer.agent import plugin_base as plugin -from ceilometer.openstack.common import log LOG = log.getLogger(__name__) diff --git a/ceilometer/agent/manager.py b/ceilometer/agent/manager.py index aea178f05d..f42e15fdee 100644 --- a/ceilometer/agent/manager.py +++ b/ceilometer/agent/manager.py @@ -14,10 +14,10 @@ # under the License. from oslo_config import cfg +from oslo_log import log from ceilometer.agent import base from ceilometer import keystone_client -from ceilometer.openstack.common import log OPTS = [ cfg.StrOpt('partitioning_group_prefix', diff --git a/ceilometer/agent/plugin_base.py b/ceilometer/agent/plugin_base.py index 3c97192fb7..c731b5551b 100644 --- a/ceilometer/agent/plugin_base.py +++ b/ceilometer/agent/plugin_base.py @@ -21,12 +21,12 @@ import collections from keystoneclient.v2_0 import client as ksclient from oslo_config import cfg from oslo_context import context +from oslo_log import log import oslo_messaging import six from ceilometer.i18n import _ from ceilometer import messaging -from ceilometer.openstack.common import log cfg.CONF.import_group('service_credentials', 'ceilometer.service') diff --git a/ceilometer/alarm/evaluator/__init__.py b/ceilometer/alarm/evaluator/__init__.py index e3d6c9bedc..013202654c 100644 --- a/ceilometer/alarm/evaluator/__init__.py +++ b/ceilometer/alarm/evaluator/__init__.py @@ -22,12 +22,12 @@ import datetime from ceilometerclient import client as ceiloclient import croniter from oslo_config import cfg +from oslo_log import log from oslo_utils import timeutils import pytz import six from ceilometer.i18n import _ -from ceilometer.openstack.common import log LOG = log.getLogger(__name__) diff --git a/ceilometer/alarm/evaluator/combination.py b/ceilometer/alarm/evaluator/combination.py index a0934d3440..47b085898e 100644 --- a/ceilometer/alarm/evaluator/combination.py +++ b/ceilometer/alarm/evaluator/combination.py @@ -18,9 +18,10 @@ from six import moves +from oslo_log import log + from ceilometer.alarm import evaluator from ceilometer.i18n import _ -from ceilometer.openstack.common import log LOG = log.getLogger(__name__) diff --git a/ceilometer/alarm/evaluator/gnocchi.py b/ceilometer/alarm/evaluator/gnocchi.py index e25558fa2e..54c9963de2 100644 --- a/ceilometer/alarm/evaluator/gnocchi.py +++ b/ceilometer/alarm/evaluator/gnocchi.py @@ -17,6 +17,7 @@ import datetime import operator from oslo_config import cfg +from oslo_log import log from oslo_serialization import jsonutils from oslo_utils import timeutils import requests @@ -25,7 +26,6 @@ import six.moves from ceilometer.alarm import evaluator from ceilometer.i18n import _ from ceilometer import keystone_client -from ceilometer.openstack.common import log LOG = log.getLogger(__name__) diff --git a/ceilometer/alarm/evaluator/threshold.py b/ceilometer/alarm/evaluator/threshold.py index b37f4a52d6..a49195f627 100644 --- a/ceilometer/alarm/evaluator/threshold.py +++ b/ceilometer/alarm/evaluator/threshold.py @@ -16,12 +16,12 @@ import datetime import operator +from oslo_log import log from oslo_utils import timeutils from ceilometer.alarm import evaluator from ceilometer.alarm.evaluator import utils from ceilometer.i18n import _, _LW -from ceilometer.openstack.common import log LOG = log.getLogger(__name__) diff --git a/ceilometer/alarm/notifier/log.py b/ceilometer/alarm/notifier/log.py index 127940783a..e5545e7d14 100644 --- a/ceilometer/alarm/notifier/log.py +++ b/ceilometer/alarm/notifier/log.py @@ -14,9 +14,10 @@ # under the License. """Log alarm notifier.""" +from oslo_log import log + from ceilometer.alarm import notifier from ceilometer.i18n import _ -from ceilometer.openstack.common import log LOG = log.getLogger(__name__) diff --git a/ceilometer/alarm/notifier/rest.py b/ceilometer/alarm/notifier/rest.py index 56bed5981a..13ef1602b4 100644 --- a/ceilometer/alarm/notifier/rest.py +++ b/ceilometer/alarm/notifier/rest.py @@ -17,13 +17,13 @@ import eventlet from oslo_config import cfg from oslo_context import context +from oslo_log import log from oslo_serialization import jsonutils import requests import six.moves.urllib.parse as urlparse from ceilometer.alarm import notifier from ceilometer.i18n import _ -from ceilometer.openstack.common import log LOG = log.getLogger(__name__) diff --git a/ceilometer/alarm/rpc.py b/ceilometer/alarm/rpc.py index 4d74e2d7de..99b8265178 100644 --- a/ceilometer/alarm/rpc.py +++ b/ceilometer/alarm/rpc.py @@ -17,12 +17,12 @@ from oslo_config import cfg from oslo_context import context +from oslo_log import log import six from ceilometer.alarm.storage import models from ceilometer.i18n import _ from ceilometer import messaging -from ceilometer.openstack.common import log OPTS = [ cfg.StrOpt('notifier_rpc_topic', diff --git a/ceilometer/alarm/service.py b/ceilometer/alarm/service.py index b40033a26a..90b65c18a9 100644 --- a/ceilometer/alarm/service.py +++ b/ceilometer/alarm/service.py @@ -21,6 +21,7 @@ import abc from ceilometerclient import client as ceiloclient from oslo_config import cfg +from oslo_log import log from oslo_utils import netutils import six from stevedore import extension @@ -30,7 +31,6 @@ from ceilometer.alarm import rpc as rpc_alarm from ceilometer import coordination as coordination from ceilometer.i18n import _ from ceilometer import messaging -from ceilometer.openstack.common import log from ceilometer.openstack.common import service as os_service diff --git a/ceilometer/alarm/storage/impl_db2.py b/ceilometer/alarm/storage/impl_db2.py index e95f71ea0c..291dafd287 100644 --- a/ceilometer/alarm/storage/impl_db2.py +++ b/ceilometer/alarm/storage/impl_db2.py @@ -18,10 +18,10 @@ from __future__ import division +from oslo_log import log import pymongo from ceilometer.alarm.storage import pymongo_base -from ceilometer.openstack.common import log from ceilometer import storage from ceilometer.storage.mongo import utils as pymongo_utils diff --git a/ceilometer/alarm/storage/impl_hbase.py b/ceilometer/alarm/storage/impl_hbase.py index 7b0d43929e..7a0b1ecc3c 100644 --- a/ceilometer/alarm/storage/impl_hbase.py +++ b/ceilometer/alarm/storage/impl_hbase.py @@ -14,11 +14,12 @@ import datetime import operator +from oslo_log import log + import ceilometer from ceilometer.alarm.storage import base from ceilometer.alarm.storage import models from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer.storage.hbase import base as hbase_base from ceilometer.storage.hbase import migration as hbase_migration from ceilometer.storage.hbase import utils as hbase_utils diff --git a/ceilometer/alarm/storage/impl_log.py b/ceilometer/alarm/storage/impl_log.py index e427eda13e..60e94c318b 100644 --- a/ceilometer/alarm/storage/impl_log.py +++ b/ceilometer/alarm/storage/impl_log.py @@ -15,9 +15,10 @@ """Simple logging storage backend. """ +from oslo_log import log + from ceilometer.alarm.storage import base from ceilometer.i18n import _LI -from ceilometer.openstack.common import log LOG = log.getLogger(__name__) diff --git a/ceilometer/alarm/storage/impl_mongodb.py b/ceilometer/alarm/storage/impl_mongodb.py index 288b0d9ea7..e2d13629ef 100644 --- a/ceilometer/alarm/storage/impl_mongodb.py +++ b/ceilometer/alarm/storage/impl_mongodb.py @@ -21,10 +21,10 @@ """MongoDB storage backend""" from oslo_config import cfg +from oslo_log import log import pymongo from ceilometer.alarm.storage import pymongo_base -from ceilometer.openstack.common import log from ceilometer import storage from ceilometer.storage import impl_mongodb from ceilometer.storage.mongo import utils as pymongo_utils diff --git a/ceilometer/alarm/storage/impl_sqlalchemy.py b/ceilometer/alarm/storage/impl_sqlalchemy.py index 0871dc8711..b9082b1398 100644 --- a/ceilometer/alarm/storage/impl_sqlalchemy.py +++ b/ceilometer/alarm/storage/impl_sqlalchemy.py @@ -18,6 +18,7 @@ import os from oslo_config import cfg from oslo_db.sqlalchemy import session as db_session +from oslo_log import log from oslo_utils import timeutils from sqlalchemy import desc @@ -25,7 +26,6 @@ import ceilometer from ceilometer.alarm.storage import base from ceilometer.alarm.storage import models as alarm_api_models from ceilometer.i18n import _LI -from ceilometer.openstack.common import log from ceilometer.storage.sqlalchemy import models from ceilometer.storage.sqlalchemy import utils as sql_utils from ceilometer import utils diff --git a/ceilometer/alarm/storage/pymongo_base.py b/ceilometer/alarm/storage/pymongo_base.py index b72526f9ce..2ecf7b8dfd 100644 --- a/ceilometer/alarm/storage/pymongo_base.py +++ b/ceilometer/alarm/storage/pymongo_base.py @@ -18,13 +18,12 @@ """Common functions for MongoDB and DB2 backends """ - +from oslo_log import log import pymongo import ceilometer from ceilometer.alarm.storage import base from ceilometer.alarm.storage import models -from ceilometer.openstack.common import log from ceilometer.storage.mongo import utils as pymongo_utils from ceilometer import utils diff --git a/ceilometer/api/app.py b/ceilometer/api/app.py index 61eb94aa8e..33cb6f05f5 100644 --- a/ceilometer/api/app.py +++ b/ceilometer/api/app.py @@ -16,8 +16,8 @@ import logging import os - from oslo_config import cfg +from oslo_log import log from paste import deploy import pecan from werkzeug import serving @@ -27,7 +27,6 @@ from ceilometer.api import hooks from ceilometer.api import middleware from ceilometer.i18n import _ from ceilometer.i18n import _LW -from ceilometer.openstack.common import log from ceilometer import service from ceilometer import storage diff --git a/ceilometer/api/controllers/v2/alarms.py b/ceilometer/api/controllers/v2/alarms.py index d86f1947bc..a0218733b3 100644 --- a/ceilometer/api/controllers/v2/alarms.py +++ b/ceilometer/api/controllers/v2/alarms.py @@ -25,6 +25,7 @@ import uuid import croniter from oslo_config import cfg from oslo_context import context +from oslo_log import log from oslo_utils import netutils from oslo_utils import timeutils import pecan @@ -45,7 +46,6 @@ from ceilometer.api.controllers.v2 import utils as v2_utils from ceilometer.api import rbac from ceilometer.i18n import _ from ceilometer import messaging -from ceilometer.openstack.common import log from ceilometer import utils LOG = log.getLogger(__name__) diff --git a/ceilometer/api/controllers/v2/events.py b/ceilometer/api/controllers/v2/events.py index 4128c5f109..09ae431b4a 100644 --- a/ceilometer/api/controllers/v2/events.py +++ b/ceilometer/api/controllers/v2/events.py @@ -20,6 +20,7 @@ import datetime +from oslo_log import log import pecan from pecan import rest import six @@ -31,7 +32,6 @@ from ceilometer.api.controllers.v2 import base from ceilometer.api.controllers.v2 import utils as v2_utils from ceilometer.event.storage import models as event_models from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer import storage LOG = log.getLogger(__name__) diff --git a/ceilometer/api/controllers/v2/meters.py b/ceilometer/api/controllers/v2/meters.py index eb22fc7668..1d8c9da81c 100644 --- a/ceilometer/api/controllers/v2/meters.py +++ b/ceilometer/api/controllers/v2/meters.py @@ -22,6 +22,7 @@ import base64 import datetime from oslo_context import context +from oslo_log import log from oslo_utils import timeutils import pecan from pecan import rest @@ -34,7 +35,6 @@ from ceilometer.api.controllers.v2 import base from ceilometer.api.controllers.v2 import utils as v2_utils from ceilometer.api import rbac from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer import sample from ceilometer import storage from ceilometer import utils diff --git a/ceilometer/api/controllers/v2/query.py b/ceilometer/api/controllers/v2/query.py index 3578324be7..df4bedec1f 100644 --- a/ceilometer/api/controllers/v2/query.py +++ b/ceilometer/api/controllers/v2/query.py @@ -21,6 +21,7 @@ import json import jsonschema +from oslo_log import log from oslo_utils import timeutils import pecan from pecan import rest @@ -33,7 +34,6 @@ from ceilometer.api.controllers.v2 import base from ceilometer.api.controllers.v2 import samples from ceilometer.api import rbac from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer import storage from ceilometer import utils diff --git a/ceilometer/api/middleware.py b/ceilometer/api/middleware.py index 2f4d948c22..ce18b038b0 100644 --- a/ceilometer/api/middleware.py +++ b/ceilometer/api/middleware.py @@ -22,12 +22,12 @@ Based on pecan.middleware.errordocument import json from lxml import etree +from oslo_log import log import webob from ceilometer.api import hooks from ceilometer import i18n from ceilometer.i18n import _ -from ceilometer.openstack.common import log LOG = log.getLogger(__name__) diff --git a/ceilometer/cmd/polling.py b/ceilometer/cmd/polling.py index d7238df30f..03190def8d 100644 --- a/ceilometer/cmd/polling.py +++ b/ceilometer/cmd/polling.py @@ -15,10 +15,10 @@ # under the License. from oslo_config import cfg +from oslo_log import log from ceilometer.agent import manager from ceilometer.i18n import _LW -from ceilometer.openstack.common import log from ceilometer.openstack.common import service as os_service from ceilometer import service diff --git a/ceilometer/collector.py b/ceilometer/collector.py index fa9ef8648d..88a99e2913 100644 --- a/ceilometer/collector.py +++ b/ceilometer/collector.py @@ -17,6 +17,7 @@ import socket import msgpack from oslo_config import cfg +from oslo_log import log import oslo_messaging from oslo_utils import netutils from oslo_utils import units @@ -24,7 +25,6 @@ from oslo_utils import units from ceilometer import dispatcher from ceilometer import messaging from ceilometer.i18n import _, _LE -from ceilometer.openstack.common import log from ceilometer.openstack.common import service as os_service from ceilometer import utils diff --git a/ceilometer/compute/notifications/cpu.py b/ceilometer/compute/notifications/cpu.py index 5e5a954ee3..7932d2dd7e 100644 --- a/ceilometer/compute/notifications/cpu.py +++ b/ceilometer/compute/notifications/cpu.py @@ -15,11 +15,12 @@ """Converters for producing compute CPU sample messages from notification events. """ + +from oslo_log import log from oslo_utils import timeutils from ceilometer.compute import notifications from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer import sample LOG = log.getLogger(__name__) diff --git a/ceilometer/compute/pollsters/cpu.py b/ceilometer/compute/pollsters/cpu.py index b4832e79c7..14f29f8526 100644 --- a/ceilometer/compute/pollsters/cpu.py +++ b/ceilometer/compute/pollsters/cpu.py @@ -13,12 +13,14 @@ # 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_log import log + import ceilometer from ceilometer.compute import pollsters from ceilometer.compute.pollsters import util from ceilometer.compute.virt import inspector as virt_inspector from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer import sample LOG = log.getLogger(__name__) diff --git a/ceilometer/compute/pollsters/disk.py b/ceilometer/compute/pollsters/disk.py index fdb5879168..85ef34df20 100644 --- a/ceilometer/compute/pollsters/disk.py +++ b/ceilometer/compute/pollsters/disk.py @@ -17,6 +17,7 @@ import abc import collections +from oslo_log import log import six import ceilometer @@ -24,7 +25,6 @@ from ceilometer.compute import pollsters from ceilometer.compute.pollsters import util from ceilometer.compute.virt import inspector as virt_inspector from ceilometer.i18n import _, _LW -from ceilometer.openstack.common import log from ceilometer import sample LOG = log.getLogger(__name__) diff --git a/ceilometer/compute/pollsters/memory.py b/ceilometer/compute/pollsters/memory.py index f5a20ae7e4..94b58dbc64 100644 --- a/ceilometer/compute/pollsters/memory.py +++ b/ceilometer/compute/pollsters/memory.py @@ -12,12 +12,14 @@ # 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_log import log + import ceilometer from ceilometer.compute import pollsters from ceilometer.compute.pollsters import util from ceilometer.compute.virt import inspector as virt_inspector from ceilometer.i18n import _, _LW, _LE -from ceilometer.openstack.common import log from ceilometer import sample LOG = log.getLogger(__name__) diff --git a/ceilometer/compute/pollsters/net.py b/ceilometer/compute/pollsters/net.py index ec1140e2b4..f206451a6b 100644 --- a/ceilometer/compute/pollsters/net.py +++ b/ceilometer/compute/pollsters/net.py @@ -16,6 +16,7 @@ import copy +from oslo_log import log from oslo_utils import timeutils import ceilometer @@ -24,7 +25,6 @@ from ceilometer.compute.pollsters import util from ceilometer.compute import util as compute_util from ceilometer.compute.virt import inspector as virt_inspector from ceilometer.i18n import _, _LW -from ceilometer.openstack.common import log from ceilometer import sample LOG = log.getLogger(__name__) diff --git a/ceilometer/compute/virt/hyperv/inspector.py b/ceilometer/compute/virt/hyperv/inspector.py index 46725e25b2..d81ab08f75 100644 --- a/ceilometer/compute/virt/hyperv/inspector.py +++ b/ceilometer/compute/virt/hyperv/inspector.py @@ -14,12 +14,12 @@ """Implementation of Inspector abstraction for Hyper-V""" from oslo_config import cfg +from oslo_log import log from oslo_utils import units from ceilometer.compute.pollsters import util from ceilometer.compute.virt.hyperv import utilsv2 from ceilometer.compute.virt import inspector as virt_inspector -from ceilometer.openstack.common import log CONF = cfg.CONF diff --git a/ceilometer/compute/virt/hyperv/utilsv2.py b/ceilometer/compute/virt/hyperv/utilsv2.py index 51acb53b46..02fa25c9c7 100644 --- a/ceilometer/compute/virt/hyperv/utilsv2.py +++ b/ceilometer/compute/virt/hyperv/utilsv2.py @@ -23,10 +23,10 @@ if sys.platform == 'win32': import wmi from oslo_config import cfg +from oslo_log import log as logging from ceilometer.compute.virt import inspector from ceilometer.i18n import _ -from ceilometer.openstack.common import log as logging CONF = cfg.CONF LOG = logging.getLogger(__name__) diff --git a/ceilometer/compute/virt/inspector.py b/ceilometer/compute/virt/inspector.py index f83feee1fc..dd09b064d8 100644 --- a/ceilometer/compute/virt/inspector.py +++ b/ceilometer/compute/virt/inspector.py @@ -17,11 +17,11 @@ import collections from oslo_config import cfg +from oslo_log import log from stevedore import driver import ceilometer from ceilometer.i18n import _ -from ceilometer.openstack.common import log OPTS = [ diff --git a/ceilometer/compute/virt/libvirt/inspector.py b/ceilometer/compute/virt/libvirt/inspector.py index 8dcb86c65c..3a76037fe0 100644 --- a/ceilometer/compute/virt/libvirt/inspector.py +++ b/ceilometer/compute/virt/libvirt/inspector.py @@ -16,13 +16,13 @@ from lxml import etree from oslo_config import cfg +from oslo_log import log as logging from oslo_utils import units import six from ceilometer.compute.pollsters import util from ceilometer.compute.virt import inspector as virt_inspector from ceilometer.i18n import _ -from ceilometer.openstack.common import log as logging libvirt = None diff --git a/ceilometer/coordination.py b/ceilometer/coordination.py index 9dbbdcef23..f5ef7a7d1b 100644 --- a/ceilometer/coordination.py +++ b/ceilometer/coordination.py @@ -16,10 +16,10 @@ import uuid from oslo_config import cfg +from oslo_log import log import tooz.coordination from ceilometer.i18n import _LE, _LI -from ceilometer.openstack.common import log from ceilometer import utils LOG = log.getLogger(__name__) diff --git a/ceilometer/dispatcher/__init__.py b/ceilometer/dispatcher/__init__.py index 5b47eecf8c..650be1f2eb 100644 --- a/ceilometer/dispatcher/__init__.py +++ b/ceilometer/dispatcher/__init__.py @@ -16,11 +16,11 @@ import abc from oslo_config import cfg +from oslo_log import log import six from stevedore import named from ceilometer.i18n import _ -from ceilometer.openstack.common import log LOG = log.getLogger(__name__) diff --git a/ceilometer/dispatcher/database.py b/ceilometer/dispatcher/database.py index 2feae23c20..5117fce79f 100644 --- a/ceilometer/dispatcher/database.py +++ b/ceilometer/dispatcher/database.py @@ -12,12 +12,13 @@ # 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_log import log from oslo_utils import timeutils from ceilometer import dispatcher from ceilometer.event.storage import models from ceilometer.i18n import _, _LE, _LW -from ceilometer.openstack.common import log from ceilometer.publisher import utils as publisher_utils from ceilometer import storage diff --git a/ceilometer/dispatcher/http.py b/ceilometer/dispatcher/http.py index 659d19e67f..8627d4f541 100644 --- a/ceilometer/dispatcher/http.py +++ b/ceilometer/dispatcher/http.py @@ -15,11 +15,11 @@ import json from oslo_config import cfg +from oslo_log import log import requests from ceilometer import dispatcher from ceilometer.i18n import _, _LE -from ceilometer.openstack.common import log from ceilometer.publisher import utils as publisher_utils LOG = log.getLogger(__name__) diff --git a/ceilometer/energy/kwapi.py b/ceilometer/energy/kwapi.py index d811e30bea..a4c8901885 100644 --- a/ceilometer/energy/kwapi.py +++ b/ceilometer/energy/kwapi.py @@ -16,12 +16,12 @@ import datetime from keystoneclient import exceptions from oslo_config import cfg +from oslo_log import log import requests import six from ceilometer.agent import plugin_base from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer import sample diff --git a/ceilometer/event/converter.py b/ceilometer/event/converter.py index 125e87d970..a06c4b6560 100644 --- a/ceilometer/event/converter.py +++ b/ceilometer/event/converter.py @@ -18,13 +18,13 @@ import os import jsonpath_rw from oslo_config import cfg +from oslo_log import log from oslo_utils import timeutils import six import yaml from ceilometer.event.storage import models from ceilometer.i18n import _ -from ceilometer.openstack.common import log OPTS = [ cfg.StrOpt('definitions_cfg_file', diff --git a/ceilometer/event/storage/impl_elasticsearch.py b/ceilometer/event/storage/impl_elasticsearch.py index 1124e0b73a..b2ad79267b 100644 --- a/ceilometer/event/storage/impl_elasticsearch.py +++ b/ceilometer/event/storage/impl_elasticsearch.py @@ -16,6 +16,7 @@ import operator import elasticsearch as es from elasticsearch import helpers +from oslo_log import log from oslo_utils import netutils from oslo_utils import timeutils import six @@ -23,7 +24,6 @@ import six from ceilometer.event.storage import base from ceilometer.event.storage import models from ceilometer.i18n import _LE, _LI -from ceilometer.openstack.common import log from ceilometer import storage from ceilometer import utils diff --git a/ceilometer/event/storage/impl_hbase.py b/ceilometer/event/storage/impl_hbase.py index c9e15690d4..d9f844d559 100644 --- a/ceilometer/event/storage/impl_hbase.py +++ b/ceilometer/event/storage/impl_hbase.py @@ -13,10 +13,11 @@ import operator +from oslo_log import log + from ceilometer.event.storage import base from ceilometer.event.storage import models from ceilometer.i18n import _, _LE -from ceilometer.openstack.common import log from ceilometer.storage.hbase import base as hbase_base from ceilometer.storage.hbase import utils as hbase_utils from ceilometer import utils diff --git a/ceilometer/event/storage/impl_log.py b/ceilometer/event/storage/impl_log.py index 134d6d7bde..50c51908a1 100644 --- a/ceilometer/event/storage/impl_log.py +++ b/ceilometer/event/storage/impl_log.py @@ -11,9 +11,10 @@ # License for the specific language governing permissions and limitations # under the License. +from oslo_log import log + from ceilometer.event.storage import base from ceilometer.i18n import _LI -from ceilometer.openstack.common import log LOG = log.getLogger(__name__) diff --git a/ceilometer/event/storage/impl_mongodb.py b/ceilometer/event/storage/impl_mongodb.py index 822831cf2f..62022d54a0 100644 --- a/ceilometer/event/storage/impl_mongodb.py +++ b/ceilometer/event/storage/impl_mongodb.py @@ -13,10 +13,10 @@ """MongoDB storage backend""" from oslo_config import cfg +from oslo_log import log import pymongo from ceilometer.event.storage import pymongo_base -from ceilometer.openstack.common import log from ceilometer import storage from ceilometer.storage import impl_mongodb from ceilometer.storage.mongo import utils as pymongo_utils diff --git a/ceilometer/event/storage/impl_sqlalchemy.py b/ceilometer/event/storage/impl_sqlalchemy.py index 19ea94fde5..a0da7ab015 100644 --- a/ceilometer/event/storage/impl_sqlalchemy.py +++ b/ceilometer/event/storage/impl_sqlalchemy.py @@ -20,13 +20,13 @@ import os from oslo_config import cfg from oslo_db import exception as dbexc from oslo_db.sqlalchemy import session as db_session +from oslo_log import log from oslo_utils import timeutils import sqlalchemy as sa from ceilometer.event.storage import base from ceilometer.event.storage import models as api_models from ceilometer.i18n import _LE, _LI -from ceilometer.openstack.common import log from ceilometer.storage.sqlalchemy import models from ceilometer import utils diff --git a/ceilometer/event/storage/pymongo_base.py b/ceilometer/event/storage/pymongo_base.py index 9c4e6b51ca..e4c620e2eb 100644 --- a/ceilometer/event/storage/pymongo_base.py +++ b/ceilometer/event/storage/pymongo_base.py @@ -12,12 +12,12 @@ # under the License. """Common functions for MongoDB and DB2 backends """ +from oslo_log import log import pymongo from ceilometer.event.storage import base from ceilometer.event.storage import models from ceilometer.i18n import _LE, _LI -from ceilometer.openstack.common import log from ceilometer.storage.mongo import utils as pymongo_utils from ceilometer import utils diff --git a/ceilometer/hardware/discovery.py b/ceilometer/hardware/discovery.py index f959652b20..75868914ed 100644 --- a/ceilometer/hardware/discovery.py +++ b/ceilometer/hardware/discovery.py @@ -13,11 +13,11 @@ # under the License. from oslo_config import cfg +from oslo_log import log from ceilometer.agent import plugin_base from ceilometer.i18n import _ from ceilometer import nova_client -from ceilometer.openstack.common import log LOG = log.getLogger(__name__) diff --git a/ceilometer/hardware/plugin.py b/ceilometer/hardware/plugin.py index f6eb5fa40d..ee0b4697d8 100644 --- a/ceilometer/hardware/plugin.py +++ b/ceilometer/hardware/plugin.py @@ -22,13 +22,13 @@ import abc import itertools +from oslo_log import log from oslo_utils import netutils import six from ceilometer.agent import plugin_base from ceilometer.hardware import inspector as insloader from ceilometer.i18n import _ -from ceilometer.openstack.common import log LOG = log.getLogger(__name__) diff --git a/ceilometer/ipmi/notifications/ironic.py b/ceilometer/ipmi/notifications/ironic.py index a341761ce7..a4456d89a7 100644 --- a/ceilometer/ipmi/notifications/ironic.py +++ b/ceilometer/ipmi/notifications/ironic.py @@ -17,10 +17,10 @@ notification events. """ from oslo_config import cfg +from oslo_log import log import oslo_messaging as messaging from ceilometer.agent import plugin_base -from ceilometer.openstack.common import log from ceilometer import sample LOG = log.getLogger(__name__) diff --git a/ceilometer/ipmi/pollsters/node.py b/ceilometer/ipmi/pollsters/node.py index 63b9737128..d786171c7b 100644 --- a/ceilometer/ipmi/pollsters/node.py +++ b/ceilometer/ipmi/pollsters/node.py @@ -15,6 +15,7 @@ import abc from oslo_config import cfg +from oslo_log import log from oslo_utils import timeutils import six @@ -22,7 +23,6 @@ from ceilometer.agent import plugin_base from ceilometer.i18n import _ from ceilometer.ipmi.platform import exception as nmexcept from ceilometer.ipmi.platform import intel_node_manager as node_manager -from ceilometer.openstack.common import log from ceilometer import sample CONF = cfg.CONF diff --git a/ceilometer/ipmi/pollsters/sensor.py b/ceilometer/ipmi/pollsters/sensor.py index dbfd95c7b9..72ca739b7f 100644 --- a/ceilometer/ipmi/pollsters/sensor.py +++ b/ceilometer/ipmi/pollsters/sensor.py @@ -13,6 +13,7 @@ # under the License. from oslo_config import cfg +from oslo_log import log from oslo_utils import timeutils from ceilometer.agent import plugin_base @@ -20,7 +21,6 @@ from ceilometer.i18n import _ from ceilometer.ipmi.notifications import ironic as parser from ceilometer.ipmi.platform import exception as ipmiexcept from ceilometer.ipmi.platform import ipmi_sensor -from ceilometer.openstack.common import log from ceilometer import sample CONF = cfg.CONF diff --git a/ceilometer/network/floatingip.py b/ceilometer/network/floatingip.py index 1d952b35db..66eb7399e6 100644 --- a/ceilometer/network/floatingip.py +++ b/ceilometer/network/floatingip.py @@ -17,12 +17,12 @@ # under the License. from oslo_config import cfg +from oslo_log import log from oslo_utils import timeutils from ceilometer.agent import plugin_base from ceilometer.i18n import _ from ceilometer import nova_client -from ceilometer.openstack.common import log from ceilometer import sample diff --git a/ceilometer/network/notifications.py b/ceilometer/network/notifications.py index c231b08bb8..e61a9f8a6f 100644 --- a/ceilometer/network/notifications.py +++ b/ceilometer/network/notifications.py @@ -18,10 +18,10 @@ """ from oslo_config import cfg +from oslo_log import log import oslo_messaging from ceilometer.agent import plugin_base -from ceilometer.openstack.common import log from ceilometer import sample OPTS = [ diff --git a/ceilometer/network/services/base.py b/ceilometer/network/services/base.py index 37e3477278..8367868a9c 100644 --- a/ceilometer/network/services/base.py +++ b/ceilometer/network/services/base.py @@ -13,9 +13,10 @@ # License for the specific language governing permissions and limitations # under the License. +from oslo_log import log + from ceilometer.agent import plugin_base from ceilometer import neutron_client -from ceilometer.openstack.common import log LOG = log.getLogger(__name__) diff --git a/ceilometer/network/services/fwaas.py b/ceilometer/network/services/fwaas.py index a480f48ae4..8eda430a5b 100644 --- a/ceilometer/network/services/fwaas.py +++ b/ceilometer/network/services/fwaas.py @@ -12,11 +12,12 @@ # 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_log import log from oslo_utils import timeutils from ceilometer.i18n import _ from ceilometer.network.services import base -from ceilometer.openstack.common import log from ceilometer import sample LOG = log.getLogger(__name__) diff --git a/ceilometer/network/services/lbaas.py b/ceilometer/network/services/lbaas.py index b97f39360d..d5198952ca 100644 --- a/ceilometer/network/services/lbaas.py +++ b/ceilometer/network/services/lbaas.py @@ -16,12 +16,12 @@ import abc import collections +from oslo_log import log from oslo_utils import timeutils import six from ceilometer.i18n import _ from ceilometer.network.services import base -from ceilometer.openstack.common import log from ceilometer import sample LOG = log.getLogger(__name__) diff --git a/ceilometer/network/services/vpnaas.py b/ceilometer/network/services/vpnaas.py index fa06b2a430..352082098a 100644 --- a/ceilometer/network/services/vpnaas.py +++ b/ceilometer/network/services/vpnaas.py @@ -12,11 +12,12 @@ # 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_log import log from oslo_utils import timeutils from ceilometer.i18n import _ from ceilometer.network.services import base -from ceilometer.openstack.common import log from ceilometer import sample LOG = log.getLogger(__name__) diff --git a/ceilometer/network/statistics/opencontrail/client.py b/ceilometer/network/statistics/opencontrail/client.py index 3286b721a4..a85512ffc9 100644 --- a/ceilometer/network/statistics/opencontrail/client.py +++ b/ceilometer/network/statistics/opencontrail/client.py @@ -15,12 +15,12 @@ import copy from oslo_config import cfg +from oslo_log import log import requests import six from six.moves.urllib import parse as urlparse from ceilometer.i18n import _ -from ceilometer.openstack.common import log CONF = cfg.CONF diff --git a/ceilometer/network/statistics/opendaylight/client.py b/ceilometer/network/statistics/opendaylight/client.py index 59673cfa7e..24e6be696e 100644 --- a/ceilometer/network/statistics/opendaylight/client.py +++ b/ceilometer/network/statistics/opendaylight/client.py @@ -16,12 +16,12 @@ import abc from oslo_config import cfg +from oslo_log import log import requests from requests import auth import six from ceilometer.i18n import _ -from ceilometer.openstack.common import log CONF = cfg.CONF diff --git a/ceilometer/network/statistics/opendaylight/driver.py b/ceilometer/network/statistics/opendaylight/driver.py index 5d9f6b5dd3..cc66d98acf 100644 --- a/ceilometer/network/statistics/opendaylight/driver.py +++ b/ceilometer/network/statistics/opendaylight/driver.py @@ -12,6 +12,8 @@ # 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_log import log from oslo_utils import timeutils import six from six import moves @@ -20,7 +22,6 @@ from six.moves.urllib import parse as urlparse from ceilometer.i18n import _ from ceilometer.network.statistics import driver from ceilometer.network.statistics.opendaylight import client -from ceilometer.openstack.common import log from ceilometer import utils diff --git a/ceilometer/neutron_client.py b/ceilometer/neutron_client.py index 4b0bc274e6..e968708984 100644 --- a/ceilometer/neutron_client.py +++ b/ceilometer/neutron_client.py @@ -17,8 +17,7 @@ import functools from neutronclient.common import exceptions from neutronclient.v2_0 import client as clientv20 from oslo_config import cfg - -from ceilometer.openstack.common import log +from oslo_log import log SERVICE_OPTS = [ diff --git a/ceilometer/notification.py b/ceilometer/notification.py index e77044c57d..36cf79faf1 100644 --- a/ceilometer/notification.py +++ b/ceilometer/notification.py @@ -15,6 +15,7 @@ from oslo_config import cfg from oslo_context import context +from oslo_log import log import oslo_messaging from stevedore import extension @@ -23,7 +24,6 @@ from ceilometer import coordination from ceilometer.event import endpoint as event_endpoint from ceilometer.i18n import _, _LW from ceilometer import messaging -from ceilometer.openstack.common import log from ceilometer.openstack.common import service as os_service from ceilometer import pipeline from ceilometer import utils diff --git a/ceilometer/notifier.py b/ceilometer/notifier.py index 69c8ee4371..3490fcc6e9 100644 --- a/ceilometer/notifier.py +++ b/ceilometer/notifier.py @@ -14,10 +14,10 @@ # under the License. from oslo_context import context as req_context +from oslo_log import log as logging from stevedore import extension from ceilometer.i18n import _ -from ceilometer.openstack.common import log as logging from ceilometer import pipeline from ceilometer import transformer diff --git a/ceilometer/nova_client.py b/ceilometer/nova_client.py index 8b09219afc..ce5efcda5b 100644 --- a/ceilometer/nova_client.py +++ b/ceilometer/nova_client.py @@ -16,8 +16,7 @@ import functools import novaclient from novaclient import client as nova_client from oslo_config import cfg - -from ceilometer.openstack.common import log +from oslo_log import log OPTS = [ diff --git a/ceilometer/objectstore/rgw.py b/ceilometer/objectstore/rgw.py index ef4506fd82..4efd33f824 100644 --- a/ceilometer/objectstore/rgw.py +++ b/ceilometer/objectstore/rgw.py @@ -17,13 +17,13 @@ from keystoneclient import exceptions from oslo_config import cfg +from oslo_log import log from oslo_utils import timeutils import six.moves.urllib.parse as urlparse from ceilometer.agent import plugin_base from ceilometer.i18n import _ from ceilometer.objectstore.rgw_client import RGWAdminClient as rgwclient -from ceilometer.openstack.common import log from ceilometer import sample LOG = log.getLogger(__name__) diff --git a/ceilometer/objectstore/swift.py b/ceilometer/objectstore/swift.py index 65b35f18df..3d4fce3934 100644 --- a/ceilometer/objectstore/swift.py +++ b/ceilometer/objectstore/swift.py @@ -19,13 +19,13 @@ from __future__ import absolute_import from keystoneclient import exceptions from oslo_config import cfg +from oslo_log import log from oslo_utils import timeutils import six.moves.urllib.parse as urlparse from swiftclient import client as swift from ceilometer.agent import plugin_base from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer import sample diff --git a/ceilometer/openstack/common/local.py b/ceilometer/openstack/common/local.py deleted file mode 100644 index 0819d5b97c..0000000000 --- a/ceilometer/openstack/common/local.py +++ /dev/null @@ -1,45 +0,0 @@ -# Copyright 2011 OpenStack Foundation. -# All Rights Reserved. -# -# 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 -# -# 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. - -"""Local storage of variables using weak references""" - -import threading -import weakref - - -class WeakLocal(threading.local): - def __getattribute__(self, attr): - rval = super(WeakLocal, self).__getattribute__(attr) - if rval: - # NOTE(mikal): this bit is confusing. What is stored is a weak - # reference, not the value itself. We therefore need to lookup - # the weak reference and return the inner value here. - rval = rval() - return rval - - def __setattr__(self, attr, value): - value = weakref.ref(value) - return super(WeakLocal, self).__setattr__(attr, value) - - -# NOTE(mikal): the name "store" should be deprecated in the future -store = WeakLocal() - -# A "weak" store uses weak references and allows an object to fall out of scope -# when it falls out of scope in the code that uses the thread local storage. A -# "strong" store will hold a reference to the object so that it never falls out -# of scope. -weak_store = WeakLocal() -strong_store = threading.local() diff --git a/ceilometer/openstack/common/log.py b/ceilometer/openstack/common/log.py deleted file mode 100644 index 367bc837ed..0000000000 --- a/ceilometer/openstack/common/log.py +++ /dev/null @@ -1,718 +0,0 @@ -# Copyright 2011 OpenStack Foundation. -# Copyright 2010 United States Government as represented by the -# Administrator of the National Aeronautics and Space Administration. -# All Rights Reserved. -# -# 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 -# -# 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. - -"""OpenStack logging handler. - -This module adds to logging functionality by adding the option to specify -a context object when calling the various log methods. If the context object -is not specified, default formatting is used. Additionally, an instance uuid -may be passed as part of the log message, which is intended to make it easier -for admins to find messages related to a specific instance. - -It also allows setting of formatting information through conf. - -""" - -import copy -import inspect -import itertools -import logging -import logging.config -import logging.handlers -import os -import socket -import sys -import traceback - -from oslo_config import cfg -from oslo_serialization import jsonutils -from oslo_utils import importutils -import six -from six import moves - -_PY26 = sys.version_info[0:2] == (2, 6) - -from ceilometer.openstack.common._i18n import _ -from ceilometer.openstack.common import local - - -_DEFAULT_LOG_DATE_FORMAT = "%Y-%m-%d %H:%M:%S" - - -common_cli_opts = [ - cfg.BoolOpt('debug', - short='d', - default=False, - help='Print debugging output (set logging level to ' - 'DEBUG instead of default WARNING level).'), - cfg.BoolOpt('verbose', - short='v', - default=False, - help='Print more verbose output (set logging level to ' - 'INFO instead of default WARNING level).'), -] - -logging_cli_opts = [ - cfg.StrOpt('log-config-append', - metavar='PATH', - deprecated_name='log-config', - help='The name of a logging configuration file. This file ' - 'is appended to any existing logging configuration ' - 'files. For details about logging configuration files, ' - 'see the Python logging module documentation.'), - cfg.StrOpt('log-format', - metavar='FORMAT', - help='DEPRECATED. ' - 'A logging.Formatter log message format string which may ' - 'use any of the available logging.LogRecord attributes. ' - 'This option is deprecated. Please use ' - 'logging_context_format_string and ' - 'logging_default_format_string instead.'), - cfg.StrOpt('log-date-format', - default=_DEFAULT_LOG_DATE_FORMAT, - metavar='DATE_FORMAT', - help='Format string for %%(asctime)s in log records. ' - 'Default: %(default)s .'), - cfg.StrOpt('log-file', - metavar='PATH', - deprecated_name='logfile', - help='(Optional) Name of log file to output to. ' - 'If no default is set, logging will go to stdout.'), - cfg.StrOpt('log-dir', - deprecated_name='logdir', - help='(Optional) The base directory used for relative ' - '--log-file paths.'), - cfg.BoolOpt('use-syslog', - default=False, - help='Use syslog for logging. ' - 'Existing syslog format is DEPRECATED during I, ' - 'and will change in J to honor RFC5424.'), - cfg.BoolOpt('use-syslog-rfc-format', - # TODO(bogdando) remove or use True after existing - # syslog format deprecation in J - default=False, - help='(Optional) Enables or disables syslog rfc5424 format ' - 'for logging. If enabled, prefixes the MSG part of the ' - 'syslog message with APP-NAME (RFC5424). The ' - 'format without the APP-NAME is deprecated in I, ' - 'and will be removed in J.'), - cfg.StrOpt('syslog-log-facility', - default='LOG_USER', - help='Syslog facility to receive log lines.') -] - -generic_log_opts = [ - cfg.BoolOpt('use_stderr', - default=True, - help='Log output to standard error.') -] - -DEFAULT_LOG_LEVELS = ['amqp=WARN', 'amqplib=WARN', 'boto=WARN', - 'qpid=WARN', 'sqlalchemy=WARN', 'suds=INFO', - 'oslo.messaging=INFO', 'iso8601=WARN', - 'requests.packages.urllib3.connectionpool=WARN', - 'urllib3.connectionpool=WARN', 'websocket=WARN', - "keystonemiddleware=WARN", "routes.middleware=WARN", - "stevedore=WARN"] - -log_opts = [ - cfg.StrOpt('logging_context_format_string', - default='%(asctime)s.%(msecs)03d %(process)d %(levelname)s ' - '%(name)s [%(request_id)s %(user_identity)s] ' - '%(instance)s%(message)s', - help='Format string to use for log messages with context.'), - cfg.StrOpt('logging_default_format_string', - default='%(asctime)s.%(msecs)03d %(process)d %(levelname)s ' - '%(name)s [-] %(instance)s%(message)s', - help='Format string to use for log messages without context.'), - cfg.StrOpt('logging_debug_format_suffix', - default='%(funcName)s %(pathname)s:%(lineno)d', - help='Data to append to log format when level is DEBUG.'), - cfg.StrOpt('logging_exception_prefix', - default='%(asctime)s.%(msecs)03d %(process)d TRACE %(name)s ' - '%(instance)s', - help='Prefix each line of exception output with this format.'), - cfg.ListOpt('default_log_levels', - default=DEFAULT_LOG_LEVELS, - help='List of logger=LEVEL pairs.'), - cfg.BoolOpt('publish_errors', - default=False, - help='Enables or disables publication of error events.'), - cfg.BoolOpt('fatal_deprecations', - default=False, - help='Enables or disables fatal status of deprecations.'), - - # NOTE(mikal): there are two options here because sometimes we are handed - # a full instance (and could include more information), and other times we - # are just handed a UUID for the instance. - cfg.StrOpt('instance_format', - default='[instance: %(uuid)s] ', - help='The format for an instance that is passed with the log ' - 'message.'), - cfg.StrOpt('instance_uuid_format', - default='[instance: %(uuid)s] ', - help='The format for an instance UUID that is passed with the ' - 'log message.'), -] - -CONF = cfg.CONF -CONF.register_cli_opts(common_cli_opts) -CONF.register_cli_opts(logging_cli_opts) -CONF.register_opts(generic_log_opts) -CONF.register_opts(log_opts) - - -def list_opts(): - """Entry point for oslo.config-generator.""" - return [(None, copy.deepcopy(common_cli_opts)), - (None, copy.deepcopy(logging_cli_opts)), - (None, copy.deepcopy(generic_log_opts)), - (None, copy.deepcopy(log_opts)), - ] - - -# our new audit level -# NOTE(jkoelker) Since we synthesized an audit level, make the logging -# module aware of it so it acts like other levels. -logging.AUDIT = logging.INFO + 1 -logging.addLevelName(logging.AUDIT, 'AUDIT') - - -try: - NullHandler = logging.NullHandler -except AttributeError: # NOTE(jkoelker) NullHandler added in Python 2.7 - class NullHandler(logging.Handler): - def handle(self, record): - pass - - def emit(self, record): - pass - - def createLock(self): - self.lock = None - - -def _dictify_context(context): - if context is None: - return None - if not isinstance(context, dict) and getattr(context, 'to_dict', None): - context = context.to_dict() - return context - - -def _get_binary_name(): - return os.path.basename(inspect.stack()[-1][1]) - - -def _get_log_file_path(binary=None): - logfile = CONF.log_file - logdir = CONF.log_dir - - if logfile and not logdir: - return logfile - - if logfile and logdir: - return os.path.join(logdir, logfile) - - if logdir: - binary = binary or _get_binary_name() - return '%s.log' % (os.path.join(logdir, binary),) - - return None - - -class BaseLoggerAdapter(logging.LoggerAdapter): - - def audit(self, msg, *args, **kwargs): - self.log(logging.AUDIT, msg, *args, **kwargs) - - def isEnabledFor(self, level): - if _PY26: - # This method was added in python 2.7 (and it does the exact - # same logic, so we need to do the exact same logic so that - # python 2.6 has this capability as well). - return self.logger.isEnabledFor(level) - else: - return super(BaseLoggerAdapter, self).isEnabledFor(level) - - -class LazyAdapter(BaseLoggerAdapter): - def __init__(self, name='unknown', version='unknown'): - self._logger = None - self.extra = {} - self.name = name - self.version = version - - @property - def logger(self): - if not self._logger: - self._logger = getLogger(self.name, self.version) - if six.PY3: - # In Python 3, the code fails because the 'manager' attribute - # cannot be found when using a LoggerAdapter as the - # underlying logger. Work around this issue. - self._logger.manager = self._logger.logger.manager - return self._logger - - -class ContextAdapter(BaseLoggerAdapter): - warn = logging.LoggerAdapter.warning - - def __init__(self, logger, project_name, version_string): - self.logger = logger - self.project = project_name - self.version = version_string - self._deprecated_messages_sent = dict() - - @property - def handlers(self): - return self.logger.handlers - - def deprecated(self, msg, *args, **kwargs): - """Call this method when a deprecated feature is used. - - If the system is configured for fatal deprecations then the message - is logged at the 'critical' level and :class:`DeprecatedConfig` will - be raised. - - Otherwise, the message will be logged (once) at the 'warn' level. - - :raises: :class:`DeprecatedConfig` if the system is configured for - fatal deprecations. - - """ - stdmsg = _("Deprecated: %s") % msg - if CONF.fatal_deprecations: - self.critical(stdmsg, *args, **kwargs) - raise DeprecatedConfig(msg=stdmsg) - - # Using a list because a tuple with dict can't be stored in a set. - sent_args = self._deprecated_messages_sent.setdefault(msg, list()) - - if args in sent_args: - # Already logged this message, so don't log it again. - return - - sent_args.append(args) - self.warn(stdmsg, *args, **kwargs) - - def process(self, msg, kwargs): - # NOTE(jecarey): If msg is not unicode, coerce it into unicode - # before it can get to the python logging and - # possibly cause string encoding trouble - if not isinstance(msg, six.text_type): - msg = six.text_type(msg) - - if 'extra' not in kwargs: - kwargs['extra'] = {} - extra = kwargs['extra'] - - context = kwargs.pop('context', None) - if not context: - context = getattr(local.store, 'context', None) - if context: - extra.update(_dictify_context(context)) - - instance = kwargs.pop('instance', None) - instance_uuid = (extra.get('instance_uuid') or - kwargs.pop('instance_uuid', None)) - instance_extra = '' - if instance: - instance_extra = CONF.instance_format % instance - elif instance_uuid: - instance_extra = (CONF.instance_uuid_format - % {'uuid': instance_uuid}) - extra['instance'] = instance_extra - - extra.setdefault('user_identity', kwargs.pop('user_identity', None)) - - extra['project'] = self.project - extra['version'] = self.version - extra['extra'] = extra.copy() - return msg, kwargs - - -class JSONFormatter(logging.Formatter): - def __init__(self, fmt=None, datefmt=None): - # NOTE(jkoelker) we ignore the fmt argument, but its still there - # since logging.config.fileConfig passes it. - self.datefmt = datefmt - - def formatException(self, ei, strip_newlines=True): - lines = traceback.format_exception(*ei) - if strip_newlines: - lines = [moves.filter( - lambda x: x, - line.rstrip().splitlines()) for line in lines] - lines = list(itertools.chain(*lines)) - return lines - - def format(self, record): - message = {'message': record.getMessage(), - 'asctime': self.formatTime(record, self.datefmt), - 'name': record.name, - 'msg': record.msg, - 'args': record.args, - 'levelname': record.levelname, - 'levelno': record.levelno, - 'pathname': record.pathname, - 'filename': record.filename, - 'module': record.module, - 'lineno': record.lineno, - 'funcname': record.funcName, - 'created': record.created, - 'msecs': record.msecs, - 'relative_created': record.relativeCreated, - 'thread': record.thread, - 'thread_name': record.threadName, - 'process_name': record.processName, - 'process': record.process, - 'traceback': None} - - if hasattr(record, 'extra'): - message['extra'] = record.extra - - if record.exc_info: - message['traceback'] = self.formatException(record.exc_info) - - return jsonutils.dumps(message) - - -def _create_logging_excepthook(product_name): - def logging_excepthook(exc_type, value, tb): - extra = {'exc_info': (exc_type, value, tb)} - getLogger(product_name).critical( - "".join(traceback.format_exception_only(exc_type, value)), - **extra) - return logging_excepthook - - -class LogConfigError(Exception): - - message = _('Error loading logging config %(log_config)s: %(err_msg)s') - - def __init__(self, log_config, err_msg): - self.log_config = log_config - self.err_msg = err_msg - - def __str__(self): - return self.message % dict(log_config=self.log_config, - err_msg=self.err_msg) - - -def _load_log_config(log_config_append): - try: - logging.config.fileConfig(log_config_append, - disable_existing_loggers=False) - except (moves.configparser.Error, KeyError) as exc: - raise LogConfigError(log_config_append, six.text_type(exc)) - - -def setup(product_name, version='unknown'): - """Setup logging.""" - if CONF.log_config_append: - _load_log_config(CONF.log_config_append) - else: - _setup_logging_from_conf(product_name, version) - sys.excepthook = _create_logging_excepthook(product_name) - - -def set_defaults(logging_context_format_string=None, - default_log_levels=None): - # Just in case the caller is not setting the - # default_log_level. This is insurance because - # we introduced the default_log_level parameter - # later in a backwards in-compatible change - if default_log_levels is not None: - cfg.set_defaults( - log_opts, - default_log_levels=default_log_levels) - if logging_context_format_string is not None: - cfg.set_defaults( - log_opts, - logging_context_format_string=logging_context_format_string) - - -def _find_facility_from_conf(): - facility_names = logging.handlers.SysLogHandler.facility_names - facility = getattr(logging.handlers.SysLogHandler, - CONF.syslog_log_facility, - None) - - if facility is None and CONF.syslog_log_facility in facility_names: - facility = facility_names.get(CONF.syslog_log_facility) - - if facility is None: - valid_facilities = facility_names.keys() - consts = ['LOG_AUTH', 'LOG_AUTHPRIV', 'LOG_CRON', 'LOG_DAEMON', - 'LOG_FTP', 'LOG_KERN', 'LOG_LPR', 'LOG_MAIL', 'LOG_NEWS', - 'LOG_AUTH', 'LOG_SYSLOG', 'LOG_USER', 'LOG_UUCP', - 'LOG_LOCAL0', 'LOG_LOCAL1', 'LOG_LOCAL2', 'LOG_LOCAL3', - 'LOG_LOCAL4', 'LOG_LOCAL5', 'LOG_LOCAL6', 'LOG_LOCAL7'] - valid_facilities.extend(consts) - raise TypeError(_('syslog facility must be one of: %s') % - ', '.join("'%s'" % fac - for fac in valid_facilities)) - - return facility - - -class RFCSysLogHandler(logging.handlers.SysLogHandler): - def __init__(self, *args, **kwargs): - self.binary_name = _get_binary_name() - # Do not use super() unless type(logging.handlers.SysLogHandler) - # is 'type' (Python 2.7). - # Use old style calls, if the type is 'classobj' (Python 2.6) - logging.handlers.SysLogHandler.__init__(self, *args, **kwargs) - - def format(self, record): - # Do not use super() unless type(logging.handlers.SysLogHandler) - # is 'type' (Python 2.7). - # Use old style calls, if the type is 'classobj' (Python 2.6) - msg = logging.handlers.SysLogHandler.format(self, record) - msg = self.binary_name + ' ' + msg - return msg - - -def _setup_logging_from_conf(project, version): - log_root = getLogger(None).logger - for handler in log_root.handlers: - log_root.removeHandler(handler) - - logpath = _get_log_file_path() - if logpath: - filelog = logging.handlers.WatchedFileHandler(logpath) - log_root.addHandler(filelog) - - if CONF.use_stderr: - streamlog = ColorHandler() - log_root.addHandler(streamlog) - - elif not logpath: - # pass sys.stdout as a positional argument - # python2.6 calls the argument strm, in 2.7 it's stream - streamlog = logging.StreamHandler(sys.stdout) - log_root.addHandler(streamlog) - - if CONF.publish_errors: - handler = importutils.import_object( - "oslo.messaging.notify.log_handler.PublishErrorsHandler", - logging.ERROR) - log_root.addHandler(handler) - - datefmt = CONF.log_date_format - for handler in log_root.handlers: - # NOTE(alaski): CONF.log_format overrides everything currently. This - # should be deprecated in favor of context aware formatting. - if CONF.log_format: - handler.setFormatter(logging.Formatter(fmt=CONF.log_format, - datefmt=datefmt)) - log_root.info('Deprecated: log_format is now deprecated and will ' - 'be removed in the next release') - else: - handler.setFormatter(ContextFormatter(project=project, - version=version, - datefmt=datefmt)) - - if CONF.debug: - log_root.setLevel(logging.DEBUG) - elif CONF.verbose: - log_root.setLevel(logging.INFO) - else: - log_root.setLevel(logging.WARNING) - - for pair in CONF.default_log_levels: - mod, _sep, level_name = pair.partition('=') - logger = logging.getLogger(mod) - # NOTE(AAzza) in python2.6 Logger.setLevel doesn't convert string name - # to integer code. - if sys.version_info < (2, 7): - level = logging.getLevelName(level_name) - logger.setLevel(level) - else: - logger.setLevel(level_name) - - if CONF.use_syslog: - try: - facility = _find_facility_from_conf() - # TODO(bogdando) use the format provided by RFCSysLogHandler - # after existing syslog format deprecation in J - if CONF.use_syslog_rfc_format: - syslog = RFCSysLogHandler(address='/dev/log', - facility=facility) - else: - syslog = logging.handlers.SysLogHandler(address='/dev/log', - facility=facility) - log_root.addHandler(syslog) - except socket.error: - log_root.error('Unable to add syslog handler. Verify that syslog ' - 'is running.') - - -_loggers = {} - - -def getLogger(name='unknown', version='unknown'): - if name not in _loggers: - _loggers[name] = ContextAdapter(logging.getLogger(name), - name, - version) - return _loggers[name] - - -def getLazyLogger(name='unknown', version='unknown'): - """Returns lazy logger. - - Creates a pass-through logger that does not create the real logger - until it is really needed and delegates all calls to the real logger - once it is created. - """ - return LazyAdapter(name, version) - - -class WritableLogger(object): - """A thin wrapper that responds to `write` and logs.""" - - def __init__(self, logger, level=logging.INFO): - self.logger = logger - self.level = level - - def write(self, msg): - self.logger.log(self.level, msg.rstrip()) - - -class ContextFormatter(logging.Formatter): - """A context.RequestContext aware formatter configured through flags. - - The flags used to set format strings are: logging_context_format_string - and logging_default_format_string. You can also specify - logging_debug_format_suffix to append extra formatting if the log level is - debug. - - For information about what variables are available for the formatter see: - http://docs.python.org/library/logging.html#formatter - - If available, uses the context value stored in TLS - local.store.context - - """ - - def __init__(self, *args, **kwargs): - """Initialize ContextFormatter instance - - Takes additional keyword arguments which can be used in the message - format string. - - :keyword project: project name - :type project: string - :keyword version: project version - :type version: string - - """ - - self.project = kwargs.pop('project', 'unknown') - self.version = kwargs.pop('version', 'unknown') - - logging.Formatter.__init__(self, *args, **kwargs) - - def format(self, record): - """Uses contextstring if request_id is set, otherwise default.""" - - # NOTE(jecarey): If msg is not unicode, coerce it into unicode - # before it can get to the python logging and - # possibly cause string encoding trouble - if not isinstance(record.msg, six.text_type): - record.msg = six.text_type(record.msg) - - # store project info - record.project = self.project - record.version = self.version - - # store request info - context = getattr(local.store, 'context', None) - if context: - d = _dictify_context(context) - for k, v in d.items(): - setattr(record, k, v) - - # NOTE(sdague): default the fancier formatting params - # to an empty string so we don't throw an exception if - # they get used - for key in ('instance', 'color', 'user_identity'): - if key not in record.__dict__: - record.__dict__[key] = '' - - if record.__dict__.get('request_id'): - fmt = CONF.logging_context_format_string - else: - fmt = CONF.logging_default_format_string - - if (record.levelno == logging.DEBUG and - CONF.logging_debug_format_suffix): - fmt += " " + CONF.logging_debug_format_suffix - - if sys.version_info < (3, 2): - self._fmt = fmt - else: - self._style = logging.PercentStyle(fmt) - self._fmt = self._style._fmt - # Cache this on the record, Logger will respect our formatted copy - if record.exc_info: - record.exc_text = self.formatException(record.exc_info, record) - return logging.Formatter.format(self, record) - - def formatException(self, exc_info, record=None): - """Format exception output with CONF.logging_exception_prefix.""" - if not record: - return logging.Formatter.formatException(self, exc_info) - - stringbuffer = moves.StringIO() - traceback.print_exception(exc_info[0], exc_info[1], exc_info[2], - None, stringbuffer) - lines = stringbuffer.getvalue().split('\n') - stringbuffer.close() - - if CONF.logging_exception_prefix.find('%(asctime)') != -1: - record.asctime = self.formatTime(record, self.datefmt) - - formatted_lines = [] - for line in lines: - pl = CONF.logging_exception_prefix % record.__dict__ - fl = '%s%s' % (pl, line) - formatted_lines.append(fl) - return '\n'.join(formatted_lines) - - -class ColorHandler(logging.StreamHandler): - LEVEL_COLORS = { - logging.DEBUG: '\033[00;32m', # GREEN - logging.INFO: '\033[00;36m', # CYAN - logging.AUDIT: '\033[01;36m', # BOLD CYAN - logging.WARN: '\033[01;33m', # BOLD YELLOW - logging.ERROR: '\033[01;31m', # BOLD RED - logging.CRITICAL: '\033[01;31m', # BOLD RED - } - - def format(self, record): - record.color = self.LEVEL_COLORS[record.levelno] - return logging.StreamHandler.format(self, record) - - -class DeprecatedConfig(Exception): - message = _("Fatal call to deprecated config: %(msg)s") - - def __init__(self, msg): - super(Exception, self).__init__(self.message % dict(msg=msg)) diff --git a/ceilometer/opts.py b/ceilometer/opts.py index d73528914e..5060c73295 100644 --- a/ceilometer/opts.py +++ b/ceilometer/opts.py @@ -51,7 +51,6 @@ import ceilometer.nova_client import ceilometer.objectstore.rgw import ceilometer.objectstore.swift import ceilometer.openstack.common.eventlet_backdoor -import ceilometer.openstack.common.log import ceilometer.orchestration.notifications import ceilometer.pipeline import ceilometer.profiler.notifications @@ -86,10 +85,6 @@ def list_opts(): ceilometer.objectstore.swift.OPTS, (ceilometer.openstack.common.eventlet_backdoor .eventlet_backdoor_opts), - ceilometer.openstack.common.log.common_cli_opts, - ceilometer.openstack.common.log.generic_log_opts, - ceilometer.openstack.common.log.logging_cli_opts, - ceilometer.openstack.common.log.log_opts, ceilometer.orchestration.notifications.OPTS, ceilometer.pipeline.OPTS, ceilometer.profiler.notifications.OPTS, diff --git a/ceilometer/pipeline.py b/ceilometer/pipeline.py index 3570530dbe..9026dfedd4 100644 --- a/ceilometer/pipeline.py +++ b/ceilometer/pipeline.py @@ -22,13 +22,13 @@ import fnmatch import os from oslo_config import cfg +from oslo_log import log from oslo_utils import timeutils import six import yaml from ceilometer.event.storage import models from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer import publisher from ceilometer.publisher import utils as publisher_utils from ceilometer import sample as sample_util diff --git a/ceilometer/publisher/file.py b/ceilometer/publisher/file.py index 43f9b0796c..686e6cdc30 100644 --- a/ceilometer/publisher/file.py +++ b/ceilometer/publisher/file.py @@ -16,11 +16,11 @@ import logging import logging.handlers +from oslo_log import log from six.moves.urllib import parse as urlparse import ceilometer from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer import publisher LOG = log.getLogger(__name__) diff --git a/ceilometer/publisher/kafka_broker.py b/ceilometer/publisher/kafka_broker.py index 191a0d519d..0dd488a62c 100644 --- a/ceilometer/publisher/kafka_broker.py +++ b/ceilometer/publisher/kafka_broker.py @@ -17,13 +17,13 @@ import json import kafka from oslo_config import cfg +from oslo_log import log from oslo_utils import netutils from six.moves.urllib import parse as urlparse from ceilometer.i18n import _LE from ceilometer.i18n import _LI from ceilometer.i18n import _LW -from ceilometer.openstack.common import log from ceilometer import publisher from ceilometer.publisher import utils diff --git a/ceilometer/publisher/messaging.py b/ceilometer/publisher/messaging.py index cabbae01cc..34cda43294 100644 --- a/ceilometer/publisher/messaging.py +++ b/ceilometer/publisher/messaging.py @@ -20,13 +20,13 @@ import itertools import operator from oslo_config import cfg +from oslo_log import log import oslo_messaging import six import six.moves.urllib.parse as urlparse from ceilometer.i18n import _ from ceilometer import messaging -from ceilometer.openstack.common import log from ceilometer import publisher from ceilometer.publisher import utils diff --git a/ceilometer/publisher/udp.py b/ceilometer/publisher/udp.py index 4320b39a67..eaa8e443c2 100644 --- a/ceilometer/publisher/udp.py +++ b/ceilometer/publisher/udp.py @@ -19,11 +19,11 @@ import socket import msgpack from oslo_config import cfg +from oslo_log import log from oslo_utils import netutils import ceilometer from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer import publisher from ceilometer.publisher import utils diff --git a/ceilometer/service.py b/ceilometer/service.py index b058c8db01..99eb4e3f6f 100644 --- a/ceilometer/service.py +++ b/ceilometer/service.py @@ -20,10 +20,10 @@ import sys from oslo_config import cfg import oslo_i18n +from oslo_log import log from ceilometer.i18n import _ from ceilometer import messaging -from ceilometer.openstack.common import log from ceilometer import utils @@ -109,12 +109,12 @@ def get_workers(name): def prepare_service(argv=None): oslo_i18n.enable_lazy() + log.register_options(cfg.CONF) log_levels = (cfg.CONF.default_log_levels + ['stevedore=INFO', 'keystoneclient=INFO']) - cfg.set_defaults(log.log_opts, - default_log_levels=log_levels) + log.set_defaults(default_log_levels=log_levels) if argv is None: argv = sys.argv cfg.CONF(argv[1:], project='ceilometer', validate_default_values=True) - log.setup('ceilometer') + log.setup(cfg.CONF, 'ceilometer') messaging.setup() diff --git a/ceilometer/storage/__init__.py b/ceilometer/storage/__init__.py index d9b8afb0a3..a6e75f7cf0 100644 --- a/ceilometer/storage/__init__.py +++ b/ceilometer/storage/__init__.py @@ -17,12 +17,12 @@ from oslo_config import cfg from oslo_db import options as db_options +from oslo_log import log import retrying import six import six.moves.urllib.parse as urlparse from stevedore import driver -from ceilometer.openstack.common import log from ceilometer import utils diff --git a/ceilometer/storage/hbase/base.py b/ceilometer/storage/hbase/base.py index fd5dc7d394..94eaacecf8 100644 --- a/ceilometer/storage/hbase/base.py +++ b/ceilometer/storage/hbase/base.py @@ -14,11 +14,11 @@ import os import happybase +from oslo_log import log from oslo_utils import netutils from six.moves.urllib import parse as urlparse from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer.storage.hbase import inmemory as hbase_inmemory LOG = log.getLogger(__name__) diff --git a/ceilometer/storage/hbase/inmemory.py b/ceilometer/storage/hbase/inmemory.py index 7e4e2a1dfe..767143d4e6 100644 --- a/ceilometer/storage/hbase/inmemory.py +++ b/ceilometer/storage/hbase/inmemory.py @@ -17,11 +17,11 @@ import copy import re +from oslo_log import log import six import ceilometer from ceilometer.i18n import _ -from ceilometer.openstack.common import log LOG = log.getLogger(__name__) diff --git a/ceilometer/storage/hbase/utils.py b/ceilometer/storage/hbase/utils.py index eefa8516e1..378befeca7 100644 --- a/ceilometer/storage/hbase/utils.py +++ b/ceilometer/storage/hbase/utils.py @@ -18,10 +18,10 @@ import json import bson.json_util from happybase.hbase import ttypes +from oslo_log import log import six from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer import utils LOG = log.getLogger(__name__) diff --git a/ceilometer/storage/impl_db2.py b/ceilometer/storage/impl_db2.py index 78a0c0cd37..6b14640977 100644 --- a/ceilometer/storage/impl_db2.py +++ b/ceilometer/storage/impl_db2.py @@ -25,12 +25,12 @@ import sys import bson.code import bson.objectid from oslo_config import cfg +from oslo_log import log from oslo_utils import timeutils import pymongo import six import ceilometer -from ceilometer.openstack.common import log from ceilometer import storage from ceilometer.storage import base from ceilometer.storage import models diff --git a/ceilometer/storage/impl_hbase.py b/ceilometer/storage/impl_hbase.py index 16e63f5776..2f31a077ca 100644 --- a/ceilometer/storage/impl_hbase.py +++ b/ceilometer/storage/impl_hbase.py @@ -15,11 +15,11 @@ import datetime import operator import time +from oslo_log import log from oslo_utils import timeutils import ceilometer from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer.storage import base from ceilometer.storage.hbase import base as hbase_base from ceilometer.storage.hbase import migration as hbase_migration diff --git a/ceilometer/storage/impl_log.py b/ceilometer/storage/impl_log.py index b86ef14076..05b9ac3fda 100644 --- a/ceilometer/storage/impl_log.py +++ b/ceilometer/storage/impl_log.py @@ -15,8 +15,9 @@ """Simple logging storage backend. """ +from oslo_log import log + from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer.storage import base LOG = log.getLogger(__name__) diff --git a/ceilometer/storage/impl_mongodb.py b/ceilometer/storage/impl_mongodb.py index 557f8e226a..85757f65b6 100644 --- a/ceilometer/storage/impl_mongodb.py +++ b/ceilometer/storage/impl_mongodb.py @@ -30,13 +30,13 @@ import uuid import bson.code import bson.objectid from oslo_config import cfg +from oslo_log import log from oslo_utils import timeutils import pymongo import six import ceilometer from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer import storage from ceilometer.storage import base from ceilometer.storage import models diff --git a/ceilometer/storage/impl_sqlalchemy.py b/ceilometer/storage/impl_sqlalchemy.py index 845d1e9152..e3b24b76b6 100644 --- a/ceilometer/storage/impl_sqlalchemy.py +++ b/ceilometer/storage/impl_sqlalchemy.py @@ -22,6 +22,7 @@ from oslo_config import cfg from oslo_db import api from oslo_db import exception as dbexc from oslo_db.sqlalchemy import session as db_session +from oslo_log import log from oslo_serialization import jsonutils from oslo_utils import timeutils import six @@ -33,7 +34,6 @@ from sqlalchemy.orm import aliased import ceilometer from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer import storage from ceilometer.storage import base from ceilometer.storage import models as api_models diff --git a/ceilometer/storage/mongo/utils.py b/ceilometer/storage/mongo/utils.py index 297d55b66c..d646ef6b3d 100644 --- a/ceilometer/storage/mongo/utils.py +++ b/ceilometer/storage/mongo/utils.py @@ -22,13 +22,13 @@ import time import weakref from oslo_config import cfg +from oslo_log import log from oslo_utils import netutils import pymongo import six from six.moves.urllib import parse from ceilometer.i18n import _ -from ceilometer.openstack.common import log LOG = log.getLogger(__name__) diff --git a/ceilometer/tests/data_processing/test_notifications.py b/ceilometer/tests/data_processing/test_notifications.py index 557d673ec2..c6e872b5a8 100644 --- a/ceilometer/tests/data_processing/test_notifications.py +++ b/ceilometer/tests/data_processing/test_notifications.py @@ -17,10 +17,10 @@ import datetime import mock from oslo_config import cfg +from oslo_log import log from oslotest import base from ceilometer.data_processing import notifications -from ceilometer.openstack.common import log from ceilometer import sample NOW = datetime.datetime.isoformat(datetime.datetime.utcnow()) @@ -37,6 +37,7 @@ PUBLISHER_ID = u'data_processing.node-n5x66lxdy67d' CONF = cfg.CONF +log.register_options(CONF) CONF.set_override('use_stderr', True) LOG = log.getLogger(__name__) diff --git a/ceilometer/tests/objectstore/test_swift_middleware.py b/ceilometer/tests/objectstore/test_swift_middleware.py index 2d41f8607b..130dee7a20 100644 --- a/ceilometer/tests/objectstore/test_swift_middleware.py +++ b/ceilometer/tests/objectstore/test_swift_middleware.py @@ -313,7 +313,7 @@ class TestSwiftMiddleware(tests_base.BaseTestCase): self.assertEqual(["test"], resp) mocked_publish_sample.assert_called_once_with(mock.ANY, 0, 4) - def test_reseller_prefix(self): + def test_no_reseller_prefix(self): # No reseller prefix set: ensure middleware uses AUTH_ app = swift_middleware.CeilometerMiddleware(FakeApp(), {}) req = FakeRequest('/1.0/AUTH_account/container/obj', @@ -322,6 +322,7 @@ class TestSwiftMiddleware(tests_base.BaseTestCase): samples = self.pipeline_manager.pipelines[0].samples[0] self.assertEqual("account", samples.resource_id) + def test_custom_reseller_prefix(self): # Custom reseller prefix set app = swift_middleware.CeilometerMiddleware( FakeApp(), {'reseller_prefix': 'CUSTOM_'}) diff --git a/ceilometer/tests/orchestration/test_notifications.py b/ceilometer/tests/orchestration/test_notifications.py index fe84abfed2..e72e7dc62b 100644 --- a/ceilometer/tests/orchestration/test_notifications.py +++ b/ceilometer/tests/orchestration/test_notifications.py @@ -14,9 +14,9 @@ import datetime import mock from oslo_config import cfg +from oslo_log import log from oslotest import base -from ceilometer.openstack.common import log from ceilometer.orchestration import notifications from ceilometer import sample @@ -35,6 +35,7 @@ STACK_ARN = u'arn:openstack:heat::%s:stacks/%s/%s' % (TENANT_ID, CONF = cfg.CONF +log.register_options(CONF) CONF.set_override('use_stderr', True) LOG = log.getLogger(__name__) diff --git a/ceilometer/transformer/arithmetic.py b/ceilometer/transformer/arithmetic.py index b5a15ade66..926f65f758 100644 --- a/ceilometer/transformer/arithmetic.py +++ b/ceilometer/transformer/arithmetic.py @@ -18,10 +18,10 @@ import keyword import math import re +from oslo_log import log import six from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer import sample from ceilometer import transformer diff --git a/ceilometer/transformer/conversions.py b/ceilometer/transformer/conversions.py index 1e5f81906d..f9194e2fd9 100644 --- a/ceilometer/transformer/conversions.py +++ b/ceilometer/transformer/conversions.py @@ -16,11 +16,11 @@ import collections import re +from oslo_log import log from oslo_utils import timeutils import six from ceilometer.i18n import _ -from ceilometer.openstack.common import log from ceilometer import sample from ceilometer import transformer diff --git a/openstack-common.conf b/openstack-common.conf index 5910043d2c..90c73a57a7 100644 --- a/openstack-common.conf +++ b/openstack-common.conf @@ -1,7 +1,6 @@ [DEFAULT] # The list of modules to copy from oslo-incubator -module=log module=service module=versionutils diff --git a/requirements.txt b/requirements.txt index 54df0e3fb4..d761d7039f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -18,6 +18,7 @@ oslo.db>=1.7.0 # Apache-2.0 oslo.concurrency>=1.8.0 # Apache-2.0 oslo.config>=1.9.3 # Apache-2.0 oslo.i18n>=1.5.0 # Apache-2.0 +oslo.log>=1.0.0 # Apache-2.0 oslo.policy>=0.3.1 # Apache-2.0 oslo.rootwrap>=1.6.0 # Apache-2.0 PasteDeploy>=1.5.0 diff --git a/tox.ini b/tox.ini index 5834128995..461f2dccc8 100644 --- a/tox.ini +++ b/tox.ini @@ -104,6 +104,7 @@ commands = --namespace ceilometer \ --namespace oslo.concurrency \ --namespace oslo.db \ + --namespace oslo.log \ --namespace oslo.messaging \ --namespace oslo.policy \ --namespace keystonemiddleware.auth_token