mirror of
https://github.com/microsoft/onefuzz.git
synced 2025-06-17 12:28:07 +00:00
add EventScalesetResizeScheduled (#1047)
This commit is contained in:
@ -35,12 +35,11 @@ def scale_up(pool: Pool, scalesets: List[Scaleset], nodes_needed: int) -> None:
|
||||
if scaleset.size < max_size:
|
||||
current_size = scaleset.size
|
||||
if nodes_needed <= max_size - current_size:
|
||||
scaleset.size = current_size + nodes_needed
|
||||
scaleset.set_size(current_size + nodes_needed)
|
||||
nodes_needed = 0
|
||||
else:
|
||||
scaleset.size = max_size
|
||||
scaleset.set_size(max_size)
|
||||
nodes_needed = nodes_needed - (max_size - current_size)
|
||||
scaleset.set_state(ScalesetState.resize)
|
||||
|
||||
else:
|
||||
continue
|
||||
@ -112,7 +111,7 @@ def scale_down(scalesets: List[Scaleset], nodes_to_remove: int) -> None:
|
||||
continue
|
||||
|
||||
# Resize of VMSS needed
|
||||
scaleset.size = scaleset.size - max_nodes_remove
|
||||
scaleset.set_size(scaleset.size - max_nodes_remove)
|
||||
nodes_to_remove = nodes_to_remove - max_nodes_remove
|
||||
scaleset.set_state(ScalesetState.resize)
|
||||
|
||||
|
@ -13,6 +13,7 @@ from onefuzztypes.events import (
|
||||
EventScalesetCreated,
|
||||
EventScalesetDeleted,
|
||||
EventScalesetFailed,
|
||||
EventScalesetResizeScheduled,
|
||||
EventScalesetStateUpdated,
|
||||
)
|
||||
from onefuzztypes.models import Error
|
||||
@ -472,6 +473,14 @@ class Scaleset(BASE_SCALESET, ORMMixin):
|
||||
)
|
||||
self.set_state(ScalesetState.resize)
|
||||
|
||||
def set_size(self, size: int) -> None:
|
||||
# ensure we always stay within max_size boundaries
|
||||
size = min(size, self.max_size())
|
||||
if self.size != size:
|
||||
self.size = size
|
||||
self.set_state(ScalesetState.resize)
|
||||
self.save()
|
||||
|
||||
def resize(self) -> None:
|
||||
# no longer needing to resize
|
||||
if self.state != ScalesetState.resize:
|
||||
@ -780,8 +789,19 @@ class Scaleset(BASE_SCALESET, ORMMixin):
|
||||
|
||||
self.state = state
|
||||
self.save()
|
||||
send_event(
|
||||
EventScalesetStateUpdated(
|
||||
scaleset_id=self.scaleset_id, pool_name=self.pool_name, state=self.state
|
||||
if self.state == ScalesetState.resize:
|
||||
send_event(
|
||||
EventScalesetResizeScheduled(
|
||||
scaleset_id=self.scaleset_id,
|
||||
pool_name=self.pool_name,
|
||||
size=self.size,
|
||||
)
|
||||
)
|
||||
else:
|
||||
send_event(
|
||||
EventScalesetStateUpdated(
|
||||
scaleset_id=self.scaleset_id,
|
||||
pool_name=self.pool_name,
|
||||
state=self.state,
|
||||
)
|
||||
)
|
||||
)
|
||||
|
Reference in New Issue
Block a user