def test_get_tenant_no_user(self): """Test that get_tenant() raises ValidationError when user is missing.""" user = Mock(customer=Mock(schema_name="acct10001")) with patch("api.query_params.Tenant.objects.get", side_effect=User.DoesNotExist): with self.assertRaises(ValidationError): get_tenant(user)
def retrieve(self, request, *args, **kwargs): """Get a provider.""" response = super().retrieve(request=request, args=args, kwargs=kwargs) tenant = get_tenant(request.user) manager = ProviderManager(kwargs['uuid']) response.data['infrastructure'] = manager.get_infrastructure_name( tenant) response.data['stats'] = manager.provider_statistics(tenant) return response
def list(self, request, *args, **kwargs): """Obtain the list of providers.""" response = super().list(request=request, args=args, kwargs=kwargs) for provider in response.data['data']: manager = ProviderManager(provider['uuid']) tenant = get_tenant(request.user) provider['stats'] = manager.provider_statistics(tenant) provider['infrastructure'] = manager.get_infrastructure_name( tenant) return response
def retrieve(self, request, *args, **kwargs): """Get a provider.""" response = super().retrieve(request=request, args=args, kwargs=kwargs) stats = request.query_params.get("stats", "false").lower() tenant = get_tenant(request.user) manager = ProviderManager(kwargs["uuid"]) response.data["infrastructure"] = manager.get_infrastructure_name() if stats == "true": response.data["stats"] = manager.provider_statistics(tenant) response.data["cost_models"] = [{ "name": model.name, "uuid": model.uuid } for model in manager.get_cost_models(tenant)] return response
def list(self, request, *args, **kwargs): """Obtain the list of providers.""" response = super().list(request=request, args=args, kwargs=kwargs) stats = request.query_params.get("stats", "false").lower() for provider in response.data["data"]: manager = ProviderManager(provider["uuid"]) tenant = get_tenant(request.user) if stats == "true": provider["stats"] = manager.provider_statistics(tenant) provider["infrastructure"] = manager.get_infrastructure_name() provider["cost_models"] = [{ "name": model.name, "uuid": model.uuid } for model in manager.get_cost_models(tenant)] return response
def retrieve(self, request, *args, **kwargs): """Get a provider.""" response = super().retrieve(request=request, args=args, kwargs=kwargs) stats = request.query_params.get('stats', 'false').lower() tenant = get_tenant(request.user) manager = ProviderManager(kwargs['uuid']) response.data['infrastructure'] = manager.get_infrastructure_name( tenant) if stats == 'true': response.data['stats'] = manager.provider_statistics(tenant) response.data['cost_models'] = [{ 'name': model.name, 'uuid': model.uuid } for model in manager.get_cost_models(tenant)] return response
def list(self, request, *args, **kwargs): """Obtain the list of providers.""" response = super().list(request=request, args=args, kwargs=kwargs) stats = request.query_params.get('stats', 'false').lower() for provider in response.data['data']: manager = ProviderManager(provider['uuid']) tenant = get_tenant(request.user) if stats == 'true': provider['stats'] = manager.provider_statistics(tenant) provider['infrastructure'] = manager.get_infrastructure_name( tenant) provider['cost_models'] = [{ 'name': model.name, 'uuid': model.uuid } for model in manager.get_cost_models(tenant)] return response
def test_get_tenant_invalid(self): """Test that get_tenant() raises ValidationError when user is invalid.""" with self.assertRaises(ValidationError): get_tenant(None)
def test_get_tenant(self): """Test that get_tenant() returns a Tenant.""" user = Mock(customer=Mock(schema_name="acct10001")) self.assertIsInstance(get_tenant(user), Tenant)
def get(self, request, **kwargs): tenant = get_tenant(request.user) with tenant_context(tenant): aws_account_count = AWSCostSummaryByAccountP.objects.values("usage_account_id").distinct().count() gcp_account_count = GCPCostSummaryByAccountP.objects.values("account_id").distinct().count() gcp_project_count = GCPCostSummaryByProjectP.objects.values("project_id").distinct().count() aws_org_unit_count = ( AWSOrganizationalUnit.objects.filter(deleted_timestamp__isnull=True) .values("org_unit_id") .distinct() .count() ) azure_sub_guid_count = AzureCostSummaryByAccountP.objects.values("subscription_guid").distinct().count() ocp_cluster_count = OCPCostSummaryP.objects.values("cluster_id").distinct().count() ocp_node_count = OCPCostSummaryByNodeP.objects.values("node").distinct().count() ocp_project_count = OCPCostSummaryByProjectP.objects.values("namespace").distinct().count() cost_model_count = CostModel.objects.count() aws_account_dict = { "value": "aws.account", "path": "/api/cost-management/v1/resource-types/aws-accounts/", "count": aws_account_count, } aws_org_unit_dict = { "value": "aws.organizational_unit", "path": "/api/cost-management/v1/resource-types/aws-organizational-units/", "count": aws_org_unit_count, } azure_sub_guid_dict = { "value": "azure.subscription_guid", "path": "/api/cost-management/v1/resource-types/azure-subscription-guids/", "count": azure_sub_guid_count, } ocp_cluster_dict = { "value": "openshift.cluster", "path": "/api/cost-management/v1/resource-types/openshift-clusters/", "count": ocp_cluster_count, } ocp_node_dict = { "value": "openshift.node", "path": "/api/cost-management/v1/resource-types/openshift-nodes/", "count": ocp_node_count, } ocp_project_dict = { "value": "openshift.project", "path": "/api/cost-management/v1/resource-types/openshift-projects/", "count": ocp_project_count, } gcp_account_dict = { "value": "gcp.account", "path": "/api/cost-management/v1/resource-types/gcp-accounts/", "count": gcp_account_count, } gcp_project_dict = { "value": "gcp.projects", "path": "/api/cost-management/v1/resource-types/gcp-projects/", "count": gcp_project_count, } cost_model_dict = { "value": "cost_model", "path": "/api/cost-management/v1/resource-types/cost-models/", "count": cost_model_count, } data = [ aws_account_dict, aws_org_unit_dict, azure_sub_guid_dict, ocp_cluster_dict, ocp_node_dict, ocp_project_dict, gcp_account_dict, gcp_project_dict, cost_model_dict, ] paginator = ListPaginator(data, request) return paginator.get_paginated_response(data)