Merge ~troyanov/maas:backport-7a8e0f3-3.4 into maas:3.4

Proposed by Anton Troyanov
Status: Merged
Approved by: Anton Troyanov
Approved revision: d3f414b473081586d105761dc466813e307f4b2f
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~troyanov/maas:backport-7a8e0f3-3.4
Merge into: maas:3.4
Diff against target: 61 lines (+41/-1)
2 files modified
src/maasserver/ipc.py (+1/-1)
src/maasserver/tests/test_ipc.py (+40/-0)
Reviewer Review Type Date Requested Status
MAAS Lander Approve
Anton Troyanov Approve
Review via email: mp+461005@code.launchpad.net

Commit message

handle additional return value in registerConnection

Resolves LP:2033505

(cherry picked from commit 7a8e0f3c47b58e8e0adeb7c55cd3a99b4c448ab5)

To post a comment you must log in.
Revision history for this message
Anton Troyanov (troyanov) wrote :

Self-approve

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

UNIT TESTS
-b backport-7a8e0f3-3.4 lp:~troyanov/maas/+git/maas into -b 3.4 lp:~maas-committers/maas

STATUS: SUCCESS
COMMIT: d3f414b473081586d105761dc466813e307f4b2f

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/ipc.py b/src/maasserver/ipc.py
2index 6423416..0f41a47 100644
3--- a/src/maasserver/ipc.py
4+++ b/src/maasserver/ipc.py
5@@ -515,7 +515,7 @@ class IPCMasterService(service.Service):
6 ).values_list("id", flat=True)
7 )
8 for _, (ident, host, port) in connections.items():
9- db_conn = self._registerConnection(
10+ db_conn, _ = self._registerConnection(
11 process, ident, host, port, force_save=False
12 )
13 previous_connection_ids.discard(db_conn.id)
14diff --git a/src/maasserver/tests/test_ipc.py b/src/maasserver/tests/test_ipc.py
15index f60a147..19344fd 100644
16--- a/src/maasserver/tests/test_ipc.py
17+++ b/src/maasserver/tests/test_ipc.py
18@@ -630,3 +630,43 @@ class TestIPCCommunication(MAASTransactionServerTestCase):
19 )
20
21 yield master.stopService()
22+
23+ @wait_for_reactor
24+ @inlineCallbacks
25+ def test_updateConnections(self):
26+ yield deferToDatabase(load_builtin_scripts)
27+ master = self.make_IPCMasterService()
28+ yield master.startService()
29+
30+ pid = random.randint(1, 512)
31+ port = random.randint(1, 512)
32+ ip = factory.make_ip_address()
33+ yield master.registerWorker(pid, MagicMock())
34+ yield master.registerWorkerRPC(pid, port)
35+
36+ rack_controller = yield deferToDatabase(factory.make_RackController)
37+
38+ for _ in range(2):
39+ yield master.registerWorkerRPCConnection(
40+ pid,
41+ random.randint(1, 512),
42+ rack_controller.system_id,
43+ ip,
44+ random.randint(1, 512),
45+ )
46+
47+ for pid, conn in master.connections.items():
48+ process = yield deferToDatabase(master._getProcessObjFor, pid)
49+ rpc_conns = conn["rpc"]["connections"].copy()
50+ rpc_conns.pop(random.choice(list(rpc_conns.keys())))
51+ yield deferToDatabase(
52+ master._updateConnections, process, rpc_conns
53+ )
54+
55+ def _get_conn_count():
56+ return RegionRackRPCConnection.objects.filter(
57+ rack_controller=rack_controller
58+ ).count()
59+
60+ count = yield deferToDatabase(_get_conn_count)
61+ self.assertEqual(count, 1)

Subscribers

People subscribed via source and target branches