From a571271c396cd43fb3f6ac8109ec1f699b0da498 Mon Sep 17 00:00:00 2001 From: Johann Kellerman Date: Fri, 2 Sep 2016 06:28:46 +0200 Subject: [PATCH] Use voluptuous for Aruba (#3119) --- .../components/device_tracker/aruba.py | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/device_tracker/aruba.py b/homeassistant/components/device_tracker/aruba.py index a62306b5619..6383bc962a4 100644 --- a/homeassistant/components/device_tracker/aruba.py +++ b/homeassistant/components/device_tracker/aruba.py @@ -9,9 +9,11 @@ import re import threading from datetime import timedelta -from homeassistant.components.device_tracker import DOMAIN +import voluptuous as vol + +import homeassistant.helpers.config_validation as cv +from homeassistant.components.device_tracker import DOMAIN, PLATFORM_SCHEMA from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_USERNAME -from homeassistant.helpers import validate_config from homeassistant.util import Throttle # Return cached results if last scan was less then this time ago @@ -25,15 +27,16 @@ _DEVICES_REGEX = re.compile( r'(?P([0-9]{1,3}[\.]){3}[0-9]{1,3})\s+' + r'(?P(([0-9a-f]{2}[:-]){5}([0-9a-f]{2})))\s+') +PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ + vol.Required(CONF_HOST): cv.string, + vol.Required(CONF_PASSWORD): cv.string, + vol.Required(CONF_USERNAME): cv.string +}) + # pylint: disable=unused-argument def get_scanner(hass, config): """Validate the configuration and return a Aruba scanner.""" - if not validate_config(config, - {DOMAIN: [CONF_HOST, CONF_USERNAME, CONF_PASSWORD]}, - _LOGGER): - return None - scanner = ArubaDeviceScanner(config[DOMAIN]) return scanner if scanner.success_init else None @@ -90,7 +93,7 @@ class ArubaDeviceScanner(object): def get_aruba_data(self): """Retrieve data from Aruba Access Point and return parsed result.""" import pexpect - connect = "ssh {}@{}" + connect = 'ssh {}@{}' ssh = pexpect.spawn(connect.format(self.username, self.host)) query = ssh.expect(['password:', pexpect.TIMEOUT, pexpect.EOF, 'continue connecting (yes/no)?', @@ -98,22 +101,22 @@ class ArubaDeviceScanner(object): 'Connection refused', 'Connection timed out'], timeout=120) if query == 1: - _LOGGER.error("Timeout") + _LOGGER.error('Timeout') return elif query == 2: - _LOGGER.error("Unexpected response from router") + _LOGGER.error('Unexpected response from router') return elif query == 3: ssh.sendline('yes') ssh.expect('password:') elif query == 4: - _LOGGER.error("Host key Changed") + _LOGGER.error('Host key Changed') return elif query == 5: - _LOGGER.error("Connection refused by server") + _LOGGER.error('Connection refused by server') return elif query == 6: - _LOGGER.error("Connection timed out") + _LOGGER.error('Connection timed out') return ssh.sendline(self.password) ssh.expect('#')