1 """Support for interacting with Vultr subscriptions."""
3 from __future__
import annotations
8 import voluptuous
as vol
11 PLATFORM_SCHEMA
as SWITCH_PLATFORM_SCHEMA,
21 ATTR_ALLOWED_BANDWIDTH,
32 ATTR_SUBSCRIPTION_NAME,
38 _LOGGER = logging.getLogger(__name__)
40 DEFAULT_NAME =
"Vultr {}"
41 PLATFORM_SCHEMA = SWITCH_PLATFORM_SCHEMA.extend(
43 vol.Required(CONF_SUBSCRIPTION): cv.string,
44 vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
52 add_entities: AddEntitiesCallback,
53 discovery_info: DiscoveryInfoType |
None =
None,
55 """Set up the Vultr subscription switch."""
56 vultr = hass.data[DATA_VULTR]
58 subscription = config.get(CONF_SUBSCRIPTION)
59 name = config.get(CONF_NAME)
61 if subscription
not in vultr.data:
62 _LOGGER.error(
"Subscription %s not found", subscription)
69 """Representation of a Vultr subscription switch."""
72 """Initialize a new Vultr switch."""
81 """Return the name of the switch."""
83 return self.
_name_name.format(self.
datadata[
"label"])
84 except (TypeError, KeyError):
85 return self.
_name_name
89 """Return true if switch is on."""
90 return self.
datadata[
"power_status"] ==
"running"
94 """Return the icon of this server."""
95 return "mdi:server" if self.
is_onis_onis_on
else "mdi:server-off"
99 """Return the state attributes of the Vultr subscription."""
101 ATTR_ALLOWED_BANDWIDTH: self.
datadata.
get(
"allowed_bandwidth_gb"),
102 ATTR_AUTO_BACKUPS: self.
datadata.
get(
"auto_backups"),
103 ATTR_COST_PER_MONTH: self.
datadata.
get(
"cost_per_month"),
104 ATTR_CREATED_AT: self.
datadata.
get(
"date_created"),
105 ATTR_DISK: self.
datadata.
get(
"disk"),
106 ATTR_IPV4_ADDRESS: self.
datadata.
get(
"main_ip"),
107 ATTR_IPV6_ADDRESS: self.
datadata.
get(
"v6_main_ip"),
108 ATTR_MEMORY: self.
datadata.
get(
"ram"),
109 ATTR_OS: self.
datadata.
get(
"os"),
110 ATTR_REGION: self.
datadata.
get(
"location"),
111 ATTR_SUBSCRIPTION_ID: self.
datadata.
get(
"SUBID"),
112 ATTR_SUBSCRIPTION_NAME: self.
datadata.
get(
"label"),
113 ATTR_VCPUS: self.
datadata.
get(
"vcpu_count"),
117 """Boot-up the subscription."""
118 if self.
datadata[
"power_status"] !=
"running":
122 """Halt the subscription."""
123 if self.
datadata[
"power_status"] ==
"running":
127 """Get the latest data from the device and update the data."""
def extra_state_attributes(self)
None turn_on(self, **Any kwargs)
None turn_off(self, **Any kwargs)
def __init__(self, vultr, subscription, name)
None add_entities(AsusWrtRouter router, AddEntitiesCallback async_add_entities, set[str] tracked)
web.Response get(self, web.Request request, str config_key)
None setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback add_entities, DiscoveryInfoType|None discovery_info=None)