Use supervisor envs instead of hassio (#72601)

This commit is contained in:
Joakim Sørensen 2022-05-30 12:00:13 +02:00 committed by GitHub
parent c8f677ce4c
commit 3a0111e65d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 25 additions and 25 deletions

View File

@ -398,7 +398,7 @@ def _get_domains(hass: core.HomeAssistant, config: dict[str, Any]) -> set[str]:
domains.update(hass.config_entries.async_domains()) domains.update(hass.config_entries.async_domains())
# Make sure the Hass.io component is loaded # Make sure the Hass.io component is loaded
if "HASSIO" in os.environ: if "SUPERVISOR" in os.environ:
domains.add("hassio") domains.add("hassio")
return domains return domains

View File

@ -505,7 +505,7 @@ def get_supervisor_ip() -> str:
async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: # noqa: C901 async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: # noqa: C901
"""Set up the Hass.io component.""" """Set up the Hass.io component."""
# Check local setup # Check local setup
for env in ("HASSIO", "HASSIO_TOKEN"): for env in ("SUPERVISOR", "SUPERVISOR_TOKEN"):
if os.environ.get(env): if os.environ.get(env):
continue continue
_LOGGER.error("Missing %s environment variable", env) _LOGGER.error("Missing %s environment variable", env)
@ -517,7 +517,7 @@ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: # noqa:
async_load_websocket_api(hass) async_load_websocket_api(hass)
host = os.environ["HASSIO"] host = os.environ["SUPERVISOR"]
websession = async_get_clientsession(hass) websession = async_get_clientsession(hass)
hass.data[DOMAIN] = hassio = HassIO(hass.loop, websession, host) hass.data[DOMAIN] = hassio = HassIO(hass.loop, websession, host)

View File

@ -42,7 +42,7 @@ class HassIOBaseAuth(HomeAssistantView):
def _check_access(self, request: web.Request): def _check_access(self, request: web.Request):
"""Check if this call is from Supervisor.""" """Check if this call is from Supervisor."""
# Check caller IP # Check caller IP
hassio_ip = os.environ["HASSIO"].split(":")[0] hassio_ip = os.environ["SUPERVISOR"].split(":")[0]
if ip_address(request.transport.get_extra_info("peername")[0]) != ip_address( if ip_address(request.transport.get_extra_info("peername")[0]) != ip_address(
hassio_ip hassio_ip
): ):

View File

@ -246,7 +246,7 @@ class HassIO:
method, method,
f"http://{self._ip}{command}", f"http://{self._ip}{command}",
json=payload, json=payload,
headers={X_HASSIO: os.environ.get("HASSIO_TOKEN", "")}, headers={X_HASSIO: os.environ.get("SUPERVISOR_TOKEN", "")},
timeout=aiohttp.ClientTimeout(total=timeout), timeout=aiohttp.ClientTimeout(total=timeout),
) )

View File

@ -124,7 +124,7 @@ class HassIOView(HomeAssistantView):
def _init_header(request: web.Request) -> dict[str, str]: def _init_header(request: web.Request) -> dict[str, str]:
"""Create initial header.""" """Create initial header."""
headers = { headers = {
X_HASSIO: os.environ.get("HASSIO_TOKEN", ""), X_HASSIO: os.environ.get("SUPERVISOR_TOKEN", ""),
CONTENT_TYPE: request.content_type, CONTENT_TYPE: request.content_type,
} }

View File

