Beispiel #1
0
 def test_find_usage_no_endpoint(self):
     exc = EndpointConnectionError(
         endpoint_url='https://efs.bad-region.amazonaws.com/'
     )
     mock_conn = Mock()
     with patch('%s.connect' % pb) as mock_connect:
         with patch('%s.paginate_dict' % pbm) as mock_paginate:
             mock_paginate.side_effect = exc
             cls = _EfsService(21, 43)
             cls.conn = mock_conn
             assert cls._have_usage is False
             cls.find_usage()
     assert cls._have_usage is True
     assert mock_connect.mock_calls == [call()]
     assert mock_paginate.mock_calls == [
         call(
             mock_conn.describe_file_systems,
             alc_marker_path=['NextMarker'],
             alc_data_path=['FileSystems'],
             alc_marker_param='Marker'
         )
     ]
     assert len(cls.limits) == 1
     usage = cls.limits['File systems'].get_current_usage()
     assert len(usage) == 0
Beispiel #2
0
 def test_find_usage_no_endpoint(self):
     exc = EndpointConnectionError(
         endpoint_url='https://efs.bad-region.amazonaws.com/'
     )
     mock_conn = Mock()
     with patch('%s.connect' % pb) as mock_connect:
         with patch('%s.paginate_dict' % pbm) as mock_paginate:
             mock_paginate.side_effect = exc
             cls = _EfsService(21, 43)
             cls.conn = mock_conn
             assert cls._have_usage is False
             cls.find_usage()
     assert cls._have_usage is True
     assert mock_connect.mock_calls == [call()]
     assert mock_paginate.mock_calls == [
         call(
             mock_conn.describe_file_systems,
             alc_marker_path=['NextMarker'],
             alc_data_path=['FileSystems'],
             alc_marker_param='Marker'
         )
     ]
     assert len(cls.limits) == 1
     usage = cls.limits['File systems'].get_current_usage()
     assert len(usage) == 0
Beispiel #3
0
 def test_find_usage_access_denied(self):
     exc = ClientError(
         {
             'Error': {
                 'Code': 'AccessDeniedException',
                 'Message': 'This account does not have permission '
                            'to access this service',
             }
         },
         'DescribeFileSystems'
     )
     mock_conn = Mock()
     with patch('%s.connect' % pb) as mock_connect:
         with patch('%s.paginate_dict' % pbm) as mock_paginate:
             mock_paginate.side_effect = exc
             cls = _EfsService(21, 43)
             cls.conn = mock_conn
             assert cls._have_usage is False
             cls.find_usage()
     assert cls._have_usage is True
     assert mock_connect.mock_calls == [call()]
     assert mock_paginate.mock_calls == [
         call(
             mock_conn.describe_file_systems,
             alc_marker_path=['NextMarker'],
             alc_data_path=['FileSystems'],
             alc_marker_param='Marker'
         )
     ]
     assert len(cls.limits) == 1
     usage = cls.limits['File systems'].get_current_usage()
     assert len(usage) == 0
Beispiel #4
0
 def test_find_usage(self):
     mock_conn = Mock()
     with patch('%s.connect' % pb) as mock_connect:
         with patch('%s.paginate_dict' % pbm) as mock_paginate:
             mock_paginate.return_value = {
                 'FileSystems': [
                     {'FileSystemId': 'foo'},
                     {'FileSystemId': 'bar'},
                     {'FileSystemId': 'baz'}
                 ]
             }
             cls = _EfsService(21, 43)
             cls.conn = mock_conn
             assert cls._have_usage is False
             cls.find_usage()
     assert cls._have_usage is True
     assert mock_connect.mock_calls == [call()]
     assert mock_paginate.mock_calls == [
         call(
             mock_conn.describe_file_systems,
             alc_marker_path=['NextMarker'],
             alc_data_path=['FileSystems'],
             alc_marker_param='Marker'
         )
     ]
     assert len(cls.limits) == 1
     usage = cls.limits['File systems'].get_current_usage()
     assert len(usage) == 1
     assert usage[0].get_value() == 3
     assert usage[0].aws_type == 'AWS::EFS::FileSystem'
Beispiel #5
0
 def test_get_limits_again(self):
     """test that existing limits dict is returned on subsequent calls"""
     mock_limits = Mock(spec_set=AwsLimit)
     cls = _EfsService(21, 43)
     cls.limits = mock_limits
     res = cls.get_limits()
     assert res == mock_limits
Beispiel #6
0
 def test_get_limits_again(self):
     """test that existing limits dict is returned on subsequent calls"""
     mock_limits = Mock(spec_set=AwsLimit)
     cls = _EfsService(21, 43)
     cls.limits = mock_limits
     res = cls.get_limits()
     assert res == mock_limits
 def test_find_usage_access_denied(self):
     exc = ClientError(
         {
             'Error': {
                 'Code': 'AccessDeniedException',
                 'Message': 'This account does not have permission '
                            'to access this service',
             }
         },
         'DescribeFileSystems'
     )
     mock_conn = Mock()
     with patch('%s.connect' % pb) as mock_connect:
         with patch('%s.paginate_dict' % pbm) as mock_paginate:
             mock_paginate.side_effect = exc
             cls = _EfsService(21, 43)
             cls.conn = mock_conn
             assert cls._have_usage is False
             cls.find_usage()
     assert cls._have_usage is True
     assert mock_connect.mock_calls == [call()]
     assert mock_paginate.mock_calls == [
         call(
             mock_conn.describe_file_systems,
             alc_marker_path=['NextMarker'],
             alc_data_path=['FileSystems'],
             alc_marker_param='Marker'
         )
     ]
     assert len(cls.limits) == 1
     usage = cls.limits['File systems'].get_current_usage()
     assert len(usage) == 0
