devsecops-engine-tools 1.41.0__py3-none-any.whl → 1.42.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.

@@ -3,9 +3,6 @@ from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
3
3
  from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.import_scan import (
4
4
  ImportScanRestConsumer,
5
5
  )
6
- from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.reimport_scan import (
7
- ReimportScanRestConsumer,
8
- )
9
6
  from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.product_type import (
10
7
  ProductTypeRestConsumer,
11
8
  )
@@ -51,16 +48,12 @@ class DefectDojo:
51
48
  rest_scan_configuration = ScanConfigrationRestConsumer(
52
49
  request, session=SessionManager()
53
50
  )
54
- rest_reimport_scan = ReimportScanRestConsumer(
55
- request, session=SessionManager()
56
- )
57
51
  uc = ImportScanUserCase(
58
52
  rest_import_scan,
59
53
  rest_product_type,
60
54
  rest_product,
61
55
  rest_scan_configuration,
62
56
  rest_engagement=rest_engagement,
63
- rest_reimport_scan=rest_reimport_scan
64
57
  )
65
58
  return uc.execute(request)
66
59
  except ApiError as e:
@@ -5,7 +5,6 @@ from devsecops_engine_tools.engine_utilities.settings import SETTING_LOGGER
5
5
  from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
6
6
  from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
7
7
  from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.import_scan import ImportScanRestConsumer
8
- from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.reimport_scan import ReimportScanRestConsumer
9
8
  from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.product_type import ProductTypeRestConsumer
10
9
  from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.product import ProductRestConsumer
11
10
  from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.scan_configurations import (
@@ -26,14 +25,12 @@ class ImportScanUserCase:
26
25
  rest_product: ProductRestConsumer,
27
26
  rest_scan_configuration: ScanConfigrationRestConsumer,
28
27
  rest_engagement: EngagementRestConsumer,
29
- rest_reimport_scan: ReimportScanRestConsumer,
30
28
  ):
31
29
  self.__rest_import_scan = rest_import_scan
32
30
  self.__rest_product_type = rest_product_type
33
31
  self.__rest_product = rest_product
34
32
  self.__rest_scan_configurations = rest_scan_configuration
35
33
  self.__rest_engagement = rest_engagement
36
- self.__rest_reimport_scan = rest_reimport_scan
37
34
 
38
35
 
39
36
  def get_file_type(self, path_file):
@@ -49,7 +46,6 @@ class ImportScanUserCase:
49
46
 
50
47
  def import_scan(self, request, api_scan_bool):
51
48
  response = None
52
-
53
49
  if api_scan_bool:
54
50
  response = self.__rest_import_scan.import_scan_api(request)
55
51
  logger.info(f"End process Succesfull!!!: {response}")
@@ -70,31 +66,6 @@ class ImportScanUserCase:
70
66
  response.url = f"{request.host_defect_dojo}/engagement/{str(response.engagement_id)}/finding/open"
71
67
  return response
72
68
 
73
- def reimport_scan(self, request, api_scan_bool):
74
- response = None
75
-
76
- if api_scan_bool:
77
- logger.debug(f"reimport scan :{self.__rest_reimport_scan}")
78
- response = self.__rest_reimport_scan.reimport_scan(request)
79
- logger.info(f"End process Succesfull!!!: {response}")
80
- else:
81
- try:
82
- logger.debug(f"reimport scan file :{self.__rest_reimport_scan}")
83
- file_type = self.get_file_type(request.file)
84
- if file_type is None:
85
- raise ApiError("File format not allowed")
86
-
87
- with open(request.file, "rb") as file:
88
- logger.info(f"read {file_type} file successful !!!")
89
- files = [("file", (request.file, file, file_type))]
90
- response = self.__rest_reimport_scan.reimport_scan(request, files)
91
-
92
- except Exception as e:
93
- raise ApiError(e)
94
-
95
- response.url = f"{request.host_defect_dojo}/engagement/{str(response.engagement_id)}/finding/open"
96
- return response
97
-
98
69
  def execute(self, request: ImportScanRequest) -> ImportScanRequest:
99
70
  product_id = None
100
71
 
@@ -162,8 +133,4 @@ class ImportScanUserCase:
162
133
  engagement = self.__rest_engagement.post_engagement(request.engagement_name, product_id)
163
134
  logger.debug(f"Egagement created: {engagement.name} whit product id {engagement.product}")
