Example #1
0
 def test_get_thresholds(self):
     limit = AwsLimit('limitname', self.mock_svc, 100, 1, 2)
     assert limit._get_thresholds() == (
         None,
         1,
         None,
         2
     )
Example #2
0
 def test_get_current_usage_str_none(self):
     limit = AwsLimit(
         'limitname',
         self.mock_svc,
         3,
         1,
         2
     )
     assert limit.get_current_usage_str() == '<unknown>'
Example #3
0
 def test_get_current_usage_str(self):
     limit = AwsLimit(
         'limitname',
         self.mock_svc,
         3,
         1,
         2
     )
     limit._add_current_usage(4)
     assert limit.get_current_usage_str() == '4'
Example #4
0
 def test_get_current_usage(self):
     limit = AwsLimit(
         'limitname',
         self.mock_svc,
         3,
         1,
         2
     )
     limit._current_usage = 2
     assert limit.get_current_usage() == 2
Example #5
0
 def test_get_current_usage_str_id(self):
     limit = AwsLimit(
         'limitname',
         self.mock_svc,
         3,
         1,
         2
     )
     limit._add_current_usage(4, resource_id='foobar')
     assert limit.get_current_usage_str() == 'foobar=4'
Example #6
0
 def test_set_api_limit(self):
     limit = AwsLimit(
         'limitname',
         self.mock_svc,
         3,
         1,
         2
     )
     assert limit.api_limit is None
     limit._set_api_limit(10)
     assert limit.api_limit == 10
Example #7
0
 def test_set_limit_override_ta_False(self):
     limit = AwsLimit(
         'limitname',
         self.mock_svc,
         3,
         1,
         2
     )
     limit.set_limit_override(1, override_ta=False)
     assert limit.limit_override == 1
     assert limit.default_limit == 3
     assert limit.override_ta is False
Example #8
0
 def test_set_limit_override(self):
     limit = AwsLimit(
         'limitname',
         self.mock_svc,
         3,
         1,
         2
     )
     limit.set_limit_override(10)
     assert limit.limit_override == 10
     assert limit.default_limit == 3
     assert limit.override_ta is True
Example #9
0
 def test_set_threshold_override(self):
     limit = AwsLimit('limitname', self.mock_svc, 100, 1, 2)
     limit.set_threshold_override(
         warn_percent=1,
         warn_count=2,
         crit_percent=3,
         crit_count=4
     )
     assert limit.warn_percent == 1
     assert limit.warn_count == 2
     assert limit.crit_percent == 3
     assert limit.crit_count == 4
Example #10
0
 def test_set_ta_unlimited(self):
     limit = AwsLimit(
         'limitname',
         self.mock_svc,
         3,
         1,
         2
     )
     assert limit.ta_limit is None
     assert limit.ta_unlimited is False
     limit._set_ta_unlimited()
     assert limit.ta_limit is None
     assert limit.ta_unlimited is True
Example #11
0
 def test_check_thresholds_pct_warn_crit(self):
     limit = AwsLimit('limitname', self.mock_svc, 100, 1, 2)
     u1 = AwsLimitUsage(limit, 50, resource_id='foo4bar')
     u2 = AwsLimitUsage(limit, 3, resource_id='foo3bar')
     u3 = AwsLimitUsage(limit, 95, resource_id='foo2bar')
     limit._current_usage = [u1, u2, u3]
     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 = 100
             res = limit.check_thresholds()
     assert res is False
     assert limit._warnings == [u1]
     assert limit._criticals == [u3]
     assert mock_get_thresh.mock_calls == [call()]
     assert mock_get_limit.mock_calls == [call()]
Example #12
0
 def test_check_thresholds_pct(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]
     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 = 100
             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()]
Example #13
0
 def test_init_valueerror(self):
     with pytest.raises(ValueError) as excinfo:
         AwsLimit('limitname', self.mock_svc, 3, 11, 7)
     if sys.version_info[0] > 2:
         msg = excinfo.value.args[0]
     else:
         msg = excinfo.value.message
     assert msg == "critical threshold must be greater " \
         "than warning threshold"
