Skip to content

Commit 42069a3

Browse files
committed
Deprecate i386 and armhf Supervisor architectures
1 parent 52cc17f commit 42069a3

File tree

8 files changed

+51
-2
lines changed

8 files changed

+51
-2
lines changed

supervisor/homeassistant/core.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ async def install(self) -> None:
221221
JobCondition.INTERNET_HOST,
222222
JobCondition.PLUGINS_UPDATED,
223223
JobCondition.SUPERVISOR_UPDATED,
224+
JobCondition.ARCHITECTURE_SUPPORTED,
224225
],
225226
limit=JobExecutionLimit.GROUP_ONCE,
226227
on_condition=HomeAssistantJobError,

supervisor/jobs/const.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class JobCondition(StrEnum):
3232
PLUGINS_UPDATED = "plugins_updated"
3333
RUNNING = "running"
3434
SUPERVISOR_UPDATED = "supervisor_updated"
35+
ARCHITECTURE_SUPPORTED = "architecture_supported"
3536

3637

3738
class JobExecutionLimit(StrEnum):

supervisor/jobs/decorator.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
JobGroupExecutionLimitExceeded,
1818
)
1919
from ..host.const import HostFeature
20-
from ..resolution.const import MINIMUM_FREE_SPACE_THRESHOLD, ContextType, IssueType
20+
from ..resolution.const import MINIMUM_FREE_SPACE_THRESHOLD, ContextType, IssueType, UnsupportedReason
2121
from ..utils.sentry import capture_exception
2222
from . import SupervisorJob
2323
from .const import JobCondition, JobExecutionLimit
@@ -435,6 +435,13 @@ async def check_conditions(
435435
raise JobConditionException(
436436
f"'{method_name}' blocked from execution, supervisor needs to be updated first"
437437
)
438+
if (
439+
JobCondition.ARCHITECTURE_SUPPORTED in used_conditions
440+
and UnsupportedReason.SYSTEM_ARCHITECTURE in coresys.sys_resolution.unsupported
441+
):
442+
raise JobConditionException(
443+
f"'{method_name}' blocked from execution, unsupported system architecture"
444+
)
438445

439446
if JobCondition.PLUGINS_UPDATED in used_conditions and (
440447
out_of_date := [

supervisor/misc/tasks.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ async def _update_addons(self):
150150
JobCondition.HEALTHY,
151151
JobCondition.INTERNET_HOST,
152152
JobCondition.RUNNING,
153+
JobCondition.ARCHITECTURE_SUPPORTED,
153154
],
154155
limit=JobExecutionLimit.ONCE,
155156
)

supervisor/plugins/const.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@
2323
JobCondition.HEALTHY,
2424
JobCondition.INTERNET_HOST,
2525
JobCondition.SUPERVISOR_UPDATED,
26+
JobCondition.ARCHITECTURE_SUPPORTED,
2627
]

supervisor/resolution/const.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ class UnsupportedReason(StrEnum):
5858
SYSTEMD_JOURNAL = "systemd_journal"
5959
SYSTEMD_RESOLVED = "systemd_resolved"
6060
VIRTUALIZATION_IMAGE = "virtualization_image"
61+
SYSTEM_ARCHITECTURE = "system_architecture"
6162

6263

6364
class UnhealthyReason(StrEnum):
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
"""Evaluation class for system architecture support."""
2+
3+
from ...const import CoreState
4+
from ...coresys import CoreSys
5+
from ..const import UnsupportedReason
6+
from .base import EvaluateBase
7+
8+
9+
def setup(coresys: CoreSys) -> EvaluateBase:
10+
"""Initialize evaluation-setup function."""
11+
return EvaluateSystemArchitecture(coresys)
12+
13+
14+
class EvaluateSystemArchitecture(EvaluateBase):
15+
"""Evaluate if the current Supervisor architecture is supported."""
16+
17+
@property
18+
def reason(self) -> UnsupportedReason:
19+
"""Return a UnsupportedReason enum."""
20+
return UnsupportedReason.SYSTEM_ARCHITECTURE
21+
22+
@property
23+
def on_failure(self) -> str:
24+
"""Return a string that is printed when self.evaluate is True."""
25+
return "System architecture is no longer supported. Move to a supported system architecture."
26+
27+
@property
28+
def states(self) -> list[CoreState]:
29+
"""Return a list of valid states when this evaluation can run."""
30+
return [CoreState.INITIALIZE]
31+
32+
async def evaluate(self):
33+
"""Run evaluation."""
34+
return self.sys_host.info.sys_arch.supervisor in {
35+
"i386",
36+
"armhf",
37+
}

supervisor/updater.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ async def _check_connectivity(self, connectivity: bool):
196196

197197
@Job(
198198
name="updater_fetch_data",
199-
conditions=[JobCondition.INTERNET_SYSTEM],
199+
conditions=[JobCondition.INTERNET_SYSTEM, JobCondition.ARCHITECTURE_SUPPORTED],
200200
on_condition=UpdaterJobError,
201201
limit=JobExecutionLimit.THROTTLE_WAIT,
202202
throttle_period=timedelta(seconds=30),

0 commit comments

Comments
 (0)