Merge lp:~blake-rouse/maas/fix-1556343 into lp:~maas-committers/maas/trunk

Proposed by Blake Rouse
Status: Merged
Approved by: Blake Rouse
Approved revision: no longer in the source branch.
Merged at revision: 4774
Proposed branch: lp:~blake-rouse/maas/fix-1556343
Merge into: lp:~maas-committers/maas/trunk
Diff against target: 135 lines (+57/-2)
2 files modified
src/maasserver/models/signals/services.py (+3/-0)
src/maasserver/models/signals/tests/test_services.py (+54/-2)
To merge this branch: bzr merge lp:~blake-rouse/maas/fix-1556343
Reviewer Review Type Date Requested Status
Andres Rodriguez (community) Approve
Review via email: mp+288850@code.launchpad.net

Commit message

Call create_services_for before calling update_rackd_service in the services triggers.

To post a comment you must log in.
Revision history for this message
Andres Rodriguez (andreserl) wrote :

lgtm!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/maasserver/models/signals/services.py'
2--- src/maasserver/models/signals/services.py 2016-03-09 16:24:22 +0000
3+++ src/maasserver/models/signals/services.py 2016-03-12 02:34:24 +0000
4@@ -14,6 +14,7 @@
5 from maasserver.models.node import RackController
6 from maasserver.models.regioncontrollerprocess import RegionControllerProcess
7 from maasserver.models.regionrackrpcconnection import RegionRackRPCConnection
8+from maasserver.models.service import Service
9 from maasserver.utils.signals import SignalsManager
10
11
12@@ -24,6 +25,7 @@
13 """Update status of the rackd service for the rack controller the
14 RPC connection was added or removed.
15 """
16+ Service.objects.create_services_for(instance.rack_controller)
17 instance.rack_controller.update_rackd_status()
18
19
20@@ -41,6 +43,7 @@
21 added or removed.
22 """
23 for rack_controller in RackController.objects.all():
24+ Service.objects.create_services_for(rack_controller)
25 rack_controller.update_rackd_status()
26
27
28
29=== modified file 'src/maasserver/models/signals/tests/test_services.py'
30--- src/maasserver/models/signals/tests/test_services.py 2016-03-09 16:24:22 +0000
31+++ src/maasserver/models/signals/tests/test_services.py 2016-03-12 02:34:24 +0000
32@@ -8,6 +8,7 @@
33 from maasserver.models import (
34 RackController,
35 RegionRackRPCConnection,
36+ Service,
37 )
38 from maasserver.testing.factory import factory
39 from maasserver.testing.testcase import MAASServerTestCase
40@@ -20,6 +21,14 @@
41
42 class TestRegionRackRPCConnection(MAASServerTestCase):
43
44+ def test__calls_create_services_for_on_create(self):
45+ endpoint = factory.make_RegionControllerProcessEndpoint()
46+ rack_controller = factory.make_RackController()
47+ mock_create_for = self.patch(Service.objects, "create_services_for")
48+ RegionRackRPCConnection.objects.create(
49+ endpoint=endpoint, rack_controller=rack_controller)
50+ self.assertThat(mock_create_for, MockCalledOnceWith(rack_controller))
51+
52 def test__calls_update_rackd_status_on_create(self):
53 endpoint = factory.make_RegionControllerProcessEndpoint()
54 rack_controller = factory.make_RackController()
55@@ -29,6 +38,17 @@
56 endpoint=endpoint, rack_controller=rack_controller)
57 self.assertThat(mock_update_rackd_status, MockCalledOnceWith())
58
59+ def test__calls_create_services_for_on_update(self):
60+ endpoint = factory.make_RegionControllerProcessEndpoint()
61+ rack_controller = factory.make_RackController()
62+ mock_create_for = self.patch(Service.objects, "create_services_for")
63+ connection = RegionRackRPCConnection.objects.create(
64+ endpoint=endpoint, rack_controller=rack_controller)
65+ connection.save()
66+ self.assertThat(
67+ mock_create_for,
68+ MockCallsMatch(call(rack_controller), call(rack_controller)))
69+
70 def test__calls_update_rackd_status_on_update(self):
71 endpoint = factory.make_RegionControllerProcessEndpoint()
72 rack_controller = factory.make_RackController()
73@@ -40,6 +60,17 @@
74 self.assertThat(
75 mock_update_rackd_status, MockCallsMatch(call(), call()))
76
77+ def test__calls_create_services_for_on_delete(self):
78+ endpoint = factory.make_RegionControllerProcessEndpoint()
79+ rack_controller = factory.make_RackController()
80+ mock_create_for = self.patch(Service.objects, "create_services_for")
81+ connection = RegionRackRPCConnection.objects.create(
82+ endpoint=endpoint, rack_controller=rack_controller)
83+ connection.delete()
84+ self.assertThat(
85+ mock_create_for,
86+ MockCallsMatch(call(rack_controller), call(rack_controller)))
87+
88 def test__calls_update_rackd_status_on_delete(self):
89 endpoint = factory.make_RegionControllerProcessEndpoint()
90 rack_controller = factory.make_RackController()
91@@ -54,6 +85,16 @@
92
93 class TestRegionControllerProcess(MAASServerTestCase):
94
95+ def test__calls_create_services_for_on_all_racks_on_create(self):
96+ rack_controllers = [
97+ factory.make_RackController()
98+ for _ in range(3)
99+ ]
100+ mock_create_for = self.patch(Service.objects, "create_services_for")
101+ factory.make_RegionControllerProcess()
102+ self.assertEquals(
103+ len(rack_controllers) + 1, mock_create_for.call_count)
104+
105 def test__calls_update_rackd_status_on_all_racks_on_create(self):
106 rack_controllers = [
107 factory.make_RackController()
108@@ -65,14 +106,25 @@
109 self.assertEquals(
110 len(rack_controllers), mock_update_rackd_status.call_count)
111
112+ def test__calls_create_services_for_on_all_racks_on_delete(self):
113+ rack_controllers = [
114+ factory.make_RackController()
115+ for _ in range(3)
116+ ]
117+ process = factory.make_RegionControllerProcess()
118+ mock_create_for = self.patch(Service.objects, "create_services_for")
119+ process.delete()
120+ self.assertEquals(
121+ len(rack_controllers), mock_create_for.call_count)
122+
123 def test__calls_update_rackd_status_on_all_racks_on_delete(self):
124 rack_controllers = [
125 factory.make_RackController()
126 for _ in range(3)
127 ]
128+ process = factory.make_RegionControllerProcess()
129 mock_update_rackd_status = self.patch(
130 RackController, "update_rackd_status")
131- process = factory.make_RegionControllerProcess()
132 process.delete()
133 self.assertEquals(
134- len(rack_controllers) * 2, mock_update_rackd_status.call_count)
135+ len(rack_controllers), mock_update_rackd_status.call_count)