Example #14
0
 def test_check_thresholds_ta_unlimited(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 = None
             res = limit.check_thresholds()
     assert res is True
     assert limit._warnings == []
     assert limit._criticals == []
     assert mock_get_thresh.mock_calls == []
     assert mock_get_limit.mock_calls == [call()]
Example #15
0
def sample_limits():
    limits = {
        'SvcBar': {
            'barlimit1':
            AwsLimit(
                'barlimit1',
                'SvcBar',
                1,
                2,
                3,
                limit_type='ltbar1',
                limit_subtype='sltbar1',
            ),
            'bar limit2':
            AwsLimit(
                'bar limit2',
                'SvcBar',
                2,
                2,
                3,
                limit_type='ltbar2',
                limit_subtype='sltbar2',
            ),
        },
        'SvcFoo': {
            'foo limit3':
            AwsLimit(
                'foo limit3',
                'SvcFoo',
                3,
                2,
                3,
                limit_type='ltfoo3',
                limit_subtype='sltfoo3',
            ),
        },
    }
    limits['SvcBar']['bar limit2'].set_limit_override(99)
    limits['SvcFoo']['foo limit3']._set_ta_limit(10)
    return limits
Example #16
0
 def test_init(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 7, 11)
     assert limit.name == 'limitname'
     assert limit.service == self.mock_svc
     assert limit.default_limit == 3
     assert limit.limit_type is None
     assert limit.limit_subtype is None
     assert limit.limit_override is None
     assert limit.override_ta is True
     assert limit.ta_limit is None
     assert limit.api_limit is None
     assert limit.def_warning_threshold == 7
     assert limit.def_critical_threshold == 11
Example #17
0
 def test_simple(self):
     limit = AwsLimit(
         'limitname',
         self.mock_svc,
         3,
         1,
         2
     )
     assert limit._current_usage == []
     limit._add_current_usage(2)
     assert len(limit.get_current_usage()) == 1
     assert limit._current_usage[0].get_value() == 2
     limit._add_current_usage(4)
     assert len(limit.get_current_usage()) == 2
     assert limit._current_usage[1].get_value() == 4
Example #18
0
 def test_str_multi(self):
     limit = AwsLimit(
         'limitname',
         self.mock_svc,
         3,
         1,
         2
     )
     limit._add_current_usage(4)
     limit._add_current_usage(3)
     limit._add_current_usage(2)
     assert limit.get_current_usage_str() == 'max: 4 (2, 3, 4)'
Example #19
0
 def test_overridden(self):
     limit = AwsLimit('limitname', self.mock_svc, 100, 88, 99)
     limit.warn_percent = 1
     limit.warn_count = 2
     limit.crit_percent = 3
     limit.crit_count = 4
     assert limit._get_thresholds() == (
         2,
         1,
         4,
         3
     )
Example #20
0
 def test_str_multi_id(self):
     limit = AwsLimit(
         'limitname',
         self.mock_svc,
         3,
         1,
         2
     )
     limit._add_current_usage(4, resource_id='foo4bar')
     limit._add_current_usage(3, resource_id='foo3bar')
     limit._add_current_usage(2, resource_id='foo2bar')
     assert limit.get_current_usage_str() == 'max: foo4bar=4 (foo2bar=2, ' \
         'foo3bar=3, foo4bar=4)'
Example #21
0
    def __init__(self,
                 limit: AwsLimit,
                 type: str,
                 dimensions: list,
                 alarm_actions: List[str] = []):
        self.alarm_name = f'{limit.service.service_name} {limit.name} {type}'
        self.metric_name = f'{limit.service.service_name}-{limit.name}'
        self.alarm_actions = alarm_actions
        self.period = 3600  # 1h
        self.evaluation_period_sec = 4  # 4h
        self.dimensions = dimensions

        resource_id = self.get_resource_id_from_dimensions()
        if resource_id is not None:
            self.alarm_name += ' ' + resource_id

        if type == 'warn':
            self.threshold = limit.get_limit() * (
                limit.warn_percent or limit.def_warning_threshold / 100)
        elif type == 'crit':
            self.threshold = limit.get_limit() * (
                limit.crit_percent or limit.def_critical_threshold / 100)
        else:
            raise Exception(f'Unknown type "{type}" for Alarm')
Example #22
0
 def test_add_current_usage(self):
     limit = AwsLimit(
         'limitname',
         self.mock_svc,
         3,
         1,
         2
     )
     assert limit._current_usage == []
     limit._add_current_usage(2)
     assert len(limit.get_current_usage()) == 1
     assert limit._current_usage[0].get_value() == 2
     limit._add_current_usage(4)
     assert len(limit.get_current_usage()) == 2
     assert limit._current_usage[1].get_value() == 4
Example #23
0
 def test_get_current_usage_str_multi(self):
     limit = AwsLimit(
         'limitname',
         self.mock_svc,
         3,
         1,
         2
     )
     limit._add_current_usage(4)
     limit._add_current_usage(3)
     limit._add_current_usage(2)
     assert limit.get_current_usage_str() == 'max: 4 (2, 3, 4)'
Example #24
0
 def test_get_thresholds_overridden(self):
     limit = AwsLimit('limitname', self.mock_svc, 100, 88, 99)
     limit.warn_percent = 1
     limit.warn_count = 2
     limit.crit_percent = 3
     limit.crit_count = 4
     assert limit._get_thresholds() == (
         2,
         1,
         4,
         3
     )
Example #25
0
 def test_get_current_usage_str_multi_id(self):
     limit = AwsLimit(
         'limitname',
         self.mock_svc,
         3,
         1,
         2
     )
     limit._add_current_usage(4, resource_id='foo4bar')
     limit._add_current_usage(3, resource_id='foo3bar')
     limit._add_current_usage(2, resource_id='foo2bar')
     assert limit.get_current_usage_str() == 'max: foo4bar=4 (foo2bar=2, ' \
         'foo3bar=3, foo4bar=4)'
Example #26
0
 def test_init_type(self):
     limit = AwsLimit(
         'limitname',
         self.mock_svc,
         1,
         6,
         12,
         limit_type='foo',
         limit_subtype='bar',
     )
     assert limit.name == 'limitname'
     assert limit.service == self.mock_svc
     assert limit.default_limit == 1
     assert limit.limit_type == 'foo'
     assert limit.limit_subtype == 'bar'
     assert limit.limit_override is None
     assert limit.override_ta is True
     assert limit.def_warning_threshold == 6
     assert limit.def_critical_threshold == 12
Example #27
0
 def test_simple(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 7, 11)
     assert limit.name == 'limitname'
     assert limit.service == self.mock_svc
     assert limit.default_limit == 3
     assert limit.limit_type is None
     assert limit.limit_subtype is None
     assert limit.limit_override is None
     assert limit.override_ta is True
     assert limit.ta_limit is None
     assert limit.ta_unlimited is False
     assert limit.api_limit is None
     assert limit.def_warning_threshold == 7
     assert limit.def_critical_threshold == 11
     assert limit._ta_service_name is None
     assert limit._ta_limit_name is None
     assert limit._quotas_service_code is None
     assert limit._quotas_name is None
     assert limit._quotas_unit == 'None'
     assert limit.quotas_limit is None
     assert limit.quotas_unit_converter is None
 def test_update_limits_from_api(self):
     mock_conn = Mock()
     mock_conf = Mock()
     type(mock_conf).region_name = 'us-west-2'
     mock_conn._client_config = mock_conf
     with patch('%s.connect' % pb, create=True) as mock_connect:
         cls = _EfsService(21, 43)
         cls.conn = mock_conn
         cls.limits = {
             'File systems': AwsLimit(
                 'File systems',
                 cls,
                 125,
                 cls.warning_threshold,
                 cls.critical_threshold,
                 limit_type='AWS::EFS::FileSystem',
             )
         }
         cls._update_limits_from_api()
     assert mock_connect.mock_calls == [call()]
     assert mock_conn.mock_calls == []
     assert cls.limits['File systems'].default_limit == 125
Example #29
0
 def test_get_limit_source_ta_unlimited(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit._set_ta_unlimited()
     assert limit.get_limit_source() == SOURCE_TA
Example #30
0
 def test_get_limit_source_api_override_ta(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit._set_api_limit(40)
     limit._set_ta_limit(41)
     limit.set_limit_override(55)
     assert limit.get_limit_source() == SOURCE_OVERRIDE
Example #31
0
 def test_get_limit_source_override_no_override_ta(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit.set_limit_override(55, override_ta=False)
     limit._set_ta_limit(40)
     assert limit.get_limit_source() == SOURCE_TA
Example #32
0
 def test_get_limit_api_override_ta(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit.set_limit_override(55)
     limit._set_ta_limit(40)
     limit._set_api_limit(11)
     assert limit.get_limit() == 55
Example #33
0
 def test_get_limit_override(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit.set_limit_override(55)
     assert limit.get_limit() == 55
Example #34
0
 def test_get_current_usage_str_id(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit._add_current_usage(4, resource_id='foobar')
     assert limit.get_current_usage_str() == 'foobar=4'
Example #35
0
 def test_get_current_usage_str_none(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     assert limit.get_current_usage_str() == '<unknown>'
Example #36
0
 def test_get_limit_api(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit._set_api_limit(40)
     assert limit.get_limit() == 40
Example #37
0
 def test_get_limit_api_override_ta(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit.set_limit_override(55)
     limit._set_ta_limit(40)
     limit._set_api_limit(11)
     assert limit.get_limit() == 55
Example #38
0
 def test_get_limit_source_default(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     assert limit.get_limit_source() == SOURCE_DEFAULT
Example #39
0
 def test_get_limit_source_override_no_override_ta(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit.set_limit_override(55, override_ta=False)
     limit._set_ta_limit(40)
     assert limit.get_limit_source() == SOURCE_TA
Example #40
0
 def test_get_limit_source_ta(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit._set_ta_limit(40)
     assert limit.get_limit_source() == 2
Example #41
0
 def test_get_thresholds(self):
     limit = AwsLimit('limitname', self.mock_svc, 100, 1, 2)
     assert limit._get_thresholds() == (None, 1, None, 2)
Example #42
0
 def test_set_api_limit(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     assert limit.api_limit is None
     limit._set_api_limit(10)
     assert limit.api_limit == 10
Example #43
0
 def test_get_current_usage(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit._current_usage = 2
     assert limit.get_current_usage() == 2
Example #44
0
 def test_get_limit_ta_unlimited(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit.set_limit_override(55, override_ta=False)
     limit._set_ta_unlimited()
     assert limit.get_limit() is None
Example #45
0
 def test_get_current_usage_str(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit._add_current_usage(4)
     assert limit.get_current_usage_str() == '4'
Example #46
0
 def test_get_limit_override(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit.set_limit_override(55)
     assert limit.get_limit() == 55
Example #47
0
 def test_get_limit_default(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     assert limit.get_limit() == 3
Example #48
0
 def test_get_limit_default(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     assert limit.get_limit() == 3
Example #49
0
 def test_get_limit_api(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit._set_api_limit(40)
     assert limit.get_limit() == 40
Example #50
0
 def test_get_warnings(self):
     limit = AwsLimit('limitname', self.mock_svc, 100, 1, 2)
     m = Mock()
     limit._warnings = m
     assert limit.get_warnings() == m
Example #51
0
 def test_get_limit_source_default(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     assert limit.get_limit_source() == SOURCE_DEFAULT
Example #52
0
 def test_get_warnings(self):
     limit = AwsLimit('limitname', self.mock_svc, 100, 1, 2)
     m = Mock()
     limit._warnings = m
     assert limit.get_warnings() == m
Example #53
0
 def test_get_limit_source_api_ta(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit._set_api_limit(40)
     limit._set_ta_limit(41)
     assert limit.get_limit_source() == SOURCE_API
Example #54
0
 def test_get_limit_source_api_ta(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit._set_api_limit(40)
     limit._set_ta_limit(41)
     assert limit.get_limit_source() == SOURCE_API
Example #55
0
 def test_set_limit_override_ta_False(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit.set_limit_override(1, override_ta=False)
     assert limit.limit_override == 1
     assert limit.default_limit == 3
     assert limit.override_ta is False
Example #56
0
 def test_get_criticals(self):
     limit = AwsLimit('limitname', self.mock_svc, 100, 1, 2)
     m = Mock()
     limit._criticals = m
     assert limit.get_criticals() == m
Example #57
0
 def test_get_criticals(self):
     limit = AwsLimit('limitname', self.mock_svc, 100, 1, 2)
     m = Mock()
     limit._criticals = m
     assert limit.get_criticals() == m
Example #58
0
 def test_get_limit_source_api_override_ta(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit._set_api_limit(40)
     limit._set_ta_limit(41)
     limit.set_limit_override(55)
     assert limit.get_limit_source() == SOURCE_OVERRIDE
Example #59
0
 def test_ta_limit_name_default(self):
     limit = AwsLimit('limitname', self.mock_svc, 100, 1, 2)
     assert limit.ta_limit_name == 'limitname'
Example #60
0
 def test_get_limit_source_override_with_ta(self):
     limit = AwsLimit('limitname', self.mock_svc, 3, 1, 2)
     limit.set_limit_override(55)
     limit._set_ta_limit(40)
     assert limit.get_limit_source() == 1