devsecops-engine-tools 1.8.10__py3-none-any.whl → 1.8.11__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.

@@ -12,3 +12,8 @@ class ExceptionGettingFindings(Exception):
12
12
  def __init__(self, message):
13
13
  self.message = message
14
14
  super().__init__(self.message)
15
+
16
+ class ExceptionGettingEngagements(Exception):
17
+ def __init__(self, message):
18
+ self.message = message
19
+ super().__init__(self.message)
@@ -21,3 +21,9 @@ class VulnerabilityManagementGateway(metaclass=ABCMeta):
21
21
  self, service, dict_args, secret_tool, config_tool
22
22
  ):
23
23
  "get all findings and exclusions from vulnerability management platform"
24
+
25
+ @abstractmethod
26
+ def get_active_engagements(
27
+ self, engagement_name, dict_args, secret_tool, config_tool
28
+ ):
29
+ "get_active_engagements"
@@ -16,9 +16,8 @@ from devsecops_engine_tools.engine_risk.src.applications.runner_engine_risk impo
16
16
  from devsecops_engine_tools.engine_core.src.domain.model.customs_exceptions import (
17
17
  ExceptionGettingFindings,
18
18
  )
19
- from devsecops_engine_tools.engine_core.src.domain.model.input_core import (
20
- InputCore
21
- )
19
+ from devsecops_engine_tools.engine_core.src.domain.model.input_core import InputCore
20
+ import re
22
21
 
23
22
  from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
24
23
  from devsecops_engine_tools.engine_utilities import settings
@@ -52,6 +51,49 @@ class HandleRisk:
52
51
  "Error getting finding list in handle risk: {0}".format(str(e))
53
52
  )
54
53
 
54
+ def _filter_engagements(self, engagements, service, risk_config):
55
+ filtered_engagements = []
56
+ min_word_length = risk_config["HANDLE_SERVICE_NAME"]["MIN_WORD_LENGTH"]
57
+ words = [
58
+ word
59
+ for word in re.split(
60
+ risk_config["HANDLE_SERVICE_NAME"]["REGEX_GET_WORDS"], service
61
+ )
62
+ if len(word) > min_word_length
63
+ ]
64
+ check_words_regex = risk_config["HANDLE_SERVICE_NAME"]["REGEX_CHECK_WORDS"]
65
+ min_word_amount = risk_config["HANDLE_SERVICE_NAME"]["MIN_WORD_AMOUNT"]
66
+ for engagement in engagements:
67
+ if service.lower() in engagement.name.lower():
68
+ filtered_engagements += [engagement.name]
69
+ elif re.search(check_words_regex, engagement.name.lower()) and (
70
+ sum(1 for word in words if word.lower() in engagement.name.lower())
71
+ >= min_word_amount
72
+ ):
73
+ filtered_engagements += [engagement.name]
74
+ return filtered_engagements
75
+
76
+ def _exclude_services(self, dict_args, pipeline_name, service_list):
77
+ risk_exclusions = self.devops_platform_gateway.get_remote_config(
78
+ dict_args["remote_config_repo"], "engine_risk/Exclusions.json"
79
+ )
80
+ if (
81
+ pipeline_name in risk_exclusions
82
+ and risk_exclusions[pipeline_name].get("SKIP_SERVICE", 0)
83
+ and risk_exclusions[pipeline_name]["SKIP_SERVICE"].get("services", 0)
84
+ ):
85
+ services_to_exclude = risk_exclusions[pipeline_name]["SKIP_SERVICE"].get(
86
+ "services", []
87
+ )
88
+ service_excluded = []
89
+ for service in service_list:
90
+ if service in services_to_exclude:
91
+ service_list.remove(service)
92
+ service_excluded += [service]
93
+ print(f"Services to exclude: {service_excluded}")
94
+ logger.info(f"Services to exclude: {service_excluded}")
95
+ return service_list
96
+
55
97
  def process(self, dict_args: any, remote_config: any):
56
98
  secret_tool = None
57
99
  if dict_args["use_secrets_manager"] == "true":
