77from verda .cli import main as cli_main
88from verda .cli .utils .client import get_client
99from verda .cli .utils .errors import handle_api_errors
10- from verda .cli .utils .output import output_json , output_single , output_table , success
10+ from verda .cli .utils .output import output_json , output_single , output_table , spinner , success
1111from verda .constants import Actions , Locations
1212
1313app = typer .Typer (no_args_is_help = True )
@@ -49,7 +49,8 @@ def list_instances(
4949) -> None :
5050 """List all instances."""
5151 client = get_client ()
52- instances = client .instances .get (status = status )
52+ with spinner ('Fetching instances...' ):
53+ instances = client .instances .get (status = status )
5354
5455 if cli_main .state ['json_output' ]:
5556 output_json (instances )
@@ -64,7 +65,8 @@ def get_instance(
6465) -> None :
6566 """Get instance details by ID."""
6667 client = get_client ()
67- instance = client .instances .get_by_id (instance_id )
68+ with spinner ('Fetching instance...' ):
69+ instance = client .instances .get_by_id (instance_id )
6870
6971 if cli_main .state ['json_output' ]:
7072 output_json (instance )
@@ -140,19 +142,20 @@ def create_instance(
140142
141143 max_wait_time = 0 if no_wait else 180
142144
143- instance = client .instances .create (
144- instance_type = instance_type ,
145- image = image ,
146- hostname = hostname ,
147- description = description ,
148- ssh_key_ids = ssh_key_ids or [],
149- location = location ,
150- startup_script_id = startup_script_id ,
151- existing_volumes = existing_volumes ,
152- is_spot = spot ,
153- contract = contract ,
154- max_wait_time = max_wait_time ,
155- )
145+ with spinner ('Creating instance...' ):
146+ instance = client .instances .create (
147+ instance_type = instance_type ,
148+ image = image ,
149+ hostname = hostname ,
150+ description = description ,
151+ ssh_key_ids = ssh_key_ids or [],
152+ location = location ,
153+ startup_script_id = startup_script_id ,
154+ existing_volumes = existing_volumes ,
155+ is_spot = spot ,
156+ contract = contract ,
157+ max_wait_time = max_wait_time ,
158+ )
156159
157160 if cli_main .state ['json_output' ]:
158161 output_json (instance )
@@ -175,7 +178,8 @@ def start_instance(
175178) -> None :
176179 """Start an instance."""
177180 client = get_client ()
178- client .instances .action (instance_id , Actions .START )
181+ with spinner ('Starting instance...' ):
182+ client .instances .action (instance_id , Actions .START )
179183 success (f'Instance { instance_id } start initiated' )
180184
181185
@@ -186,7 +190,8 @@ def stop_instance(
186190) -> None :
187191 """Stop (shutdown) an instance."""
188192 client = get_client ()
189- client .instances .action (instance_id , Actions .SHUTDOWN )
193+ with spinner ('Stopping instance...' ):
194+ client .instances .action (instance_id , Actions .SHUTDOWN )
190195 success (f'Instance { instance_id } shutdown initiated' )
191196
192197
@@ -206,7 +211,8 @@ def delete_instance(
206211 raise typer .Abort ()
207212
208213 client = get_client ()
209- client .instances .action (instance_id , Actions .DELETE )
214+ with spinner ('Deleting instance...' ):
215+ client .instances .action (instance_id , Actions .DELETE )
210216 success (f'Instance { instance_id } deletion initiated' )
211217
212218
@@ -217,7 +223,8 @@ def hibernate_instance(
217223) -> None :
218224 """Hibernate an instance."""
219225 client = get_client ()
220- client .instances .action (instance_id , Actions .HIBERNATE )
226+ with spinner ('Hibernating instance...' ):
227+ client .instances .action (instance_id , Actions .HIBERNATE )
221228 success (f'Instance { instance_id } hibernation initiated' )
222229
223230
@@ -228,7 +235,8 @@ def restore_instance(
228235) -> None :
229236 """Restore a hibernated instance."""
230237 client = get_client ()
231- client .instances .action (instance_id , Actions .RESTORE )
238+ with spinner ('Restoring instance...' ):
239+ client .instances .action (instance_id , Actions .RESTORE )
232240 success (f'Instance { instance_id } restore initiated' )
233241
234242
@@ -252,16 +260,20 @@ def check_availability(
252260 client = get_client ()
253261
254262 if instance_type :
255- available = client .instances .is_available (
256- instance_type , is_spot = spot , location_code = location
257- )
263+ with spinner ('Checking availability...' ):
264+ available = client .instances .is_available (
265+ instance_type , is_spot = spot , location_code = location
266+ )
258267 if cli_main .state ['json_output' ]:
259268 output_json ({'instance_type' : instance_type , 'available' : available })
260269 else :
261270 status = '[green]Available[/green]' if available else '[red]Not Available[/red]'
262271 typer .echo (f'{ instance_type } : { status } ' )
263272 else :
264- availabilities = client .instances .get_availabilities (is_spot = spot , location_code = location )
273+ with spinner ('Fetching availabilities...' ):
274+ availabilities = client .instances .get_availabilities (
275+ is_spot = spot , location_code = location
276+ )
265277 if cli_main .state ['json_output' ]:
266278 output_json (availabilities )
267279 else :
0 commit comments