Skip to content
This repository was archived by the owner on Dec 16, 2025. It is now read-only.

Commit b745bcd

Browse files
Handle access to undefined states gracefully
Fixes: #76 Signed-off-by: Tobias Wolf <[email protected]>
1 parent 225b1f7 commit b745bcd

File tree

5 files changed

+25
-17
lines changed

5 files changed

+25
-17
lines changed

src/rookify/modules/create_rook_cluster/main.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@ class CreateRookClusterHandler(ModuleHandler):
1616
]
1717

1818
def preflight(self) -> None:
19-
if self.machine.get_execution_state_data(
20-
"CreateRookClusterHandler", "generated", default_value=False
21-
):
19+
cluster_definition = self.machine.get_preflight_state_data(
20+
"CreateRookClusterHandler", "cluster_definition"
21+
)
22+
23+
if cluster_definition is not None:
2224
return
2325

2426
state_data = self.machine.get_preflight_state("AnalyzeCephHandler").data
@@ -64,13 +66,9 @@ def preflight(self) -> None:
6466
if mgr_count > 5:
6567
mgr_count = rook_config["cluster"].get("max_mgr_count", 5)
6668

67-
self.machine.get_execution_state(
68-
"CreateRookClusterHandler"
69-
).mgr_count = mgr_count
70-
71-
self.machine.get_execution_state(
72-
"CreateRookClusterHandler"
73-
).mon_count = mon_count
69+
state = self.machine.get_preflight_state("CreateRookClusterHandler")
70+
state.mgr_count = mgr_count
71+
state.mon_count = mon_count
7472

7573
cluster_definition_values = {
7674
"cluster_name": rook_config["cluster"]["name"],

src/rookify/modules/machine.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,15 +83,25 @@ def _get_state_tags_data(self, name: str) -> Dict[str, Any]:
8383
return data
8484

8585
def get_execution_state(self, name: str) -> Any:
86-
return self.get_state(self.__class__.STATE_NAME_EXECUTION_PREFIX + name)
86+
state_name = self.__class__.STATE_NAME_EXECUTION_PREFIX + name
87+
88+
if state_name not in self.states:
89+
return None
90+
91+
return self.get_state(state_name)
8792

8893
def get_execution_state_data(
8994
self, name: str, tag: str, default_value: Any = None
9095
) -> Any:
9196
return getattr(self.get_execution_state(name), tag, default_value)
9297

9398
def get_preflight_state(self, name: str) -> Any:
94-
return self.get_state(self.__class__.STATE_NAME_PREFLIGHT_PREFIX + name)
99+
state_name = self.__class__.STATE_NAME_PREFLIGHT_PREFIX + name
100+
101+
if state_name not in self.states:
102+
return None
103+
104+
return self.get_state(state_name)
95105

96106
def get_preflight_state_data(
97107
self, name: str, tag: str, default_value: Any = None

src/rookify/modules/migrate_mds_pools/main.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ def preflight(self) -> None:
4040
if pool_data_osd_name not in migrated_pools:
4141
migrated_pools.append(pool_data_osd_name)
4242

43-
self.machine.get_execution_state(
44-
"MigrateMdsPoolsHandler"
45-
).migrated_pools = migrated_pools
43+
state = self.machine.get_execution_state("MigrateMdsPoolsHandler")
44+
if state is not None:
45+
state.migrated_pools = migrated_pools
4646

4747
continue
4848

src/rookify/modules/migrate_mgrs/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def _migrate_mgr(self, mgr_host: str) -> None:
9090
"MigrateMgrsHandler"
9191
).migrated_mgrs = migrated_mgrs
9292

93-
mgr_count_expected = self.machine.get_execution_state_data(
93+
mgr_count_expected = self.machine.get_preflight_state_data(
9494
"CreateRookClusterHandler", "mgr_count", default_value=3
9595
)
9696

src/rookify/modules/migrate_mons/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def _migrate_mon(self, mon: Dict[str, Any]) -> None:
106106
"MigrateMonsHandler",
107107
).migrated_mons = migrated_mons
108108

109-
mon_count_expected = self.machine.get_execution_state_data(
109+
mon_count_expected = self.machine.get_preflight_state_data(
110110
"CreateRookClusterHandler", "mon_count", default_value=3
111111
)
112112

0 commit comments

Comments
 (0)