@@ -61,32 +103,67 @@ class HandleRisk:
61
103
  dict_args["remote_config_repo"], "engine_risk/ConfigTool.json"
62
104
  )
63
105
 
64
- service = self.devops_platform_gateway.get_variable("pipeline_name")
65
- parent_identifier = risk_config["PARENT_ANALYSIS"]["PARENT_IDENTIFIER"]
106
+ pipeline_name = self.devops_platform_gateway.get_variable("pipeline_name")
107
+ service = pipeline_name
108
+ service_list = []
66
109
 
67
- parent_findings = []
68
- parent_exclusions = []
69
- if (
70
- risk_config["PARENT_ANALYSIS"]["ENABLED"].lower() == "true"
71
- and parent_identifier in service
72
- ):
73
- parent_service = service.split(parent_identifier)[0] + parent_identifier
74
- parent_findings, parent_exclusions = self._get_all_from_vm(
75
- dict_args, secret_tool, remote_config, parent_service
110
+ if risk_config["HANDLE_SERVICE_NAME"]["ENABLED"].lower() == "true":
111
+ service = next(
112
+ (
113
+ pipeline_name.replace(ending, "")
114
+ for ending in risk_config["HANDLE_SERVICE_NAME"][
115
+ "ERASE_SERVICE_ENDING"
116
+ ]
117
+ if pipeline_name.endswith(ending)
118
+ ),
119
+ pipeline_name,
76
120
  )
121
+ match_service_code = re.match(
122
+ risk_config["HANDLE_SERVICE_NAME"]["REGEX_GET_SERVICE_CODE"], service
123
+ )
124
+ if match_service_code:
125
+ service_code = match_service_code.group(0)
126
+ service_list += [
127
+ service.format(service_code=service_code)
128
+ for service in risk_config["HANDLE_SERVICE_NAME"]["ADD_SERVICES"]
129
+ ]
130
+ engagements = self.vulnerability_management.get_active_engagements(
131
+ service_code, dict_args, secret_tool, remote_config
132
+ )
133
+ service_list += self._filter_engagements(
134
+ engagements, service, risk_config
135
+ )
136
+
137
+ service_list += [service]
77
138
 
78
- findings, exclusions = self._get_all_from_vm(
79
- dict_args, secret_tool, remote_config, service
139
+ match_parent = re.match(
140
+ risk_config["PARENT_ANALYSIS"]["REGEX_GET_PARENT"], service
80
141
  )
142
+ if risk_config["PARENT_ANALYSIS"]["ENABLED"].lower() == "true" and match_parent:
143
+ parent_service = match_parent.group(0)
144
+ service_list += [parent_service]
81
145
 
82
- findings_list = parent_findings + findings
146
+ service_list = list(set(service_list))
147
+ new_service_list = self._exclude_services(
148
+ dict_args, pipeline_name, service_list
149
+ )
150
+
151
+ print(f"Services to analyze: {new_service_list}")
152
+ logger.info(f"Services to analyze: {new_service_list}")
83
153
 
84
- exclusions_list = parent_exclusions + exclusions
154
+ findings = []
155
+ exclusions = []
156
+ for service in new_service_list:
157
+ findings_list, exclusions_list = self._get_all_from_vm(
158
+ dict_args, secret_tool, remote_config, service
159
+ )
160
+ findings += findings_list
161
+ exclusions += exclusions_list
85
162
 
86
163
  result = runner_engine_risk(
87
164
  dict_args,
88
- findings_list,
89
- exclusions_list,
165
+ findings,
166
+ exclusions,
90
167
  self.devops_platform_gateway,
91
168
  self.print_table_gateway,
92
169
  )
@@ -95,7 +172,7 @@ class HandleRisk:
95
172
  {},
96
173
  "",
97
174
  "",
98
- service,
175
+ pipeline_name,
99
176
  self.devops_platform_gateway.get_variable("stage").capitalize(),
100
177
  )
101
178
  return result, input_core
@@ -10,6 +10,7 @@ from devsecops_engine_tools.engine_utilities.defect_dojo import (
10
10
  ImportScanRequest,
11
11
  Connect,
12
12
  Finding,
13
+ Engagement,
13
14
  )
14
15
  from devsecops_engine_tools.engine_core.src.domain.model.exclusions import Exclusions
15
16
  from devsecops_engine_tools.engine_core.src.domain.model.report import Report
@@ -18,6 +19,7 @@ from devsecops_engine_tools.engine_core.src.domain.model.customs_exceptions impo
18
19
  ExceptionVulnerabilityManagement,
19
20
  ExceptionFindingsExcepted,
20
21
  ExceptionGettingFindings,
22
+ ExceptionGettingEngagements
21
23
  )
