1 """Support for Digital Ocean."""
3 from datetime
import timedelta
7 import voluptuous
as vol
15 _LOGGER = logging.getLogger(__name__)
17 ATTR_CREATED_AT =
"created_at"
18 ATTR_DROPLET_ID =
"droplet_id"
19 ATTR_DROPLET_NAME =
"droplet_name"
20 ATTR_FEATURES =
"features"
21 ATTR_IPV4_ADDRESS =
"ipv4_address"
22 ATTR_IPV6_ADDRESS =
"ipv6_address"
23 ATTR_MEMORY =
"memory"
24 ATTR_REGION =
"region"
27 ATTRIBUTION =
"Data provided by Digital Ocean"
29 CONF_DROPLETS =
"droplets"
31 DATA_DIGITAL_OCEAN =
"data_do"
32 DIGITAL_OCEAN_PLATFORMS = [Platform.SWITCH, Platform.BINARY_SENSOR]
33 DOMAIN =
"digital_ocean"
37 CONFIG_SCHEMA = vol.Schema(
38 {DOMAIN: vol.Schema({vol.Required(CONF_ACCESS_TOKEN): cv.string})},
39 extra=vol.ALLOW_EXTRA,
43 def setup(hass: HomeAssistant, config: ConfigType) -> bool:
44 """Set up the Digital Ocean component."""
47 access_token = conf[CONF_ACCESS_TOKEN]
52 if not digital.manager.get_account():
53 _LOGGER.error(
"No account found for the given API token")
55 except digitalocean.baseapi.DataReadError:
56 _LOGGER.error(
"API token not valid for authentication")
59 hass.data[DATA_DIGITAL_OCEAN] = digital
65 """Handle all communication with the Digital Ocean API."""
68 """Initialize the Digital Ocean connection."""
75 """Get the status of a Digital Ocean droplet."""
78 all_droplets = self.
managermanager.get_all_droplets()
79 for droplet
in all_droplets:
80 if droplet_name == droplet.name:
81 droplet_id = droplet.id
85 @Throttle(MIN_TIME_BETWEEN_UPDATES)
87 """Use the data from Digital Ocean API."""
88 self.
datadata = self.
managermanager.get_all_droplets()
def __init__(self, access_token)
def get_droplet_id(self, droplet_name)
bool setup(HomeAssistant hass, ConfigType config)