sts-sponsors team mailing list archive
-
sts-sponsors team
-
Mailing list archive
-
Message #03417
[Merge] ~alexsander-souza/maas:lp1997281_ws_machine_fix_count_filter into maas:master
Alexsander de Souza has proposed merging ~alexsander-souza/maas:lp1997281_ws_machine_fix_count_filter into maas:master.
Commit message:
use QS with annotations required by filters
fixes LP#1997281
Requested reviews:
MAAS Maintainers (maas-maintainers)
Related bugs:
Bug #1997281 in MAAS: "machine.count fails for new filter options"
https://bugs.launchpad.net/maas/+bug/1997281
For more details, see:
https://code.launchpad.net/~alexsander-souza/maas/+git/maas/+merge/433394
--
Your team MAAS Committers is subscribed to branch maas:master.
diff --git a/src/maasserver/websockets/handlers/machine.py b/src/maasserver/websockets/handlers/machine.py
index dd4e85c..7572062 100644
--- a/src/maasserver/websockets/handlers/machine.py
+++ b/src/maasserver/websockets/handlers/machine.py
@@ -1215,7 +1215,7 @@ class MachineHandler(NodeHandler):
return OwnerData.objects.get_owner_data(machine)
def count(self, params):
- qs = self.get_queryset()
+ qs = self.get_queryset(for_list=True)
if "filter" in params:
qs = self._filter(qs, "list", params["filter"])
return {"count": qs.count()}
diff --git a/src/maasserver/websockets/handlers/tests/test_machine.py b/src/maasserver/websockets/handlers/tests/test_machine.py
index e8045c9..7c39ba3 100644
--- a/src/maasserver/websockets/handlers/tests/test_machine.py
+++ b/src/maasserver/websockets/handlers/tests/test_machine.py
@@ -7292,3 +7292,24 @@ class TestMachineHandlerNewSchema(MAASServerTestCase):
len(nodes_in_zone),
handler.count({"filter": {"zone": zone.name}})["count"],
)
+
+ def test_count_endpoint_filter_simple_status(self):
+ owner = factory.make_User()
+ statuses = [NODE_STATUS.ALLOCATED, NODE_STATUS.FAILED_COMMISSIONING]
+ nodes = [
+ factory.make_Machine(
+ owner=owner,
+ status=statuses[idx],
+ hostname=f"node{idx}-{factory.make_string(10)}",
+ )
+ for idx in range(2)
+ ]
+ handler = MachineHandler(owner, {}, None)
+ self.assertEqual(
+ len(nodes),
+ handler.count({})["count"],
+ )
+ self.assertEqual(
+ 1,
+ handler.count({"filter": {"simple_status": "allocated"}})["count"],
+ )
Follow ups