Skip to content

Commit 6ffdd28

Browse files
authored
[COST-4993] gate ec2 endpoint with unleash (#5229)
1 parent 7aad9f8 commit 6ffdd28

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

koku/api/report/aws/view.py

+8
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@
33
# SPDX-License-Identifier: Apache-2.0
44
#
55
"""AWS views."""
6+
from rest_framework.exceptions import NotFound
7+
68
from api.common.permissions.aws_access import AwsAccessPermission
79
from api.common.permissions.aws_access import AWSOUAccessPermission
810
from api.models import Provider
911
from api.report.aws.query_handler import AWSReportQueryHandler
1012
from api.report.aws.serializers import AWSEC2ComputeQueryParamSerializer
1113
from api.report.aws.serializers import AWSQueryParamSerializer
1214
from api.report.view import ReportView
15+
from masu.processor import is_feature_cost_4403_ec2_compute_cost_enabled
1316

1417

1518
class AWSView(ReportView):
@@ -45,3 +48,8 @@ class AWSEC2ComputeView(AWSView):
4548

4649
report = "ec2_compute"
4750
serializer = AWSEC2ComputeQueryParamSerializer
51+
52+
def get(self, request, **kwargs):
53+
if not is_feature_cost_4403_ec2_compute_cost_enabled(request.user.customer.schema_name):
54+
raise NotFound()
55+
return super().get(request, **kwargs)

koku/api/report/test/aws/test_views.py

+18
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#
55
"""Test the AWS Report views."""
66
import copy
7+
from unittest.mock import patch
78

89
from django.urls import reverse
910
from rest_framework import status
@@ -601,6 +602,23 @@ def test_invalid_aws_category_key(self):
601602
response = self.client.get(url, **self.headers)
602603
self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
603604

605+
def test_ec2_compute_view_unleashed(self):
606+
"""Test EC2 compute view returns correct repsonses depending on unleash."""
607+
url = reverse("reports-aws-ec2-compute")
608+
with patch(
609+
"api.report.aws.view.is_feature_cost_4403_ec2_compute_cost_enabled",
610+
return_value=False,
611+
):
612+
response = self.client.get(url, **self.headers)
613+
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
614+
615+
with patch(
616+
"api.report.aws.view.is_feature_cost_4403_ec2_compute_cost_enabled",
617+
return_value=True,
618+
):
619+
response = self.client.get(url, **self.headers)
620+
self.assertEqual(response.status_code, status.HTTP_200_OK)
621+
604622
def test_ec2_compute_view_returns_default_time_period_params(self):
605623
"""Test EC2 compute view returns HTTP 200 and valid default meta filter."""
606624

tox.ini

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[tox]
2-
envlist = py39
2+
envlist = py311
33
skipsdist = True
44

55
[flake8]

0 commit comments

Comments
 (0)