22
24
  from devsecops_engine_tools.engine_core.src.infrastructure.helpers.util import (
23
25
  format_date,
@@ -247,6 +249,32 @@ class DefectDojoPlatform(VulnerabilityManagementGateway):
247
249
  "Error getting all findings with the following error: {0} ".format(ex)
248
250
  )
249
251
 
252
+ def get_active_engagements(self, engagement_name, dict_args, secret_tool, config_tool):
253
+ try:
254
+ request_is = ImportScanRequest(
255
+ token_defect_dojo=dict_args.get("token_vulnerability_management")
256
+ or secret_tool.get("token_defect_dojo"),
257
+ host_defect_dojo=config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"][
258
+ "HOST_DEFECT_DOJO"
259
+ ],
260
+ engagement_name=engagement_name,
261
+ )
262
+
263
+ request_active = {
264
+ "name": engagement_name,
265
+ "limit": config_tool["VULNERABILITY_MANAGER"]["DEFECT_DOJO"][
266
+ "LIMITS_QUERY"
267
+ ],
268
+ "active": "true",
269
+ }
270
+
271
+ return Engagement.get_engagements(request_is, request_active).results
272
+
273
+ except Exception as ex:
274
+ raise ExceptionGettingEngagements(
275
+ "Error getting engagements with the following error: {0} ".format(ex)
276
+ )
277
+
250
278
  def _get_session_manager(self, dict_args, secret_tool, config_tool):
