forked from shaba/openuds
Fixed assignement of new services if pool is at 100% usage
This commit is contained in:
parent
bde63f7b4f
commit
250ade6aee
@ -939,14 +939,21 @@ class UserServiceManager(metaclass=singleton.Singleton):
|
|||||||
] # Just shuffle them
|
] # Just shuffle them
|
||||||
|
|
||||||
# Sort pools related to policy now, and xtract only pools, not sort keys
|
# Sort pools related to policy now, and xtract only pools, not sort keys
|
||||||
|
# split resuult in two lists, 100% full and not 100% full
|
||||||
# Remove "full" pools (100%) from result and pools in maintenance mode, not ready pools, etc...
|
# Remove "full" pools (100%) from result and pools in maintenance mode, not ready pools, etc...
|
||||||
|
sortedPools = sorted(sortPools, key=lambda x: x[0])
|
||||||
pools: typing.List[ServicePool] = [
|
pools: typing.List[ServicePool] = [
|
||||||
p[1]
|
p[1]
|
||||||
for p in sorted(sortPools, key=lambda x: x[0])
|
for p in sortedPools
|
||||||
if p[1].usage() < 100 and p[1].isUsable()
|
if p[1].usage() < 100 and p[1].isUsable()
|
||||||
]
|
]
|
||||||
|
poolsFull: typing.List[ServicePool] = [
|
||||||
|
p[1]
|
||||||
|
for p in sortedPools
|
||||||
|
if p[1].usage() == 100 and p[1].isUsable()
|
||||||
|
]
|
||||||
|
|
||||||
logger.debug('Pools: %s', pools)
|
logger.debug('Pools: %s/%s', pools, poolsFull)
|
||||||
|
|
||||||
usable: typing.Optional[typing.Tuple[ServicePool, Transport]] = None
|
usable: typing.Optional[typing.Tuple[ServicePool, Transport]] = None
|
||||||
# Now, Lets find first if there is one assigned in ANY pool
|
# Now, Lets find first if there is one assigned in ANY pool
|
||||||
@ -975,8 +982,9 @@ class UserServiceManager(metaclass=singleton.Singleton):
|
|||||||
return found
|
return found
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
# Already assigned should look for in all usable pools, not only "non-full" ones
|
||||||
alreadyAssigned: UserService = UserService.objects.filter(
|
alreadyAssigned: UserService = UserService.objects.filter(
|
||||||
deployed_service__in=pools,
|
deployed_service__in=pools+poolsFull,
|
||||||
state__in=State.VALID_STATES,
|
state__in=State.VALID_STATES,
|
||||||
user=user,
|
user=user,
|
||||||
cache_level=0,
|
cache_level=0,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user