diff options
-rw-r--r-- | ceilometer/compute/discovery.py | 2 | ||||
-rw-r--r-- | ceilometer/compute/pollsters/__init__.py | 7 | ||||
-rw-r--r-- | ceilometer/hacking/checks.py | 9 | ||||
-rw-r--r-- | ceilometer/ipmi/notifications/ironic.py | 2 | ||||
-rw-r--r-- | ceilometer/network/statistics/opendaylight/driver.py | 4 | ||||
-rw-r--r-- | ceilometer/objectstore/rgw.py | 20 | ||||
-rw-r--r-- | ceilometer/polling/dynamic_pollster.py | 6 | ||||
-rw-r--r-- | ceilometer/polling/manager.py | 2 | ||||
-rw-r--r-- | ceilometer/publisher/http.py | 3 | ||||
-rwxr-xr-x | ceilometer/publisher/monasca.py | 2 | ||||
-rw-r--r-- | ceilometer/tests/unit/network/test_floating_ip.py | 6 | ||||
-rw-r--r-- | ceilometer/tests/unit/polling/test_dynamic_pollster.py | 2 | ||||
-rw-r--r-- | tox.ini | 14 |
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) @@ -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 = |