1 """The Glances component."""
6 from glances_api
import Glances
7 from glances_api.exceptions
import (
8 GlancesApiAuthorizationError,
10 GlancesApiNoDataAvailable,
25 ConfigEntryAuthFailed,
32 from .coordinator
import GlancesDataUpdateCoordinator
34 PLATFORMS = [Platform.SENSOR]
37 _LOGGER = logging.getLogger(__name__)
39 type GlancesConfigEntry = ConfigEntry[GlancesDataUpdateCoordinator]
43 hass: HomeAssistant, config_entry: GlancesConfigEntry
45 """Set up Glances from config entry."""
48 except GlancesApiAuthorizationError
as err:
49 raise ConfigEntryAuthFailed
from err
50 except GlancesApiError
as err:
51 raise ConfigEntryNotReady
from err
52 except ServerVersionMismatch
as err:
55 await coordinator.async_config_entry_first_refresh()
57 config_entry.runtime_data = coordinator
59 await hass.config_entries.async_forward_entry_setups(config_entry, PLATFORMS)
65 """Unload a config entry."""
66 return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
69 async
def get_api(hass: HomeAssistant, entry_data: dict[str, Any]) -> Glances:
70 """Return the api from glances_api."""
71 httpx_client =
get_async_client(hass, verify_ssl=entry_data[CONF_VERIFY_SSL])
72 for version
in (4, 3):
74 host=entry_data[CONF_HOST],
75 port=entry_data[CONF_PORT],
77 ssl=entry_data[CONF_SSL],
78 username=entry_data.get(CONF_USERNAME),
79 password=entry_data.get(CONF_PASSWORD),
80 httpx_client=httpx_client,
83 await api.get_ha_sensor_data()
84 except GlancesApiNoDataAvailable
as err:
85 _LOGGER.debug(
"Failed to connect to Glances API v%s: %s", version, err)
87 _LOGGER.debug(
"Connected to Glances API v%s", version)
93 """Raise exception if we fail to connect to Glances API."""
bool async_unload_entry(HomeAssistant hass, GlancesConfigEntry entry)
Glances get_api(HomeAssistant hass, dict[str, Any] entry_data)
bool async_setup_entry(HomeAssistant hass, GlancesConfigEntry config_entry)
httpx.AsyncClient get_async_client(HomeAssistant hass, bool verify_ssl=True)