From 16c604937e21a50c8a5e2ec3b33d97b52e5b5384 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joakim=20S=C3=B8rensen?= Date: Thu, 18 Jun 2020 11:54:21 +0200 Subject: [PATCH] Display docker version (#5989) --- hassio/src/hassio-main.ts | 10 +++++++++- hassio/src/hassio-panel-router.ts | 4 ++++ hassio/src/hassio-panel.ts | 4 ++++ hassio/src/system/hassio-host-info.ts | 9 +++++++++ hassio/src/system/hassio-system.ts | 10 ++++++++-- src/data/hassio/supervisor.ts | 20 ++++++++++++++++++++ 6 files changed, 54 insertions(+), 3 deletions(-) diff --git a/hassio/src/hassio-main.ts b/hassio/src/hassio-main.ts index 1efee0500b..37abf78279 100644 --- a/hassio/src/hassio-main.ts +++ b/hassio/src/hassio-main.ts @@ -14,7 +14,9 @@ import { createHassioSession, fetchHassioHomeAssistantInfo, fetchHassioSupervisorInfo, + fetchHassioInfo, HassioHomeAssistantInfo, + HassioInfo, HassioPanelInfo, HassioSupervisorInfo, } from "../../src/data/hassio/supervisor"; @@ -75,6 +77,8 @@ class HassioMain extends ProvideHassLitMixin(HassRouterPage) { @property() private _hostInfo: HassioHostInfo; + @property() private _hassioInfo?: HassioInfo; + @property() private _hassOsInfo?: HassioHassOSInfo; @property() private _hassInfo: HassioHomeAssistantInfo; @@ -147,6 +151,7 @@ class HassioMain extends ProvideHassLitMixin(HassRouterPage) { hass: this.hass, narrow: this.narrow, supervisorInfo: this._supervisorInfo, + hassioInfo: this._hassioInfo, hostInfo: this._hostInfo, hassInfo: this._hassInfo, hassOsInfo: this._hassOsInfo, @@ -156,6 +161,7 @@ class HassioMain extends ProvideHassLitMixin(HassRouterPage) { el.hass = this.hass; el.narrow = this.narrow; el.supervisorInfo = this._supervisorInfo; + el.hassioInfo = this._hassioInfo; el.hostInfo = this._hostInfo; el.hassInfo = this._hassInfo; el.hassOsInfo = this._hassOsInfo; @@ -169,12 +175,14 @@ class HassioMain extends ProvideHassLitMixin(HassRouterPage) { return; } - const [supervisorInfo, hostInfo, hassInfo] = await Promise.all([ + const [supervisorInfo, hostInfo, hassInfo, hassioInfo] = await Promise.all([ fetchHassioSupervisorInfo(this.hass), fetchHassioHostInfo(this.hass), fetchHassioHomeAssistantInfo(this.hass), + fetchHassioInfo(this.hass), ]); this._supervisorInfo = supervisorInfo; + this._hassioInfo = hassioInfo; this._hostInfo = hostInfo; this._hassInfo = hassInfo; diff --git a/hassio/src/hassio-panel-router.ts b/hassio/src/hassio-panel-router.ts index 3025fe2f9a..00830423b0 100644 --- a/hassio/src/hassio-panel-router.ts +++ b/hassio/src/hassio-panel-router.ts @@ -3,6 +3,7 @@ import { HassioHassOSInfo, HassioHostInfo } from "../../src/data/hassio/host"; import { HassioHomeAssistantInfo, HassioSupervisorInfo, + HassioInfo, } from "../../src/data/hassio/supervisor"; import { HassRouterPage, @@ -26,6 +27,8 @@ class HassioPanelRouter extends HassRouterPage { @property({ attribute: false }) public supervisorInfo: HassioSupervisorInfo; + @property({ attribute: false }) public hassioInfo!: HassioInfo; + @property({ attribute: false }) public hostInfo: HassioHostInfo; @property({ attribute: false }) public hassInfo: HassioHomeAssistantInfo; @@ -54,6 +57,7 @@ class HassioPanelRouter extends HassRouterPage { el.route = this.route; el.narrow = this.narrow; el.supervisorInfo = this.supervisorInfo; + el.hassioInfo = this.hassioInfo; el.hostInfo = this.hostInfo; el.hassInfo = this.hassInfo; el.hassOsInfo = this.hassOsInfo; diff --git a/hassio/src/hassio-panel.ts b/hassio/src/hassio-panel.ts index 1e92ec923b..e61b5605f0 100644 --- a/hassio/src/hassio-panel.ts +++ b/hassio/src/hassio-panel.ts @@ -10,6 +10,7 @@ import { HassioHassOSInfo, HassioHostInfo } from "../../src/data/hassio/host"; import { HassioHomeAssistantInfo, HassioSupervisorInfo, + HassioInfo, } from "../../src/data/hassio/supervisor"; import type { PageNavigation } from "../../src/layouts/hass-tabs-subpage"; import { HomeAssistant, Route } from "../../src/types"; @@ -48,6 +49,8 @@ class HassioPanel extends LitElement { @property({ attribute: false }) public supervisorInfo!: HassioSupervisorInfo; + @property({ attribute: false }) public hassioInfo!: HassioInfo; + @property({ attribute: false }) public hostInfo!: HassioHostInfo; @property({ attribute: false }) public hassInfo!: HassioHomeAssistantInfo; @@ -61,6 +64,7 @@ class HassioPanel extends LitElement { .hass=${this.hass} .narrow=${this.narrow} .supervisorInfo=${this.supervisorInfo} + .hassioInfo=${this.hassioInfo} .hostInfo=${this.hostInfo} .hassInfo=${this.hassInfo} .hassOsInfo=${this.hassOsInfo} diff --git a/hassio/src/system/hassio-host-info.ts b/hassio/src/system/hassio-host-info.ts index 0573d150b3..6413788b88 100644 --- a/hassio/src/system/hassio-host-info.ts +++ b/hassio/src/system/hassio-host-info.ts @@ -19,6 +19,7 @@ import { shutdownHost, updateOS, } from "../../../src/data/hassio/host"; +import { HassioInfo } from "../../../src/data/hassio/supervisor"; import { showAlertDialog, showConfirmationDialog, @@ -35,6 +36,8 @@ class HassioHostInfo extends LitElement { @property() public hostInfo!: HassioHostInfoType; + @property({ attribute: false }) public hassioInfo!: HassioInfo; + @property() public hassOsInfo!: HassioHassOSInfo; @property() private _errors?: string; @@ -54,6 +57,12 @@ class HassioHostInfo extends LitElement { System ${this.hostInfo.operating_system} + ${!this.hostInfo.features.includes("hassos") + ? html` + Docker version + ${this.hassioInfo.docker} + ` + : ""} ${this.hostInfo.deployment ? html` diff --git a/hassio/src/system/hassio-system.ts b/hassio/src/system/hassio-system.ts index 5db8cc409c..7391ebe5bf 100644 --- a/hassio/src/system/hassio-system.ts +++ b/hassio/src/system/hassio-system.ts @@ -11,7 +11,10 @@ import { HassioHassOSInfo, HassioHostInfo, } from "../../../src/data/hassio/host"; -import { HassioSupervisorInfo } from "../../../src/data/hassio/supervisor"; +import { + HassioSupervisorInfo, + HassioInfo, +} from "../../../src/data/hassio/supervisor"; import "../../../src/layouts/hass-tabs-subpage"; import { haStyle } from "../../../src/resources/styles"; import { HomeAssistant, Route } from "../../../src/types"; @@ -31,9 +34,11 @@ class HassioSystem extends LitElement { @property() public supervisorInfo!: HassioSupervisorInfo; + @property({ attribute: false }) public hassioInfo!: HassioInfo; + @property() public hostInfo!: HassioHostInfo; - @property() public hassOsInfo!: HassioHassOSInfo; + @property({ attribute: false }) public hassOsInfo!: HassioHassOSInfo; public render(): TemplateResult | void { return html` @@ -55,6 +60,7 @@ class HassioSystem extends LitElement { > diff --git a/src/data/hassio/supervisor.ts b/src/data/hassio/supervisor.ts index 65cda7e8b1..e32e13ad2f 100644 --- a/src/data/hassio/supervisor.ts +++ b/src/data/hassio/supervisor.ts @@ -4,6 +4,20 @@ import { hassioApiResultExtractor, HassioResponse } from "./common"; export type HassioHomeAssistantInfo = any; export type HassioSupervisorInfo = any; +export type HassioInfo = { + arch: string; + channel: string; + docker: string; + hassos?: string; + homeassistant: string; + hostname: string; + logging: string; + maching: string; + supervisor: string; + supported_arch: string[]; + timezone: string; +}; + export type HassioPanelInfo = PanelInfo< | undefined | { @@ -38,6 +52,12 @@ export const fetchHassioSupervisorInfo = async (hass: HomeAssistant) => { ); }; +export const fetchHassioInfo = async (hass: HomeAssistant) => { + return hassioApiResultExtractor( + await hass.callApi>("GET", "hassio/info") + ); +}; + export const fetchHassioLogs = async ( hass: HomeAssistant, provider: string