1 """Support for interacting with Digital Ocean droplets."""
3 from __future__
import annotations
8 import voluptuous
as vol
11 PLATFORM_SCHEMA
as SWITCH_PLATFORM_SCHEMA,
34 _LOGGER = logging.getLogger(__name__)
36 DEFAULT_NAME =
"Droplet"
38 PLATFORM_SCHEMA = SWITCH_PLATFORM_SCHEMA.extend(
39 {vol.Required(CONF_DROPLETS): vol.All(cv.ensure_list, [cv.string])}
46 add_entities: AddEntitiesCallback,
47 discovery_info: DiscoveryInfoType |
None =
None,
49 """Set up the Digital Ocean droplet switch."""
50 if not (digital := hass.data.get(DATA_DIGITAL_OCEAN)):
53 droplets = config[CONF_DROPLETS]
56 for droplet
in droplets:
57 if (droplet_id := digital.get_droplet_id(droplet))
is None:
58 _LOGGER.error(
"Droplet %s is not available", droplet)
66 """Representation of a Digital Ocean droplet switch."""
68 _attr_attribution = ATTRIBUTION
71 """Initialize a new Digital Ocean sensor."""
79 """Return the name of the switch."""
80 return self.
datadata.name
84 """Return true if switch is on."""
85 return self.
datadata.status ==
"active"
89 """Return the state attributes of the Digital Ocean droplet."""
91 ATTR_CREATED_AT: self.
datadata.created_at,
92 ATTR_DROPLET_ID: self.
datadata.id,
93 ATTR_DROPLET_NAME: self.
datadata.name,
94 ATTR_FEATURES: self.
datadata.features,
95 ATTR_IPV4_ADDRESS: self.
datadata.ip_address,
96 ATTR_IPV6_ADDRESS: self.
datadata.ip_v6_address,
97 ATTR_MEMORY: self.
datadata.memory,
98 ATTR_REGION: self.
datadata.region[
"name"],
99 ATTR_VCPUS: self.
datadata.vcpus,
103 """Boot-up the droplet."""
104 if self.
datadata.status !=
"active":
105 self.
datadata.power_on()
108 """Shutdown the droplet."""
109 if self.
datadata.status ==
"active":
110 self.
datadata.power_off()
113 """Get the latest data from the device and update the data."""
118 self.
datadata = droplet
None turn_on(self, **Any kwargs)
def extra_state_attributes(self)
None turn_off(self, **Any kwargs)
def __init__(self, do, droplet_id)
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)