164
135
 
165
- if request.reimport_scan is True:
166
- logger.debug("reimport scan flow")
167
- return self.reimport_scan(request, api_scan_bool)
168
- else:
169
- return self.import_scan(request, api_scan_bool)
136
+ return self.import_scan(request, api_scan_bool)
@@ -16,7 +16,6 @@ class ImportScanRestConsumer:
16
16
  self.__session = session._instance
17
17
 
18
18
  def import_scan_api(self, request: ImportScanRequest) -> ImportScanRequest:
19
- url = f"{self.__host}/api/v2/import-scan/"
20
19
  data = {
21
20
  "scan_date": request.scan_date,
22
21
  "minimum_severity": request.minimum_severity,
@@ -24,14 +23,12 @@ class ImportScanRestConsumer:
24
23
  "verified": request.verified,
25
24
  "scan_type": request.scan_type,
26
25
  "endpoint_to_add": request.endpoint_to_add,
27
- # "file": request.file,
28
26
  "product_type_name": request.product_type_name,
29
27
  "product_name": request.product_name,
30
28
  "engagement_name": request.engagement_name,
31
29
  "engagement_end_date": request.engagement_end_date,
32
30
  "source_code_management_uri": request.source_code_management_uri,
33
31
  "engagement": str(request.engagement) if request.engagement != 0 else "",
34
- "auto_create_context": "false",
35
32
  "deduplication_on_engagement": request.deduplication_on_engagement,
36
33
  "lead": request.lead,
37
34
  "tags": ",".join(request.tags) if request.tags else "",
@@ -49,6 +46,15 @@ class ImportScanRestConsumer:
49
46
  "service": request.service,
50
47
  "group_by": request.group_by,
51
48
  }
49
+
50
+ if request.reimport_scan:
51
+ url = f"{self.__host}/api/v2/reimport-scan/"
52
+ data["auto_create_context"] = "true"
53
+
54
+ else:
55
+ url = f"{self.__host}/api/v2/import-scan/"
56
+ data["auto_create_context"] = "false"
57
+
52
58
  multipart_data = MultipartEncoder(fields=data)
53
59
 
54
60
  headers = {"Authorization": f"Token {self.__token}", "Content-Type": multipart_data.content_type}
@@ -65,8 +71,7 @@ class ImportScanRestConsumer:
65
71
  return response
66
72
 
67
73
  def import_scan(self, request: ImportScanRequest, files) -> ImportScanRequest:
