1515from .tls import TLSConfigV1Alpha1
1616from jumpstarter .client .grpc import ClientService
1717from 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
2121def _allow_from_env ():
@@ -61,9 +61,14 @@ async def channel(self):
6161 return aio_secure_channel (self .endpoint , credentials , self .grpcOptions )
6262
6363 @contextmanager
64- def lease (self , selector : str | None = None , lease_name : str | None = None ):
64+ def lease (
65+ self ,
66+ selector : str | None = None ,
67+ lease_name : str | None = None ,
68+ duration : timedelta = timedelta (minutes = 30 ),
69+ ):
6570 with start_blocking_portal () as portal :
66- with portal .wrap_async_context_manager (self .lease_async (selector , lease_name , portal )) as lease :
71+ with portal .wrap_async_context_manager (self .lease_async (selector , lease_name , duration , portal )) as lease :
6772 yield lease
6873
6974 def get_exporter (self , name : str ):
@@ -79,10 +84,6 @@ def list_exporters(
7984 with start_blocking_portal () as portal :
8085 return portal .call (self .list_exporters_async , page_size , page_token , filter )
8186
82- def request_lease (self , selector : str ):
83- with start_blocking_portal () as portal :
84- return portal .call (self .request_lease_async , selector , portal )
85-
8687 def list_leases (self , filter : str ):
8788 with start_blocking_portal () as portal :
8889 return portal .call (self .list_leases_async , filter )
@@ -106,14 +107,9 @@ def update_lease(self, name, duration: timedelta):
106107 with start_blocking_portal () as portal :
107108 return portal .call (self .update_lease_async , name , duration )
108109
109- def release_lease (self , name ):
110- with start_blocking_portal () as portal :
111- portal .call (self .release_lease_async , name )
112-
113110 async def get_exporter_async (self , name : str ):
114111 svc = ClientService (channel = await self .channel (), namespace = self .metadata .namespace )
115- with translate_grpc_exceptions ():
116- return await svc .GetExporter (name = name )
112+ return await svc .GetExporter (name = name )
117113
118114 async def list_exporters_async (
119115 self ,
@@ -122,70 +118,39 @@ async def list_exporters_async(
122118 filter : str | None = None ,
123119 ):
124120 svc = ClientService (channel = await self .channel (), namespace = self .metadata .namespace )
125- with translate_grpc_exceptions ():
126- 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 )
127122
128123 async def create_lease_async (
129124 self ,
130125 selector : str ,
131126 duration : timedelta ,
132127 ):
133128 svc = ClientService (channel = await self .channel (), namespace = self .metadata .namespace )
134- with translate_grpc_exceptions ():
135- return await svc .CreateLease (
136- selector = selector ,
137- duration = duration ,
138- )
129+ return await svc .CreateLease (
130+ selector = selector ,
131+ duration = duration ,
132+ )
139133
140134 async def delete_lease_async (self , name : str ):
141135 svc = ClientService (channel = await self .channel (), namespace = self .metadata .namespace )
142- with translate_grpc_exceptions ():
143- await svc .DeleteLease (
144- name = name ,
145- )
146-
147- async def request_lease_async (
148- self ,
149- selector : str ,
150- portal : BlockingPortal ,
151- ):
152- # dynamically import to avoid circular imports
153- from jumpstarter .client import Lease
154-
155- lease = Lease (
156- channel = await self .channel (),
157- namespace = self .metadata .namespace ,
158- name = None ,
159- selector = selector ,
160- portal = portal ,
161- allow = self .drivers .allow ,
162- unsafe = self .drivers .unsafe ,
163- tls_config = self .tls ,
164- grpc_options = self .grpcOptions ,
136+ await svc .DeleteLease (
137+ name = name ,
165138 )
166- with translate_grpc_exceptions ():
167- return await lease .request_async ()
168139
169140 async def list_leases_async (self , filter : str ):
170141 svc = ClientService (channel = await self .channel (), namespace = self .metadata .namespace )
171- with translate_grpc_exceptions ():
172- return await svc .ListLeases (filter = filter )
142+ return await svc .ListLeases (filter = filter )
173143
174144 async def update_lease_async (self , name , duration : timedelta ):
175145 svc = ClientService (channel = await self .channel (), namespace = self .metadata .namespace )
176- with translate_grpc_exceptions ():
177- return await svc .UpdateLease (name = name , duration = duration )
178-
179- async def release_lease_async (self , name ):
180- svc = ClientService (channel = await self .channel (), namespace = self .metadata .namespace )
181- with translate_grpc_exceptions ():
182- await svc .DeleteLease (name = name )
146+ return await svc .UpdateLease (name = name , duration = duration )
183147
184148 @asynccontextmanager
185149 async def lease_async (
186150 self ,
187151 selector : str ,
188152 lease_name : str | None ,
153+ duration : timedelta ,
189154 portal : BlockingPortal ,
190155 ):
191156 from jumpstarter .client import Lease
@@ -200,6 +165,7 @@ async def lease_async(
200165 namespace = self .metadata .namespace ,
201166 name = lease_name ,
202167 selector = selector ,
168+ duration = duration ,
203169 portal = portal ,
204170 allow = self .drivers .allow ,
205171 unsafe = self .drivers .unsafe ,
0 commit comments