251
279
  token_dd = dict_args.get("token_vulnerability_management") or secret_tool.get(
252
280
  "token_defect_dojo"
@@ -3,3 +3,4 @@ from .domain.request_objects.finding import FindingRequest
3
3
  from .applications.defect_dojo import DefectDojo
4
4
  from .applications.finding import Finding
5
5
  from .applications.connect import Connect
6
+ from .applications.engagement import Engagement
@@ -0,0 +1,16 @@
1
+ from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
2
+ from devsecops_engine_tools.engine_utilities.defect_dojo.domain.user_case.engagement import EngagementUserCase
3
+ from devsecops_engine_tools.engine_utilities.defect_dojo.domain.request_objects.import_scan import ImportScanRequest
4
+ from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.engagement import EngagementRestConsumer
5
+ from devsecops_engine_tools.engine_utilities.utils.session_manager import SessionManager
6
+
7
+ class Engagement:
8
+ @staticmethod
9
+ def get_engagements(request_is: ImportScanRequest, request: dict):
10
+ try:
11
+ rest_engagement = EngagementRestConsumer(request_is, session=SessionManager())
12
+
13
+ uc = EngagementUserCase(rest_engagement)
14
+ return uc.execute(request)
15
+ except ApiError as e:
16
+ raise e
@@ -0,0 +1,9 @@
1
+ from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.engagement import EngagementRestConsumer
2
+
3
+ class EngagementUserCase:
4
+ def __init__(self, rest_engagement: EngagementRestConsumer):
5
+ self.__rest_engagement = rest_engagement
6
+
7
+ def execute(self, request):
8
+ response = self.__rest_engagement.get_engagements_by_request(request)
9
+ return response
@@ -1,9 +1,16 @@
1
1
  import json
2
2
  from devsecops_engine_tools.engine_utilities.utils.api_error import ApiError
3
3
  from devsecops_engine_tools.engine_utilities.utils.logger_info import MyLogger
4
- from devsecops_engine_tools.engine_utilities.defect_dojo.domain.request_objects.import_scan import ImportScanRequest
5
- from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.settings.settings import VERIFY_CERTIFICATE
6
- from devsecops_engine_tools.engine_utilities.defect_dojo.domain.models.engagement import Engagement, EngagementList
4
+ from devsecops_engine_tools.engine_utilities.defect_dojo.domain.request_objects.import_scan import (
5
+ ImportScanRequest,
6
+ )
7
+ from devsecops_engine_tools.engine_utilities.defect_dojo.infraestructure.driver_adapters.settings.settings import (
8
+ VERIFY_CERTIFICATE,
9
+ )
10
+ from devsecops_engine_tools.engine_utilities.defect_dojo.domain.models.engagement import (
11
+ Engagement,
12
+ EngagementList,
13
+ )
7
14
  from devsecops_engine_tools.engine_utilities.utils.session_manager import SessionManager
8
15
  from datetime import datetime
9
16
  from devsecops_engine_tools.engine_utilities.settings import SETTING_LOGGER
@@ -18,18 +25,37 @@ class EngagementRestConsumer:
18
25
  self.__session = session._instance
19
26
 
20
27
  def get_engagements(self, engagement_name):
21
- url = f"{self.__host}/api/v2/engagements/?name={engagement_name}"
28
+ request = {"name": engagement_name}
29
+ return self.get_engagements_by_request(request)
22
30
 
23
- headers = {"Authorization": f"Token {self.__token}", "Content-Type": "application/json"}
31
+ def get_engagements_by_request(self, request):
32
+ url = f"{self.__host}/api/v2/engagements/"
33
+ headers = {
34
+ "Authorization": f"Token {self.__token}",
35
+ "Content-Type": "application/json",
36
+ }
24
37
  try:
25
- response = self.__session.get(url=url, headers=headers, verify=VERIFY_CERTIFICATE)
38
+ response = self.__session.get(
39
+ url=url, headers=headers, params=request, verify=VERIFY_CERTIFICATE
40
+ )
26
41
  if response.status_code != 200:
27
42
  logger.error(response.json())
28
43
  raise ApiError(response.json())
29
- response = EngagementList().from_dict(response.json())
44
+ engagements = EngagementList().from_dict(response.json())
45
+ while response.json().get("next", None):
46
+ next_url = response.json().get("next")
47
+ next_url = next_url.replace("http://", "https://", 1)
48
+ response = self.__session.get(
49
+ next_url, headers=headers, data={}, verify=VERIFY_CERTIFICATE
50
+ )
51
+ if response.status_code != 200:
52
+ raise ApiError(response.json())
53
+ engagements.results += (
54
+ EngagementList().from_dict(response.json()).results
55
+ )
30
56
  except Exception as e:
31
57
  raise ApiError(e)
32
- return response
58
+ return engagements
33
59
 
34
60
  def post_engagement(self, engagement_name, product_id):
35
61
  url = f"{self.__host}/api/v2/engagements/"
@@ -43,9 +69,14 @@ class EngagementRestConsumer:
43
69
  "status": "In Progress",
44
70
  }
45
71
  )
46
- headers = {"Authorization": f"Token {self.__token}", "Content-Type": "application/json"}
72
+ headers = {
73
+ "Authorization": f"Token {self.__token}",
74
+ "Content-Type": "application/json",
75
+ }
47
76
  try:
48
- response = self.__session.post(url=url, headers=headers, data=data, verify=VERIFY_CERTIFICATE)
77
+ response = self.__session.post(
78
+ url=url, headers=headers, data=data, verify=VERIFY_CERTIFICATE
79
+ )
49
80
  if response.status_code != 201:
50
81
  logger.error(response.json())
51
82
  raise ApiError(response.json())
@@ -23,6 +23,13 @@ class FindingRestConsumer:
23
23
  if response.status_code != 200:
24
24
  raise ApiError(response.json())
25
25
  findings = FindingList.from_dict(response.json())
