mirror of
https://github.com/home-assistant/core.git
synced 2025-07-29 08:07:45 +00:00
* Adding configration to disable ip address as a requirement Fixes: #13399 * Remove whitespace
This commit is contained in:
parent
edcb242b6d
commit
4008bf5611
@ -25,6 +25,7 @@ _LOGGER = logging.getLogger(__name__)
|
|||||||
|
|
||||||
CONF_PUB_KEY = 'pub_key'
|
CONF_PUB_KEY = 'pub_key'
|
||||||
CONF_SSH_KEY = 'ssh_key'
|
CONF_SSH_KEY = 'ssh_key'
|
||||||
|
CONF_REQUIRE_IP = 'require_ip'
|
||||||
DEFAULT_SSH_PORT = 22
|
DEFAULT_SSH_PORT = 22
|
||||||
SECRET_GROUP = 'Password or SSH Key'
|
SECRET_GROUP = 'Password or SSH Key'
|
||||||
|
|
||||||
@ -36,6 +37,7 @@ PLATFORM_SCHEMA = vol.All(
|
|||||||
vol.Optional(CONF_PROTOCOL, default='ssh'): vol.In(['ssh', 'telnet']),
|
vol.Optional(CONF_PROTOCOL, default='ssh'): vol.In(['ssh', 'telnet']),
|
||||||
vol.Optional(CONF_MODE, default='router'): vol.In(['router', 'ap']),
|
vol.Optional(CONF_MODE, default='router'): vol.In(['router', 'ap']),
|
||||||
vol.Optional(CONF_PORT, default=DEFAULT_SSH_PORT): cv.port,
|
vol.Optional(CONF_PORT, default=DEFAULT_SSH_PORT): cv.port,
|
||||||
|
vol.Optional(CONF_REQUIRE_IP, default=True): cv.boolean,
|
||||||
vol.Exclusive(CONF_PASSWORD, SECRET_GROUP): cv.string,
|
vol.Exclusive(CONF_PASSWORD, SECRET_GROUP): cv.string,
|
||||||
vol.Exclusive(CONF_SSH_KEY, SECRET_GROUP): cv.isfile,
|
vol.Exclusive(CONF_SSH_KEY, SECRET_GROUP): cv.isfile,
|
||||||
vol.Exclusive(CONF_PUB_KEY, SECRET_GROUP): cv.isfile
|
vol.Exclusive(CONF_PUB_KEY, SECRET_GROUP): cv.isfile
|
||||||
@ -115,6 +117,7 @@ class AsusWrtDeviceScanner(DeviceScanner):
|
|||||||
self.protocol = config[CONF_PROTOCOL]
|
self.protocol = config[CONF_PROTOCOL]
|
||||||
self.mode = config[CONF_MODE]
|
self.mode = config[CONF_MODE]
|
||||||
self.port = config[CONF_PORT]
|
self.port = config[CONF_PORT]
|
||||||
|
self.require_ip = config[CONF_REQUIRE_IP]
|
||||||
|
|
||||||
if self.protocol == 'ssh':
|
if self.protocol == 'ssh':
|
||||||
self.connection = SshConnection(
|
self.connection = SshConnection(
|
||||||
@ -172,7 +175,7 @@ class AsusWrtDeviceScanner(DeviceScanner):
|
|||||||
|
|
||||||
ret_devices = {}
|
ret_devices = {}
|
||||||
for key in devices:
|
for key in devices:
|
||||||
if self.mode == 'ap' or devices[key].ip is not None:
|
if not self.require_ip or devices[key].ip is not None:
|
||||||
ret_devices[key] = devices[key]
|
ret_devices[key] = devices[key]
|
||||||
return ret_devices
|
return ret_devices
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ from homeassistant.components.device_tracker import (
|
|||||||
from homeassistant.components.device_tracker.asuswrt import (
|
from homeassistant.components.device_tracker.asuswrt import (
|
||||||
CONF_PROTOCOL, CONF_MODE, CONF_PUB_KEY, DOMAIN, _ARP_REGEX,
|
CONF_PROTOCOL, CONF_MODE, CONF_PUB_KEY, DOMAIN, _ARP_REGEX,
|
||||||
CONF_PORT, PLATFORM_SCHEMA, Device, get_scanner, AsusWrtDeviceScanner,
|
CONF_PORT, PLATFORM_SCHEMA, Device, get_scanner, AsusWrtDeviceScanner,
|
||||||
_parse_lines, SshConnection, TelnetConnection)
|
_parse_lines, SshConnection, TelnetConnection, CONF_REQUIRE_IP)
|
||||||
from homeassistant.const import (CONF_PLATFORM, CONF_PASSWORD, CONF_USERNAME,
|
from homeassistant.const import (CONF_PLATFORM, CONF_PASSWORD, CONF_USERNAME,
|
||||||
CONF_HOST)
|
CONF_HOST)
|
||||||
|
|
||||||
@ -105,6 +105,15 @@ WAKE_DEVICES_AP = {
|
|||||||
mac='08:09:10:11:12:14', ip='123.123.123.126', name=None)
|
mac='08:09:10:11:12:14', ip='123.123.123.126', name=None)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WAKE_DEVICES_NO_IP = {
|
||||||
|
'01:02:03:04:06:08': Device(
|
||||||
|
mac='01:02:03:04:06:08', ip='123.123.123.125', name=None),
|
||||||
|
'08:09:10:11:12:14': Device(
|
||||||
|
mac='08:09:10:11:12:14', ip='123.123.123.126', name=None),
|
||||||
|
'08:09:10:11:12:15': Device(
|
||||||
|
mac='08:09:10:11:12:15', ip=None, name=None)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def setup_module():
|
def setup_module():
|
||||||
"""Setup the test module."""
|
"""Setup the test module."""
|
||||||
@ -411,6 +420,21 @@ class TestComponentsDeviceTrackerASUSWRT(unittest.TestCase):
|
|||||||
scanner._get_leases.return_value = LEASES_DEVICES
|
scanner._get_leases.return_value = LEASES_DEVICES
|
||||||
self.assertEqual(WAKE_DEVICES_AP, scanner.get_asuswrt_data())
|
self.assertEqual(WAKE_DEVICES_AP, scanner.get_asuswrt_data())
|
||||||
|
|
||||||
|
def test_get_asuswrt_data_no_ip(self):
|
||||||
|
"""Test for get asuswrt_data and not requiring ip."""
|
||||||
|
conf = VALID_CONFIG_ROUTER_SSH.copy()[DOMAIN]
|
||||||
|
conf[CONF_REQUIRE_IP] = False
|
||||||
|
scanner = AsusWrtDeviceScanner(conf)
|
||||||
|
scanner._get_wl = mock.Mock()
|
||||||
|
scanner._get_arp = mock.Mock()
|
||||||
|
scanner._get_neigh = mock.Mock()
|
||||||
|
scanner._get_leases = mock.Mock()
|
||||||
|
scanner._get_wl.return_value = WL_DEVICES
|
||||||
|
scanner._get_arp.return_value = ARP_DEVICES
|
||||||
|
scanner._get_neigh.return_value = NEIGH_DEVICES
|
||||||
|
scanner._get_leases.return_value = LEASES_DEVICES
|
||||||
|
self.assertEqual(WAKE_DEVICES_NO_IP, scanner.get_asuswrt_data())
|
||||||
|
|
||||||
def test_update_info(self):
|
def test_update_info(self):
|
||||||
"""Test for update info."""
|
"""Test for update info."""
|
||||||
scanner = get_scanner(self.hass, VALID_CONFIG_ROUTER_SSH)
|
scanner = get_scanner(self.hass, VALID_CONFIG_ROUTER_SSH)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user