chore(Tenant, Provider, Scan, Task, Resource): PRWLR-4966 Update default ordering in viewsets (#51)

* chore(Tenant, Provider, Scan, Task, Resource): PRWLR-4966 set default ordering to -inserted_at

* chore: PRWLR-4966 update API schema
This commit is contained in:
Víctor Fernández Poyatos
2024-10-04 14:33:18 +02:00
committed by GitHub
parent d98b716dfc
commit 8130880f2d
3 changed files with 280 additions and 33 deletions
+271 -23
View File
@@ -58,18 +58,47 @@ paths:
name: filter[delta]
schema:
type: string
nullable: true
enum:
- changed
- new
description: |-
* `new` - New
* `changed` - Changed
- in: query
name: filter[delta__in]
schema:
type: string
type: array
items:
type: string
description: Multiple values may be separated by commas.
explode: false
style: form
- in: query
name: filter[impact]
schema:
type: string
enum:
- critical
- high
- informational
- low
- medium
description: |-
* `critical` - Critical
* `high` - High
* `medium` - Medium
* `low` - Low
* `informational` - Informational
- in: query
name: filter[impact__in]
schema:
type: string
type: array
items:
type: string
description: Multiple values may be separated by commas.
explode: false
style: form
- in: query
name: filter[inserted_at]
schema:
@@ -98,8 +127,13 @@ paths:
- in: query
name: filter[provider__in]
schema:
type: string
format: uuid
type: array
items:
type: string
format: uuid
description: Multiple values may be separated by commas.
explode: false
style: form
- in: query
name: filter[provider_alias]
schema:
@@ -111,15 +145,46 @@ paths:
- in: query
name: filter[provider_alias__in]
schema:
type: string
type: array
items:
type: string
description: Multiple values may be separated by commas.
explode: false
style: form
- in: query
name: filter[provider_type]
schema:
type: string
enum:
- aws
- azure
- gcp
- kubernetes
description: |-
* `aws` - AWS
* `azure` - Azure
* `gcp` - GCP
* `kubernetes` - Kubernetes
- in: query
name: filter[provider_type__in]
schema:
type: string
type: array
items:
type: string
enum:
- aws
- azure
- gcp
- kubernetes
description: |-
Multiple values may be separated by commas.
* `aws` - AWS
* `azure` - Azure
* `gcp` - GCP
* `kubernetes` - Kubernetes
explode: false
style: form
- in: query
name: filter[provider_uid]
schema:
@@ -131,7 +196,12 @@ paths:
- in: query
name: filter[provider_uid__in]
schema:
type: string
type: array
items:
type: string
description: Multiple values may be separated by commas.
explode: false
style: form
- in: query
name: filter[region]
schema:
@@ -143,7 +213,12 @@ paths:
- in: query
name: filter[region__in]
schema:
type: string
type: array
items:
type: string
description: Multiple values may be separated by commas.
explode: false
style: form
- in: query
name: filter[resource_name]
schema:
@@ -155,7 +230,12 @@ paths:
- in: query
name: filter[resource_name__in]
schema:
type: string
type: array
items:
type: string
description: Multiple values may be separated by commas.
explode: false
style: form
- in: query
name: filter[resource_type]
schema:
@@ -167,7 +247,12 @@ paths:
- in: query
name: filter[resource_type__in]
schema:
type: string
type: array
items:
type: string
description: Multiple values may be separated by commas.
explode: false
style: form
- in: query
name: filter[resource_uid]
schema:
@@ -179,12 +264,22 @@ paths:
- in: query
name: filter[resource_uid__in]
schema:
type: string
type: array
items:
type: string
description: Multiple values may be separated by commas.
explode: false
style: form
- in: query
name: filter[resources]
schema:
type: string
format: uuid
type: array
items:
type: string
format: uuid
description: Multiple values may be separated by commas.
explode: false
style: form
- in: query
name: filter[scan]
schema:
@@ -210,23 +305,60 @@ paths:
- in: query
name: filter[service__in]
schema:
type: string
type: array
items:
type: string
description: Multiple values may be separated by commas.
explode: false
style: form
- in: query
name: filter[severity]
schema:
type: string
enum:
- critical
- high
- informational
- low
- medium
description: |-
* `critical` - Critical
* `high` - High
* `medium` - Medium
* `low` - Low
* `informational` - Informational
- in: query
name: filter[severity__in]
schema:
type: string
type: array
items:
type: string
description: Multiple values may be separated by commas.
explode: false
style: form
- in: query
name: filter[status]
schema:
type: string
enum:
- FAIL
- MANUAL
- MUTED
- PASS
description: |-
* `FAIL` - Fail
* `PASS` - Pass
* `MANUAL` - Manual
* `MUTED` - Muted
- in: query
name: filter[status__in]
schema:
type: string
type: array
items:
type: string
description: Multiple values may be separated by commas.
explode: false
style: form
- in: query
name: filter[updated_at]
schema:
@@ -437,10 +569,25 @@ paths:
name: filter[provider]
schema:
type: string
enum:
- aws
- azure
- gcp
- kubernetes
description: |-
* `aws` - AWS
* `azure` - Azure
* `gcp` - GCP
* `kubernetes` - Kubernetes
- in: query
name: filter[provider__in]
schema:
type: string
type: array
items:
type: string
description: Multiple values may be separated by commas.
explode: false
style: form
- name: filter[search]
required: false
in: query
@@ -756,15 +903,46 @@ paths:
- in: query
name: filter[provider_alias__in]
schema:
type: string
type: array
items:
type: string
description: Multiple values may be separated by commas.
explode: false
style: form
- in: query
name: filter[provider_type]
schema:
type: string
enum:
- aws
- azure
- gcp
- kubernetes
description: |-
* `aws` - AWS
* `azure` - Azure
* `gcp` - GCP
* `kubernetes` - Kubernetes
- in: query
name: filter[provider_type__in]
schema:
type: string
type: array
items:
type: string
enum:
- aws
- azure
- gcp
- kubernetes
description: |-
Multiple values may be separated by commas.
* `aws` - AWS
* `azure` - Azure
* `gcp` - GCP
* `kubernetes` - Kubernetes
explode: false
style: form
- in: query
name: filter[provider_uid]
schema:
@@ -776,7 +954,12 @@ paths:
- in: query
name: filter[provider_uid__in]
schema:
type: string
type: array
items:
type: string
description: Multiple values may be separated by commas.
explode: false
style: form
- in: query
name: filter[region]
schema:
@@ -1065,15 +1248,46 @@ paths:
- in: query
name: filter[provider_alias__in]
schema:
type: string
type: array
items:
type: string
description: Multiple values may be separated by commas.
explode: false
style: form
- in: query
name: filter[provider_type]
schema:
type: string
enum:
- aws
- azure
- gcp
- kubernetes
description: |-
* `aws` - AWS
* `azure` - Azure
* `gcp` - GCP
* `kubernetes` - Kubernetes
- in: query
name: filter[provider_type__in]
schema:
type: string
type: array
items:
type: string
enum:
- aws
- azure
- gcp
- kubernetes
description: |-
Multiple values may be separated by commas.
* `aws` - AWS
* `azure` - Azure
* `gcp` - GCP
* `kubernetes` - Kubernetes
explode: false
style: form
- in: query
name: filter[provider_uid]
schema:
@@ -1085,7 +1299,12 @@ paths:
- in: query
name: filter[provider_uid__in]
schema:
type: string
type: array
items:
type: string
description: Multiple values may be separated by commas.
explode: false
style: form
- name: filter[search]
required: false
in: query
@@ -1111,6 +1330,12 @@ paths:
name: filter[trigger]
schema:
type: string
enum:
- manual
- scheduled
description: |-
* `scheduled` - Scheduled
* `manual` - Manual
- name: page[number]
required: false
in: query
@@ -1313,6 +1538,23 @@ paths:
name: filter[state]
schema:
type: string
title: Task State
enum:
- available
- cancelled
- completed
- executing
- failed
- scheduled
description: |-
Current state of the task being run
* `available` - Available
* `scheduled` - Scheduled
* `executing` - Executing
* `completed` - Completed
* `failed` - Failed
* `cancelled` - Cancelled
- name: page[number]
required: false
in: query
@@ -1979,6 +2221,12 @@ paths:
name: filter[role]
schema:
type: string
enum:
- member
- owner
description: |-
* `owner` - Owner
* `member` - Member
- name: filter[search]
required: false
in: query
-3
View File
@@ -1416,9 +1416,6 @@ class TestResourceViewSet:
response = authenticated_client.get(reverse("resource-list"))
assert response.status_code == status.HTTP_200_OK
assert len(response.json()["data"]) == len(resources_fixture)
assert (
response.json()["data"][0]["attributes"]["uid"] == resources_fixture[0].uid
)
@pytest.mark.parametrize(
"filter_name, filter_value, expected_count",
+9 -7
View File
@@ -248,7 +248,7 @@ class TenantViewSet(BaseTenantViewset):
http_method_names = ["get", "post", "patch", "delete"]
filterset_class = TenantFilter
search_fields = ["name"]
ordering = ["inserted_at"]
ordering = ["-inserted_at"]
ordering_fields = ["name", "inserted_at", "updated_at"]
def get_queryset(self):
@@ -410,7 +410,7 @@ class ProviderViewSet(BaseRLSViewSet):
http_method_names = ["get", "post", "patch", "delete"]
filterset_class = ProviderFilter
search_fields = ["provider", "uid", "alias"]
ordering = ["inserted_at"]
ordering = ["-inserted_at"]
ordering_fields = [
"provider",
"uid",
@@ -525,7 +525,7 @@ class ScanViewSet(BaseRLSViewSet):
serializer_class = ScanSerializer
http_method_names = ["get", "post", "patch"]
filterset_class = ScanFilter
ordering = ["inserted_at"]
ordering = ["-inserted_at"]
ordering_fields = [
"name",
"trigger",
@@ -615,7 +615,7 @@ class TaskViewSet(BaseRLSViewSet):
http_method_names = ["get", "delete"]
filterset_class = TaskFilter
search_fields = ["name"]
ordering = ["inserted_at"]
ordering = ["-inserted_at"]
ordering_fields = ["inserted_at", "completed_at", "name", "state"]
def get_queryset(self):
@@ -653,11 +653,13 @@ class TaskViewSet(BaseRLSViewSet):
@extend_schema_view(
list=extend_schema(
summary="List all resources",
description="Retrieve a list of all resources with options for filtering by various criteria. Resources are objects that are discovered by Prowler. They can be anything from a single host to a whole VPC.",
description="Retrieve a list of all resources with options for filtering by various criteria. Resources are "
"objects that are discovered by Prowler. They can be anything from a single host to a whole VPC.",
),
retrieve=extend_schema(
summary="Retrieve data for a resource",
description="Fetch detailed information about a specific resource by their ID. A Resource is an object that is discovered by Prowler. It can be anything from a single host to a whole VPC.",
description="Fetch detailed information about a specific resource by their ID. A Resource is an object that "
"is discovered by Prowler. It can be anything from a single host to a whole VPC.",
),
)
@method_decorator(CACHE_DECORATOR, name="list")
@@ -667,7 +669,7 @@ class ResourceViewSet(BaseRLSViewSet):
serializer_class = ResourceSerializer
http_method_names = ["get"]
filterset_class = ResourceFilter
ordering = ["inserted_at"]
ordering = ["-inserted_at"]
ordering_fields = [
"provider_uid",
"uid",