26
+ while response.json().get("next", None):
27
+ next_url = response.json().get("next")
28
+ next_url = next_url.replace("http://", "https://", 1)
29
+ response = self.__session.get(next_url, headers=headers, data={}, verify=VERIFY_CERTIFICATE)
30
+ if response.status_code != 200:
31
+ raise ApiError(response.json())
32
+ findings.results += FindingList.from_dict(response.json()).results
26
33
  return findings
27
34
 
28
35
  def close(self, request, id):
@@ -1 +1 @@
1
- version = '1.8.10'
1
+ version = '1.8.11'
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: devsecops-engine-tools
3
- Version: 1.8.10
3
+ Version: 1.8.11
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=sTzhGP_76OJq55mYffLh1t8RbWuKuoKytHFcnDgUibc,18
2
+ devsecops_engine_tools/version.py,sha256=QINaXfXDoD1Uuf648DtGP8UCoV9DzGlQZO8UPxKpqxI,18
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
@@ -8,7 +8,7 @@ devsecops_engine_tools/engine_core/src/deployment/__init__.py,sha256=47DEQpj8HBS
8
8
  devsecops_engine_tools/engine_core/src/deployment/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  devsecops_engine_tools/engine_core/src/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
10
  devsecops_engine_tools/engine_core/src/domain/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- devsecops_engine_tools/engine_core/src/domain/model/customs_exceptions.py,sha256=Djiq-FHewZs85snLoJJkZvGjEtXqcpN2EwZuSvQJCUI,449
11
+ devsecops_engine_tools/engine_core/src/domain/model/customs_exceptions.py,sha256=YLeOj4O7kNsUx8RD6pwBQdFLYbkm7Eh-F-ohZ3jFGbs,599
12
12
  devsecops_engine_tools/engine_core/src/domain/model/exclusions.py,sha256=4Cn65ARrCw2xMAYEwoNlPUYVo5NVO0IPd6tj0wGDZig,498
13
13
  devsecops_engine_tools/engine_core/src/domain/model/finding.py,sha256=MntDksQuPt1L-1Ww3nK7NbMLfVwRjxPGCN_oHYXbbWk,383
14
14
  devsecops_engine_tools/engine_core/src/domain/model/input_core.py,sha256=hc1WMzCwsGxnrlvvk84S5iNYJRDQWbaQP9MwR3N7tVM,422
@@ -22,10 +22,10 @@ devsecops_engine_tools/engine_core/src/domain/model/gateway/devops_platform_gate
22
22
  devsecops_engine_tools/engine_core/src/domain/model/gateway/metrics_manager_gateway.py,sha256=u_ivbmCyymw0Je7gRFg0uD9iDmZfTbteH5UwcgP0JAs,191
23
23
  devsecops_engine_tools/engine_core/src/domain/model/gateway/printer_table_gateway.py,sha256=ROBsh7Lyu62a5RqZ4KgGQcwrBzbHRwxAJ9Rj3LoupQc,602
24
24
  devsecops_engine_tools/engine_core/src/domain/model/gateway/secrets_manager_gateway.py,sha256=CTwUIvUWF0NSSzdCqASUFst6KUysW53NV9eatjLGdl8,170
25
- devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py,sha256=r3b9zKi0XwKfWTIF7E8Qc6ChbrCUSjh-u-0mKBjxTLA,718
25
+ devsecops_engine_tools/engine_core/src/domain/model/gateway/vulnerability_management_gateway.py,sha256=c98JSdYYPyr82VZR4MRy49xSBVxueERbAS1mWwKqV6g,878
26
26
  devsecops_engine_tools/engine_core/src/domain/usecases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
27
  devsecops_engine_tools/engine_core/src/domain/usecases/break_build.py,sha256=FCe7Yw42eK0u71sLivQvAF-bMwZqj4aGFdBTjy7LsVI,15955
28
- devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py,sha256=aJ0LuJCuQhp_ZT9Ctx5kdc4jIhmMoKemAZm9POp--Ig,3688
28
+ devsecops_engine_tools/engine_core/src/domain/usecases/handle_risk.py,sha256=Au_ZXqwDi3CbVpQWAd29oruDAcZ1RX4e7OABSa_aRyA,7093
29
29
  devsecops_engine_tools/engine_core/src/domain/usecases/handle_scan.py,sha256=ee9ULqKGYfaxBUO8RNq-Znh4dbojghIauH4YIjYx9QU,6730
