add proxy_state_updated events (#908)

This commit is contained in:
bmc-msft
2021-05-21 12:47:54 -04:00
committed by GitHub
parent 2f81c44f01
commit a4bb670fb2
6 changed files with 145 additions and 9 deletions

View File

@ -11,7 +11,12 @@ from uuid import UUID, uuid4
from azure.mgmt.compute.models import VirtualMachine
from onefuzztypes.enums import ErrorCode, VmState
from onefuzztypes.events import EventProxyCreated, EventProxyDeleted, EventProxyFailed
from onefuzztypes.events import (
EventProxyCreated,
EventProxyDeleted,
EventProxyFailed,
EventProxyStateUpdated,
)
from onefuzztypes.models import (
Authentication,
Error,
@ -81,7 +86,7 @@ class Proxy(ORMMixin):
return
else:
self.save_proxy_config()
self.state = VmState.extensions_launch
self.set_state(VmState.extensions_launch)
else:
result = vm.create()
if isinstance(result, Error):
@ -115,8 +120,7 @@ class Proxy(ORMMixin):
EventProxyFailed(region=self.region, proxy_id=self.proxy_id, error=error)
)
self.error = error
self.state = VmState.stopping
self.save()
self.set_state(VmState.stopping)
def extensions_launch(self) -> None:
vm = self.get_vm()
@ -146,7 +150,7 @@ class Proxy(ORMMixin):
self.set_failed(result)
return
elif result:
self.state = VmState.running
self.set_state(VmState.running)
self.save()
@ -298,3 +302,16 @@ class Proxy(ORMMixin):
def delete(self) -> None:
super().delete()
send_event(EventProxyDeleted(region=self.region, proxy_id=self.proxy_id))
def set_state(self, state: VmState) -> None:
if self.state == state:
return
self.state = state
self.save()
send_event(
EventProxyStateUpdated(
region=self.region, proxy_id=self.proxy_id, state=self.state
)
)