Beispiel #8
0
 def test_find_usage(self):
     mock_conn = Mock()
     with patch('%s.connect' % pb) as mock_connect:
         with patch('%s.paginate_dict' % pbm) as mock_paginate:
             mock_paginate.return_value = {
                 'FileSystems': [
                     {'FileSystemId': 'foo'},
                     {'FileSystemId': 'bar'},
                     {'FileSystemId': 'baz'}
                 ]
             }
             cls = _EfsService(21, 43)
             cls.conn = mock_conn
             assert cls._have_usage is False
             cls.find_usage()
     assert cls._have_usage is True
     assert mock_connect.mock_calls == [call()]
     assert mock_paginate.mock_calls == [
         call(
             mock_conn.describe_file_systems,
             alc_marker_path=['NextMarker'],
             alc_data_path=['FileSystems'],
             alc_marker_param='Marker'
         )
     ]
     assert len(cls.limits) == 1
     usage = cls.limits['File systems'].get_current_usage()
     assert len(usage) == 1
     assert usage[0].get_value() == 3
     assert usage[0].aws_type == 'AWS::EFS::FileSystem'
Beispiel #9
0
 def test_init(self):
     """test __init__()"""
     cls = _EfsService(21, 43)
     assert cls.service_name == 'EFS'
     assert cls.api_name == 'efs'
     assert cls.conn is None
     assert cls.warning_threshold == 21
     assert cls.critical_threshold == 43
Beispiel #10
0
 def test_init(self):
     """test __init__()"""
     cls = _EfsService(21, 43)
     assert cls.service_name == 'EFS'
     assert cls.api_name == 'efs'
     assert cls.conn is None
     assert cls.warning_threshold == 21
     assert cls.critical_threshold == 43
Beispiel #11
0
 def test_get_limits(self):
     cls = _EfsService(21, 43)
     cls.limits = {}
     res = cls.get_limits()
     assert sorted(res.keys()) == sorted([
         'File systems',
     ])
     assert res['File systems'].service == cls
     assert res['File systems'].def_warning_threshold == 21
     assert res['File systems'].def_critical_threshold == 43
     assert res['File systems'].default_limit == 10
Beispiel #12
0
 def test_get_limits(self):
     cls = _EfsService(21, 43)
     cls.limits = {}
     res = cls.get_limits()
     assert sorted(res.keys()) == sorted([
         'File systems',
     ])
     assert res['File systems'].service == cls
     assert res['File systems'].def_warning_threshold == 21
     assert res['File systems'].def_critical_threshold == 43
     assert res['File systems'].default_limit == 1000
Beispiel #13
0
 def test_find_usage_connect_timeout(self):
     exc = ConnectTimeout()
     mock_conn = Mock()
     with patch('%s.connect' % pb) as mock_connect:
         with patch('%s.paginate_dict' % pbm) as mock_paginate:
             mock_paginate.side_effect = exc
             cls = _EfsService(21, 43)
             cls.conn = mock_conn
             assert cls._have_usage is False
             cls.find_usage()
     assert cls._have_usage is True
     assert mock_connect.mock_calls == [call()]
     assert mock_paginate.mock_calls == [
         call(mock_conn.describe_file_systems,
              alc_marker_path=['NextMarker'],
              alc_data_path=['FileSystems'],
              alc_marker_param='Marker')
     ]
     assert len(cls.limits) == 1
     usage = cls.limits['File systems'].get_current_usage()
     assert len(usage) == 0
 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
Beispiel #15
0
 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,
                 1000,
                 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 == 1000
Beispiel #16
0
 def test_find_usage_connect_timeout(self):
     exc = ConnectTimeout()
     mock_conn = Mock()
     with patch('%s.connect' % pb) as mock_connect:
         with patch('%s.paginate_dict' % pbm) as mock_paginate:
             mock_paginate.side_effect = exc
             cls = _EfsService(21, 43)
             cls.conn = mock_conn
             assert cls._have_usage is False
             cls.find_usage()
     assert cls._have_usage is True
     assert mock_connect.mock_calls == [call()]
     assert mock_paginate.mock_calls == [
         call(
             mock_conn.describe_file_systems,
             alc_marker_path=['NextMarker'],
             alc_data_path=['FileSystems'],
             alc_marker_param='Marker'
         )
     ]
     assert len(cls.limits) == 1
     usage = cls.limits['File systems'].get_current_usage()
     assert len(usage) == 0
Beispiel #17
0
 def test_required_iam_permissions(self):
     cls = _EfsService(21, 43)
     assert cls.required_iam_permissions() == [
         'elasticfilesystem:DescribeFileSystems'
     ]
Beispiel #18
0
 def test_required_iam_permissions(self):
     cls = _EfsService(21, 43)
     assert cls.required_iam_permissions() == [
         'elasticfilesystem:DescribeFileSystems'
     ]