예제 #1
0
 def test_get_limits_again(self):
     """test that existing limits dict is returned on subsequent calls"""
     mock_limits = Mock()
     cls = _EksService(21, 43, {}, None)
     cls.limits = mock_limits
     res = cls.get_limits()
     assert res == mock_limits
예제 #2
0
 def test_init(self):
     """test __init__()"""
     cls = _EksService(21, 43, {}, None)
     assert cls.service_name == 'EKS'
     assert cls.api_name == 'eks'
     assert cls.conn is None
     assert cls.warning_threshold == 21
     assert cls.critical_threshold == 43
예제 #3
0
 def test_get_limits(self):
     cls = _EksService(21, 43, {}, None)
     cls.limits = {}
     res = cls.get_limits()
     assert sorted(res.keys()) == sorted([
         'Clusters',
         'Control plane security groups per cluster',
         'Managed node groups per cluster',
         'Nodes per managed node group',
         'Public endpoint access CIDR ranges per cluster',
         'Fargate profiles per cluster',
         'Selectors per Fargate profile',
         'Label pairs per Fargate profile selector',
     ])
     for name, limit in res.items():
         assert limit.service == cls
         assert limit.def_warning_threshold == 21
         assert limit.def_critical_threshold == 43
예제 #4
0
 def test_find_usage(self):
     """test find usage method calls other methods"""
     mock_conn = Mock()
     with patch('%s.connect' % pb) as mock_connect:
         with patch.multiple(
                 pb,
                 _find_clusters_usage=DEFAULT,
         ) as mocks:
             cls = _EksService(21, 43, {}, None)
             cls.conn = mock_conn
             assert cls._have_usage is False
             cls.find_usage()
     assert mock_connect.mock_calls == [call()]
     assert cls._have_usage is True
     assert mock_conn.mock_calls == []
     for x in [
             '_find_clusters_usage',
     ]:
         assert mocks[x].mock_calls == [call()]
예제 #5
0
 def test_required_iam_permissions(self):
     cls = _EksService(21, 43, {}, None)
     assert cls.required_iam_permissions() == [
         "eks:ListClusters", "eks:DescribeCluster", "eks:ListNodegroups",
         "eks:ListFargateProfiles", "eks:DescribeFargateProfile"
     ]
예제 #6
0
    def test_find_clusters_usage(self):
        list_clusters = result_fixtures.EKS.test_find_clusters_usage_list
        describe_cluster = result_fixtures.EKS.test_find_clusters_usage_describe
        list_nodegroups = result_fixtures.EKS.test_find_clusters_usage_nodegrps
        list_fargates = result_fixtures.EKS.test_find_clusters_usage_fargates
        dsc_fargate = result_fixtures.EKS.test_find_clusters_usage_fargate_prof

        clusters_limit_key = 'Clusters'
        security_group_limit_key = 'Control plane security groups per cluster'
        nodegroup_limit_key = 'Managed node groups per cluster'
        public_cidr_limit_key = 'Public endpoint access CIDR ranges per cluster'
        fargate_profiles_limit_key = 'Fargate profiles per cluster'
        selectors_limit_key = 'Selectors per Fargate profile'
        label_pairs_limit_key = 'Label pairs per Fargate profile selector'

        mock_conn = Mock()
        mock_conn.list_clusters.return_value = list_clusters
        mock_conn.describe_cluster.side_effect = describe_cluster
        mock_conn.list_nodegroups.side_effect = list_nodegroups
        mock_conn.list_fargate_profiles.side_effect = list_fargates
        mock_conn.describe_fargate_profile.side_effect = dsc_fargate

        cls = _EksService(21, 43, {'region_name': 'us-west-2'}, None)
        cls.conn = mock_conn
        cls._find_clusters_usage()

        assert mock_conn.mock_calls == [
            call.list_clusters(),
            call.describe_cluster(name=ANY),
            call.list_nodegroups(clusterName=ANY),
            call.list_fargate_profiles(clusterName=ANY),
            call.describe_fargate_profile(clusterName=ANY,
                                          fargateProfileName=ANY),
            call.describe_cluster(name=ANY),
            call.list_nodegroups(clusterName=ANY),
            call.list_fargate_profiles(clusterName=ANY),
            call.describe_fargate_profile(clusterName=ANY,
                                          fargateProfileName=ANY),
            call.describe_fargate_profile(clusterName=ANY,
                                          fargateProfileName=ANY),
        ]
        assert len(cls.limits[clusters_limit_key].get_current_usage()) == 1
        assert cls.limits[clusters_limit_key].get_current_usage()[0].get_value(
        ) == 2

        assert len(
            cls.limits[security_group_limit_key].get_current_usage()) == 2
        assert cls.limits[security_group_limit_key].get_current_usage(
        )[0].get_value() == 1
        assert cls.limits[security_group_limit_key].get_current_usage(
        )[1].get_value() == 2

        assert len(cls.limits[nodegroup_limit_key].get_current_usage()) == 2
        assert cls.limits[nodegroup_limit_key].get_current_usage(
        )[0].get_value() == 2
        assert cls.limits[nodegroup_limit_key].get_current_usage(
        )[1].get_value() == 1

        assert len(cls.limits[public_cidr_limit_key].get_current_usage()) == 2
        assert cls.limits[public_cidr_limit_key].get_current_usage(
        )[0].get_value() == 3
        assert cls.limits[public_cidr_limit_key].get_current_usage(
        )[1].get_value() == 1

        assert len(
            cls.limits[fargate_profiles_limit_key].get_current_usage()) == 2
        assert cls.limits[fargate_profiles_limit_key].get_current_usage(
        )[0].get_value() == 1
        assert cls.limits[fargate_profiles_limit_key].get_current_usage(
        )[1].get_value() == 2

        assert len(cls.limits[selectors_limit_key].get_current_usage()) == 3
        assert cls.limits[selectors_limit_key].get_current_usage(
        )[0].get_value() == 1
        assert cls.limits[selectors_limit_key].get_current_usage(
        )[1].get_value() == 2
        assert cls.limits[selectors_limit_key].get_current_usage(
        )[2].get_value() == 3

        assert len(cls.limits[label_pairs_limit_key].get_current_usage()) == 6
        assert cls.limits[label_pairs_limit_key].get_current_usage(
        )[0].get_value() == 1
        assert cls.limits[label_pairs_limit_key].get_current_usage(
        )[1].get_value() == 1
        assert cls.limits[label_pairs_limit_key].get_current_usage(
        )[2].get_value() == 2
        assert cls.limits[label_pairs_limit_key].get_current_usage(
        )[3].get_value() == 1
        assert cls.limits[label_pairs_limit_key].get_current_usage(
        )[4].get_value() == 2
        assert cls.limits[label_pairs_limit_key].get_current_usage(
        )[5].get_value() == 3