Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions server/src/uds/services/PhysicalMachines/service_multi.py
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,11 @@ class IPMachinesService(services.Service):
def enumerate_servers(self) -> typing.Iterable['models.Server']:
return fields.get_server_group_from_field(self.server_group).servers.filter(maintenance_mode=False)

def userservices_limit_field(self) -> int:
# Machines on maintenance are ALSO counted: the limit is the number of registered
# machines, not the number of currently usable ones (hence not enumerate_servers()).
return fields.get_server_group_from_field(self.server_group).servers.count()

def get_token(self) -> typing.Optional[str]:
return self.token.as_str() or None

Expand Down
14 changes: 14 additions & 0 deletions server/tests/services/physical_machines/test_service_multi.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,20 @@ def test_service_data(self) -> None:
)
self.assertEqual(service.randomize_host.value, fixtures.SERVICE_MULTI_VALUES_DICT['randomize_host'])

def test_userservices_limit(self) -> None:
service = fixtures.create_service_multi()
# userservices_limit is recovered on unmarshal, so simulate a load from db
service.unmarshal(service.marshal())
self.assertEqual(service.userservices_limit, len(fixtures.SERVER_GROUP_IPS_MACS))

# Machines on maintenance are ALSO counted, the limit is the number of registered machines
server = fields.get_server_group_from_field(service.server_group).servers.all()[0]
server.maintenance_mode = True
server.save(update_fields=['maintenance_mode'])

service.unmarshal(service.marshal())
self.assertEqual(service.userservices_limit, len(fixtures.SERVER_GROUP_IPS_MACS))

def test_service_is_available(self) -> None:
"""
Test the provider
Expand Down
Loading