Skip to content
This repository was archived by the owner on Jan 23, 2026. It is now read-only.

Commit cdc2618

Browse files
committed
translate_grpc_exceptions in grpc wrapper
1 parent fab4650 commit cdc2618

2 files changed

Lines changed: 63 additions & 60 deletions

File tree

packages/jumpstarter/jumpstarter/client/grpc.py

Lines changed: 51 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
from jumpstarter_protocol import client_pb2, client_pb2_grpc, kubernetes_pb2
1010
from pydantic import BaseModel, ConfigDict, Field, field_serializer
1111

12+
from jumpstarter.common.grpc import translate_grpc_exceptions
13+
1214

1315
def parse_identifier(identifier: str, kind: str) -> (str, str):
1416
segments = identifier.split("/")
@@ -143,11 +145,12 @@ def __post_init__(self):
143145
self.stub = client_pb2_grpc.ClientServiceStub(channel=self.channel)
144146

145147
async def GetExporter(self, *, name: str):
146-
exporter = await self.stub.GetExporter(
147-
client_pb2.GetExporterRequest(
148-
name="namespaces/{}/exporters/{}".format(self.namespace, name),
148+
with translate_grpc_exceptions():
149+
exporter = await self.stub.GetExporter(
150+
client_pb2.GetExporterRequest(
151+
name="namespaces/{}/exporters/{}".format(self.namespace, name),
152+
)
149153
)
150-
)
151154
return Exporter.from_protobuf(exporter)
152155

153156
async def ListExporters(
@@ -157,22 +160,24 @@ async def ListExporters(
157160
page_token: str | None = None,
158161
filter: str | None = None,
159162
):
160-
exporters = await self.stub.ListExporters(
161-
client_pb2.ListExportersRequest(
162-
parent="namespaces/{}".format(self.namespace),
163-
page_size=page_size,
164-
page_token=page_token,
165-
filter=filter,
163+
with translate_grpc_exceptions():
164+
exporters = await self.stub.ListExporters(
165+
client_pb2.ListExportersRequest(
166+
parent="namespaces/{}".format(self.namespace),
167+
page_size=page_size,
168+
page_token=page_token,
169+
filter=filter,
170+
)
166171
)
167-
)
168172
return ExporterList.from_protobuf(exporters)
169173

170174
async def GetLease(self, *, name: str):
171-
lease = await self.stub.GetLease(
172-
client_pb2.GetLeaseRequest(
173-
name="namespaces/{}/leases/{}".format(self.namespace, name),
175+
with translate_grpc_exceptions():
176+
lease = await self.stub.GetLease(
177+
client_pb2.GetLeaseRequest(
178+
name="namespaces/{}/leases/{}".format(self.namespace, name),
179+
)
174180
)
175-
)
176181
return Lease.from_protobuf(lease)
177182

178183
async def ListLeases(
@@ -182,14 +187,15 @@ async def ListLeases(
182187
page_token: str | None = None,
183188
filter: str | None = None,
184189
):
185-
leases = await self.stub.ListLeases(
186-
client_pb2.ListLeasesRequest(
187-
parent="namespaces/{}".format(self.namespace),
188-
page_size=page_size,
189-
page_token=page_token,
190-
filter=filter,
190+
with translate_grpc_exceptions():
191+
leases = await self.stub.ListLeases(
192+
client_pb2.ListLeasesRequest(
193+
parent="namespaces/{}".format(self.namespace),
194+
page_size=page_size,
195+
page_token=page_token,
196+
filter=filter,
197+
)
191198
)
192-
)
193199
return LeaseList.from_protobuf(leases)
194200

195201
async def CreateLease(
@@ -201,15 +207,16 @@ async def CreateLease(
201207
duration_pb = duration_pb2.Duration()
202208
duration_pb.FromTimedelta(duration)
203209

204-
lease = await self.stub.CreateLease(
205-
client_pb2.CreateLeaseRequest(
206-
parent="namespaces/{}".format(self.namespace),
207-
lease=client_pb2.Lease(
208-
duration=duration_pb,
209-
selector=selector,
210-
),
210+
with translate_grpc_exceptions():
211+
lease = await self.stub.CreateLease(
212+
client_pb2.CreateLeaseRequest(
213+
parent="namespaces/{}".format(self.namespace),
214+
lease=client_pb2.Lease(
215+
duration=duration_pb,
216+
selector=selector,
217+
),
218+
)
211219
)
212-
)
213220
return Lease.from_protobuf(lease)
214221

215222
async def UpdateLease(
@@ -224,20 +231,22 @@ async def UpdateLease(
224231
update_mask = field_mask_pb2.FieldMask()
225232
update_mask.FromJsonString("duration")
226233

227-
lease = await self.stub.UpdateLease(
228-
client_pb2.UpdateLeaseRequest(
229-
lease=client_pb2.Lease(
230-
name="namespaces/{}/leases/{}".format(self.namespace, name),
231-
duration=duration_pb,
232-
),
233-
update_mask=update_mask,
234+
with translate_grpc_exceptions():
235+
lease = await self.stub.UpdateLease(
236+
client_pb2.UpdateLeaseRequest(
237+
lease=client_pb2.Lease(
238+
name="namespaces/{}/leases/{}".format(self.namespace, name),
239+
duration=duration_pb,
240+
),
241+
update_mask=update_mask,
242+
)
234243
)
235-
)
236244
return Lease.from_protobuf(lease)
237245

238246
async def DeleteLease(self, *, name: str):
239-
await self.stub.DeleteLease(
240-
client_pb2.DeleteLeaseRequest(
241-
name="namespaces/{}/leases/{}".format(self.namespace, name),
247+
with translate_grpc_exceptions():
248+
await self.stub.DeleteLease(
249+
client_pb2.DeleteLeaseRequest(
250+
name="namespaces/{}/leases/{}".format(self.namespace, name),
251+
)
242252
)
243-
)

packages/jumpstarter/jumpstarter/config/client.py

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from .tls import TLSConfigV1Alpha1
1616
from jumpstarter.client.grpc import ClientService
1717
from jumpstarter.common.exceptions import FileNotFoundError
18-
from jumpstarter.common.grpc import aio_secure_channel, ssl_channel_credentials, translate_grpc_exceptions
18+
from jumpstarter.common.grpc import aio_secure_channel, ssl_channel_credentials
1919

2020

2121
def _allow_from_env():
@@ -109,8 +109,7 @@ def update_lease(self, name, duration: timedelta):
109109

110110
async def get_exporter_async(self, name: str):
111111
svc = ClientService(channel=await self.channel(), namespace=self.metadata.namespace)
112-
with translate_grpc_exceptions():
113-
return await svc.GetExporter(name=name)
112+
return await svc.GetExporter(name=name)
114113

115114
async def list_exporters_async(
116115
self,
@@ -119,37 +118,32 @@ async def list_exporters_async(
119118
filter: str | None = None,
120119
):
121120
svc = ClientService(channel=await self.channel(), namespace=self.metadata.namespace)
122-
with translate_grpc_exceptions():
123-
return await svc.ListExporters(page_size=page_size, page_token=page_token, filter=filter)
121+
return await svc.ListExporters(page_size=page_size, page_token=page_token, filter=filter)
124122

125123
async def create_lease_async(
126124
self,
127125
selector: str,
128126
duration: timedelta,
129127
):
130128
svc = ClientService(channel=await self.channel(), namespace=self.metadata.namespace)
131-
with translate_grpc_exceptions():
132-
return await svc.CreateLease(
133-
selector=selector,
134-
duration=duration,
135-
)
129+
return await svc.CreateLease(
130+
selector=selector,
131+
duration=duration,
132+
)
136133

137134
async def delete_lease_async(self, name: str):
138135
svc = ClientService(channel=await self.channel(), namespace=self.metadata.namespace)
139-
with translate_grpc_exceptions():
140-
await svc.DeleteLease(
141-
name=name,
142-
)
136+
await svc.DeleteLease(
137+
name=name,
138+
)
143139

144140
async def list_leases_async(self, filter: str):
145141
svc = ClientService(channel=await self.channel(), namespace=self.metadata.namespace)
146-
with translate_grpc_exceptions():
147-
return await svc.ListLeases(filter=filter)
142+
return await svc.ListLeases(filter=filter)
148143

149144
async def update_lease_async(self, name, duration: timedelta):
150145
svc = ClientService(channel=await self.channel(), namespace=self.metadata.namespace)
151-
with translate_grpc_exceptions():
152-
return await svc.UpdateLease(name=name, duration=duration)
146+
return await svc.UpdateLease(name=name, duration=duration)
153147

154148
@asynccontextmanager
155149
async def lease_async(

0 commit comments

Comments
 (0)