devsecops-engine-tools 1.46.1__py3-none-any.whl → 1.47.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of devsecops-engine-tools might be problematic. Click here for more details.

Files changed (21) hide show
  1. devsecops_engine_tools/engine_core/src/domain/model/threshold.py +1 -0
  2. devsecops_engine_tools/engine_core/src/domain/model/vulnerability_management.py +1 -0
  3. devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py +4 -0
  4. devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py +7 -5
  5. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py +44 -39
  6. devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py +64 -40
  7. devsecops_engine_tools/engine_dast/src/domain/usecases/dast_scan.py +7 -1
  8. devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/nuclei/nuclei_config.py +7 -2
  9. devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/iac_scan.py +0 -1
  10. devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/import_scan.py +2 -1
  11. devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/import_scan.py +3 -1
  12. devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py +6 -5
  13. devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py +11 -6
  14. devsecops_engine_tools/engine_utilities/sonarqube/src/domain/usecases/report_sonar.py +1 -0
  15. devsecops_engine_tools/engine_utilities/utils/utils.py +1 -0
  16. devsecops_engine_tools/version.py +1 -1
  17. {devsecops_engine_tools-1.46.1.dist-info → devsecops_engine_tools-1.47.0.dist-info}/METADATA +1 -1
  18. {devsecops_engine_tools-1.46.1.dist-info → devsecops_engine_tools-1.47.0.dist-info}/RECORD +21 -21
  19. {devsecops_engine_tools-1.46.1.dist-info → devsecops_engine_tools-1.47.0.dist-info}/WHEEL +0 -0
  20. {devsecops_engine_tools-1.46.1.dist-info → devsecops_engine_tools-1.47.0.dist-info}/entry_points.txt +0 -0
  21. {devsecops_engine_tools-1.46.1.dist-info → devsecops_engine_tools-1.47.0.dist-info}/top_level.txt +0 -0
@@ -10,4 +10,5 @@ class Threshold:
10
10
  self.vulnerability = LevelVulnerability(data.get("VULNERABILITY"))
11
11
  self.compliance = LevelCompliance(data.get("COMPLIANCE"))
12
12
  self.cve = data.get("CVE",[])
13
+ self.name = data.get("NAME", "default")
13
14
  self.quality_vulnerability_management = data.get("QUALITY_VULNERABILITY_MANAGEMENT") if data.get("QUALITY_VULNERABILITY_MANAGEMENT") else None
@@ -10,6 +10,7 @@ class VulnerabilityManagement:
10
10
  dict_args: any
11
11
  secret_tool: any
12
12
  config_tool: any
13
+ repository_provider: str
13
14
  source_code_management_uri: str
14
15
  base_compact_remote_config_url: str
15
16
  access_token: str
@@ -77,6 +77,7 @@ class BreakBuild:
77
77
  lambda item: any(
78
78
  exclusion.id == item.id
79
79
  and (exclusion.where in item.where or "all" in exclusion.where)
80
+ and exclusion.severity == item.severity
80
81
  for exclusion in exclusions
81
82
  ),
82
83
  findings_list,
@@ -349,6 +350,7 @@ class BreakBuild:
349
350
  and (
350
351
  elem.where in item.where or "all" in elem.where
351
352
  )
353
+ and elem.severity == item.severity
352
354
  ),
353
355
  None,
354
356
  ),
@@ -360,6 +362,7 @@ class BreakBuild:
360
362
  and (
361
363
  elem.where in item.where or "all" in elem.where
362
364
  )
365
+ and elem.severity == item.severity
363
366
  ),
364
367
  None,
365
368
  ),
@@ -371,6 +374,7 @@ class BreakBuild:
371
374
  and (
372
375
  elem.where in item.where or "all" in elem.where
373
376
  )
377
+ and elem.severity == item.severity
374
378
  ),
375
379
  None,
376
380
  ),
@@ -160,6 +160,7 @@ class HandleScan:
160
160
  dict_args,
161
161
  secret_tool,
162
162
  config_tool,
163
+ self.devops_platform_gateway.get_variable("repository_provider"),
163
164
  self.devops_platform_gateway.get_source_code_management_uri(),
