Skip to content

Commit 892a729

Browse files
author
Michal Hecko
committed
use one message with all updates instead of many small msgs
1 parent 55445cd commit 892a729

File tree

10 files changed

+36
-26
lines changed

10 files changed

+36
-26
lines changed

repos/system_upgrade/common/actors/multipath/config_reader/tests/test_multipath_conf_read_8to9.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ def test_get_facts_missing_dir(monkeypatch, primary_config, expected_configs):
132132
general_info = [msg for msg in produce_mock.model_instances if isinstance(msg, MultipathInfo)]
133133
assert len(general_info) == 1
134134
assert general_info[0].is_configured
135-
# general_info[0].config_dir is with the MultipathConfFacts8to9 messages bellow
135+
# general_info[0].config_dir is with the MultipathConfFacts8to9 messages below
136136

137137
msgs = [msg for msg in produce_mock.model_instances if isinstance(msg, MultipathConfFacts8to9)]
138138
assert len(msgs) == 1

repos/system_upgrade/common/actors/multipath/system_conf_patcher/actor.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from leapp.actors import Actor
22
from leapp.libraries.actor import system_config_patcher
3-
from leapp.models import UpdatedMultipathConfig
3+
from leapp.models import MultipathConfigUpdatesInfo
44
from leapp.tags import ApplicationsPhaseTag, IPUWorkflowTag
55

66

@@ -15,7 +15,7 @@ class MultipathSystemConfigPatcher(Actor):
1515
"""
1616

1717
name = 'multipath_system_config_patcher'
18-
consumes = (UpdatedMultipathConfig,)
18+
consumes = (MultipathConfigUpdatesInfo,)
1919
produces = ()
2020
tags = (ApplicationsPhaseTag, IPUWorkflowTag)
2121

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
import shutil
22

33
from leapp.libraries.stdlib import api
4-
from leapp.models import UpdatedMultipathConfig
4+
from leapp.models import MultipathConfigUpdatesInfo
55

66

77
def patch_system_configs():
8-
modified_configs_used_during_upgrade = api.consume(UpdatedMultipathConfig)
9-
10-
for modified_config in modified_configs_used_during_upgrade:
11-
api.current_logger().debug(
12-
'Copying modified multipath config {} to {}.'.format(
13-
modified_config.updated_config_location,
14-
modified_config.target_path
8+
for config_updates in api.consume(MultipathConfigUpdatesInfo):
9+
for modified_config in config_updates.updates:
10+
api.current_logger().debug(
11+
'Copying modified multipath config {} to {}.'.format(
12+
modified_config.updated_config_location,
13+
modified_config.target_path
14+
)
1515
)
16-
)
1716

18-
shutil.copy(modified_config.updated_config_location, modified_config.target_path)
17+
shutil.copy(modified_config.updated_config_location, modified_config.target_path)

repos/system_upgrade/common/actors/multipath/system_conf_patcher/tests/test_config_patcher.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from leapp.libraries.actor import system_config_patcher
44
from leapp.libraries.common.testutils import CurrentActorMocked
55
from leapp.libraries.stdlib import api
6-
from leapp.models import UpdatedMultipathConfig
6+
from leapp.models import MultipathConfigUpdatesInfo, UpdatedMultipathConfig
77

88

99
def test_config_patcher(monkeypatch):
@@ -17,8 +17,9 @@ def test_config_patcher(monkeypatch):
1717
target_path='/etc/multipath/conf.d/myconfig.conf'
1818
)
1919
]
20+
config_update_info = MultipathConfigUpdatesInfo(updates=modified_configs)
2021

21-
actor_mock = CurrentActorMocked(msgs=modified_configs)
22+
actor_mock = CurrentActorMocked(msgs=[config_update_info])
2223
monkeypatch.setattr(api, 'current_actor', actor_mock)
2324

2425
copies_performed = []

repos/system_upgrade/common/actors/multipath/target_uspace_configs/actor.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from leapp.actors import Actor
22
from leapp.libraries.actor import target_uspace_multipath_configs
3-
from leapp.models import MultipathInfo, TargetUserSpaceUpgradeTasks, UpdatedMultipathConfig, UpgradeInitramfsTasks
3+
from leapp.models import MultipathConfigUpdatesInfo, MultipathInfo, TargetUserSpaceUpgradeTasks, UpgradeInitramfsTasks
44
from leapp.tags import ChecksPhaseTag, IPUWorkflowTag
55

66

@@ -14,7 +14,7 @@ class RequestMultipathConfsInTargetUserspace(Actor):
1414
"""
1515

