Skip to content

Commit 84f5126

Browse files
Zuulopenstack-gerrit
Zuul
authored andcommitted
Merge "Ignore load_balancer graph in task results to avoid break write data in jobboard DB"
2 parents 32eca8a + 30fbe21 commit 84f5126

File tree

3 files changed

+35
-3
lines changed

3 files changed

+35
-3
lines changed

octavia/controller/worker/v2/tasks/network_tasks.py

+15-3
Original file line numberDiff line numberDiff line change
@@ -728,7 +728,11 @@ def execute(self, loadbalancer, amphora=None):
728728
db_lb, amphora=db_amp)
729729
provider_dict = {}
730730
for amp_id, amp_conf in db_configs.items():
731-
provider_dict[amp_id] = amp_conf.to_dict(recurse=True)
731+
# Do not serialize loadbalancer class. It's unused later and
732+
# could be ignored for storing in results of task in persistence DB
733+
provider_dict[amp_id] = amp_conf.to_dict(
734+
recurse=True, calling_classes=[data_models.LoadBalancer]
735+
)
732736
return provider_dict
733737

734738

@@ -746,7 +750,11 @@ def execute(self, loadbalancer_id, amphora_id=None):
746750
amphora=amphora)
747751
provider_dict = {}
748752
for amp_id, amp_conf in db_configs.items():
749-
provider_dict[amp_id] = amp_conf.to_dict(recurse=True)
753+
# Do not serialize loadbalancer class. It's unused later and
754+
# could be ignored for storing in results of task in persistence DB
755+
provider_dict[amp_id] = amp_conf.to_dict(
756+
recurse=True, calling_classes=[data_models.LoadBalancer]
757+
)
750758
return provider_dict
751759

752760

@@ -762,7 +770,11 @@ def execute(self, loadbalancer_id):
762770
db_configs = self.network_driver.get_network_configs(db_lb)
763771
provider_dict = {}
764772
for amp_id, amp_conf in db_configs.items():
765-
provider_dict[amp_id] = amp_conf.to_dict(recurse=True)
773+
# Do not serialize loadbalancer class. It's unused later and
774+
# could be ignored for storing in results of task in persistence DB
775+
provider_dict[amp_id] = amp_conf.to_dict(
776+
recurse=True, calling_classes=[data_models.LoadBalancer]
777+
)
766778
return provider_dict
767779

768780

octavia/tests/unit/controller/worker/v2/tasks/test_network_tasks.py

+14
Original file line numberDiff line numberDiff line change
@@ -1349,6 +1349,10 @@ def test_get_amphora_network_configs_by_id(
13491349
AMP_ID = uuidutils.generate_uuid()
13501350
mock_driver = mock.MagicMock()
13511351
mock_get_net_driver.return_value = mock_driver
1352+
amphora_config_mock = mock.MagicMock()
1353+
mock_driver.get_network_configs.return_value = {
1354+
"amphora_uuid1": amphora_config_mock
1355+
}
13521356
mock_amp_get.return_value = 'mock amphora'
13531357
mock_lb_get.return_value = 'mock load balancer'
13541358

@@ -1360,6 +1364,9 @@ def test_get_amphora_network_configs_by_id(
13601364
'mock load balancer', amphora='mock amphora')
13611365
mock_amp_get.assert_called_once_with(mock_get_session(), id=AMP_ID)
13621366
mock_lb_get.assert_called_once_with(mock_get_session(), id=LB_ID)
1367+
amphora_config_mock.to_dict.assert_called_once_with(
1368+
recurse=True, calling_classes=[o_data_models.LoadBalancer]
1369+
)
13631370

13641371
@mock.patch('octavia.db.repositories.LoadBalancerRepository.get')
13651372
@mock.patch('octavia.db.api.get_session', return_value=_session_mock)
@@ -1368,10 +1375,17 @@ def test_get_amphorae_network_configs(self, mock_session, mock_lb_get,
13681375
mock_driver = mock.MagicMock()
13691376
mock_lb_get.return_value = LB
13701377
mock_get_net_driver.return_value = mock_driver
1378+
amphora_config_mock = mock.MagicMock()
1379+
mock_driver.get_network_configs.return_value = {
1380+
"amphora_uuid1": amphora_config_mock
1381+
}
13711382
lb = o_data_models.LoadBalancer()
13721383
net_task = network_tasks.GetAmphoraeNetworkConfigs()
13731384
net_task.execute(self.load_balancer_mock)
13741385
mock_driver.get_network_configs.assert_called_once_with(lb)
1386+
amphora_config_mock.to_dict.assert_called_once_with(
1387+
recurse=True, calling_classes=[o_data_models.LoadBalancer]
1388+
)
13751389

13761390
def test_retrieve_portids_on_amphora_except_lb_network(
13771391
self, mock_get_net_driver):
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
fixes:
3+
- |
4+
Ignore serialization loadbalancer class in GetAmphoraNetworkConfigs tasks.
5+
It allows to avoid storing full graph in jobboard details. It fixes cases
6+
with enabled jobboard for huge LBs with ~2000+ resources in graph.

0 commit comments

Comments
 (0)