summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Jaeger <aj@suse.com>2020-03-31 16:20:19 +0200
committerAndreas Jaeger <aj@suse.com>2020-03-31 17:39:51 +0200
commit1a6a003242f02829445a3e48b199d990c21ac510 (patch)
tree59f5db34d691937c01c58bfd29e7d080dc9e891b
parent56012eaa5cd64fd61b223942aeb7a2320cd131da (diff)
downloadceilometer-1a6a003242f02829445a3e48b199d990c21ac510.tar.gz
Update hacking for Python3
The repo is Python 3 now, so update hacking to version 3.0 which supports Python 3. Fix problems found. Update local hacking checks for new flake8. Change-Id: I129bc38e6663836e12610dd50a20c74dbc79891c
-rw-r--r--ceilometer/compute/discovery.py2
-rw-r--r--ceilometer/compute/pollsters/__init__.py7
-rw-r--r--ceilometer/hacking/checks.py9
-rw-r--r--ceilometer/ipmi/notifications/ironic.py2
-rw-r--r--ceilometer/network/statistics/opendaylight/driver.py4
-rw-r--r--ceilometer/objectstore/rgw.py20
-rw-r--r--ceilometer/polling/dynamic_pollster.py6
-rw-r--r--ceilometer/polling/manager.py2
-rw-r--r--ceilometer/publisher/http.py3
-rwxr-xr-xceilometer/publisher/monasca.py2
-rw-r--r--ceilometer/tests/unit/network/test_floating_ip.py6
-rw-r--r--ceilometer/tests/unit/polling/test_dynamic_pollster.py2
-rw-r--r--tox.ini14
13 files changed, 41 insertions, 38 deletions
diff --git a/ceilometer/compute/discovery.py b/ceilometer/compute/discovery.py
index b59550a0..3b13d96b 100644
--- a/ceilometer/compute/discovery.py
+++ b/ceilometer/compute/discovery.py
@@ -187,7 +187,7 @@ class InstanceDiscovery(plugin_base.DiscoveryBase):
image_xml = metadata_xml.find("./root[@type='image']")
image = ({'id': image_xml.attrib['uuid']}
if image_xml is not None else None)
- except AttributeError as e:
+ except AttributeError:
LOG.error(
"Fail to get domain uuid %s metadata: "
"metadata was missing expected attributes",
diff --git a/ceilometer/compute/pollsters/__init__.py b/ceilometer/compute/pollsters/__init__.py
index c4bed44d..d64b15d0 100644
--- a/ceilometer/compute/pollsters/__init__.py
+++ b/ceilometer/compute/pollsters/__init__.py
@@ -13,12 +13,7 @@
# under the License.
import collections
-import six
-
-if six.PY2:
- from monotonic import monotonic as now
-else:
- from time import monotonic as now
+from time import monotonic as now
from oslo_log import log
from oslo_utils import timeutils
diff --git a/ceilometer/hacking/checks.py b/ceilometer/hacking/checks.py
index 9474aa5d..f0929218 100644
--- a/ceilometer/hacking/checks.py
+++ b/ceilometer/hacking/checks.py
@@ -26,7 +26,10 @@ Guidelines for writing new hacking checks
"""
+from hacking import core
+
+@core.flake8ext
def no_log_warn(logical_line):
"""Disallow 'LOG.warn('
@@ -38,6 +41,7 @@ def no_log_warn(logical_line):
yield(0, 'C301 Use LOG.warning() rather than LOG.warn()')
+@core.flake8ext
def no_os_popen(logical_line):
"""Disallow 'os.popen('
@@ -50,8 +54,3 @@ def no_os_popen(logical_line):
if 'os.popen(' in logical_line:
yield(0, 'C302 Deprecated library function os.popen(). '
'Replace it using subprocess module. ')
-
-
-def factory(register):
- register(no_log_warn)
- register(no_os_popen)
diff --git a/ceilometer/ipmi/notifications/ironic.py b/ceilometer/ipmi/notifications/ironic.py
index 9afe91ec..7b6c0f88 100644
--- a/ceilometer/ipmi/notifications/ironic.py
+++ b/ceilometer/ipmi/notifications/ironic.py
@@ -119,7 +119,7 @@ class SensorNotification(endpoint.SampleEndpoint):
try:
sensor_reading = info['payload']['Sensor Reading']
- except KeyError as exc:
+ except KeyError:
raise InvalidSensorData(
"missing 'Sensor Reading' in payload"
)
diff --git a/ceilometer/network/statistics/opendaylight/driver.py b/ceilometer/network/statistics/opendaylight/driver.py
index de37f3e2..2fe8700c 100644
--- a/ceilometer/network/statistics/opendaylight/driver.py
+++ b/ceilometer/network/statistics/opendaylight/driver.py
@@ -414,10 +414,10 @@ class OpenDayLightDriver(driver.Driver):
val_iter, key_func = None, None
if isinstance(value, dict):
val_iter = six.iteritems(value)
- key_func = lambda k: key_base + '.' + k if key_base else k
+ key_func = lambda k: key_base + '.' + k if key_base else k # noqa
elif isinstance(value, (tuple, list)):
val_iter = enumerate(value)
- key_func = lambda k: key_base + '[%d]' % k
+ key_func = lambda k: key_base + '[%d]' % k # noqa: E731
if val_iter:
for k, v in val_iter:
diff --git a/ceilometer/objectstore/rgw.py b/ceilometer/objectstore/rgw.py
index 9d7cb890..0fe326b9 100644
--- a/ceilometer/objectstore/rgw.py
+++ b/ceilometer/objectstore/rgw.py
@@ -134,16 +134,16 @@ class ContainersSizePollster(_Base):
for tenant, bucket_info in self._iter_accounts(manager.keystone,
cache, resources):
for it in bucket_info['buckets']:
- yield sample.Sample(
- name='radosgw.containers.objects.size',
- type=sample.TYPE_GAUGE,
- volume=int(it.size * 1024),
- unit='B',
- user_id=None,
- project_id=tenant,
- resource_id=tenant + '/' + it.name,
- resource_metadata=None,
- )
+ yield sample.Sample(
+ name='radosgw.containers.objects.size',
+ type=sample.TYPE_GAUGE,
+ volume=int(it.size * 1024),
+ unit='B',
+ user_id=None,
+ project_id=tenant,
+ resource_id=tenant + '/' + it.name,
+ resource_metadata=None,
+ )
class ObjectsSizePollster(_Base):
diff --git a/ceilometer/polling/dynamic_pollster.py b/ceilometer/polling/dynamic_pollster.py
index 913e30cd..cd2c0d19 100644
--- a/ceilometer/polling/dynamic_pollster.py
+++ b/ceilometer/polling/dynamic_pollster.py
@@ -345,7 +345,7 @@ class PollsterDefinition(object):
class PollsterDefinitions(object):
- POLLSTER_VALID_NAMES_REGEXP = "^([\w-]+)(\.[\w-]+)*(\.{[\w-]+})?$"
+ POLLSTER_VALID_NAMES_REGEXP = r"^([\w-]+)(\.[\w-]+)*(\.{[\w-]+})?$"
standard_definitions = [
PollsterDefinition(name='name', required=True,
@@ -416,10 +416,10 @@ class PollsterDefinitions(object):
class MultiMetricPollsterDefinitions(PollsterDefinitions):
- MULTI_METRIC_POLLSTER_NAME_REGEXP = ".*(\.{(\w+)})$"
+ MULTI_METRIC_POLLSTER_NAME_REGEXP = r".*(\.{(\w+)})$"
pattern_pollster_name = re.compile(
MULTI_METRIC_POLLSTER_NAME_REGEXP)
- MULTI_METRIC_POLLSTER_VALUE_ATTRIBUTE_REGEXP = "^(\[(\w+)\])((\.\w+)+)$"
+ MULTI_METRIC_POLLSTER_VALUE_ATTRIBUTE_REGEXP = r"^(\[(\w+)\])((\.\w+)+)$"
pattern_pollster_value_attribute = re.compile(
MULTI_METRIC_POLLSTER_VALUE_ATTRIBUTE_REGEXP)
diff --git a/ceilometer/polling/manager.py b/ceilometer/polling/manager.py
index fbdce8b5..c02cdd50 100644
--- a/ceilometer/polling/manager.py
+++ b/ceilometer/polling/manager.py
@@ -132,7 +132,7 @@ class PollingTask(object):
# we relate the static resources and per-source discovery to
# each combination of pollster and matching source
- resource_factory = lambda: Resources(agent_manager)
+ resource_factory = lambda: Resources(agent_manager) # noqa: E731
self.resources = collections.defaultdict(resource_factory)
self._batch_size = self.manager.conf.polling.batch_size
diff --git a/ceilometer/publisher/http.py b/ceilometer/publisher/http.py
index 6fe88ab9..3e637e67 100644
--- a/ceilometer/publisher/http.py
+++ b/ceilometer/publisher/http.py
@@ -100,7 +100,8 @@ class HttpPublisher(publisher.ConfigPublisherBase):
password = parsed_url.password
if username:
self.client_auth = (username, password)
- netloc = parsed_url.netloc.replace(username+':'+password+'@', '')
+ netloc = parsed_url.netloc.replace(username + ':' + password + '@',
+ '')
else:
self.client_auth = None
netloc = parsed_url.netloc
diff --git a/ceilometer/publisher/monasca.py b/ceilometer/publisher/monasca.py
index 37aee07e..cb5ef16f 100755
--- a/ceilometer/publisher/monasca.py
+++ b/ceilometer/publisher/monasca.py
@@ -125,7 +125,7 @@ class MonascaPublisher(publisher.ConfigPublisherBase):
except Exception:
LOG.info(traceback.format_exc())
if hasattr(self, 'archive_handler'):
- self.archive_handler.publish_samples(None, metrics)
+ self.archive_handler.publish_samples(None, metrics)
def publish_samples(self, samples):
"""Main method called to publish samples."""
diff --git a/ceilometer/tests/unit/network/test_floating_ip.py b/ceilometer/tests/unit/network/test_floating_ip.py
index 74b0660a..f961c0ca 100644
--- a/ceilometer/tests/unit/network/test_floating_ip.py
+++ b/ceilometer/tests/unit/network/test_floating_ip.py
@@ -47,7 +47,7 @@ class TestFloatingIPPollster(_BaseTestFloatingIPPollster):
@staticmethod
def fake_get_fip_service():
return [{'router_id': 'e24f8a37-1bb7-49e4-833c-049bb21986d2',
- 'status': 'ACTIVE',
+ 'status': 'ACTIVE',
'tenant_id': '54a00c50ee4c4396b2f8dc220a2bed57',
'floating_network_id':
'f41f399e-d63e-47c6-9a19-21c4e4fbbba0',
@@ -56,7 +56,7 @@ class TestFloatingIPPollster(_BaseTestFloatingIPPollster):
'port_id': '93a0d2c7-a397-444c-9d75-d2ac89b6f209',
'id': '18ca27bf-72bc-40c8-9c13-414d564ea367'},
{'router_id': 'astf8a37-1bb7-49e4-833c-049bb21986d2',
- 'status': 'DOWN',
+ 'status': 'DOWN',
'tenant_id': '34a00c50ee4c4396b2f8dc220a2bed57',
'floating_network_id':
'gh1f399e-d63e-47c6-9a19-21c4e4fbbba0',
@@ -65,7 +65,7 @@ class TestFloatingIPPollster(_BaseTestFloatingIPPollster):
'port_id': '453a0d2c7-a397-444c-9d75-d2ac89b6f209',
'id': 'jkca27bf-72bc-40c8-9c13-414d564ea367'},
{'router_id': 'e2478937-1bb7-49e4-833c-049bb21986d2',
- 'status': 'error',
+ 'status': 'error',
'tenant_id': '54a0gggg50ee4c4396b2f8dc220a2bed57',
'floating_network_id':
'po1f399e-d63e-47c6-9a19-21c4e4fbbba0',
diff --git a/ceilometer/tests/unit/polling/test_dynamic_pollster.py b/ceilometer/tests/unit/polling/test_dynamic_pollster.py
index 4fdad264..53b65cc6 100644
--- a/ceilometer/tests/unit/polling/test_dynamic_pollster.py
+++ b/ceilometer/tests/unit/polling/test_dynamic_pollster.py
@@ -330,7 +330,7 @@ class TestDynamicPollster(base.BaseTestCase):
pollster = dynamic_pollster.DynamicPollster(
self.pollster_definition_only_required_fields)
pollster.definitions.sample_extractor.generate_new_metadata_fields(
- metadata, self.pollster_definition_only_required_fields)
+ metadata, self.pollster_definition_only_required_fields)
self.assertEqual(metadata_before_call, metadata)
diff --git a/tox.ini b/tox.ini
index 572d0635..13f5317b 100644
--- a/tox.ini
+++ b/tox.ini
@@ -28,7 +28,7 @@ commands =
coverage xml -o cover/coverage.xml
[testenv:pep8]
-deps = hacking<0.13,>=0.12
+deps = hacking>=3.0,<=3.1.0
doc8
commands =
flake8
@@ -65,14 +65,22 @@ ignore = D000
ignore-path = .venv,.git,.tox,*ceilometer/locale*,*lib/python*,ceilometer.egg*,doc/build,doc/source/api,releasenotes/*
[flake8]
-ignore =
+# E123 closing bracket does not match indentation of opening bracket's line
+# W503 line break before binary operator
+# W504 line break after binary operator
+ignore = E123,W503,W504
exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build,install-guide
show-source = True
[hacking]
import_exceptions =
ceilometer.i18n
-local-check-factory = ceilometer.hacking.checks.factory
+
+[flake8:local-plugins]
+extension =
+ C301 = checks:no_log_warn
+ C302 = checks:no_os_popen
+paths = ./ceilometer/hacking
[testenv:lower-constraints]
deps =