|
20 | 20 | ATTR_CPU_PERCENT, |
21 | 21 | ATTR_DEBUG, |
22 | 22 | ATTR_DEBUG_BLOCK, |
| 23 | + ATTR_DETECT_BLOCKING_IO, |
23 | 24 | ATTR_DIAGNOSTICS, |
24 | 25 | ATTR_FORCE_SECURITY, |
25 | 26 | ATTR_HEALTHY, |
|
47 | 48 | from ..coresys import CoreSysAttributes |
48 | 49 | from ..exceptions import APIError |
49 | 50 | from ..store.validate import repositories |
| 51 | +from ..utils.blockbuster import ( |
| 52 | + activate_blockbuster, |
| 53 | + blockbuster_enabled, |
| 54 | + deactivate_blockbuster, |
| 55 | +) |
50 | 56 | from ..utils.sentry import close_sentry, init_sentry |
51 | 57 | from ..utils.validate import validate_timezone |
52 | 58 | from ..validate import version_tag, wait_boot |
53 | | -from .const import CONTENT_TYPE_TEXT |
| 59 | +from .const import CONTENT_TYPE_TEXT, DetectBlockingIO |
54 | 60 | from .utils import api_process, api_process_raw, api_validate |
55 | 61 |
|
56 | 62 | _LOGGER: logging.Logger = logging.getLogger(__name__) |
|
69 | 75 | vol.Optional(ATTR_CONTENT_TRUST): vol.Boolean(), |
70 | 76 | vol.Optional(ATTR_FORCE_SECURITY): vol.Boolean(), |
71 | 77 | vol.Optional(ATTR_AUTO_UPDATE): vol.Boolean(), |
| 78 | + vol.Optional(ATTR_DETECT_BLOCKING_IO): vol.Coerce(DetectBlockingIO), |
72 | 79 | } |
73 | 80 | ) |
74 | 81 |
|
@@ -101,6 +108,7 @@ async def info(self, request: web.Request) -> dict[str, Any]: |
101 | 108 | ATTR_DEBUG_BLOCK: self.sys_config.debug_block, |
102 | 109 | ATTR_DIAGNOSTICS: self.sys_config.diagnostics, |
103 | 110 | ATTR_AUTO_UPDATE: self.sys_updater.auto_update, |
| 111 | + ATTR_DETECT_BLOCKING_IO: blockbuster_enabled(), |
104 | 112 | # Depricated |
105 | 113 | ATTR_WAIT_BOOT: self.sys_config.wait_boot, |
106 | 114 | ATTR_ADDONS: [ |
@@ -160,6 +168,17 @@ async def options(self, request: web.Request) -> None: |
160 | 168 | if ATTR_AUTO_UPDATE in body: |
161 | 169 | self.sys_updater.auto_update = body[ATTR_AUTO_UPDATE] |
162 | 170 |
|
| 171 | + if detect_blocking_io := body.get(ATTR_DETECT_BLOCKING_IO): |
| 172 | + if detect_blocking_io == DetectBlockingIO.ON_AT_STARTUP: |
| 173 | + self.sys_config.detect_blocking_io = True |
| 174 | + detect_blocking_io = DetectBlockingIO.ON |
| 175 | + |
| 176 | + if detect_blocking_io == DetectBlockingIO.ON: |
| 177 | + activate_blockbuster() |
| 178 | + elif detect_blocking_io == DetectBlockingIO.OFF: |
| 179 | + self.sys_config.detect_blocking_io = False |
| 180 | + deactivate_blockbuster() |
| 181 | + |
163 | 182 | # Deprecated |
164 | 183 | if ATTR_WAIT_BOOT in body: |
165 | 184 | self.sys_config.wait_boot = body[ATTR_WAIT_BOOT] |
|
0 commit comments