main
py 68 lines 2.8 KB
Raw
1 from fastapi import APIRouter
2 from fastapi import Depends
3 from fastapi import Security
4 from sqlalchemy.ext.asyncio import AsyncSession
5
6 from app.auth.routes.auth import AuthHandler
7 from app.db.db_session import get_db
8 from app.integrations.sap_siem.schema.provision import ProvisionSapSiemRequest
9 from app.integrations.sap_siem.schema.provision import ProvisionSapSiemResponse
10 from app.integrations.sap_siem.services.provision import provision_sap_siem
11 from app.integrations.utils.utils import get_customer_integration_response
12 from app.schedulers.models.scheduler import CreateSchedulerRequest
13 from app.schedulers.scheduler import add_scheduler_jobs
14
15 integration_sap_siem_provision_scheduler_router = APIRouter()
16
17
18 @integration_sap_siem_provision_scheduler_router.post(
19 "/provision",
20 response_model=ProvisionSapSiemResponse,
21 description="Provision a SAP SIEM integration.",
22 dependencies=[Security(AuthHandler().require_any_scope("admin", "analyst"))],
23 )
24 async def provision_sap_siem_route(
25 provision_sap_siem_request: ProvisionSapSiemRequest,
26 session: AsyncSession = Depends(get_db),
27 ) -> ProvisionSapSiemResponse:
28 """
29 Provisions a mimecast integration.
30
31 Args:
32 provision_sap_siem_request (ProvisionSapSiemRequest): The request object containing the necessary data for provisioning.
33 session (AsyncSession, optional): The database session. Defaults to Depends(get_db).
34
35 Returns:
36 ProvisionMimecastResponse: The response object indicating the success or failure of the provisioning process.
37 """
38 # Check if the customer integration settings are available and can be provisioned
39 await get_customer_integration_response(
40 provision_sap_siem_request.customer_code,
41 session,
42 )
43 await provision_sap_siem(provision_sap_siem_request, session)
44 await add_scheduler_jobs(
45 CreateSchedulerRequest(
46 function_name="invoke_sap_siem_integration_collection",
47 time_interval=provision_sap_siem_request.time_interval,
48 job_id="invoke_sap_siem_integration_collection",
49 ),
50 )
51 await add_scheduler_jobs(
52 CreateSchedulerRequest(
53 function_name="invoke_sap_siem_integration_suspicious_logins_analysis",
54 time_interval=provision_sap_siem_request.time_interval,
55 job_id="invoke_sap_siem_integration_suspicious_logins_analysis",
56 ),
57 )
58 await add_scheduler_jobs(
59 CreateSchedulerRequest(
60 function_name="invoke_sap_siem_integration_multiple_logins_same_ip_analysis",
61 time_interval=provision_sap_siem_request.time_interval,
62 job_id="invoke_sap_siem_integration_multiple_logins_same_ip_analysis",
63 ),
64 )
65 return ProvisionSapSiemResponse(
66 success=True,
67 message="SAP SIEM integration provisioned successfully.",
68 )