11__all__ = ["Pregel" ]
22
3- from typing import Optional
3+ from typing import Optional , Sequence
44
55from arango .api import ApiGroup
66from arango .exceptions import (
77 PregelJobCreateError ,
88 PregelJobDeleteError ,
99 PregelJobGetError ,
1010)
11- from arango .formatter import format_pregel_job_data
11+ from arango .formatter import format_pregel_job_data , format_pregel_job_list
1212from arango .request import Request
1313from arango .response import Response
1414from arango .result import Result
@@ -49,6 +49,8 @@ def create_job(
4949 async_mode : Optional [bool ] = None ,
5050 result_field : Optional [str ] = None ,
5151 algorithm_params : Optional [Json ] = None ,
52+ vertexCollections : Optional [Sequence [str ]] = None ,
53+ edgeCollections : Optional [Sequence [str ]] = None ,
5254 ) -> Result [int ]:
5355 """Start a new Pregel job.
5456
@@ -74,12 +76,21 @@ def create_job(
7476 :type result_field: str | None
7577 :param algorithm_params: Additional algorithm parameters.
7678 :type algorithm_params: dict | None
79+ :param vertexCollections: List of vertex collection names.
80+ :type vertexCollections: Sequence[str] | None
81+ :param edgeCollections: List of edge collection names.
82+ :type edgeCollections: Sequence[str] | None
7783 :return: Pregel job ID.
7884 :rtype: int
7985 :raise arango.exceptions.PregelJobCreateError: If create fails.
8086 """
8187 data : Json = {"algorithm" : algorithm , "graphName" : graph }
8288
89+ if vertexCollections is not None :
90+ data ["vertexCollections" ] = vertexCollections
91+ if edgeCollections is not None :
92+ data ["edgeCollections" ] = edgeCollections
93+
8394 if algorithm_params is None :
8495 algorithm_params = {}
8596
@@ -122,3 +133,20 @@ def response_handler(resp: Response) -> bool:
122133 raise PregelJobDeleteError (resp , request )
123134
124135 return self ._execute (request , response_handler )
136+
137+ def jobs (self ) -> Result [Json ]:
138+ """Returns a list of currently running and recently
139+ finished Pregel jobs without retrieving their results.
140+
141+ :return: Details of each running or recently finished Pregel job.
142+ :rtype: dict
143+ :raise arango.exceptions.PregelJobGetError: If retrieval fails.
144+ """
145+ request = Request (method = "get" , endpoint = "/_api/control_pregel" )
146+
147+ def response_handler (resp : Response ) -> Json :
148+ if resp .is_success :
149+ return format_pregel_job_list (resp .body )
150+ raise PregelJobGetError (resp , request )
151+
152+ return self ._execute (request , response_handler )
0 commit comments