mirror of
https://github.com/home-assistant/core.git
synced 2025-07-16 09:47:13 +00:00
Add optional ttl config to route53 component (#18135)
* Add optional ttl config to route53 component * linting :)
This commit is contained in:
parent
03d94df3cd
commit
6a5f9faa33
@ -6,10 +6,11 @@ https://home-assistant.io/components/route53/
|
|||||||
"""
|
"""
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
import logging
|
import logging
|
||||||
|
from typing import List
|
||||||
|
|
||||||
import voluptuous as vol
|
import voluptuous as vol
|
||||||
|
|
||||||
from homeassistant.const import CONF_DOMAIN, CONF_ZONE
|
from homeassistant.const import CONF_DOMAIN, CONF_TTL, CONF_ZONE
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.helpers.event import track_time_interval
|
from homeassistant.helpers.event import track_time_interval
|
||||||
|
|
||||||
@ -24,6 +25,7 @@ CONF_RECORDS = 'records'
|
|||||||
DOMAIN = 'route53'
|
DOMAIN = 'route53'
|
||||||
|
|
||||||
INTERVAL = timedelta(minutes=60)
|
INTERVAL = timedelta(minutes=60)
|
||||||
|
DEFAULT_TTL = 300
|
||||||
|
|
||||||
CONFIG_SCHEMA = vol.Schema({
|
CONFIG_SCHEMA = vol.Schema({
|
||||||
DOMAIN: vol.Schema({
|
DOMAIN: vol.Schema({
|
||||||
@ -32,6 +34,7 @@ CONFIG_SCHEMA = vol.Schema({
|
|||||||
vol.Required(CONF_RECORDS): vol.All(cv.ensure_list, [cv.string]),
|
vol.Required(CONF_RECORDS): vol.All(cv.ensure_list, [cv.string]),
|
||||||
vol.Required(CONF_SECRET_ACCESS_KEY): cv.string,
|
vol.Required(CONF_SECRET_ACCESS_KEY): cv.string,
|
||||||
vol.Required(CONF_ZONE): cv.string,
|
vol.Required(CONF_ZONE): cv.string,
|
||||||
|
vol.Optional(CONF_TTL, default=DEFAULT_TTL): cv.positive_int,
|
||||||
})
|
})
|
||||||
}, extra=vol.ALLOW_EXTRA)
|
}, extra=vol.ALLOW_EXTRA)
|
||||||
|
|
||||||
@ -43,16 +46,29 @@ def setup(hass, config):
|
|||||||
zone = config[DOMAIN][CONF_ZONE]
|
zone = config[DOMAIN][CONF_ZONE]
|
||||||
aws_access_key_id = config[DOMAIN][CONF_ACCESS_KEY_ID]
|
aws_access_key_id = config[DOMAIN][CONF_ACCESS_KEY_ID]
|
||||||
aws_secret_access_key = config[DOMAIN][CONF_SECRET_ACCESS_KEY]
|
aws_secret_access_key = config[DOMAIN][CONF_SECRET_ACCESS_KEY]
|
||||||
|
ttl = config[DOMAIN][CONF_TTL]
|
||||||
|
|
||||||
def update_records_interval(now):
|
def update_records_interval(now):
|
||||||
"""Set up recurring update."""
|
"""Set up recurring update."""
|
||||||
_update_route53(
|
_update_route53(
|
||||||
aws_access_key_id, aws_secret_access_key, zone, domain, records)
|
aws_access_key_id,
|
||||||
|
aws_secret_access_key,
|
||||||
|
zone,
|
||||||
|
domain,
|
||||||
|
records,
|
||||||
|
ttl
|
||||||
|
)
|
||||||
|
|
||||||
def update_records_service(now):
|
def update_records_service(now):
|
||||||
"""Set up service for manual trigger."""
|
"""Set up service for manual trigger."""
|
||||||
_update_route53(
|
_update_route53(
|
||||||
aws_access_key_id, aws_secret_access_key, zone, domain, records)
|
aws_access_key_id,
|
||||||
|
aws_secret_access_key,
|
||||||
|
zone,
|
||||||
|
domain,
|
||||||
|
records,
|
||||||
|
ttl
|
||||||
|
)
|
||||||
|
|
||||||
track_time_interval(hass, update_records_interval, INTERVAL)
|
track_time_interval(hass, update_records_interval, INTERVAL)
|
||||||
|
|
||||||
@ -61,7 +77,13 @@ def setup(hass, config):
|
|||||||
|
|
||||||
|
|
||||||
def _update_route53(
|
def _update_route53(
|
||||||
aws_access_key_id, aws_secret_access_key, zone, domain, records):
|
aws_access_key_id: str,
|
||||||
|
aws_secret_access_key: str,
|
||||||
|
zone: str,
|
||||||
|
domain: str,
|
||||||
|
records: List[str],
|
||||||
|
ttl: int,
|
||||||
|
):
|
||||||
import boto3
|
import boto3
|
||||||
from ipify import get_ip
|
from ipify import get_ip
|
||||||
from ipify import exceptions
|
from ipify import exceptions
|
||||||
@ -95,7 +117,7 @@ def _update_route53(
|
|||||||
'ResourceRecordSet': {
|
'ResourceRecordSet': {
|
||||||
'Name': '{}.{}'.format(record, domain),
|
'Name': '{}.{}'.format(record, domain),
|
||||||
'Type': 'A',
|
'Type': 'A',
|
||||||
'TTL': 300,
|
'TTL': ttl,
|
||||||
'ResourceRecords': [
|
'ResourceRecords': [
|
||||||
{'Value': ipaddress},
|
{'Value': ipaddress},
|
||||||
],
|
],
|
||||||
|
@ -140,6 +140,7 @@ CONF_TIME_ZONE = 'time_zone'
|
|||||||
CONF_TIMEOUT = 'timeout'
|
CONF_TIMEOUT = 'timeout'
|
||||||
CONF_TOKEN = 'token'
|
CONF_TOKEN = 'token'
|
||||||
CONF_TRIGGER_TIME = 'trigger_time'
|
CONF_TRIGGER_TIME = 'trigger_time'
|
||||||
|
CONF_TTL = 'ttl'
|
||||||
CONF_TYPE = 'type'
|
CONF_TYPE = 'type'
|
||||||
CONF_UNIT_OF_MEASUREMENT = 'unit_of_measurement'
|
CONF_UNIT_OF_MEASUREMENT = 'unit_of_measurement'
|
||||||
CONF_UNIT_SYSTEM = 'unit_system'
|
CONF_UNIT_SYSTEM = 'unit_system'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user