Exemple #1
0
 def test_update_query_parameters_no_node(self):
     """Test that a group by node filtered list causes filter addition when empty intersection of nodes."""
     query_parameters = {
         'group_by': {'node': ['node1', 'node5']}
     }
     access = {
         'openshift.cluster': {'read': ['cluster4', 'cluster2']},
     }
     with self.assertRaises(PermissionDenied):
         update_query_parameters_for_openshift(query_parameters, access)
Exemple #2
0
 def test_update_query_parameters_empty_intersection(self):
     """Test that a group by cluster filtered list causes 403 when empty intersection of clusters."""
     query_parameters = {
         'group_by': {'cluster': ['cluster1', 'cluster5']}
     }
     access = {
         'openshift.cluster': {'read': ['cluster4', 'cluster2']}
     }
     with self.assertRaises(PermissionDenied):
         update_query_parameters_for_openshift(query_parameters, access)
Exemple #3
0
 def test_update_query_parameters_empty_intersection_project(self):
     """Test that a group by project filtered list causes filter addition when empty intersection of nodes."""
     query_parameters = {
         'group_by': {'project': ['proj1', 'proj5']}
     }
     access = {
         'openshift.cluster': {'read': ['*']},
         'openshift.project': {'read': ['proj4', 'proj2']}
     }
     with self.assertRaises(PermissionDenied):
         update_query_parameters_for_openshift(query_parameters, access)
Exemple #4
0
    def __init__(self, query_parameters, url_data, tenant, **kwargs):
        """Establish OCP report query handler.

        Args:
            query_parameters    (Dict): parameters for query
            url_data        (String): URL string to provide order information
            tenant    (String): the tenant to use to access CUR data
            kwargs    (Dict): A dictionary for internal query alteration based on path
        """
        provider = 'OCP_AWS'
        if kwargs.get('access'):
            query_parameters = update_query_parameters_for_openshift(
                query_parameters, kwargs.get('access'))
        super().__init__(query_parameters,
                         url_data,
                         tenant,
                         provider=provider,
                         **kwargs)

        # Update which field is used to calculate cost by group by param.
        group_by = self._get_group_by()
        if (group_by and group_by[0] == 'project') or \
                'project' in self.query_parameters.get('filter', {}).keys():
            self._report_type = self._report_type + '_by_project'
            self._mapper = ProviderMap(provider=provider,
                                       report_type=self._report_type)
Exemple #5
0
 def test_update_query_parameters_filtered_intersection(self):
     """Test that a filter by cluster filtered list is replaced with only the intersection of cluster."""
     query_parameters = {'filter': {'cluster': ['cluster1', 'cluster5']}}
     access = {'openshift.cluster': {'read': ['cluster1', 'cluster2']}}
     out = update_query_parameters_for_openshift(query_parameters, access)
     expected = {'filter': {'cluster': ['cluster1']}}
     self.assertEqual(expected, out)
Exemple #6
0
 def test_update_query_parameters_add_cluster_filter_obj(self):
     """Test that if no group_by or filter is present a filter of cluster is added."""
     query_parameters = {}
     access = {'openshift.cluster': {'read': ['cluster1', 'cluster2']}}
     out = update_query_parameters_for_openshift(query_parameters, access)
     expected = {'filter': {'cluster': ['cluster1', 'cluster2']}}
     self.assertEqual(expected, out)
Exemple #7
0
 def test_update_query_parameters_replace_wildcard(self):
     """Test that a group by cluster wildcard is replaced with only the subset of clusters."""
     query_parameters = {'group_by': {'cluster': ['*']}}
     access = {'openshift.cluster': {'read': ['cluster1', 'cluster2']}}
     out = update_query_parameters_for_openshift(query_parameters, access)
     expected = {'group_by': {'cluster': ['cluster1', 'cluster2']}}
     self.assertEqual(expected, out)
Exemple #8
0
    def __init__(self, query_parameters, url_data, tenant, **kwargs):
        """Establish OCP report query handler.

        Args:
            query_parameters    (Dict): parameters for query
            url_data        (String): URL string to provide order information
            tenant    (String): the tenant to use to access CUR data
            kwargs    (Dict): A dictionary for internal query alteration based on path

        """
        provider = 'OCP'
        self._initialize_kwargs(kwargs)
        if kwargs.get('access'):
            query_parameters = update_query_parameters_for_openshift(
                query_parameters, kwargs.get('access'))

        self._mapper = OCPProviderMap(provider=provider,
                                      report_type=kwargs.get('report_type'))
        self.group_by_options = self._mapper.provider_map.get(
            'group_by_options')
        self.query_parameters = query_parameters
        self.url_data = url_data
        self._limit = self.get_query_param_data('filter', 'limit')

        # Update which field is used to calculate cost by group by param.
        group_by = self._get_group_by()
        if (group_by and 'project' in group_by
                or 'project' in self.query_parameters.get('filter', {}).keys()) \
                and kwargs.get('report_type') == 'costs':
            self._report_type = kwargs.get('report_type') + '_by_project'
            self._mapper = OCPProviderMap(provider=provider,
                                          report_type=self._report_type)

        super().__init__(query_parameters, tenant, **kwargs)
Exemple #9
0
 def test_update_query_parameters_with_wildcard(self):
     """Test wildcard doesn't update query parameters."""
     query_parameters = {
         'group_by': {'cluster': ['*']}
     }
     access = {
         'openshift.cluster': {'read': ['*']}
     }
     out = update_query_parameters_for_openshift(query_parameters, access)
     self.assertEqual(query_parameters, out)
Exemple #10
0
 def test_update_query_parameters_empty_intersection_cluster_node2(self):
     """Test that a group by node filtered list causes filter addition when empty intersection of nodes."""
     query_parameters = {
         'filter': {'node': ['node1']},
         'group_by': {'cluster': ['*']}
     }
     access = {
         'openshift.cluster': {'read': ['cluster4', 'cluster2']}
     }
     out = update_query_parameters_for_openshift(query_parameters, access)
     expected = {'filter': {'node': ['node1']}, 'group_by': {'cluster': ['cluster4', 'cluster2']}}
     self.assertEqual(expected, out)
Exemple #11
0
 def test_update_query_parameters_add_filter(self):
     """Test that addition of filter when not present."""
     query_parameters = {
         'group_by': {'cluster': ['cluster1']}
     }
     access = {
         'openshift.cluster': {'read': ['cluster1', 'cluster2']},
         'openshift.node': {'read': ['node4']}
     }
     out = update_query_parameters_for_openshift(query_parameters, access)
     expected = {
         'group_by': {'cluster': ['cluster1']},
         'filter': {'node': ['node4']}
     }
     print(out)
     self.assertEqual(expected, out)