30
30
  devsecops_engine_tools/engine_core/src/domain/usecases/metrics_manager.py,sha256=Xi0iNnPrFgqd2cBdAA5E_tgouhxs-BTo016aolnGgv8,2413
31
31
  devsecops_engine_tools/engine_core/src/infrastructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -36,7 +36,7 @@ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/aws/secret
36
36
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/azure/azure_devops.py,sha256=blI4ZrquRE4y6DJ7N2YRx1nL0wrAXvdpx0fLSUf5qwA,4831
38
38
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
- devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=TN5te3osSAeURx3bcnyRQSJVH8P_PoQ0IhaER_9kWS0,15398
39
+ devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/defect_dojo/defect_dojo.py,sha256=oeaUC7GaWAjd6u8lFiTn0gdI7t7MWWzz3KpnJnF2cSE,16458
40
40
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
41
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/github/github_actions.py,sha256=pxlgjhX4-Dssn-XHKK8AdCOj6Ry6VcQtoDf5q8CxTks,3731
42
42
  devsecops_engine_tools/engine_core/src/infrastructure/driven_adapters/printer_pretty_table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -198,11 +198,12 @@ devsecops_engine_tools/engine_utilities/azuredevops/infrastructure/azure_devops_
198
198
  devsecops_engine_tools/engine_utilities/azuredevops/models/AzureMessageLoggingPipeline.py,sha256=pCwlPDDl-hgvZ9gvceuC8GsKbsMhRm3ykhFFVByVqcI,664
199
199
  devsecops_engine_tools/engine_utilities/azuredevops/models/AzurePredefinedVariables.py,sha256=r-PpcKlyuXzKHx6ao4SuVI9dOKMVnjL1U_b-yfJK0o4,2387
200
200
  devsecops_engine_tools/engine_utilities/azuredevops/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
201
- devsecops_engine_tools/engine_utilities/defect_dojo/__init__.py,sha256=RXqe3J12flRSIfRS9W6PzPIkhqpxux_-E1PnqPajI2A,263
201
+ devsecops_engine_tools/engine_utilities/defect_dojo/__init__.py,sha256=jDEfwz998pwqOZW6p7ZHBrfi8jbpYYR9N0SpekaqtdQ,310
202
202
  devsecops_engine_tools/engine_utilities/defect_dojo/hello_world.py,sha256=WDvgS22lIJJNoIM4b6mrxT8Bu_6hADmrCOZgvf5yGVY,45
203
203
  devsecops_engine_tools/engine_utilities/defect_dojo/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
204
204
  devsecops_engine_tools/engine_utilities/defect_dojo/applications/connect.py,sha256=RfHBfE0TFV9kEI21FIlfodqYIXNRCcux4h0sLgCkqhA,1879
205
205
  devsecops_engine_tools/engine_utilities/defect_dojo/applications/defect_dojo.py,sha256=xC4rOfTv66uaBqbsP3Xe5_BfG84b8lgLq68-3Al9yag,2297
206
+ devsecops_engine_tools/engine_utilities/defect_dojo/applications/engagement.py,sha256=sPTeQs6QHg07QNthqhY3caVbG54vDkd_E_KJpBvgTk4,878
206
207
  devsecops_engine_tools/engine_utilities/defect_dojo/applications/finding.py,sha256=SBbFawywfvfpqFjFdnK-LaoC05bqJe2-ee6gYntMLUk,1727
207
208
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
208
209
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -222,13 +223,14 @@ devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/finding.p
222
223
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/serializers/import_scan.py,sha256=VyV1LzeJDk51RYXz8EiweLHccpsuwTY3hTkAnkscX2E,7211
223
224
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
224
225
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/cmdb.py,sha256=BUOdvP39bEMQ6Unr2hB28eljVGU2Uv8dDEkzRyEJgyQ,2650
226
+ devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/engagement.py,sha256=SVX-weFRPT3DK7w6IBrLuWS4L6vboMuZtwXAQmIHfEE,406
225
227
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/finding.py,sha256=TjfpdJtaBwQvT8XNJKBf6tuOASOAw7ZiOxJbqsKadaA,1689
226
228
  devsecops_engine_tools/engine_utilities/defect_dojo/domain/user_case/import_scan.py,sha256=6Ik3_IUPgsvVQ3uXMV6nkxdT89-lVNQVdvVWzmZSxgE,6794
