llama-deploy-core 0.3.12__py3-none-any.whl → 0.3.14__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.
@@ -8,9 +8,11 @@ from llama_deploy.core.client.ssl_util import get_httpx_verify_param
8
8
  from llama_deploy.core.schema import LogEvent
9
9
  from llama_deploy.core.schema.deployments import (
10
10
  DeploymentCreate,
11
+ DeploymentHistoryResponse,
11
12
  DeploymentResponse,
12
13
  DeploymentsListResponse,
13
14
  DeploymentUpdate,
15
+ RollbackRequest,
14
16
  )
15
17
  from llama_deploy.core.schema.git_validation import (
16
18
  RepositoryValidationRequest,
@@ -202,6 +204,27 @@ class ProjectClient(BaseClient):
202
204
  _raise_for_status(response)
203
205
  return DeploymentResponse.model_validate(response.json())
204
206
 
207
+ async def get_deployment_history(
208
+ self, deployment_id: str
209
+ ) -> DeploymentHistoryResponse:
210
+ response = await self.client.get(
211
+ f"/api/v1beta1/deployments/{deployment_id}/history",
212
+ params={"project_id": self.project_id},
213
+ )
214
+ _raise_for_status(response)
215
+ return DeploymentHistoryResponse.model_validate(response.json())
216
+
217
+ async def rollback_deployment(
218
+ self, deployment_id: str, git_sha: str
219
+ ) -> DeploymentResponse:
220
+ response = await self.client.post(
221
+ f"/api/v1beta1/deployments/{deployment_id}/rollback",
222
+ params={"project_id": self.project_id},
223
+ json=RollbackRequest(git_sha=git_sha).model_dump(),
224
+ )
225
+ _raise_for_status(response)
226
+ return DeploymentResponse.model_validate(response.json())
227
+
205
228
  async def validate_repository(
206
229
  self,
207
230
  repo_url: str,
@@ -265,6 +265,14 @@ def get_current_branch() -> str | None:
265
265
  return result.strip() if result.strip() else None
266
266
 
267
267
 
268
+ def get_commit_sha_for_ref(ref: str) -> str | None:
269
+ """
270
+ get the commit SHA for a specified ref (branch, commit, HEAD...)
271
+ """
272
+ result = _run_process(["git", "rev-parse", ref])
273
+ return result.strip() if result.strip() else None
274
+
275
+
268
276
  def get_git_root() -> Path:
269
277
  """
270
278
  get the root of the current git repo
@@ -1,12 +1,14 @@
1
1
  from .base import Base
2
2
  from .deployments import (
3
3
  DeploymentCreate,
4
+ DeploymentHistoryResponse,
4
5
  DeploymentResponse,
5
6
  DeploymentsListResponse,
6
7
  DeploymentUpdate,
7
8
  LlamaDeploymentPhase,
8
9
  LlamaDeploymentSpec,
9
10
  LogEvent,
11
+ RollbackRequest,
10
12
  apply_deployment_update,
11
13
  )
12
14
  from .git_validation import RepositoryValidationRequest, RepositoryValidationResponse
@@ -20,6 +22,8 @@ __all__ = [
20
22
  "DeploymentResponse",
21
23
  "DeploymentUpdate",
22
24
  "DeploymentsListResponse",
25
+ "DeploymentHistoryResponse",
26
+ "RollbackRequest",
23
27
  "LlamaDeploymentSpec",
24
28
  "apply_deployment_update",
25
29
  "LlamaDeploymentPhase",
@@ -102,6 +102,8 @@ class LlamaDeploymentStatus(Base):
102
102
  message: str | None = None
103
103
  lastUpdated: datetime | None = None
104
104
  authToken: str | None = None
105
+ # Historical list of released versions from the CRD (camelCase fields)
106
+ releaseHistory: list["ReleaseHistoryEntry"] | None = None
105
107
 
106
108
 
107
109
  class LlamaDeploymentCRD(Base):
@@ -224,3 +226,33 @@ class LogEvent(Base):
224
226
  container: str
225
227
  text: str
226
228
  timestamp: datetime
229
+
230
+
231
+ # ===== Release history models =====
232
+
233
+
234
+ class ReleaseHistoryEntry(Base):
235
+ """
236
+ Mirrors the CRD status.releaseHistory entry with camelCase keys.
237
+ """
238
+
239
+ gitSha: str
240
+ releasedAt: datetime
241
+
242
+
243
+ class ReleaseHistoryItem(Base):
244
+ """
245
+ API-exposed release history item with snake_case keys for clients.
246
+ """
247
+
248
+ git_sha: str
249
+ released_at: datetime
250
+
251
+
252
+ class DeploymentHistoryResponse(Base):
253
+ deployment_id: str
254
+ history: list[ReleaseHistoryItem]
255
+
256
+
257
+ class RollbackRequest(Base):
258
+ git_sha: str
@@ -3,7 +3,11 @@ from typing import AsyncGenerator, cast
3
3
 
4
4
  from llama_deploy.core import schema
5
5
  from llama_deploy.core.schema import LogEvent
6
- from llama_deploy.core.schema.deployments import DeploymentResponse
6
+ from llama_deploy.core.schema.deployments import (
7
+ DeploymentHistoryResponse,
8
+ DeploymentResponse,
9
+ RollbackRequest,
10
+ )
7
11
 
8
12
 
9
13
  class AbstractPublicDeploymentsService(ABC):
@@ -134,6 +138,24 @@ class AbstractDeploymentsService(ABC):
134
138
  """
135
139
  ...
136
140
 
141
+ @abstractmethod
142
+ async def get_deployment_history(
143
+ self, project_id: str, deployment_id: str
144
+ ) -> DeploymentHistoryResponse:
145
+ """
146
+ Get the release history for a deployment.
147
+ """
148
+ ...
149
+
150
+ @abstractmethod
151
+ async def rollback_deployment(
152
+ self, project_id: str, deployment_id: str, request: RollbackRequest
153
+ ) -> DeploymentResponse:
154
+ """
155
+ Roll back a deployment to a previous git sha.
156
+ """
157
+ ...
158
+
137
159
  @abstractmethod
138
160
  async def stream_deployment_logs(
139
161
  self,
@@ -103,6 +103,25 @@ def create_v1beta1_deployments_router(
103
103
 
104
104
  return deployment
105
105
 
106
+ @router.get("/{deployment_id}/history")
107
+ async def get_deployment_history(
108
+ project_id: Annotated[str, Depends(get_project_id)],
109
+ deployment_id: str,
110
+ ) -> schema.DeploymentHistoryResponse:
111
+ return await deployments_service.get_deployment_history(
112
+ project_id=project_id, deployment_id=deployment_id
113
+ )
114
+
115
+ @router.post("/{deployment_id}/rollback")
116
+ async def rollback_deployment(
117
+ project_id: Annotated[str, Depends(get_project_id)],
118
+ deployment_id: str,
119
+ request: schema.RollbackRequest,
120
+ ) -> schema.DeploymentResponse:
121
+ return await deployments_service.rollback_deployment(
122
+ project_id=project_id, deployment_id=deployment_id, request=request
123
+ )
124
+
106
125
  @router.delete("/{deployment_id}")
107
126
  async def delete_deployment(
108
127
  project_id: Annotated[str, Depends(get_project_id)],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: llama-deploy-core
3
- Version: 0.3.12
3
+ Version: 0.3.14
4
4
  Summary: Core models and schemas for LlamaDeploy
5
5
  License: MIT
6
6
  Requires-Dist: fastapi>=0.115.0
@@ -1,23 +1,23 @@
1
1
  llama_deploy/core/__init__.py,sha256=112612bf2e928c2e0310d6556bb13fc28c00db70297b90a8527486cd2562e408,43
2
- llama_deploy/core/client/manage_client.py,sha256=944f565d8e9397e76e94b032d91b818924dc5b5b4c5859eb78e20d670707de00,9479
2
+ llama_deploy/core/client/manage_client.py,sha256=d33613cc3355896dc15d20ead713b7766fd900f43c5f4d547e8e8df9e29a660f,10366
3
3
  llama_deploy/core/client/ssl_util.py,sha256=b9743dc828fa27c18ba0867b1348662cdf0d855965c5a33db63505f23eef5d7b,1010
4
4
  llama_deploy/core/config.py,sha256=69bb0ea8ac169eaa4e808cd60a098b616bddd3145d26c6c35e56db38496b0e6a,35
5
5
  llama_deploy/core/deployment_config.py,sha256=bde431070758421f578f2e27f006152147e8cd752ee1054f1bf7c37ca95b0b38,15853
6
- llama_deploy/core/git/git_util.py,sha256=e62a5479c619a5973de203ebcc56b9729b5060c48fcb9cfc2e442756716c2abf,10960
6
+ llama_deploy/core/git/git_util.py,sha256=8b20ba8c12cbcd26ef7d4d06e9fd693f643fc4a64d6da739c3977451e91f1658,11206
7
7
  llama_deploy/core/iter_utils.py,sha256=68ac9dbf09f58315ffcfec6bd01ed50b88a954b00458da9bc28a0535b79ba29e,7042
8
8
  llama_deploy/core/path_util.py,sha256=14d50c0c337c8450ed46cafc88436027056b365a48370a69cdb76c88d7c26fd1,798
9
9
  llama_deploy/core/py.typed,sha256=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,0
10
- llama_deploy/core/schema/__init__.py,sha256=d1459ee50c690779a682130eff72f61dc1a687d2d4b26d8a5d3620a72d92d831,802
10
+ llama_deploy/core/schema/__init__.py,sha256=d466fb068415a890de01be1696237cbd62e5fb0d83a6b2976e80c4d29381cd29,910
11
11
  llama_deploy/core/schema/base.py,sha256=2de6d23e58c36b6bb311ec0aea4b902661867056c1250c6b7ce3bad17141fe15,677
12
- llama_deploy/core/schema/deployments.py,sha256=a85c294fdca939023918d93c36e4fa3f7a39a65383ec3b8f60d2f82ba43c0e93,7030
12
+ llama_deploy/core/schema/deployments.py,sha256=b541978218dfcd1de4a326c7376c172b9ece1d2ccff85631c6551608610b98f8,7683
13
13
  llama_deploy/core/schema/git_validation.py,sha256=27b306aa6ecabe58cab6381d92551545f263fe7550c58b3087115410bc71fd21,1915
14
14
  llama_deploy/core/schema/projects.py,sha256=726f91e90ff8699c90861d9740819c44c3f00d945ab09df71bd6d35fdc218a45,726
15
15
  llama_deploy/core/schema/public.py,sha256=022129c8fc09192f5e503b0500ccf54d106f5712b9cf8ce84b3b1c37e186f930,147
16
16
  llama_deploy/core/server/manage_api/__init__.py,sha256=e477ccab59cfd084edbad46f209972a282e623eb314d0847a754a46a16361db5,457
17
- llama_deploy/core/server/manage_api/_abstract_deployments_service.py,sha256=85ceab2a343c3642db7f77d4a665d5710a14bca920bbfdc25c5f1168cce30b22,4638
18
- llama_deploy/core/server/manage_api/_create_deployments_router.py,sha256=9bc8468169445e1cc7f2a479e1c7da42b4bdd7482fa3b440e03ee49cd09a75df,6801
17
+ llama_deploy/core/server/manage_api/_abstract_deployments_service.py,sha256=4b55c9628a9374a68bb78b7f6ae362b7cf4d1c5fc13d35e5cac191130fc13731,5181
18
+ llama_deploy/core/server/manage_api/_create_deployments_router.py,sha256=2db7d59a43e8690cf6d3d925940212228498f0a7c5728cfcf4253830d6fa1b52,7554
19
19
  llama_deploy/core/server/manage_api/_exceptions.py,sha256=ee71cd9c2354a665e6905cd9cc752d2d65f71f0b936d33fec3c1c5229c38accf,246
20
20
  llama_deploy/core/ui_build.py,sha256=290dafa951918e5593b9035570fa4c66791d7e5ea785bd372ad11e99e8283857,1514
21
- llama_deploy_core-0.3.12.dist-info/WHEEL,sha256=66530aef82d5020ef5af27ae0123c71abb9261377c5bc519376c671346b12918,79
22
- llama_deploy_core-0.3.12.dist-info/METADATA,sha256=4a2b2d5d8204fbef0e58ea396b2d3474d01700d4e06b182cb6cb5f6a234f0d6f,698
23
- llama_deploy_core-0.3.12.dist-info/RECORD,,
21
+ llama_deploy_core-0.3.14.dist-info/WHEEL,sha256=66530aef82d5020ef5af27ae0123c71abb9261377c5bc519376c671346b12918,79
22
+ llama_deploy_core-0.3.14.dist-info/METADATA,sha256=6e3498e70352f5dac2034d2fcea13f190cdb88f61c1afcec1a000f20a4dcb895,698
23
+ llama_deploy_core-0.3.14.dist-info/RECORD,,