68
- url = f"{self.__host}/api/v2/import-scan/"
69
- payload = {
74
+ data = {
70
75
  "scan_date": request.scan_date,
71
76
  "minimum_severity": request.minimum_severity,
72
77
  "active": request.active,
@@ -80,7 +85,6 @@ class ImportScanRestConsumer:
80
85
  "engagement_end_date": request.engagement_end_date,
81
86
  "source_code_management_uri": request.source_code_management_uri,
82
87
  "engagement": request.engagement if request.engagement != 0 else "",
83
- "auto_create_context": "false",
84
88
  "deduplication_on_engagement": request.deduplication_on_engagement,
85
89
  "lead": request.lead,
86
90
  "tags": request.tags,
@@ -98,12 +102,23 @@ class ImportScanRestConsumer:
98
102
  "service": request.service,
99
103
  "group_by": request.group_by,
100
104
  }
105
+ if request.reimport_scan is True:
106
+ url = f"{self.__host}/api/v2/reimport-scan/"
107
+ data["auto_create_context"] = "true"
108
+ data["test_title"] = request.test_title
109
+ else:
110
+ url = f"{self.__host}/api/v2/import-scan/"
111
+ data["auto_create_context"] = "false"
101
112
 
102
113
  headers = {"Authorization": f"Token {self.__token}"}
103
114
  try:
104
- response = self.__session.post(url, headers=headers, data=payload, files=files, verify=VERIFY_CERTIFICATE)
115
+ response = self.__session.post(url,
116
+ headers=headers,
117
+ data=data,
118
+ files=files,
119
+ verify=VERIFY_CERTIFICATE)
105
120
  if response.status_code != 201:
106
- logger.error(payload)
121
+ logger.error(data)
107
122
  logger.error(response.json())
108
123
  logger.error(response)
109
124
  raise ApiError(response.json())
@@ -1 +1 @@
1
- version = '1.41.0'
1
+ version = '1.42.0'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: devsecops-engine-tools
3
- Version: 1.41.0
3
+ Version: 1.42.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=-B41LzxW9MaDd_gk-GaUDRhpW1fsMeynOvaN5fZXPV4,19
2
+ devsecops_engine_tools/version.py,sha256=lImSWY-_RWXVBAAKLg7CiJoHxDRvObxtgqXGqYqoSeg,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
@@ -257,7 +257,7 @@ devsecops_engine_tools/engine_utilities/defect_dojo/hello_world.py,sha256=WDvgS2
257
257
  devsecops_engine_tools/engine_utilities/defect_dojo/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
258
258
  devsecops_engine_tools/engine_utilities/defect_dojo/applications/component.py,sha256=Y6vA1nRfMCoqJEceRBDQ_QLpIKASqB-t8V1yqao-eUQ,1175
259
259
  devsecops_engine_tools/engine_utilities/defect_dojo/applications/connect.py,sha256=tRvNN-zVKBJbHMvfW97SCsZoyjGaKttcQhLOKrbjK9E,2079
260
- devsecops_engine_tools/engine_utilities/defect_dojo/applications/defect_dojo.py,sha256=WKx_nBZV9bZj-Y9UAg-C4SeCapbRhQb7475lcuzlGVg,2943
260
+ devsecops_engine_tools/engine_utilities/defect_dojo/applications/defect_dojo.py,sha256=gJMBVtE--Kvdc908fQa2T35mYyBXAWNTxM0DKsZ7e-w,2615
261
261
  devsecops_engine_tools/engine_utilities/defect_dojo/applications/engagement.py,sha256=sPTeQs6QHg07QNthqhY3caVbG54vDkd_E_KJpBvgTk4,878
262
262
  devsecops_engine_tools/engine_utilities/defect_dojo/applications/finding.py,sha256=Cw5_TElo0D0Ec8X0lu-La2H9Pp1rsrmw-2Wv-0w_9oI,1451
263
263
  devsecops_engine_tools/engine_utilities/defect_dojo/applications/finding_exclusion.py,sha256=StnDFV3vGhBffBEs-jfV9nMprzRucm5VJqtZFWKF3Fo,689
@@ -286,7 +286,7 @@ devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/component.p
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=N31WBga-wu0inWOuikasSUP9ASemDJtrcHg31whCALM,8573
289
+ devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py,sha256=iXfvv_MDQODC6jU-OSVIMj3_MAOzCZCY6Hay56es0Gg,7047
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
@@ -295,10 +295,9 @@ devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapt
295
295
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py,sha256=39qqmTxECRY5IoFvK_B_R0vfwfJwLbdhGt_pcdvdVIE,3571
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
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/import_scan.py,sha256=SwkW-2Znzs_RiCPPsIgZKSG_VSO2afoQH5DTTg-dKPQ,5929
298
+ devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/import_scan.py,sha256=1oTQs7ML8DM29qPdgxSHhX4J5tLc9bsTaaAF1iKE0fI,6462
299
299
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product.py,sha256=DhiLPv8KyRhHBRhvF0ULhchhGAT8SQyn1ftiuou_aKw,2576
300
300
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product_type.py,sha256=x-Gh2BEP6IZccS2m_DLB8xI6aEkS19J0ZUpP2mjY88o,3078
301
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/reimport_scan.py,sha256=6Wtg88p9WFdWjEAfNT2qjUcRGRg6wmruvuKcmajG3A8,3469
302
301
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/scan_configurations.py,sha256=YVIHiXPkJ8m1nOW7lG8LGbST16eMZoJwFQcrRRU7R6k,3089
303
302
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/settings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
304
303
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/settings/settings.py,sha256=5ni59GuAHT-avpWNc4FSedVpoFRTGRNzjQJkAXpWv6c,28
@@ -348,8 +347,8 @@ devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGax
348
347
  devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=amYAr9YQfYgR6jK9a2l26z3oovFPQ3FAKmhq6BKhEBA,623
349
348
  devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=Z0fdhB3r-dxU0nGSD9zW_B4r2Qol1rUnUCkhFR0U-HQ,487
350
349
  devsecops_engine_tools/engine_utilities/utils/utils.py,sha256=XFap4yOK7ItLWsqbwDhvLd7NpDhs7i-UGJAMD6jjd7w,6687
351
- devsecops_engine_tools-1.41.0.dist-info/METADATA,sha256=aYG37gdm8hbtdPKsGJpfQqcjO2rOldAfqfWhANIh5ps,11750
352
- devsecops_engine_tools-1.41.0.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
353
- devsecops_engine_tools-1.41.0.dist-info/entry_points.txt,sha256=MHCTFFs9bdNKo6YcWCcBW2_8X6yTisgLOlmVx-V8Rxc,276
354
- devsecops_engine_tools-1.41.0.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
355
- devsecops_engine_tools-1.41.0.dist-info/RECORD,,
350
+ devsecops_engine_tools-1.42.0.dist-info/METADATA,sha256=x3BvCitJpws34kkpjw2AatvJGQr_WE-e_bI2AqMTcLc,11750
351
+ devsecops_engine_tools-1.42.0.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
352
+ devsecops_engine_tools-1.42.0.dist-info/entry_points.txt,sha256=MHCTFFs9bdNKo6YcWCcBW2_8X6yTisgLOlmVx-V8Rxc,276
353
+ devsecops_engine_tools-1.42.0.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
354
+ devsecops_engine_tools-1.42.0.dist-info/RECORD,,
@@ -1,74 +0,0 @@
1
- from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
2
- from devsecops_engine_tools.engine_utilities.defect_dojo.domain.request_objects.import_scan import ImportScanRequest
3
- from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
4
- from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.settings.settings import VERIFY_CERTIFICATE
5
- from devsecops_engine_tools.engine_utilities.utils.session_manager import SessionManager
6
- from devsecops_engine_tools.engine_utilities.settings import SETTING_LOGGER
7
-
8
- logger = MyLogger.__call__(**SETTING_LOGGER).get_logger()
9
-
10
-
11
- class ReimportScanRestConsumer:
12
-
13
- def __init__(self, request: ImportScanRequest, session: SessionManager):
14
- self.__token = request.token_defect_dojo
15
- self.__host = request.host_defect_dojo
16
- self.__session = session._instance
17
-
18
- def reimport_scan(self, request: ImportScanRequest, files) -> ImportScanRequest:
19
- url = f"{self.__host}/api/v2/reimport-scan/"
20
- logger.debug(f"URL: {url}")
21
- payload = {
22
- "scan_date": request.scan_date,
23
- "minimum_severity": request.minimum_severity,
24
- "active": request.active,
25
- "verified": request.verified,
26
- "scan_type": request.scan_type,
27
- "endpoint_to_add": request.endpoint_to_add,
28
- "file": files,
29
- "product_type_name": request.product_type_name,
30
- "product_name": request.product_name,
31
- "engagement_name": request.engagement_name,
32
- "engagement_end_date": request.engagement_end_date,
33
- "source_code_management_uri": request.source_code_management_uri,
34
- "auto_create_context": "true",
35
- "deduplication_on_engagement": request.deduplication_on_engagement,
36
- "lead": request.lead,
37
- "push_to_jira": request.push_to_jira,
38
- "environment": request.environment,
39
- "build_id": request.build_id,
40
- "branch_tag": request.branch_tag,
41
- "commit_hash": request.commit_hash,
42
- "api_scan_configuration": str(request.api_scan_configuration)
43
- if request.api_scan_configuration != 0
44
- else "",
45
- "service": request.service,
46
- "group_by": request.group_by,
47
- "create_finding_groups_for_all_findings": request.create_finding_groups_for_all_findings,
48
- "do_not_reactive"
49
- "scan_type": request.scan_type,
50
- "close_old_findings": request.close_old_findings,
51
- "close_old_findings_product_scope": request.close_old_findings_product_scope,
52
- "version": request.version,
53
- "tags": request.tags,
54
- "test_title": request.test_title,
55
- }
56
-
57
- headers = {"Authorization": f"Token {self.__token}"}
58
- try:
59
- response = self.__session.post(
60
- url,
61
- headers=headers,
62
- data=payload,
63
- files=files,
64
- verify=VERIFY_CERTIFICATE
65
- )
66
- if response.status_code != 201:
67
- logger.error(response.json())
68
- raise ApiError(response.json())
69
- logger.info(f"Sucessfull {response}")
70
- response = ImportScanRequest.from_dict(response.json())
71
- except Exception as e:
72
- logger.error(f"from dict import Scan: {response.json()}")
73
- raise ApiError(e)
74
- return response