Merge ~bjornt/maas:region-ip-not-valid into maas:master

Proposed by Björn Tillenius
Status: Merged
Approved by: Björn Tillenius
Approved revision: 2faa6ef12b2d6fd5f72282c026a417cd42150085
Merge reported by: MAAS Lander
Merged at revision: not available
Proposed branch: ~bjornt/maas:region-ip-not-valid
Merge into: maas:master
Diff against target: 85 lines (+30/-5)
3 files modified
src/maasserver/workflow/configure.py (+0/-5)
src/tests/fixtures/factories/node_config.py (+1/-0)
src/tests/maasserver/workflow/test_configure.py (+29/-0)
Reviewer Review Type Date Requested Status
MAAS Lander Needs Fixing
Anton Troyanov Approve
Adam Collard (community) Approve
Review via email: mp+460820@code.launchpad.net

Commit message

Bug #2054377: Temporal worker pool configuration failure

In the configure workflow, the query for getting the region IPs
included None values, which broke the workflow.

Changed the query not to include any None values.

To post a comment you must log in.
Revision history for this message
Adam Collard (adam-collard) :
review: Approve
Revision history for this message
Anton Troyanov (troyanov) :
review: Approve
Revision history for this message
MAAS Lander (maas-lander) wrote :

UNIT TESTS
-b region-ip-not-valid lp:~bjornt/maas/+git/maas into -b master lp:~maas-committers/maas

STATUS: FAILED
LOG: http://maas-ci.internal:8080/job/maas-tester/4674/console
COMMIT: 2faa6ef12b2d6fd5f72282c026a417cd42150085

review: Needs Fixing

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/src/maasserver/workflow/configure.py b/src/maasserver/workflow/configure.py
2index a767371..59db1c6 100644
3--- a/src/maasserver/workflow/configure.py
4+++ b/src/maasserver/workflow/configure.py
5@@ -103,29 +103,24 @@ class ConfigureAgentActivity(ActivityBase):
6 .join(
7 NodeConfigTable,
8 NodeTable.c.current_config_id == NodeConfigTable.c.id,
9- isouter=True,
10 )
11 .join(
12 InterfaceTable,
13 NodeConfigTable.c.id == InterfaceTable.c.node_config_id,
14- isouter=True,
15 )
16 .join(
17 InterfaceIPAddressTable,
18 InterfaceTable.c.id
19 == InterfaceIPAddressTable.c.interface_id,
20- isouter=True,
21 )
22 .join(
23 StaticIPAddressTable,
24 InterfaceIPAddressTable.c.staticipaddress_id
25 == StaticIPAddressTable.c.id,
26- isouter=True,
27 )
28 .join(
29 SubnetTable,
30 SubnetTable.c.id == StaticIPAddressTable.c.subnet_id,
31- isouter=True,
32 )
33 .filter(
34 or_(
35diff --git a/src/tests/fixtures/factories/node_config.py b/src/tests/fixtures/factories/node_config.py
36index d44f777..1203241 100644
37--- a/src/tests/fixtures/factories/node_config.py
38+++ b/src/tests/fixtures/factories/node_config.py
39@@ -41,5 +41,6 @@ async def create_test_node_config_entry(
40 )
41 )
42 await fixture.conn.execute(stmt)
43+ node["current_config_id"] = created_config["id"]
44
45 return created_config
46diff --git a/src/tests/maasserver/workflow/test_configure.py b/src/tests/maasserver/workflow/test_configure.py
47index 8520848..2bd9f85 100644
48--- a/src/tests/maasserver/workflow/test_configure.py
49+++ b/src/tests/maasserver/workflow/test_configure.py
50@@ -156,6 +156,35 @@ class TestConfigureAgentActivity:
51 }
52 ]
53
54+ async def test_get_region_controller_endpoints_missing_links(
55+ self, db: Database, db_connection: AsyncConnection, fixture: Fixture
56+ ):
57+ subnet = await create_test_subnet_entry(fixture)
58+ region_controller = await create_test_region_controller_entry(fixture)
59+ ip = await create_test_staticipaddress_entry(fixture, subnet=subnet)
60+ await create_test_interface_entry(
61+ fixture, node=region_controller, ips=[ip]
62+ )
63+ await create_test_interface_entry(
64+ fixture, node=region_controller, ips=[]
65+ )
66+ configure_activities = ConfigureAgentActivity(
67+ db, connection=db_connection
68+ )
69+
70+ result = await configure_activities.get_region_controller_endpoints()
71+
72+ endpoint = f"http://{ip['ip']}:5240/MAAS/"
73+ if ip["ip"].version == 6:
74+ endpoint = f"http://[{ip['ip']}]:5240/MAAS/"
75+
76+ assert result == [
77+ {
78+ "subnet": str(subnet["cidr"]),
79+ "endpoint": endpoint,
80+ }
81+ ]
82+
83 async def test_get_region_controller_endpoints_two_region_controllers(
84 self, db: Database, db_connection: AsyncConnection, fixture: Fixture
85 ):

Subscribers

People subscribed via source and target branches