From 29fb65b224c2a2e344f1c41346b23348dcbed85f Mon Sep 17 00:00:00 2001
From: Sergey Isachenko <vortexius@gmail.com>
Date: Tue, 24 Oct 2017 20:15:25 +0300
Subject: [PATCH] Fixes #10030. Extented Network Exceptions handling. (#10116)

* Fixes #10030. Extented Network Exceptions handling.

* Remove unused import. Replace ex.reason to ex.message to use custom exception instead of HTTPError
---
 homeassistant/components/tesla.py | 15 ++++++---------
 requirements_all.txt              |  2 +-
 2 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/homeassistant/components/tesla.py b/homeassistant/components/tesla.py
index 915ebb6d4c3..86dc9c86792 100644
--- a/homeassistant/components/tesla.py
+++ b/homeassistant/components/tesla.py
@@ -6,8 +6,6 @@ https://home-assistant.io/components/tesla/
 """
 from collections import defaultdict
 import logging
-
-from urllib.error import HTTPError
 import voluptuous as vol
 
 from homeassistant.const import (
@@ -17,7 +15,7 @@ from homeassistant.helpers import config_validation as cv
 from homeassistant.helpers.entity import Entity
 from homeassistant.util import slugify
 
-REQUIREMENTS = ['teslajsonpy==0.0.17']
+REQUIREMENTS = ['teslajsonpy==0.0.18']
 
 DOMAIN = 'tesla'
 
@@ -45,7 +43,7 @@ TESLA_COMPONENTS = [
 
 def setup(hass, base_config):
     """Set up of Tesla platform."""
-    from teslajsonpy.controller import Controller as teslaApi
+    from teslajsonpy import Controller as teslaAPI, TeslaException
 
     config = base_config.get(DOMAIN)
 
@@ -55,12 +53,12 @@ def setup(hass, base_config):
     if hass.data.get(DOMAIN) is None:
         try:
             hass.data[DOMAIN] = {
-                'controller': teslaApi(
+                'controller': teslaAPI(
                     email, password, update_interval),
                 'devices': defaultdict(list)
             }
             _LOGGER.debug("Connected to the Tesla API.")
-        except HTTPError as ex:
+        except TeslaException as ex:
             if ex.code == 401:
                 hass.components.persistent_notification.create(
                     "Error:<br />Please check username and password."
@@ -72,12 +70,11 @@ def setup(hass, base_config):
                     "Error:<br />Can't communicate with Tesla API.<br />"
                     "Error code: {} Reason: {}"
                     "You will need to restart Home Assistant after fixing."
-                    "".format(ex.code, ex.reason),
+                    "".format(ex.code, ex.message),
                     title=NOTIFICATION_TITLE,
                     notification_id=NOTIFICATION_ID)
             _LOGGER.error("Unable to communicate with Tesla API: %s",
-                          ex.reason)
-
+                          ex.message)
             return False
 
     all_devices = hass.data[DOMAIN]['controller'].list_vehicles()
diff --git a/requirements_all.txt b/requirements_all.txt
index 31dfd3df3af..e4831f51443 100644
--- a/requirements_all.txt
+++ b/requirements_all.txt
@@ -1024,7 +1024,7 @@ tellduslive==0.3.4
 temperusb==1.5.3
 
 # homeassistant.components.tesla
-teslajsonpy==0.0.17
+teslajsonpy==0.0.18
 
 # homeassistant.components.thingspeak
 thingspeak==0.4.1
-- 
GitLab