1111from app .exceptions import (
1212 VMNotFoundException ,
1313 InvalidStateTransitionException ,
14- VMAlreadyExistsException
14+ VMAlreadyExistsException ,
15+ )
16+ from app .models .vm import (
17+ VMStatus ,
18+ VMCreateRequest ,
19+ VMResponse ,
20+ VMListResponse ,
21+ VMStatusResponse ,
1522)
16- from app .models .vm import VMStatus , VMCreateRequest , VMResponse , VMListResponse , VMStatusResponse
1723from app .repositories .vm_repository import VMRepository
1824
1925logger = logging .getLogger (__name__ )
@@ -80,10 +86,7 @@ def get_vm(self, vm_id: UUID) -> VMResponse:
8086 return VMResponse (** vm .to_dict ())
8187
8288 def list_vms (
83- self ,
84- page : int = 1 ,
85- page_size : int = 10 ,
86- status_filter : Optional [str ] = None
89+ self , page : int = 1 , page_size : int = 10 , status_filter : Optional [str ] = None
8790 ) -> VMListResponse :
8891 """
8992 List all VMs with pagination.
@@ -108,10 +111,7 @@ def list_vms(
108111
109112 logger .info (f"Listed { len (vm_responses )} VMs (page={ page } , total={ total } )" )
110113 return VMListResponse (
111- items = vm_responses ,
112- total = total ,
113- page = page ,
114- page_size = page_size
114+ items = vm_responses , total = total , page = page , page_size = page_size
115115 )
116116
117117 def start_vm (self , vm_id : UUID ) -> VMResponse :
@@ -133,10 +133,13 @@ def start_vm(self, vm_id: UUID) -> VMResponse:
133133 raise VMNotFoundException (vm_id )
134134
135135 if vm .status != VMStatus .STOPPED :
136- logger .warning (f"Invalid state transition: Cannot start VM { vm_id } in state { vm .status } " )
136+ logger .warning (
137+ f"Invalid state transition: Cannot start VM { vm_id } in state { vm .status } "
138+ )
137139 raise InvalidStateTransitionException (vm_id , str (vm .status ), "start" )
138140
139141 updated_vm = self .repository .update_status (vm_id , VMStatus .RUNNING )
142+ assert updated_vm is not None , f"VM { vm_id } should exist after status check"
140143 logger .info (f"VM started successfully: { vm_id } " )
141144 return VMResponse (** updated_vm .to_dict ())
142145
@@ -163,10 +166,13 @@ def stop_vm(self, vm_id: UUID) -> VMResponse:
163166 raise InvalidStateTransitionException (vm_id , str (vm .status ), "stop" )
164167
165168 if vm .status not in [VMStatus .RUNNING , VMStatus .PAUSED ]:
166- logger .warning (f"Invalid state transition: Cannot stop VM { vm_id } in state { vm .status } " )
169+ logger .warning (
170+ f"Invalid state transition: Cannot stop VM { vm_id } in state { vm .status } "
171+ )
167172 raise InvalidStateTransitionException (vm_id , str (vm .status ), "stop" )
168173
169174 updated_vm = self .repository .update_status (vm_id , VMStatus .STOPPED )
175+ assert updated_vm is not None , f"VM { vm_id } should exist after status check"
170176 logger .info (f"VM stopped successfully: { vm_id } " )
171177 return VMResponse (** updated_vm .to_dict ())
172178
@@ -189,11 +195,14 @@ def restart_vm(self, vm_id: UUID) -> VMResponse:
189195 raise VMNotFoundException (vm_id )
190196
191197 if vm .status != VMStatus .RUNNING :
192- logger .warning (f"Invalid state transition: Cannot restart VM { vm_id } in state { vm .status } " )
198+ logger .warning (
199+ f"Invalid state transition: Cannot restart VM { vm_id } in state { vm .status } "
200+ )
193201 raise InvalidStateTransitionException (vm_id , str (vm .status ), "restart" )
194202
195203 # Restart keeps the status as RUNNING but updates the timestamp
196204 updated_vm = self .repository .update_status (vm_id , VMStatus .RUNNING )
205+ assert updated_vm is not None , f"VM { vm_id } should exist after status check"
197206 logger .info (f"VM restarted successfully: { vm_id } " )
198207 return VMResponse (** updated_vm .to_dict ())
199208
@@ -216,10 +225,13 @@ def pause_vm(self, vm_id: UUID) -> VMResponse:
216225 raise VMNotFoundException (vm_id )
217226
218227 if vm .status != VMStatus .RUNNING :
219- logger .warning (f"Invalid state transition: Cannot pause VM { vm_id } in state { vm .status } " )
228+ logger .warning (
229+ f"Invalid state transition: Cannot pause VM { vm_id } in state { vm .status } "
230+ )
220231 raise InvalidStateTransitionException (vm_id , str (vm .status ), "pause" )
221232
222233 updated_vm = self .repository .update_status (vm_id , VMStatus .PAUSED )
234+ assert updated_vm is not None , f"VM { vm_id } should exist after status check"
223235 logger .info (f"VM paused successfully: { vm_id } " )
224236 return VMResponse (** updated_vm .to_dict ())
225237
@@ -242,10 +254,13 @@ def resume_vm(self, vm_id: UUID) -> VMResponse:
242254 raise VMNotFoundException (vm_id )
243255
244256 if vm .status != VMStatus .PAUSED :
245- logger .warning (f"Invalid state transition: Cannot resume VM { vm_id } in state { vm .status } " )
257+ logger .warning (
258+ f"Invalid state transition: Cannot resume VM { vm_id } in state { vm .status } "
259+ )
246260 raise InvalidStateTransitionException (vm_id , str (vm .status ), "resume" )
247261
248262 updated_vm = self .repository .update_status (vm_id , VMStatus .RUNNING )
263+ assert updated_vm is not None , f"VM { vm_id } should exist after status check"
249264 logger .info (f"VM resumed successfully: { vm_id } " )
250265 return VMResponse (** updated_vm .to_dict ())
251266
@@ -283,8 +298,4 @@ def get_vm_status(self, vm_id: UUID) -> VMStatusResponse:
283298 if not vm :
284299 raise VMNotFoundException (vm_id )
285300
286- return VMStatusResponse (
287- vm_id = vm .id ,
288- status = vm .status ,
289- updated_at = vm .updated_at
290- )
301+ return VMStatusResponse (vm_id = vm .id , status = vm .status , updated_at = vm .updated_at )
0 commit comments