164
165
  self.devops_platform_gateway.get_base_compact_remote_config_url(
165
166
  dict_args["remote_config_repo"]
@@ -218,11 +219,12 @@ class HandleScan:
218
219
  def _update_threshold_cve(
219
220
  self, input_core: InputCore, dict_args, secret_tool, config_tool
220
221
  ):
221
- input_core.threshold_defined.cve.extend(
222
- self.vulnerability_management.get_black_list(
223
- dict_args, secret_tool, config_tool
222
+ if input_core.threshold_defined.name == "default":
223
+ input_core.threshold_defined.cve.extend(
224
+ self.vulnerability_management.get_black_list(
225
+ dict_args, secret_tool, config_tool
226
+ )
224
227
  )
225
- )
226
228
 
227
229
  def _define_threshold_quality_vuln(
228
230
  self, input_core: InputCore, dict_args, secret_tool, config_tool
@@ -230,7 +232,7 @@ class HandleScan:
230
232
  quality_vulnerability_management = (
231
233
  input_core.threshold_defined.quality_vulnerability_management
232
234
  )
233
- if quality_vulnerability_management:
235
+ if quality_vulnerability_management and input_core.threshold_defined.name == "default":
234
236
  product_type = self.vulnerability_management.get_product_type_service(
235
237
  input_core.scope_pipeline, dict_args, secret_tool, config_tool
236
238
  )
@@ -7,7 +7,7 @@ from devsecops_engine_tools.engine_utilities.azuredevops.models.AzurePredefinedV
7
7
  SystemVariables,
8
8
  ReleaseVariables,
9
9
  AgentVariables,
10
- VMVariables
10
+ VMVariables,
11
11
  )
12
12
  from devsecops_engine_tools.engine_utilities.azuredevops.infrastructure.azure_devops_api import (
13
13
  AzureDevopsApi,
@@ -57,11 +57,16 @@ class AzureDevops(DevopsPlatformGateway):
57
57
  return AzureMessageResultPipeline.SucceededWithIssues.value
58
58
 
59
59
  def get_source_code_management_uri(self):
60
- source_code_management_uri = (
61
- f"{SystemVariables.System_TeamFoundationCollectionUri.value()}"
62
- f"{SystemVariables.System_TeamProject.value()}/_git/{BuildVariables.Build_Repository_Name.value()}"
63
- )
64
- return source_code_management_uri.replace(" ", "%20")
60
+ source_code_management_uri = {
61
+ "tfsgit": (
62
+ f"{SystemVariables.System_TeamFoundationCollectionUri.value()}"
63
+ f"{SystemVariables.System_TeamProject.value()}/_git/{BuildVariables.Build_Repository_Name.value()}"
64
+ ).replace(" ", "%20"),
65
+ "github": (
66
+ f"https://github.com/{BuildVariables.Build_Repository_Name.value()}"
67
+ ),
68
+ }
69
+ return source_code_management_uri.get(BuildVariables.Build_Repository_Provider.value().lower())
65
70
 
66
71
  def get_base_compact_remote_config_url(self, remote_config_repo):
67
72
  return (
@@ -75,36 +80,36 @@ class AzureDevops(DevopsPlatformGateway):
75
80
 
76
81
  def get_variable(self, variable):
77
82
 
78
- variable_map = {
79
- "branch_name": BuildVariables.Build_SourceBranchName,
80
- "build_id": BuildVariables.Build_BuildNumber,
81
- "build_execution_id": BuildVariables.Build_BuildId,
82
- "commit_hash": BuildVariables.Build_SourceVersion,
83
- "environment": ReleaseVariables.Environment,
84
- "release_id": ReleaseVariables.Release_Releaseid,
85
- "branch_tag": BuildVariables.Build_SourceBranch,
86
- "access_token": SystemVariables.System_AccessToken,
87
- "organization": SystemVariables.System_TeamFoundationCollectionUri,
88
- "project_name": SystemVariables.System_TeamProject,
89
- "repository": BuildVariables.Build_Repository_Name,
90
- "pipeline_name": (
91
- BuildVariables.Build_DefinitionName
92
- if SystemVariables.System_HostType.value() == "build"
93
- else ReleaseVariables.Release_Definitionname
94
- ),
95
- "stage": SystemVariables.System_HostType,
96
- "path_directory": SystemVariables.System_DefaultWorkingDirectory,
97
- "os": AgentVariables.Agent_OS,
98
- "temp_directory": AgentVariables.Agent_TempDirectory,
99
- "target_branch": SystemVariables.System_TargetBranchName,
100
- "source_branch": SystemVariables.System_SourceBranch,
101
- "repository_provider": BuildVariables.Build_Repository_Provider,
102
- "pull_request_id": SystemVariables.System_PullRequestId,
103
- "vm_product_type_name": VMVariables.Vm_Product_Type_Name,
104
- "vm_product_name": VMVariables.Vm_Product_Name,
105
- "vm_product_description": VMVariables.Vm_Product_Description,
106
- }
107
- try:
108
- return variable_map.get(variable).value()
109
- except ValueError:
110
- return None
83
+ variable_map = {
84
+ "branch_name": BuildVariables.Build_SourceBranchName,
85
+ "build_id": BuildVariables.Build_BuildNumber,
86
+ "build_execution_id": BuildVariables.Build_BuildId,
87
+ "commit_hash": BuildVariables.Build_SourceVersion,
88
+ "environment": ReleaseVariables.Environment,
89
+ "release_id": ReleaseVariables.Release_Releaseid,
90
+ "branch_tag": BuildVariables.Build_SourceBranch,
91
+ "access_token": SystemVariables.System_AccessToken,
92
+ "organization": SystemVariables.System_TeamFoundationCollectionUri,
93
+ "project_name": SystemVariables.System_TeamProject,
94
+ "repository": BuildVariables.Build_Repository_Name,
95
+ "pipeline_name": (
96
+ BuildVariables.Build_DefinitionName
97
+ if SystemVariables.System_HostType.value() == "build"
98
+ else ReleaseVariables.Release_Definitionname
99
+ ),
100
+ "stage": SystemVariables.System_HostType,
101
+ "path_directory": SystemVariables.System_DefaultWorkingDirectory,
102
+ "os": AgentVariables.Agent_OS,
103
+ "temp_directory": AgentVariables.Agent_TempDirectory,
104
+ "target_branch": SystemVariables.System_TargetBranchName,
105
+ "source_branch": SystemVariables.System_SourceBranch,
106
+ "repository_provider": BuildVariables.Build_Repository_Provider,
107
+ "pull_request_id": SystemVariables.System_PullRequestId,
108
+ "vm_product_type_name": VMVariables.Vm_Product_Type_Name,
109
+ "vm_product_name": VMVariables.Vm_Product_Name,
110
+ "vm_product_description": VMVariables.Vm_Product_Description,
111
+ }
112
+ try:
113
+ return variable_map.get(variable).value()
114
+ except ValueError:
115
+ return None
@@ -49,6 +49,28 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
49
49
  TRANSFERRED_FINDING = "Transferred Finding"
50
50
  ON_WHITELIST = "On Whitelist"
51
51
 
52
+ enviroment_mapping = {
53
+ "dev": "Development",
54
+ "qa": "Staging",
55
+ "pdn": "Production",
56
+ "default": "Production",
57
+ }
58
+
59
+ scan_type_mapping = {
60
+ "CHECKOV": "Checkov Scan",
61
+ "PRISMA": "Twistlock Image Scan",
62
+ "XRAY": "JFrog Xray On Demand Binary Scan",
63
+ "TRUFFLEHOG": "Trufflehog Scan",
64
+ "TRIVY": "Trivy Scan",
65
+ "KUBESCAPE": "Kubescape JSON Importer",
66
+ "KICS": "KICS Scan",
67
+ "BEARER": "Bearer CLI",
68
+ "DEPENDENCY_CHECK": "Dependency Check Scan",
69
+ "SONARQUBE": "SonarQube API Import",
70
+ "GITLEAKS": "Gitleaks Scan",
71
+ "NUCLEI": "Nuclei Scan",
72
+ }
73
+
52
74
  def send_vulnerability_management(
53
75
  self, vulnerability_management: VulnerabilityManagement
54
76
  ):
@@ -65,27 +87,6 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
65
87
  else vulnerability_management.secret_tool["token_cmdb"]
66
88
  )
67
89
 
68
- enviroment_mapping = {
69
- "dev": "Development",
70
- "qa": "Staging",
71
- "pdn": "Production",
72
- "default": "Production",
73
- }
74
- scan_type_mapping = {
75
- "CHECKOV": "Checkov Scan",
76
- "PRISMA": "Twistlock Image Scan",
77
- "XRAY": "JFrog Xray On Demand Binary Scan",
78
- "TRUFFLEHOG": "Trufflehog Scan",
79
- "TRIVY": "Trivy Scan",
80
- "KUBESCAPE": "Kubescape Scanner",
81
- "KICS": "KICS Scanner",
82
- "BEARER": "Bearer CLI",
83
- "DEPENDENCY_CHECK": "Dependency Check Scan",
84
- "SONARQUBE": "SonarQube API Import",
85
- "GITLEAKS": "Gitleaks Scan",
86
- "NUCLEI": "Nuclei Scan",
87
- }
88
-
89
90
  if any(
90
91
  branch in str(vulnerability_management.branch_tag)
91
92
  for branch in vulnerability_management.config_tool[
@@ -94,11 +95,24 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
94
95
  ) or (vulnerability_management.dict_args["module"] == "engine_secret"):
95
96
  tags = [vulnerability_management.dict_args["module"]]
96
97
  if vulnerability_management.dict_args["module"] == "engine_iac":
97
- tags = [f"{vulnerability_management.dict_args['module']}_{'_'.join(vulnerability_management.dict_args['platform'])}"]
98
- if vulnerability_management.dict_args["module"] == "engine_container" and sum(1 for line in open("scanned_images.txt", 'r', encoding='utf-8') if line.strip()) > 1:
99
- match = re.search(r"(?<=:)([^-]+)", vulnerability_management.dict_args['image_to_scan'])
98
+ tags = [
99
+ f"{vulnerability_management.dict_args['module']}_{'_'.join(vulnerability_management.dict_args['platform'])}"
100
+ ]
101
+ if (
102
+ vulnerability_management.dict_args["module"] == "engine_container"
103
+ and sum(
104
+ 1
105
+ for line in open("scanned_images.txt", "r", encoding="utf-8")
106
+ if line.strip()
107
+ )
108
+ > 1
109
+ ):
110
+ match = re.search(
111
+ r"(?<=:)([^-]+)",
112
+ vulnerability_management.dict_args["image_to_scan"],
113
+ )
100
114
  tags.append(match.group(1) if match else None)
101
-
115
+
102
116
  use_cmdb = vulnerability_management.config_tool[
103
117
  "VULNERABILITY_MANAGER"
104
118
  ]["DEFECT_DOJO"]["CMDB"]["USE_CMDB"]
@@ -107,8 +121,6 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
107
121
  vulnerability_management,
108
122
  token_cmdb,
109
123
  token_dd,
110
- scan_type_mapping,
111
- enviroment_mapping,
112
124
  tags,
113
125
  use_cmdb,
114
126
  )
@@ -422,7 +434,9 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
422
434
 
423
435
  exclusions_black_list = self._get_finding_exclusion(
424
436
  session_manager,
425
- config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"]["MAX_RETRIES_QUERY"],
437
+ config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"][
438
+ "MAX_RETRIES_QUERY"
439
+ ],
426
440
  {
427
441
  "type": "black_list",
428
442
  },
@@ -439,28 +453,37 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
439
453
  vulnerability_management: VulnerabilityManagement,
440
454
  token_cmdb,
441
455
  token_dd,
442
- scan_type_mapping,
443
- enviroment_mapping,
444
456
  tags,
445
457
  use_cmdb: bool,
446
458
  ):
459
+ tool_scm_conf_mapping = vulnerability_management.config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"]["TOOL_SCM_MAPPING"]
447
460
  common_fields = {
448
- "scan_type": scan_type_mapping[vulnerability_management.scan_type],
461
+ "scan_type": self.scan_type_mapping[vulnerability_management.scan_type],
449
462
  "file": vulnerability_management.input_core.path_file_results,
450
463
  "engagement_name": vulnerability_management.input_core.scope_pipeline,
451
464
  "source_code_management_uri": vulnerability_management.source_code_management_uri,
465
+ "tool_scm_configuration": (
466
+ tool_scm_conf_mapping[
467
+ vulnerability_management.repository_provider.upper()
468
+ ]
469
+ if vulnerability_management.repository_provider is not None
470
+ and vulnerability_management.repository_provider.upper()
471
+ in tool_scm_conf_mapping
472
+ else tool_scm_conf_mapping["DEFAULT"]
473
+ ),
452
474
  "tags": tags,
453
475
  "version": vulnerability_management.version,
454
476
  "build_id": vulnerability_management.build_id,
455
477
  "branch_tag": vulnerability_management.branch_tag,
456
478
  "commit_hash": vulnerability_management.commit_hash,
457
479
  "service": vulnerability_management.input_core.scope_pipeline,
458
- "test_title": '_'.join(tags),
480
+ "test_title": "_".join(tags),
459
481
  "environment": (
460
- enviroment_mapping[vulnerability_management.environment.lower()]
482
+ self.enviroment_mapping[vulnerability_management.environment.lower()]
461
483
  if vulnerability_management.environment is not None
462
- and vulnerability_management.environment.lower() in enviroment_mapping
463
- else enviroment_mapping["default"]
484
+ and vulnerability_management.environment.lower()
485
+ in self.enviroment_mapping
486
+ else self.enviroment_mapping["default"]
464
487
  ),
465
488
  "token_defect_dojo": token_dd,
466
489
  "host_defect_dojo": vulnerability_management.config_tool[
@@ -469,8 +492,9 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
469
492
  "expression": vulnerability_management.config_tool["VULNERABILITY_MANAGER"][
470
493
  "DEFECT_DOJO"
471
494
  ]["CMDB"]["REGEX_EXPRESSION_CMDB"],
472
- "reimport_scan": vulnerability_management.config_tool["VULNERABILITY_MANAGER"][
473
- "DEFECT_DOJO"]["REIMPORT_SCAN"]
495
+ "reimport_scan": vulnerability_management.config_tool[
496
+ "VULNERABILITY_MANAGER"
497
+ ]["DEFECT_DOJO"]["REIMPORT_SCAN"],
474
498
  }
475
499
 
476
500
  if use_cmdb:
@@ -625,7 +649,7 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
625
649
  ).results
626
650
 
627
651
  return Utils().retries_requests(request_func, max_retries, retry_delay=5)
628
-
652
+
629
653
  def _get_finding_exclusion(self, session_manager, max_retries, query_params):
630
654
  def request_func():
631
655
  return FindingExclusion.get_finding_exclusion(
@@ -704,7 +728,7 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
704
728
  where=self._get_where(finding, tool),
705
729
  create_date=create_date,
706
730
  expired_date=expired_date,
707
- severity=finding.severity,
731
+ severity=finding.severity.lower(),
708
732
  reason=reason,
709
733
  )
710
734
 
@@ -789,4 +813,4 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
789
813
  return self._get_where(finding, tag)
790
814
  return finding.file_path
791
815
  else:
792
- return finding.file_path
816
+ return finding.file_path
@@ -14,6 +14,7 @@ from devsecops_engine_tools.engine_core.src.domain.model.exclusions import (
14
14
  Exclusions,
15
15
  )
16
16
  from devsecops_engine_tools.engine_core.src.domain.model.threshold import Threshold
17
+ from devsecops_engine_tools.engine_utilities.utils.utils import Utils
17
18
 
18
19
  class DastScan:
19
20
  def __init__(
@@ -118,7 +119,12 @@ class DastScan:
118
119
 
119
120
  input_core = InputCore(
120
121
  totalized_exclusions=totalized_exclusions,
121
- threshold_defined=Threshold(config_tool.get("THRESHOLD")),
122
+ threshold_defined=Utils.update_threshold(
123
+ self,
124
+ Threshold(config_tool['THRESHOLD']),
125
+ exclusions,
126
+ config_tool["SCOPE_PIPELINE"],
127
+ ),
122
128
  path_file_results=path_file_results,
123
129
  custom_message_break_build=config_tool.get("MESSAGE_INFO_DAST"),
124
130
  scope_pipeline=config_tool.get("SCOPE_PIPELINE"),
@@ -32,8 +32,13 @@ class NucleiConfig:
32
32
  template_data["http"][0]["path"] = [
33
33
  "{{BaseURL}}" + new_template_data["operation"]["path"]
34
34
  ]
35
- if "headers" in template_data.get("http", [{}])[0]:
36
- template_data["http"][0]["headers"] = new_template_data["operation"]["headers"]
35
+ if "headers" in new_template_data["operation"]:
36
+ if "headers" not in template_data["http"][0]:
37
+ template_data["http"][0]["headers"] = new_template_data["operation"]["headers"]
38
+ else:
39
+ for header, value in new_template_data["operation"]["headers"].items():
40
+ if header not in template_data["http"][0]["headers"]:
41
+ template_data["http"][0]["headers"][header] = value
37
42
  if "payload" in new_template_data["operation"]:
38
43
  body = json_dumps(new_template_data["operation"]["payload"])
39
44
  template_data["http"][0]["body"] = body
@@ -13,7 +13,6 @@ from devsecops_engine_tools.engine_core.src.domain.model.exclusions import Exclu
13
13
  from devsecops_engine_tools.engine_core.src.domain.model.input_core import InputCore
14
14
  from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
15
15
  from devsecops_engine_tools.engine_utilities import settings
16
- from devsecops_engine_tools.engine_core.src.domain.model.threshold import Threshold
17
16
  from devsecops_engine_tools.engine_utilities.utils.utils import Utils
18
17
 
19
18
  logger = MyLogger.__call__(**settings.SETTING_LOGGER).get_logger()
@@ -37,7 +37,8 @@ class ImportScanRequest:
37
37
  create_finding_groups_for_all_findings: str = ""
38
38
  # ****another parameter outside defect dojo*****
39
39
  product_description: str = ""
40
- tools_configuration: str = ""
40
+ tool_sonarqube_configuration: str = ""
41
+ tool_scm_configuration: str = ""
41
42
  code_app: str = ""
42
43
  token_cmdb: str = ""
43
44
  host_cmdb: str = ""
@@ -83,6 +83,7 @@ list_scan_type = [
83
83
  "JFrog Xray On Demand Binary Scan",
84
84
  "JFrog Xray Scan",
85
85
  "JFrog Xray Unified Scan",
86
+ "Kubescape JSON Importer",
86
87
  "KICS Scan",
87
88
  "Kiuwan Scan",
88
89
  "kube-bench Scan",
@@ -201,7 +202,8 @@ class ImportScanSerializer(Schema):
201
202
  test_title = fields.Str(required=False)
202
203
  product_description = fields.Str(required=False)
203
204
  create_finding_groups_for_all_findings = fields.Str(required=False)
204
- tools_configuration = fields.Int(required=False, load_default=1)
205
+ tool_sonarqube_configuration = fields.Int(required=False, load_default=1)
206
+ tool_scm_configuration = fields.Int(required=False)
205
207
  code_app = fields.Str(required=False)
206
208
  # defect-dojo credential
207
209
  token_cmdb = fields.Str(required=False)
@@ -25,6 +25,7 @@ class ImportScanUserCase:
25
25
  rest_product: ProductRestConsumer,
26
26
  rest_scan_configuration: ScanConfigrationRestConsumer,
27
27
  rest_engagement: EngagementRestConsumer,
28
+
28
29
  ):
29
30
  self.__rest_import_scan = rest_import_scan
30
31
  self.__rest_product_type = rest_product_type
@@ -110,7 +111,7 @@ class ImportScanUserCase:
110
111
  scan_configuration_list = self.__rest_scan_configurations.get_api_scan_configuration(request)
111
112
  if scan_configuration_list.results == []:
112
113
  scan_configuration = self.__rest_scan_configurations.post_api_scan_configuration(
113
- request, product_id, request.tools_configuration
114
+ request, product_id, request.tool_sonarqube_configuration
114
115
  )
115
116
  request.api_scan_configuration = scan_configuration.id
116
117
  logger.debug(f"Scan configuration create service_key_1 : {scan_configuration.service_key_1}")
@@ -123,14 +124,14 @@ class ImportScanUserCase:
123
124
  logger.debug(f"search Engagement name: {request.engagement_name}")
124
125
  engagement = self.__rest_engagement.get_engagements(request.engagement_name)
125
126
  if engagement.results == [] or not any(engagement.name == request.engagement_name for engagement in engagement.results):
126
- engagement = self.__rest_engagement.post_engagement(request.engagement_name, product_id)
127
- logger.debug(f"Egagement created: {engagement.name}")
127
+ engagement = self.__rest_engagement.post_engagement(request, product_id, request.tool_scm_configuration)
128
+ logger.debug(f"Engagement created: {engagement.name}")
128
129
  else:
129
130
  engagement = [engagement for engagement in engagement.results if engagement.product == product_id and engagement.name == request.engagement_name]
130
131
  if engagement:
131
132
  logger.debug(f"Engagement found: {engagement[0].name} whit product id: {engagement[0].product}")
132
133
  else:
133
- engagement = self.__rest_engagement.post_engagement(request.engagement_name, product_id)
134
- logger.debug(f"Egagement created: {engagement.name} whit product id {engagement.product}")
134
+ engagement = self.__rest_engagement.post_engagement(request, product_id, request.tool_scm_configuration)
135
+ logger.debug(f"Engagement created: {engagement.name} whit product id {engagement.product}")
135
136
 
136
137
  return self.import_scan(request, api_scan_bool)
@@ -57,25 +57,30 @@ class EngagementRestConsumer:
57
57
  raise ApiError(e)
58
58
  return engagements
59
59
 
60
- def post_engagement(self, engagement_name, product_id):
60
+ def post_engagement(self, request: ImportScanRequest, product_id, tool_scm_configuration_id):
61
61
  url = f"{self.__host}/api/v2/engagements/"
62
- data = json.dumps(
63
- {
64
- "name": engagement_name,
62
+ data = {
63
+ "name": request.engagement_name,
65
64
  "target_start": str(datetime.now().date()),
66
65
  "target_end": str(datetime.now().date()),
67
66
  "product": product_id,
68
67
  "engagement_type": "CI/CD",
69
68
  "status": "In Progress",
70
69
  }
71
- )
70
+
71
+ if request.source_code_management_uri:
72
+ data["source_code_management_uri"] = request.source_code_management_uri
73
+
74
+ if tool_scm_configuration_id:
75
+ data["source_code_management_server"] = tool_scm_configuration_id
76
+
72
77
  headers = {
73
78
  "Authorization": f"Token {self.__token}",
74
79
  "Content-Type": "application/json",
75
80
  }
76
81
  try:
77
82
  response = self.__session.post(
78
- url=url, headers=headers, data=data, verify=VERIFY_CERTIFICATE
83
+ url=url, headers=headers, data=json.dumps(data), verify=VERIFY_CERTIFICATE
79
84
  )
80
85
  if response.status_code != 201:
81
86
  logger.error(response.json())
@@ -94,6 +94,7 @@ class ReportSonar:
94
94
  config_tool = config_tool,
95
95
  source_code_management_uri = source_code_management_uri,
96
96
  base_compact_remote_config_url = compact_remote_config_url,
97
+ repository_provider = self.devops_platform_gateway.get_variable("repository_provider"),
97
98
  access_token = self.devops_platform_gateway.get_variable("access_token"),
98
99
  version = self.devops_platform_gateway.get_variable("build_execution_id"),
99
100
  build_id = self.devops_platform_gateway.get_variable("build_id"),
@@ -126,6 +126,7 @@ class Utils:
126
126
  threshold.vulnerability = LevelVulnerability(new_threshold.get("VULNERABILITY"))
127
127
  threshold.compliance = LevelCompliance(new_threshold.get("COMPLIANCE")) if new_threshold.get("COMPLIANCE") else threshold.compliance
128
128
  threshold.cve = new_threshold.get("CVE") if new_threshold.get("CVE") is not None else threshold.cve
129
+ threshold.name = new_threshold.get("reason", "Exclusion")
129
130
  return threshold
130
131
 
131
132
  threshold_pipeline = exclusions_data.get(pipeline_name, {}).get("THRESHOLD", {})
@@ -1 +1 @@
1
- version = '1.46.1'
1
+ version = '1.47.0'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: devsecops-engine-tools
3
- Version: 1.46.1
3
+ Version: 1.47.0
4
4
  Summary: Tool for DevSecOps strategy
5
5
  Home-page: https://github.com/bancolombia/devsecops-engine-tools
6
6
  Author: Bancolombia DevSecOps Team
@@ -1,5 +1,5 @@
1
1
  devsecops_engine_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- devsecops_engine_tools/version.py,sha256=jEq826rbu6uJ8t1NgtNPOwoocaZt64eOUIBwhhZLC4c,19
2
+ devsecops_engine_tools/version.py,sha256=pSzH3g9QblXggkzIQX7xj_oDGXmzmxsm2jxaP117UYo,19
3
3
  devsecops_engine_tools/engine_core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  devsecops_engine_tools/engine_core/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  devsecops_engine_tools/engine_core/src/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -16,8 +16,8 @@ devsecops_engine_tools/engine_core/src/domain/model/input_core.py,sha256=hc1WMzC
16
16
  devsecops_engine_tools/engine_core/src/domain/model/level_compliance.py,sha256=ntn_UWqHc6sT5g_LozBdjdewTQxFsp7Kt8M0xqw-k_o,98
17
17
  devsecops_engine_tools/engine_core/src/domain/model/level_vulnerability.py,sha256=0sySEnFNkS2Y8uF5GUVAYehXw-i2OglUClkVobnSTPc,257
18
18
  devsecops_engine_tools/engine_core/src/domain/model/report.py,sha256=09QV_jBQbucoiGM_PjVzRwWvvnebAx24Vehs2bqEe2o,1929
19
- devsecops_engine_tools/engine_core/src/domain/model/threshold.py,sha256=TCBECuvoC3-9g8vg3iKWGIixssNecP0iUaZ9Qzv0n7w,596
20
- devsecops_engine_tools/engine_core/src/domain/model/vulnerability_management.py,sha256=04ALQoTM4uoea9s505WCDw18J3Cvu6phf54ZTKODN64,552
19
+ devsecops_engine_tools/engine_core/src/domain/model/threshold.py,sha256=d_T9EC4l0H_pm-RqR3obgYksM3TOnWETfCNwWW7xMUk,644
20
+ devsecops_engine_tools/engine_core/src/domain/model/vulnerability_management.py,sha256=6zR3IKNTMuCwRDr9J-trg0Z7n_XSbhtDEfdDTU_Y508,581
21
21
  devsecops_engine_tools/engine_core/src/domain/model/gateway/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
22
  devsecops_engine_tools/engine_core/src/domain/model/gateway/devops_platform_gateway.py,sha256=-L7O48UlUe2wI1DRnpAdZ98SLge7pcvoUOXITgFaBLg,800
23
23
  devsecops_engine_tools/engine_core/src/domain/model/gateway/metrics_manager_gateway.py,sha256=wApR5faZG5YqprWrDBMM9b4V7sBraJUxDmIUNGi0zqg,193
@@ -26,9 +26,9 @@ devsecops_engine_tools/engine_core/src/domain/model/gateway/sbom_manager.py,sha2
26
26
  devsecops_engine_tools/engine_core/src/domain/model/gateway/secrets_manager_gateway.py,sha256=CTwUIvUWF0NSSzdCqASUFst6KUysW53NV9eatjLGdl8,170
27
27
  devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py,sha256=MsNHO4x78KqMkJ3u3gxPltyBIqP5gB3tRBlN-w7VtBg,1429
28
28
  devsecops_engine_tools/engine_core/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
29
- devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py,sha256=g9JXQeWTi1cC-PFcLMcVFnX0QARZnXqzx2k9d5nA-_A,16647
29
+ devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py,sha256=gIMtuO6J1jv80wJwdaBqHhPsHshYodF0fbDJ6UBzpcc,16924
30
30
  devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py,sha256=RirHqsW5AhGjV7ITa13bW_BfM6VE99DffrPASoB9SN0,9403
31
- devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py,sha256=iPv_wayjgbKvc0o2bZcFtBVXkT-uJRo1ynED--46ZCg,10736
31
+ devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py,sha256=KMbPszDoAVHDg_wW76SpMekYuDQOODHn_pGSlIkmxFc,10960
32
32
  devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py,sha256=xfaGrDf9rnN32qG_zOD9NN-a62reqQ5KOd2bP6xoRnw,2417
33
33
  devsecops_engine_tools/engine_core/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
34
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -36,9 +36,9 @@ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/__init
36
36
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/s3_manager.py,sha256=xLPwfh8FQzP5CldRj0ev8LsSxFO4A_i88EnNGBPuN2g,2210
37
37
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secrets_manager.py,sha256=ELihQBgSPH4f9QCyg2dgjudsFitaqgdsljnVOmaA_v4,1972
38
38
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py,sha256=KNztWjE5IIhLnuT9HWDbpm1WFZFYUVr-0hiGFqZpSmA,5389
39
+ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py,sha256=_HbiOZ0XdXCiAGm4LS02gCvekTDQu0YKRKcaCR1IqVM,5491
40
40
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=ptzqoY7BkNO4jlna7Uw30mreKZfspwBRqEZMAbhRka4,29969
41
+ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=dKodTpwafJUDSfCLPWELLkx7THK1m91ncoIO0mqStGg,30603
42
42
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
43
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/github_actions.py,sha256=jK3Qtt0UfSX4wbE4wo4iY7a8v8u1pcQcWASWmJ7sFfk,4216
44
44
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -69,7 +69,7 @@ devsecops_engine_tools/engine_dast/src/domain/model/gateways/__init__.py,sha256=
69
69
  devsecops_engine_tools/engine_dast/src/domain/model/gateways/authentication_gateway.py,sha256=JSi2LAK8kPctqPmh3KfxIkXeDY5sSRsXoPWqudlmyYQ,175
70
70
  devsecops_engine_tools/engine_dast/src/domain/model/gateways/tool_gateway.py,sha256=F9Xusc7bQo25GpRvCMWPPQ_hlILbGF1yZKMAnm15Axs,255
71
71
  devsecops_engine_tools/engine_dast/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
- devsecops_engine_tools/engine_dast/src/domain/usecases/dast_scan.py,sha256=9zQhA8d9McGWNT2ZdvjmjWCIPN3UpST7RWve2QvyHu4,4693
72
+ devsecops_engine_tools/engine_dast/src/domain/usecases/dast_scan.py,sha256=pBVTXC8E9iaXdRIkt-MxS9GAGvV-O2NTJmjQAOXDoLc,4917
73
73
  devsecops_engine_tools/engine_dast/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
74
74
  devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
75
  devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -79,7 +79,7 @@ devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/jwt/__init
79
79
  devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/jwt/jwt_object.py,sha256=p0_rDDjdsyAa_ar-HgZE_SQE-beua0oK3KBnwj8EmPo,1998
80
80
  devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/jwt/jwt_tool.py,sha256=9Yh7lOd6lsHcvl8exgWW7N8qTP55w-Znl0kid7IlKrM,5431
81
81
  devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/nuclei/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
- devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/nuclei/nuclei_config.py,sha256=TxjdA5_KDmn-RqZQsPkrrqyjd9zPMweKH37pwnxSV8Q,3090
82
+ devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/nuclei/nuclei_config.py,sha256=oGjL0qvu1zVvYjXg3oZMDTSPWshvD0f_kLKCUvs-a94,3449
83
83
  devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/nuclei/nuclei_deserealizer.py,sha256=qqoBMXr350ItzabSU6a_fD2-9kB6pAmtWioFP5AvCIE,1346
84
84
  devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/nuclei/nuclei_tool.py,sha256=Bk2JTwzTqrU9N84C_GTIf2vF_IpxuvLbvaygVIWOXdI,6066
85
85
  devsecops_engine_tools/engine_dast/src/infrastructure/driven_adapters/oauth/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -146,7 +146,7 @@ devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/config_tool.py,sh
146
146
  devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/gateways/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
147
147
  devsecops_engine_tools/engine_sast/engine_iac/src/domain/model/gateways/tool_gateway.py,sha256=ClElxyHbwfDCW0fgcehaNfQLq00zozhO71EnyCjzt-U,182
148
148
  devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
149
- devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/iac_scan.py,sha256=-Grr9WaEgStpWp3S16RGYHpWWoLwb8K5D8AmiBqfHYc,5994
149
+ devsecops_engine_tools/engine_sast/engine_iac/src/domain/usecases/iac_scan.py,sha256=4d9TF8pM_iun9EZo1c9IPZV84BrufGJvQRC8WCup3oQ,5910
150
150
  devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
151
151
  devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
152
  devsecops_engine_tools/engine_sast/engine_iac/src/infrastructure/driven_adapters/checkov/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -276,23 +276,23 @@ devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/product_type_l
276
276
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/scan_configuration.py,sha256=-uVxaTkxnDmUUGQUdN9x_VKR8KJUagJKnGR6B1emoEU,577
277
277
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
278
278
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/finding.py,sha256=RinG3ISc-u_3VXVqntwdcQvZoQdmHPCvDHWSvnkCkcU,2619
279
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/import_scan.py,sha256=ACb9BH1HXIfdGhIte5__OshvsqPOHgWZ0syxwG5IP58,5151
279
+ devsecops_engine_tools/engine_utilities/defect_dojo/domain/request_objects/import_scan.py,sha256=3OqfunER_l7j8JkcwEiVVao40GvGtGKcHf5YlPqfjsw,5198
280
280
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
281
281
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/finding.py,sha256=4IQLjqgyImVdn8AxoU3UKgXnvU-F-x7Tm2bJdp6nHm4,5265
282
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/import_scan.py,sha256=pq1H0m9k056AMdUpC3ci2-x56pz8UlLGqmG0_PqfUPM,7391
282
+ devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/import_scan.py,sha256=__mRQMSt94gd3JlC0xZ5RSvMmaUrXOxu8XoWnom72iw,7489
283
283
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
284
284
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/cmdb.py,sha256=BUOdvP39bEMQ6Unr2hB28eljVGU2Uv8dDEkzRyEJgyQ,2650
285
285
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/component.py,sha256=_icc-ZAqw-aVgE5J4VH8Q7fSqpCgEGcfmurgRIN9NqM,448
286
286
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/engagement.py,sha256=SVX-weFRPT3DK7w6IBrLuWS4L6vboMuZtwXAQmIHfEE,406
287
287
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/finding.py,sha256=TjfpdJtaBwQvT8XNJKBf6tuOASOAw7ZiOxJbqsKadaA,1689
288
288
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/finding_exclusion.py,sha256=VqdwBiQGc9XFpatvbXGL837LtTxkWlfhWH46W1cTbCg,455
289
- devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py,sha256=iXfvv_MDQODC6jU-OSVIMj3_MAOzCZCY6Hay56es0Gg,7047
289
+ devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py,sha256=VogSRIQEnGVzdEcFK4cMch2wTH2uDQuI-Py6OpCbmJI,7092
290
290
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/product.py,sha256=6f6eABdC79zOopMe_Rif3XoGG-yFfq9x_EOkevTuGDY,368
291
291
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
292
292
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
293
293
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/cmdb.py,sha256=waucNjkwT9eo-ykeZKxAMZHQCnI-R9Keu0091wVfyOQ,4942
294
294
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/component.py,sha256=-J0Sv7z709Hctb-tgM0wmp5ofE4WKEIA_uJwzvMnStE,2132
295
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py,sha256=39qqmTxECRY5IoFvK_B_R0vfwfJwLbdhGt_pcdvdVIE,3571
295
+ devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py,sha256=E6ilSQLOcJeBGYn_XXzJimUdi3l9vo0FpN1FhdNJV58,3866
296
296
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding.py,sha256=k-z2tg_NPKMni7rZgXMZa2-t8_8F35r8YtF1EcjMyDs,2355
297
297
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding_exclusion.py,sha256=BL4xf1FE5tMsBri0LetxBRUgOgLogdoHX97rQkHh10g,1524
298
298
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/import_scan.py,sha256=uZqPM9sOyclq8q-uKRWUY9qR67SzpIzirM6T7KMkYZ4,6515
@@ -327,7 +327,7 @@ devsecops_engine_tools/engine_utilities/sonarqube/src/domain/model/__init__.py,s
327
327
  devsecops_engine_tools/engine_utilities/sonarqube/src/domain/model/gateways/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
328
328
  devsecops_engine_tools/engine_utilities/sonarqube/src/domain/model/gateways/sonar_gateway.py,sha256=mgycD3bzC_BYv7qT0tMLAro9hyNOvi4gJRzceYNF0t8,1339
329
329
  devsecops_engine_tools/engine_utilities/sonarqube/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
330
- devsecops_engine_tools/engine_utilities/sonarqube/src/domain/usecases/report_sonar.py,sha256=3ZPfGEdIIk1AuG164V8NC355UhvmG6arZyq8e-HbYcQ,10185
330
+ devsecops_engine_tools/engine_utilities/sonarqube/src/domain/usecases/report_sonar.py,sha256=ImJvICOHiFpooBV3whtCqrgupVjwvei6nsy10vUp0z4,10285
331
331
  devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
332
332
  devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/driven_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
333
333
  devsecops_engine_tools/engine_utilities/sonarqube/src/infrastructure/driven_adapters/sonarqube/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -346,9 +346,9 @@ devsecops_engine_tools/engine_utilities/utils/logger_info.py,sha256=4Mz8Bwlm9Mku
346
346
  devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGaxYSDe0ZRh6VHRf53H4sXPcb-vNP_i81PUn3I,307
347
347
  devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=amYAr9YQfYgR6jK9a2l26z3oovFPQ3FAKmhq6BKhEBA,623
348
348
  devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=Z0fdhB3r-dxU0nGSD9zW_B4r2Qol1rUnUCkhFR0U-HQ,487
349
- devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=XFap4yOK7ItLWsqbwDhvLd7NpDhs7i-UGJAMD6jjd7w,6687
350
- devsecops_engine_tools-1.46.1.dist-info/METADATA,sha256=SLlk6--cNLj0HoBr9Q_b5-V8Pqy9ywF2CMlVTFeArOA,11779
351
- devsecops_engine_tools-1.46.1.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
352
- devsecops_engine_tools-1.46.1.dist-info/entry_points.txt,sha256=MHCTFFs9bdNKo6YcWCcBW2_8X6yTisgLOlmVx-V8Rxc,276
353
- devsecops_engine_tools-1.46.1.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
354
- devsecops_engine_tools-1.46.1.dist-info/RECORD,,
349
+ devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=HCjS900TBoNcHrC4LaiP-Kf9frVdtagF130qOUgnO2M,6757
350
+ devsecops_engine_tools-1.47.0.dist-info/METADATA,sha256=-FnYfLLsu8ZUGE3epFhwWVGm5bFfakFAuhMJUWYzoSQ,11779
351
+ devsecops_engine_tools-1.47.0.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
352
+ devsecops_engine_tools-1.47.0.dist-info/entry_points.txt,sha256=MHCTFFs9bdNKo6YcWCcBW2_8X6yTisgLOlmVx-V8Rxc,276
353
+ devsecops_engine_tools-1.47.0.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
354
+ devsecops_engine_tools-1.47.0.dist-info/RECORD,,