From 7aca720f438c10e80ab3e2cfa294965b59015db2 Mon Sep 17 00:00:00 2001 From: Pierre Mavro Date: Sat, 8 Feb 2020 09:05:04 +0100 Subject: [PATCH 1/4] fix: avoid division by zero --- awslimitchecker/limit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/awslimitchecker/limit.py b/awslimitchecker/limit.py index 29d4682e..f9fe3912 100644 --- a/awslimitchecker/limit.py +++ b/awslimitchecker/limit.py @@ -429,7 +429,7 @@ class instance. Return True if usage is within thresholds, or false if for u in self._current_usage: usage = u.get_value() limit = u.get_maximum() or self.get_limit() - if limit is None: + if limit is None or limit == 0: continue pct = (usage / (limit * 1.0)) * 100 if crit_int is not None and usage >= crit_int: From 518b1d87fd8ae857c5cf98ff4483fa44a935946c Mon Sep 17 00:00:00 2001 From: Jason Antman Date: Tue, 3 Mar 2020 09:06:27 -0500 Subject: [PATCH 2/4] Add test for PR #458 --- awslimitchecker/tests/test_limit.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/awslimitchecker/tests/test_limit.py b/awslimitchecker/tests/test_limit.py index 8707dd2f..be7dd1c3 100644 --- a/awslimitchecker/tests/test_limit.py +++ b/awslimitchecker/tests/test_limit.py @@ -543,6 +543,26 @@ def test_ta_unlimited(self): assert mock_get_thresh.mock_calls == [call()] assert mock_get_limit.mock_calls == [call(), call(), call()] + def test_ta_zero(self): + limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2) + u1 = AwsLimitUsage(limit, 4, resource_id='foo4bar') + u2 = AwsLimitUsage(limit, 3, resource_id='foo3bar') + u3 = AwsLimitUsage(limit, 2, resource_id='foo2bar') + limit._current_usage = [u1, u2, u3] + limit._set_ta_unlimited() + with patch('awslimitchecker.limit.AwsLimit.' + '_get_thresholds') as mock_get_thresh: + with patch('awslimitchecker.limit.AwsLimit.get_' + 'limit') as mock_get_limit: + mock_get_thresh.return_value = (None, 40, None, 80) + mock_get_limit.return_value = 0 + res = limit.check_thresholds() + assert res is True + assert limit._warnings == [] + assert limit._criticals == [] + assert mock_get_thresh.mock_calls == [call()] + assert mock_get_limit.mock_calls == [call(), call(), call()] + def test_pct_warn(self): limit = AwsLimit('limitname', self.mock_svc, 100, 1, 2) u1 = AwsLimitUsage(limit, 4, resource_id='foo4bar') From 39e8d6b26c4eed5a6d3f602b9725ce23679c4da3 Mon Sep 17 00:00:00 2001 From: Jason Antman Date: Tue, 3 Mar 2020 09:09:05 -0500 Subject: [PATCH 3/4] 8.0.2 version bump and changelog --- CHANGES.rst | 7 +++++++ awslimitchecker/version.py | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGES.rst b/CHANGES.rst index a700e132..fe70aafe 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,6 +1,13 @@ Changelog ========= +.. _changelog.8_0_2: + +8.0.2 (2020-03-03) +------------------ + +* `PR #458 `_ - Fix for ZeroDivisionError on some Service Quotas limits that report as having a limit of zero. Thanks to `@deimosfr `__. + .. _changelog.8_0_1: 8.0.1 (2019-12-28) diff --git a/awslimitchecker/version.py b/awslimitchecker/version.py index 56ecd0ab..b11b8792 100644 --- a/awslimitchecker/version.py +++ b/awslimitchecker/version.py @@ -47,7 +47,7 @@ except ImportError: logger.error("Unable to import versionfinder", exc_info=True) -_VERSION_TUP = (8, 0, 1) +_VERSION_TUP = (8, 0, 2) _VERSION = '.'.join([str(x) for x in _VERSION_TUP]) _PROJECT_URL = 'https://github.com/jantman/awslimitchecker' From a239b0e8148d95c61386c43dcb0095725294611d Mon Sep 17 00:00:00 2001 From: Jason Antman Date: Tue, 3 Mar 2020 10:51:47 -0500 Subject: [PATCH 4/4] switch integration tests from sa-east-1 to ap-southeast-1 because of SES API timeouts --- awslimitchecker/tests/conftest.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/awslimitchecker/tests/conftest.py b/awslimitchecker/tests/conftest.py index 989fcb2b..742582fb 100644 --- a/awslimitchecker/tests/conftest.py +++ b/awslimitchecker/tests/conftest.py @@ -177,7 +177,7 @@ def param_for_integration_test_verify_usage(metafunc): False ], [ - {'region': 'sa-east-1'}, + {'region': 'ap-southeast-1'}, 'normal', None, False, @@ -278,7 +278,7 @@ def param_for_integration_test_verify_limits(metafunc): False ], [ - {'region': 'sa-east-1'}, + {'region': 'ap-southeast-1'}, 'normal', None, True,