Source code for pinecone.client.restore_jobs
"""RestoreJobs namespace — list and describe restore job operations."""
from __future__ import annotations
import logging
from typing import TYPE_CHECKING, Any
from pinecone._internal.adapters.restore_jobs_adapter import RestoreJobsAdapter
from pinecone._internal.validation import require_non_empty
from pinecone.models.backups.list import RestoreJobList
from pinecone.models.backups.model import RestoreJobModel
if TYPE_CHECKING:
from pinecone._internal.http_client import HTTPClient
logger = logging.getLogger(__name__)
[docs]
class RestoreJobs:
"""Control-plane operations for Pinecone restore jobs.
Provides methods to list and describe restore jobs.
Args:
http (HTTPClient): HTTP client for making API requests.
Examples:
.. code-block:: python
from pinecone import Pinecone
pc = Pinecone(api_key="your-api-key")
ids = [job.restore_job_id for job in pc.restore_jobs.list()]
"""
[docs]
def __init__(self, http: HTTPClient) -> None:
self._http = http
self._adapter = RestoreJobsAdapter()
def __repr__(self) -> str:
"""Return developer-friendly representation."""
return "RestoreJobs()"
[docs]
def list(
self,
*,
limit: int = 10,
pagination_token: str | None = None,
) -> RestoreJobList:
"""List all restore jobs in the project.
Supports cursor-based pagination. Defaults to 10 results per page.
Args:
limit (int): Maximum number of results per page. Defaults to 10.
pagination_token (str | None): Token for cursor-based pagination.
Returns:
A :class:`RestoreJobList` supporting iteration, len(), and index access.
Raises:
:exc:`ApiError`: If the API returns an error response.
Examples:
>>> from pinecone import Pinecone
>>> pc = Pinecone(api_key="your-api-key")
>>> for job in pc.restore_jobs.list(): # doctest: +SKIP
... print(job.restore_job_id, job.status)
>>> jobs = pc.restore_jobs.list(limit=5) # doctest: +SKIP
>>> len(jobs) # doctest: +SKIP
5
"""
params: dict[str, Any] = {"limit": limit}
if pagination_token is not None:
params["paginationToken"] = pagination_token
logger.info("Listing restore jobs")
response = self._http.get("/restore-jobs", params=params)
result = self._adapter.to_restore_job_list(response.content)
logger.debug("Listed %d restore jobs", len(result))
return result
[docs]
def describe(self, *, job_id: str) -> RestoreJobModel:
"""Get detailed information about a restore job.
Args:
job_id (str): The identifier of the restore job to describe.
Returns:
A :class:`RestoreJobModel` with full restore job details.
Raises:
:exc:`ValidationError`: If *job_id* is empty.
:exc:`NotFoundError`: If the restore job does not exist.
:exc:`ApiError`: If the API returns another error response.
Examples:
>>> from pinecone import Pinecone
>>> pc = Pinecone(api_key="your-api-key")
>>> job = pc.restore_jobs.describe(job_id="rj-restore-20240115")
>>> job.status
'Completed'
"""
require_non_empty("job_id", job_id)
logger.info("Describing restore job %r", job_id)
response = self._http.get(f"/restore-jobs/{job_id}")
result = self._adapter.to_restore_job(response.content)
logger.debug("Described restore job %r", job_id)
return result