Merge ~cgrabowski/maas:machine_filter_count_endpoint into maas:master

Proposed by Christian Grabowski
Status: Merged
Approved by: Christian Grabowski
Approved revision: 37f765f313d20b6be2b5e13d02a835733576aa3e
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~cgrabowski/maas:machine_filter_count_endpoint
Merge into: maas:master
Diff against target: 51 lines (+28/-0)
2 files modified
src/maasserver/websockets/handlers/machine.py (+7/-0)
src/maasserver/websockets/handlers/tests/test_machine.py (+21/-0)
Reviewer Review Type Date Requested Status
MAAS Lander Approve
Alexsander de Souza Approve
Review via email: mp+426769@code.launchpad.net

Commit message

add count endpoint to machine handler

To post a comment you must log in.
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b machine_filter_count_endpoint lp:~cgrabowski/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/39/consoleText
COMMIT: c02017503ae92de4a9e29c3ede3213756519c339

review: Needs Fixing
Revision history for this message
Alexsander de Souza (alexsander-souza) wrote :

+1

review: Approve
Revision history for this message
Anton Troyanov (troyanov) wrote :

jenkins: !test

Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b machine_filter_count_endpoint lp:~cgrabowski/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/105/consoleText
COMMIT: dd8e822617371a0f22f707f1c3c016d0fab92cff

review: Needs Fixing
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b machine_filter_count_endpoint lp:~cgrabowski/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: 37f765f313d20b6be2b5e13d02a835733576aa3e

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/websockets/handlers/machine.py b/src/maasserver/websockets/handlers/machine.py
2index 955c350..5a67786 100644
3--- a/src/maasserver/websockets/handlers/machine.py
4+++ b/src/maasserver/websockets/handlers/machine.py
5@@ -203,6 +203,7 @@ class MachineHandler(NodeHandler):
6 "set_workload_annotations",
7 "filter_groups",
8 "filter_options",
9+ "count",
10 ]
11 form = AdminMachineWithMACAddressesForm
12 exclude = [
13@@ -1204,3 +1205,9 @@ class MachineHandler(NodeHandler):
14 except ValueError as e:
15 raise HandlerValidationError(str(e))
16 return OwnerData.objects.get_owner_data(machine)
17+
18+ def count(self, params):
19+ qs = self.get_queryset()
20+ if "filter" in params:
21+ qs = self._filter(qs, "list", params["filter"])
22+ return {"count": qs.count()}
23diff --git a/src/maasserver/websockets/handlers/tests/test_machine.py b/src/maasserver/websockets/handlers/tests/test_machine.py
24index c4d3c6f..369ae81 100644
25--- a/src/maasserver/websockets/handlers/tests/test_machine.py
26+++ b/src/maasserver/websockets/handlers/tests/test_machine.py
27@@ -6342,3 +6342,24 @@ class TestMachineHandlerFilter(MAASServerTestCase):
28 self.assertIsNotNone(
29 handler.on_listen("machine", "update", node2.system_id)
30 )
31+
32+ def test_count_endpoint_no_filter(self):
33+ owner = factory.make_User()
34+ nodes = [factory.make_Node(owner=owner) for _ in range(3)]
35+ handler = MachineHandler(owner, {}, None)
36+ self.assertEqual(len(nodes), handler.count({})["count"])
37+
38+ def test_count_endpoint_filter(self):
39+ owner = factory.make_User()
40+ zone = factory.make_Zone()
41+ nodes_without_zone = [factory.make_Node() for _ in range(2)]
42+ nodes_in_zone = [factory.make_Node(zone=zone) for _ in range(2)]
43+ handler = MachineHandler(owner, {}, None)
44+ self.assertEqual(
45+ len(nodes_without_zone) + len(nodes_in_zone),
46+ handler.count({})["count"],
47+ )
48+ self.assertEqual(
49+ len(nodes_in_zone),
50+ handler.count({"filter": {"zone": zone.name}})["count"],
51+ )

Subscribers

People subscribed via source and target branches