@ -183,7 +183,7 @@ def _init_header(request: web.Request, token: str) -> CIMultiDict | dict[str, st
headers[name] = value headers[name] = value
# Inject token / cleanup later on Supervisor # Inject token / cleanup later on Supervisor
headers[X_HASSIO] = os.environ.get("HASSIO_TOKEN", "") headers[X_HASSIO] = os.environ.get("SUPERVISOR_TOKEN", "")
# Ingress information # Ingress information
headers[X_INGRESS_PATH] = f"/api/hassio_ingress/{token}" headers[X_INGRESS_PATH] = f"/api/hassio_ingress/{token}"

View File

@ -6,8 +6,8 @@ from homeassistant.core import HomeAssistant, callback
from . import get_host_info, get_info, get_os_info, get_supervisor_info from . import get_host_info, get_info, get_os_info, get_supervisor_info
SUPERVISOR_PING = f"http://{os.environ['HASSIO']}/supervisor/ping" SUPERVISOR_PING = f"http://{os.environ['SUPERVISOR']}/supervisor/ping"
OBSERVER_URL = f"http://{os.environ['HASSIO']}:4357" OBSERVER_URL = f"http://{os.environ['SUPERVISOR']}:4357"
@callback @callback

View File

@ -1,2 +1,2 @@
"""Tests for Hass.io component.""" """Tests for Hass.io component."""
HASSIO_TOKEN = "123456" SUPERVISOR_TOKEN = "123456"

View File

@ -9,16 +9,16 @@ from homeassistant.core import CoreState
from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.aiohttp_client import async_get_clientsession
from homeassistant.setup import async_setup_component from homeassistant.setup import async_setup_component
from . import HASSIO_TOKEN from . import SUPERVISOR_TOKEN
@pytest.fixture @pytest.fixture
def hassio_env(): def hassio_env():
"""Fixture to inject hassio env.""" """Fixture to inject hassio env."""
with patch.dict(os.environ, {"HASSIO": "127.0.0.1"}), patch( with patch.dict(os.environ, {"SUPERVISOR": "127.0.0.1"}), patch(
"homeassistant.components.hassio.HassIO.is_connected", "homeassistant.components.hassio.HassIO.is_connected",
return_value={"result": "ok", "data": {}}, return_value={"result": "ok", "data": {}},
), patch.dict(os.environ, {"HASSIO_TOKEN": HASSIO_TOKEN}), patch( ), patch.dict(os.environ, {"SUPERVISOR_TOKEN": SUPERVISOR_TOKEN}), patch(
"homeassistant.components.hassio.HassIO.get_info", "homeassistant.components.hassio.HassIO.get_info",
Mock(side_effect=HassioAPIError()), Mock(side_effect=HassioAPIError()),
): ):
@ -75,5 +75,5 @@ def hassio_handler(hass, aioclient_mock):
websession = hass.loop.run_until_complete(get_client_session()) websession = hass.loop.run_until_complete(get_client_session())
with patch.dict(os.environ, {"HASSIO_TOKEN": HASSIO_TOKEN}): with patch.dict(os.environ, {"SUPERVISOR_TOKEN": SUPERVISOR_TOKEN}):
yield HassIO(hass.loop, websession, "127.0.0.1") yield HassIO(hass.loop, websession, "127.0.0.1")

View File

@ -11,7 +11,7 @@ from homeassistant.setup import async_setup_component
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
MOCK_ENVIRON = {"HASSIO": "127.0.0.1", "HASSIO_TOKEN": "abcdefgh"} MOCK_ENVIRON = {"SUPERVISOR": "127.0.0.1", "SUPERVISOR_TOKEN": "abcdefgh"}
@pytest.fixture(autouse=True) @pytest.fixture(autouse=True)

View File

@ -13,7 +13,7 @@ from homeassistant.setup import async_setup_component
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
from tests.components.diagnostics import get_diagnostics_for_config_entry from tests.components.diagnostics import get_diagnostics_for_config_entry
MOCK_ENVIRON = {"HASSIO": "127.0.0.1", "HASSIO_TOKEN": "abcdefgh"} MOCK_ENVIRON = {"SUPERVISOR": "127.0.0.1", "SUPERVISOR_TOKEN": "abcdefgh"}
@pytest.fixture(autouse=True) @pytest.fixture(autouse=True)

View File

@ -17,7 +17,7 @@ from homeassistant.util import dt as dt_util
from tests.common import MockConfigEntry, async_fire_time_changed from tests.common import MockConfigEntry, async_fire_time_changed
MOCK_ENVIRON = {"HASSIO": "127.0.0.1", "HASSIO_TOKEN": "abcdefgh"} MOCK_ENVIRON = {"SUPERVISOR": "127.0.0.1", "SUPERVISOR_TOKEN": "abcdefgh"}
@pytest.fixture() @pytest.fixture()
@ -336,7 +336,7 @@ async def test_setup_core_push_timezone(hass, aioclient_mock):
async def test_setup_hassio_no_additional_data(hass, aioclient_mock): async def test_setup_hassio_no_additional_data(hass, aioclient_mock):
"""Test setup with API push default data.""" """Test setup with API push default data."""
with patch.dict(os.environ, MOCK_ENVIRON), patch.dict( with patch.dict(os.environ, MOCK_ENVIRON), patch.dict(
os.environ, {"HASSIO_TOKEN": "123456"} os.environ, {"SUPERVISOR_TOKEN": "123456"}
): ):
result = await async_setup_component(hass, "hassio", {"hassio": {}}) result = await async_setup_component(hass, "hassio", {"hassio": {}})
assert result assert result

View File

@ -11,7 +11,7 @@ from homeassistant.setup import async_setup_component
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
MOCK_ENVIRON = {"HASSIO": "127.0.0.1", "HASSIO_TOKEN": "abcdefgh"} MOCK_ENVIRON = {"SUPERVISOR": "127.0.0.1", "SUPERVISOR_TOKEN": "abcdefgh"}
@pytest.fixture(autouse=True) @pytest.fixture(autouse=True)

View File

@ -12,7 +12,7 @@ from homeassistant.setup import async_setup_component
from tests.common import MockConfigEntry from tests.common import MockConfigEntry
MOCK_ENVIRON = {"HASSIO": "127.0.0.1", "HASSIO_TOKEN": "abcdefgh"} MOCK_ENVIRON = {"SUPERVISOR": "127.0.0.1", "SUPERVISOR_TOKEN": "abcdefgh"}
@pytest.fixture(autouse=True) @pytest.fixture(autouse=True)

View File

@ -33,10 +33,10 @@ BANNED_IPS_WITH_SUPERVISOR = BANNED_IPS + [SUPERVISOR_IP]
@pytest.fixture(name="hassio_env") @pytest.fixture(name="hassio_env")
def hassio_env_fixture(): def hassio_env_fixture():
"""Fixture to inject hassio env.""" """Fixture to inject hassio env."""
with patch.dict(os.environ, {"HASSIO": "127.0.0.1"}), patch( with patch.dict(os.environ, {"SUPERVISOR": "127.0.0.1"}), patch(
"homeassistant.components.hassio.HassIO.is_connected", "homeassistant.components.hassio.HassIO.is_connected",
return_value={"result": "ok", "data": {}}, return_value={"result": "ok", "data": {}},
), patch.dict(os.environ, {"HASSIO_TOKEN": "123456"}): ), patch.dict(os.environ, {"SUPERVISOR_TOKEN": "123456"}):
yield yield

View File

@ -57,7 +57,7 @@ async def mock_supervisor_fixture(hass, aioclient_mock):
"""Mock supervisor.""" """Mock supervisor."""
aioclient_mock.post("http://127.0.0.1/homeassistant/options", json={"result": "ok"}) aioclient_mock.post("http://127.0.0.1/homeassistant/options", json={"result": "ok"})
aioclient_mock.post("http://127.0.0.1/supervisor/options", json={"result": "ok"}) aioclient_mock.post("http://127.0.0.1/supervisor/options", json={"result": "ok"})
with patch.dict(os.environ, {"HASSIO": "127.0.0.1"}), patch( with patch.dict(os.environ, {"SUPERVISOR": "127.0.0.1"}), patch(
"homeassistant.components.hassio.HassIO.is_connected", "homeassistant.components.hassio.HassIO.is_connected",
return_value=True, return_value=True,
), patch( ), patch(
@ -79,7 +79,7 @@ async def mock_supervisor_fixture(hass, aioclient_mock):
"homeassistant.components.hassio.HassIO.get_ingress_panels", "homeassistant.components.hassio.HassIO.get_ingress_panels",
return_value={"panels": {}}, return_value={"panels": {}},
), patch.dict( ), patch.dict(
os.environ, {"HASSIO_TOKEN": "123456"} os.environ, {"SUPERVISOR_TOKEN": "123456"}
): ):
yield yield

View File

@ -84,7 +84,7 @@ async def test_load_hassio(hass):
with patch.dict(os.environ, {}, clear=True): with patch.dict(os.environ, {}, clear=True):
assert bootstrap._get_domains(hass, {}) == set() assert bootstrap._get_domains(hass, {}) == set()
with patch.dict(os.environ, {"HASSIO": "1"}): with patch.dict(os.environ, {"SUPERVISOR": "1"}):
assert bootstrap._get_domains(hass, {}) == {"hassio"} assert bootstrap._get_domains(hass, {}) == {"hassio"}