1 """Representation of Plex updates."""
6 from plexapi.exceptions
import PlexApiException
8 import requests.exceptions
16 from .const
import CONF_SERVER_IDENTIFIER
17 from .helpers
import get_plex_server
19 _LOGGER = logging.getLogger(__name__)
24 config_entry: ConfigEntry,
25 async_add_entities: AddEntitiesCallback,
27 """Set up Plex update entities from a config entry."""
28 server_id = config_entry.data[CONF_SERVER_IDENTIFIER]
30 plex_server = server.plex_server
31 can_update = await hass.async_add_executor_job(plex_server.canInstallUpdate)
36 """Representation of a Plex server update entity."""
38 _attr_supported_features = UpdateEntityFeature.RELEASE_NOTES
39 _release_notes: str |
None =
None
44 """Initialize the Update entity."""
46 self.
_attr_name_attr_name = f
"Plex Media Server ({plex_server.friendlyName})"
52 """Update sync attributes."""
55 if (release := self.
plex_serverplex_server.checkForUpdate())
is None:
58 except (requests.exceptions.RequestException, PlexApiException):
59 _LOGGER.debug(
"Polling update sensor failed, will try again")
64 f
"* {line}" for line
in release.fixed.split(
"\n")
70 """Return release notes for the available upgrade."""
73 def install(self, version: str |
None, backup: bool, **kwargs: Any) ->
None:
74 """Install an update."""
77 except (requests.exceptions.RequestException, PlexApiException)
as exc:
None install(self, str|None version, bool backup, **Any kwargs)
str|None release_notes(self)
None __init__(self, plexapi.server.PlexServer plex_server, bool can_update)
str|None installed_version(self)
PlexServer get_plex_server(HomeAssistant hass, str server_id)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)