1616
name = 'request_multipath_conf_in_target_userspace'
17-
consumes = (MultipathInfo, UpdatedMultipathConfig)
17+
consumes = (MultipathInfo, MultipathConfigUpdatesInfo)
1818
produces = (TargetUserSpaceUpgradeTasks, UpgradeInitramfsTasks)
1919
tags = (ChecksPhaseTag, IPUWorkflowTag)
2020

repos/system_upgrade/common/actors/multipath/target_uspace_configs/libraries/target_uspace_multipath_configs.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
from leapp.models import (
55
CopyFile,
66
DracutModule,
7+
MultipathConfigUpdatesInfo,
78
MultipathInfo,
89
TargetUserSpaceUpgradeTasks,
9-
UpdatedMultipathConfig,
1010
UpgradeInitramfsTasks
1111
)
1212

@@ -32,8 +32,9 @@ def request_mpath_confs(multipath_info):
3232
continue
3333
files_to_put_into_uspace[config_path] = config_path
3434

35-
for config_update in api.consume(UpdatedMultipathConfig):
36-
files_to_put_into_uspace[config_update.updated_config_location] = config_update.target_path
35+
for config_updates in api.consume(MultipathConfigUpdatesInfo):
36+
for update in config_updates.updates:
37+
files_to_put_into_uspace[update.updated_config_location] = update.target_path
3738

3839
# Note: original implementation would copy the /etc/multipath directory, which contains
3940
# /etc/multipath/conf.d location for drop-in files. The current logic includes it automatically,

repos/system_upgrade/common/models/multipath.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,14 @@ class UpdatedMultipathConfig(Model):
2828
""" Location where should be the updated config placed. """
2929

3030

31+
class MultipathConfigUpdatesInfo(Model):
32+
""" Aggregate information about multipath configs that were updated. """
33+
topic = SystemInfoTopic
34+
35+
updates = fields.List(fields.Model(UpdatedMultipathConfig), default=[])
36+
""" Collection of multipath config updates that must be performed during the upgrade. """
37+
38+
3139
class MultipathConfig8to9(Model):
3240
"""
3341
Model information about multipath configuration file important for the 8>9 upgrade path.

repos/system_upgrade/el8toel9/actors/multipath_upgrade_conf_patcher/actor.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from leapp.actors import Actor
22
from leapp.libraries.actor import multipathconfupdate
3-
from leapp.models import MultipathConfFacts8to9, UpdatedMultipathConfig
3+
from leapp.models import MultipathConfFacts8to9, MultipathConfigUpdatesInfo
44
from leapp.tags import ChecksPhaseTag, IPUWorkflowTag
55

66

@@ -15,7 +15,7 @@ class MultipathUpgradeConfUpdate8to9(Actor):
1515

1616
name = 'multipath_upgrade_conf_update_8to9'
1717
consumes = (MultipathConfFacts8to9,)
18-
produces = (UpdatedMultipathConfig,)
18+
produces = (MultipathConfigUpdatesInfo,)
1919
tags = (ChecksPhaseTag, IPUWorkflowTag)
2020

2121
def process(self):

repos/system_upgrade/el8toel9/actors/multipath_upgrade_conf_patcher/libraries/multipathconfupdate.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from leapp.libraries.common import multipathutil
55
from leapp.libraries.stdlib import api
6-
from leapp.models import UpdatedMultipathConfig
6+
from leapp.models import MultipathConfigUpdatesInfo, UpdatedMultipathConfig
77

88
MODIFICATIONS_STORE_PATH = '/var/lib/leapp/proposed_modifications'
99

@@ -124,4 +124,4 @@ def update_configs(facts):
124124
target_path=original_config_location)
125125
config_updates.append(update)
126126

127-
api.produce(*config_updates)
127+
api.produce(MultipathConfigUpdatesInfo(updates=config_updates))

repos/system_upgrade/el8toel9/actors/multipath_upgrade_conf_patcher/tests/test_multipath_conf_update_8to9.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,9 @@ def write_config_mock(location, contents):
122122
multipathconfupdate.update_configs(config_facts)
123123

124124
config_updates = {}
125-
for config_update in produce_mock.model_instances:
126-
config_updates[config_update.target_path] = config_update.updated_config_location
125+
for config_updates_msg in produce_mock.model_instances:
126+
for update in config_updates_msg.updates:
127+
config_updates[update.target_path] = update.updated_config_location
127128

128129
for config in config_facts.configs:
129130
expected_conf_location = os.path.join(AFTER_DIR, config.pathname)

0 commit comments

Comments
 (0)