1 """Support for interacting with Linode nodes."""
3 from __future__
import annotations
8 import voluptuous
as vol
11 PLATFORM_SCHEMA
as SWITCH_PLATFORM_SCHEMA,
32 _LOGGER = logging.getLogger(__name__)
36 PLATFORM_SCHEMA = SWITCH_PLATFORM_SCHEMA.extend(
37 {vol.Required(CONF_NODES): vol.All(cv.ensure_list, [cv.string])}
44 add_entities: AddEntitiesCallback,
45 discovery_info: DiscoveryInfoType |
None =
None,
47 """Set up the Linode Node switch."""
48 linode = hass.data[DATA_LINODE]
49 nodes = config[CONF_NODES]
53 if (node_id := linode.get_node_id(node))
is None:
54 _LOGGER.error(
"Node %s is not available", node)
62 """Representation of a Linode Node switch."""
65 """Initialize a new Linode sensor."""
72 """Boot-up the Node."""
73 if self.
datadata.status !=
"running":
77 """Shutdown the nodes."""
78 if self.
datadata.status ==
"running":
82 """Get the latest data from the device and update the data."""
84 if self.
_linode_linode.data
is not None:
85 for node
in self.
_linode_linode.data:
88 if self.
datadata
is not None:
91 ATTR_CREATED: self.
datadata.created,
92 ATTR_NODE_ID: self.
datadata.id,
93 ATTR_NODE_NAME: self.
datadata.label,
94 ATTR_IPV4_ADDRESS: self.
datadata.ipv4,
95 ATTR_IPV6_ADDRESS: self.
datadata.ipv6,
96 ATTR_MEMORY: self.
datadata.specs.memory,
97 ATTR_REGION: self.
datadata.region.country,
98 ATTR_VCPUS: self.
datadata.specs.vcpus,
def __init__(self, li, node_id)
None turn_off(self, **Any kwargs)
None turn_on(self, **Any kwargs)
_attr_extra_state_attributes
None add_entities(AsusWrtRouter router, AddEntitiesCallback async_add_entities, set[str] tracked)
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)