227
229
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
228
230
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
229
231
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/cmdb.py,sha256=v11qQYdGp2XmnQ3Xk_i69zHNPmNQ7rR7g9_IcNm34so,2577
230
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py,sha256=A4sTRzEN16c70wgxLbdBepRZ3acrOEzBnQXRJdpUBBc,2673
231
- devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding.py,sha256=_908m1MLeN77grEKzAQnZ9JFGtpFzT8T6B64YDlspMg,1913
232
+ devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/engagement.py,sha256=39qqmTxECRY5IoFvK_B_R0vfwfJwLbdhGt_pcdvdVIE,3571
233
+ devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/finding.py,sha256=k-z2tg_NPKMni7rZgXMZa2-t8_8F35r8YtF1EcjMyDs,2355
232
234
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/import_scan.py,sha256=68Qd8o0oSxFG-3cRlX97BkX9muS6k64DGslGtX9sx6M,5897
233
235
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product.py,sha256=viYd3_x-KAXGJE7b-AmLCRnfARTZ_1haLprEWcROcLc,2660
234
236
  devsecops_engine_tools/engine_utilities/defect_dojo/infraestructure/driver_adapters/product_type.py,sha256=9Lzsh9HCs4rbJ2b6X11renvYU3g6s-1q2NUDwbYX0qY,3051
@@ -254,8 +256,8 @@ devsecops_engine_tools/engine_utilities/utils/logger_info.py,sha256=4Mz8Bwlm9Mku
254
256
  devsecops_engine_tools/engine_utilities/utils/name_conversion.py,sha256=ADJrRGaxYSDe0ZRh6VHRf53H4sXPcb-vNP_i81PUn3I,307
255
257
  devsecops_engine_tools/engine_utilities/utils/printers.py,sha256=amYAr9YQfYgR6jK9a2l26z3oovFPQ3FAKmhq6BKhEBA,623
256
258
  devsecops_engine_tools/engine_utilities/utils/session_manager.py,sha256=yNtlT-8Legz1sHbGPH8LNYjL-LgDUE0zXG2rYjiab7U,290
257
- devsecops_engine_tools-1.8.10.dist-info/METADATA,sha256=eP7WSurKeRc_HJB2e7f7E9Z1wFTb8H985DcKOd8LKmc,10444
258
- devsecops_engine_tools-1.8.10.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
259
- devsecops_engine_tools-1.8.10.dist-info/entry_points.txt,sha256=9IjXF_7Zpgowq_SY6OSmsA9vZze18a8_AeHwkQVrgKk,131
260
- devsecops_engine_tools-1.8.10.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
261
- devsecops_engine_tools-1.8.10.dist-info/RECORD,,
259
+ devsecops_engine_tools-1.8.11.dist-info/METADATA,sha256=3FKECyn44sXgZhMzpeadfIq9fNv2WHlTy800kbrQrOE,10444
260
+ devsecops_engine_tools-1.8.11.dist-info/WHEEL,sha256=R0nc6qTxuoLk7ShA2_Y-UWkN8ZdfDBG2B6Eqpz2WXbs,91
261
+ devsecops_engine_tools-1.8.11.dist-info/entry_points.txt,sha256=9IjXF_7Zpgowq_SY6OSmsA9vZze18a8_AeHwkQVrgKk,131
262
+ devsecops_engine_tools-1.8.11.dist-info/top_level.txt,sha256=ge6y0X_xBAU1aG3EMWFtl9djbVyg5BxuSp2r2Lg6EQU,23
263
+ devsecops_engine_tools-1.8.11.dist-info/RECORD,,