chore(scan): New scan() function and fix an issue while scanning with only logs mode (#4068)

This commit is contained in:
Pepe Fagoaga
2024-05-23 11:35:35 +02:00
committed by GitHub
parent 6c54e305d9
commit 011c6c4571
3 changed files with 62 additions and 2 deletions
+2 -2
View File
@@ -564,6 +564,7 @@ def execute_checks(
audit_progress=0,
)
# Refactor(CLI): This needs to be moved somewhere in the CLI
if os.name != "nt":
try:
from resource import RLIMIT_NOFILE, getrlimit, setrlimit
@@ -591,8 +592,7 @@ def execute_checks(
check_findings = execute(
service,
check_name,
global_provider.type,
global_provider.identity,
global_provider,
services_executed,
checks_executed,
custom_checks_metadata,
View File
+60
View File
@@ -0,0 +1,60 @@
from typing import Any
from prowler.lib.check.check import execute
from prowler.lib.check.models import Check_Report
from prowler.lib.logger import logger
from prowler.providers.common.models import Audit_Metadata
def scan(
checks_to_execute: list,
global_provider: Any,
custom_checks_metadata: Any,
) -> list[Check_Report]:
try:
# List to store all the check's findings
all_findings = []
# Services and checks executed for the Audit Status
services_executed = set()
checks_executed = set()
# Initialize the Audit Metadata
# TODO: this should be done in the provider class
# Refactor(Core): Audit manager?
global_provider.audit_metadata = Audit_Metadata(
services_scanned=0,
expected_checks=checks_to_execute,
completed_checks=0,
audit_progress=0,
)
for check_name in checks_to_execute:
try:
# Recover service from check name
service = check_name.split("_")[0]
check_findings = execute(
service,
check_name,
global_provider,
services_executed,
checks_executed,
custom_checks_metadata,
)
all_findings.extend(check_findings)
# If check does not exists in the provider or is from another provider
except ModuleNotFoundError:
logger.error(
f"Check '{check_name}' was not found for the {global_provider.type.upper()} provider"
)
except Exception as error:
logger.error(
f"{check_name} - {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
)
except Exception as error:
logger.error(
f"{check_name} - {error.__class__.__name__}[{error.__traceback__.tb_lineno}]: {error}"
)
return all_findings