Compare commits

...

17 Commits

Author SHA1 Message Date
Stefan Agner
7bbfb60039 Allow upgrade when using {os_name} in URL (#2974)
Once {os_name} is part of the update URL we also need to set the OS name
explicitly for upgrades: A user might use a new Supervisor version on a
OS release 5 device. The device will still use "hassos" as OS name.
Before introducing {os_name}, the new OS name was part of the URL. Now
when {os_name} is used, we need to adjust the name for upgrade as well.
2021-06-24 08:39:50 +02:00
Pascal Vizeli
ece40008c7 Logging in local timezone (#2971)
* Logging in local timezone

* fix convert

* Apply suggestions from code review

Co-authored-by: Joakim Sørensen <joasoe@gmail.com>

Co-authored-by: Joakim Sørensen <joasoe@gmail.com>
2021-06-21 13:42:39 +02:00
Pascal Vizeli
0177b38ded Support HOT/COLD snapshots for Add-ons (#2943)
* Support HOT/COLD snapshots for Add-ons

* Apply suggestions from code review

Co-authored-by: Joakim Sørensen <joasoe@gmail.com>

* Add warning

Co-authored-by: Joakim Sørensen <joasoe@gmail.com>
2021-06-21 09:07:54 +02:00
Stefan Agner
16f2f63081 Allow downgrade to "hassos" from "haos" (#2970)
* Add "os_name" as possible URL variable

* Replace "os_name" for downgrades to OS versions before 6.0
2021-06-19 18:50:54 +02:00
Pascal Vizeli
5f376c2a27 Using images data from version file (#2969)
* Using images data from version file

* fix tests
2021-06-18 22:59:11 +02:00
dependabot[bot]
90a6f109ee Bump gitpython from 3.1.17 to 3.1.18 (#2967)
Bumps [gitpython](https://github.com/gitpython-developers/GitPython) from 3.1.17 to 3.1.18.
- [Release notes](https://github.com/gitpython-developers/GitPython/releases)
- [Changelog](https://github.com/gitpython-developers/GitPython/blob/main/CHANGES)
- [Commits](https://github.com/gitpython-developers/GitPython/compare/3.1.17...3.1.18)

---
updated-dependencies:
- dependency-name: gitpython
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-06-18 13:32:53 +02:00
dependabot[bot]
e6fd0ef5dc Bump actions/upload-artifact from 2.2.3 to 2.2.4 (#2965)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2.2.3 to 2.2.4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v2.2.3...v2.2.4)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-06-17 09:49:28 +02:00
Joakim Sørensen
d46ab56901 Update frontend to 446a9b5c (#2962) 2021-06-16 11:45:28 +02:00
Pascal Vizeli
3b1ad5c0cd Run API watchdog only if core is running (#2961)
* Run API watchdog only if core is running

* negate

* fix comment
2021-06-16 11:45:06 +02:00
Joakim Sørensen
de8a241e72 When validating add-ons transform core-addons url (#2960) 2021-06-15 15:06:40 +02:00
Pascal Vizeli
a4a0b43d91 Using ghcr.io/home-assistant + fallback (#2959) 2021-06-14 20:07:44 +02:00
Pascal Vizeli
adf355e54f Fix API watchdog never trigger (#2958) 2021-06-14 14:11:22 +02:00
Joakim Sørensen
4f9e646b4c Fix addon_pwned enabled setter (#2952)
* Fix addon_pwned enabled setter

* whatever

* adjust
2021-06-14 11:33:53 +02:00
dependabot[bot]
ce57d384ca Bump pyupgrade from 2.19.3 to 2.19.4 (#2957)
Bumps [pyupgrade](https://github.com/asottile/pyupgrade) from 2.19.3 to 2.19.4.
- [Release notes](https://github.com/asottile/pyupgrade/releases)
- [Commits](https://github.com/asottile/pyupgrade/compare/v2.19.3...v2.19.4)

---
updated-dependencies:
- dependency-name: pyupgrade
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-06-14 11:32:50 +02:00
Pascal Vizeli
d53d526673 Add-on: Block update itself (#2956)
* Add-on: Block update itself

* Better logging

* Update
2021-06-14 10:37:59 +02:00
Pascal Vizeli
cd8fc16bcb Cleanup security layer - Add-on default access role (#2954)
* Allow access to network info (add-on)

* fix check

* make it nice

* cleanup

* cleanup

* fix tests

* Add warning

* allow access to addons/store/snapshot infos

* revert
2021-06-14 10:05:37 +02:00
dependabot[bot]
6b58970354 Bump black from 21.5b2 to 21.6b0 (#2953)
* Bump black from 21.5b2 to 21.6b0

Bumps [black](https://github.com/psf/black) from 21.5b2 to 21.6b0.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/commits)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update .pre-commit-config.yaml

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Pascal Vizeli <pvizeli@syshack.ch>
2021-06-13 12:44:11 +02:00
204 changed files with 869 additions and 559 deletions

View File

@@ -394,7 +394,7 @@ jobs:
-o console_output_style=count \
tests
- name: Upload coverage artifact
uses: actions/upload-artifact@v2.2.3
uses: actions/upload-artifact@v2.2.4
with:
name: coverage-${{ matrix.python-version }}
path: .coverage

View File

@@ -1,6 +1,6 @@
repos:
- repo: https://github.com/psf/black
rev: 21.5b1
rev: 21.6b0
hooks:
- id: black
args:

View File

@@ -11,7 +11,7 @@ cpe==1.2.1
cryptography==3.4.6
debugpy==1.3.0
docker==5.0.0
gitpython==3.1.17
gitpython==3.1.18
jinja2==3.0.1
pulsectl==21.5.18
pyudev==0.22.0

View File

@@ -1,4 +1,4 @@
black==21.5b2
black==21.6b0
codecov==2.1.11
coverage==5.5
flake8-docstrings==1.6.0
@@ -11,4 +11,4 @@ pytest-asyncio==0.12.0 # NB!: Versions over 0.12.0 breaks pytest-aiohttp (https:
pytest-cov==2.12.1
pytest-timeout==1.4.2
pytest==6.2.4
pyupgrade==2.19.3
pyupgrade==2.19.4

View File

@@ -65,6 +65,7 @@ from ..utils import check_port
from ..utils.apparmor import adjust_profile
from ..utils.json import read_json_file, write_json_file
from ..utils.tar import atomic_contents_add, secure_path
from .const import SnapshotAddonMode
from .model import AddonModel, Data
from .options import AddonOptions
from .utils import remove_data
@@ -695,6 +696,8 @@ class Addon(AddonModel):
async def snapshot(self, tar_file: tarfile.TarFile) -> None:
"""Snapshot state of an add-on."""
is_running = await self.is_running()
with TemporaryDirectory(dir=self.sys_config.path_tmp) as temp:
temp_path = Path(temp)
@@ -744,8 +747,15 @@ class Addon(AddonModel):
arcname="data",
)
if self.snapshot_pre is not None:
if (
is_running
and self.snapshot_mode == SnapshotAddonMode.HOT
and self.snapshot_pre is not None
):
await self._snapshot_command(self.snapshot_pre)
elif is_running and self.snapshot_mode == SnapshotAddonMode.COLD:
_LOGGER.info("Shutdown add-on %s for cold snapshot", self.slug)
await self.instance.stop()
try:
_LOGGER.info("Building snapshot for add-on %s", self.slug)
@@ -754,8 +764,15 @@ class Addon(AddonModel):
_LOGGER.error("Can't write tarfile %s: %s", tar_file, err)
raise AddonsError() from err
finally:
if self.snapshot_post is not None:
if (
is_running
and self.snapshot_mode == SnapshotAddonMode.HOT
and self.snapshot_post is not None
):
await self._snapshot_command(self.snapshot_post)
elif is_running and self.snapshot_mode is SnapshotAddonMode.COLD:
_LOGGER.info("Starting add-on %s again", self.slug)
await self.start()
_LOGGER.info("Finish snapshot for addon %s", self.slug)

View File

@@ -48,7 +48,7 @@ class AddonBuild(FileConfiguration, CoreSysAttributes):
def base_image(self) -> str:
"""Return base image for this add-on."""
if not self._data[ATTR_BUILD_FROM]:
return f"homeassistant/{self.sys_arch.default}-base:latest"
return f"ghcr.io/home-assistant/{self.sys_arch.default}-base:latest"
# Evaluate correct base image
arch = self.sys_arch.match(list(self._data[ATTR_BUILD_FROM].keys()))

View File

@@ -0,0 +1,12 @@
"""Add-on static data."""
from enum import Enum
class SnapshotAddonMode(str, Enum):
"""Snapshot mode of an Add-on."""
HOT = "hot"
COLD = "cold"
ATTR_SNAPSHOT = "snapshot"

View File

@@ -5,6 +5,8 @@ from typing import Any, Awaitable, Dict, List, Optional
from awesomeversion import AwesomeVersion, AwesomeVersionException
from supervisor.addons.const import SnapshotAddonMode
from ..const import (
ATTR_ADVANCED,
ATTR_APPARMOR,
@@ -76,6 +78,7 @@ from ..const import (
)
from ..coresys import CoreSys, CoreSysAttributes
from ..docker.const import Capabilities
from .const import ATTR_SNAPSHOT
from .options import AddonOptions, UiOptions
from .validate import RE_SERVICE, RE_VOLUME
@@ -370,6 +373,11 @@ class AddonModel(CoreSysAttributes, ABC):
"""Return post-snapshot command."""
return self.data.get(ATTR_SNAPSHOT_POST)
@property
def snapshot_mode(self) -> SnapshotAddonMode:
"""Return if snapshot is hot/cold."""
return self.data[ATTR_SNAPSHOT]
@property
def default_init(self) -> bool:
"""Return True if the add-on have no own init."""

View File

@@ -7,6 +7,8 @@ import uuid
import voluptuous as vol
from supervisor.addons.const import SnapshotAddonMode
from ..const import (
ARCH_ALL,
ATTR_ACCESS_TOKEN,
@@ -107,6 +109,7 @@ from ..validate import (
uuid_match,
version_tag,
)
from .const import ATTR_SNAPSHOT
from .options import RE_SCHEMA_ELEMENT
_LOGGER: logging.Logger = logging.getLogger(__name__)
@@ -161,6 +164,14 @@ def _warn_addon_config(config: Dict[str, Any]):
name,
)
if config.get(ATTR_SNAPSHOT, SnapshotAddonMode.HOT) == SnapshotAddonMode.COLD and (
config.get(ATTR_SNAPSHOT_POST) or config.get(ATTR_SNAPSHOT_PRE)
):
_LOGGER.warning(
"Add-on which only support COLD backups trying to use post/pre commands. Please report this to the maintainer of %s",
name,
)
return config
@@ -284,6 +295,9 @@ _SCHEMA_ADDON_CONFIG = vol.Schema(
vol.Optional(ATTR_SNAPSHOT_EXCLUDE): [str],
vol.Optional(ATTR_SNAPSHOT_PRE): str,
vol.Optional(ATTR_SNAPSHOT_POST): str,
vol.Optional(ATTR_SNAPSHOT, default=SnapshotAddonMode.HOT): vol.Coerce(
SnapshotAddonMode
),
vol.Optional(ATTR_OPTIONS, default={}): dict,
vol.Optional(ATTR_SCHEMA, default={}): vol.Any(
vol.Schema(

View File

@@ -19,7 +19,7 @@ from .host import APIHost
from .info import APIInfo
from .ingress import APIIngress
from .jobs import APIJobs
from .middleware_security import SecurityMiddleware
from .middleware.security import SecurityMiddleware
from .multicast import APIMulticast
from .network import APINetwork
from .observer import APIObserver
@@ -223,7 +223,6 @@ class RestAPI(CoreSysAttributes):
[
web.get("/hardware/info", api_hardware.info),
web.get("/hardware/audio", api_hardware.audio),
web.post("/hardware/trigger", api_hardware.trigger),
]
)

View File

@@ -1,6 +1,6 @@
"""Init file for Supervisor hardware RESTful API."""
import logging
from typing import Any, Awaitable, Dict
from typing import Any, Dict
from aiohttp import web
@@ -58,8 +58,3 @@ class APIHardware(CoreSysAttributes):
},
}
}
@api_process
async def trigger(self, request: web.Request) -> Awaitable[None]:
"""Trigger a udev device reload."""
_LOGGER.debug("Ignoring DEPRECATED hardware trigger function call.")

View File

@@ -0,0 +1 @@
"""API middleware for aiohttp."""

View File

@@ -5,7 +5,7 @@ import re
from aiohttp.web import Request, RequestHandler, Response, middleware
from aiohttp.web_exceptions import HTTPForbidden, HTTPUnauthorized
from ..const import (
from ...const import (
REQUEST_FROM,
ROLE_ADMIN,
ROLE_BACKUP,
@@ -14,8 +14,8 @@ from ..const import (
ROLE_MANAGER,
CoreState,
)
from ..coresys import CoreSys, CoreSysAttributes
from .utils import api_return_error, excract_supervisor_token
from ...coresys import CoreSys, CoreSysAttributes
from ..utils import api_return_error, excract_supervisor_token
_LOGGER: logging.Logger = logging.getLogger(__name__)
@@ -53,7 +53,6 @@ ADDONS_API_BYPASS = re.compile(
r"|/addons/self/(?!security|update)[^/]+"
r"|/addons/self/options/config"
r"|/info"
r"|/hardware/trigger"
r"|/services.*"
r"|/discovery.*"
r"|/auth"
@@ -65,22 +64,24 @@ ADDONS_ROLE_ACCESS = {
ROLE_DEFAULT: re.compile(
r"^(?:"
r"|/.+/info"
r"|/addons"
r")$"
),
ROLE_HOMEASSISTANT: re.compile(
r"^(?:"
r"|/.+/info"
r"|/core/.+"
r"|/homeassistant/.+"
r")$"
),
ROLE_BACKUP: re.compile(
r"^(?:"
r"|/.+/info"
r"|/snapshots.*"
r")$"
),
ROLE_MANAGER: re.compile(
r"^(?:"
r"|/.+/info"
r"|/addons(?:/[^/]+/(?!security).+|/reload)?"
r"|/audio/.+"
r"|/auth/cache"
@@ -101,6 +102,7 @@ ADDONS_ROLE_ACCESS = {
r"|/snapshots.*"
r"|/store.*"
r"|/supervisor/.+"
r"|/security/.+"
r")$"
),
ROLE_ADMIN: re.compile(
@@ -191,6 +193,10 @@ class SecurityMiddleware(CoreSysAttributes):
request_from = addon
else:
_LOGGER.warning("%s no role for %s", request.path, addon.slug)
elif addon:
_LOGGER.warning(
"%s missing API permission for %s", addon.slug, request.path
)
if request_from:
request[REQUEST_FROM] = request_from

View File

@@ -1,9 +1,9 @@
try {
new Function("import('/api/hassio/app/frontend_latest/entrypoint.586ea840.js')")();
new Function("import('/api/hassio/app/frontend_latest/entrypoint.0d3c68f7.js')")();
} catch (err) {
var el = document.createElement('script');
el.src = '/api/hassio/app/frontend_es5/entrypoint.8daaaeda.js';
el.src = '/api/hassio/app/frontend_es5/entrypoint.9e377d5a.js';
document.body.appendChild(el);
}

View File

@@ -0,0 +1 @@
{"version":3,"file":"chunk.180b0a3f7ae5fc62f9e4.js","sources":["webpack://home-assistant-frontend/chunk.180b0a3f7ae5fc62f9e4.js"],"mappings":"AAAA","sourceRoot":""}

View File

@@ -1 +0,0 @@
{"version":3,"file":"chunk.35c154979120736d0193.js","sources":["webpack://home-assistant-frontend/chunk.35c154979120736d0193.js"],"mappings":"AAAA","sourceRoot":""}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"version":3,"file":"chunk.36c614645dd4e17cedb3.js","sources":["webpack://home-assistant-frontend/chunk.36c614645dd4e17cedb3.js"],"mappings":"AAAA","sourceRoot":""}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"version":3,"file":"chunk.59c74b66dacd491cc21f.js","sources":["webpack://home-assistant-frontend/chunk.59c74b66dacd491cc21f.js"],"mappings":"AAAA","sourceRoot":""}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */

View File

@@ -0,0 +1 @@
{"version":3,"file":"chunk.78121a52537052b2b5cf.js","sources":["webpack://home-assistant-frontend/chunk.78121a52537052b2b5cf.js"],"mappings":";AAAA","sourceRoot":""}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"version":3,"file":"chunk.936c888555134e76dc1e.js","sources":["webpack://home-assistant-frontend/chunk.936c888555134e76dc1e.js"],"mappings":"AAAA","sourceRoot":""}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"version":3,"file":"chunk.a249d520500f6fad60b1.js","sources":["webpack://home-assistant-frontend/chunk.a249d520500f6fad60b1.js"],"mappings":"AAAA","sourceRoot":""}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"version":3,"file":"chunk.ba6f1a3202815ae73338.js","sources":["webpack://home-assistant-frontend/chunk.ba6f1a3202815ae73338.js"],"mappings":"AAAA","sourceRoot":""}

View File

@@ -1 +0,0 @@
{"version":3,"file":"chunk.bd47f88f5d2c285fbc78.js","sources":["webpack://home-assistant-frontend/chunk.bd47f88f5d2c285fbc78.js"],"mappings":"AAAA","sourceRoot":""}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"version":3,"file":"chunk.c7c74d7ba8aa6ae309d1.js","sources":["webpack://home-assistant-frontend/chunk.c7c74d7ba8aa6ae309d1.js"],"mappings":"AAAA","sourceRoot":""}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"version":3,"file":"chunk.c8ae6493ca3f230a78cf.js","sources":["webpack://home-assistant-frontend/chunk.c8ae6493ca3f230a78cf.js"],"mappings":"AAAA","sourceRoot":""}

View File

@@ -0,0 +1 @@
{"version":3,"file":"chunk.cb15e7ebc34918f41b9b.js","sources":["webpack://home-assistant-frontend/chunk.cb15e7ebc34918f41b9b.js"],"mappings":"AAAA","sourceRoot":""}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"version":3,"file":"chunk.e3438695380b5c3cf915.js","sources":["webpack://home-assistant-frontend/chunk.e3438695380b5c3cf915.js"],"mappings":"AAAA","sourceRoot":""}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"version":3,"file":"entrypoint.8daaaeda.js","sources":["webpack://home-assistant-frontend/entrypoint.8daaaeda.js"],"mappings":";AAAA","sourceRoot":""}

File diff suppressed because one or more lines are too long

View File

@@ -13,8 +13,6 @@ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */
/**
* @license
* Copyright 2017 Google LLC

View File

@@ -0,0 +1 @@
{"version":3,"file":"entrypoint.9e377d5a.js","sources":["webpack://home-assistant-frontend/entrypoint.9e377d5a.js"],"mappings":";AAAA","sourceRoot":""}

View File

@@ -1,3 +1,3 @@
{
"entrypoint.js": "/api/hassio/app/frontend_es5/entrypoint.8daaaeda.js"
"entrypoint.js": "/api/hassio/app/frontend_es5/entrypoint.9e377d5a.js"
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */

View File

@@ -0,0 +1 @@
{"version":3,"file":"chunk.06111c56068f5b7f6c10.js","sources":["webpack://home-assistant-frontend/chunk.06111c56068f5b7f6c10.js"],"mappings":";AAAA","sourceRoot":""}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"version":3,"file":"chunk.1fe3be586e0ecf2c327a.js","sources":["webpack://home-assistant-frontend/chunk.1fe3be586e0ecf2c327a.js"],"mappings":"AAAA;;;;AAqNA;AACA;;;;AAIA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;;AAEA;;;;;AAKA;;;AAGA;AACA;;;AAGA;;;;;;AA3CA;;;;;;;;;;;;;;AAwEA","sourceRoot":""}

View File

@@ -0,0 +1 @@
{"version":3,"file":"chunk.207d75acb526e7ab7c80.js","sources":["webpack://home-assistant-frontend/chunk.207d75acb526e7ab7c80.js"],"mappings":"AAAA;AAqqBA;AACA;AACA;AAGA;;;;;;;;;;;;;;;;AAyBA;AA0QA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;;AAGA;;AAEA;;;AAGA;;;;AAIA;;AAEA;;;AAGA;;;;;AAKA;AACA;;AAEA;;AAEA;AACA;;;;;AAKA;AACA;;;;AAMA;AACA;;AAEA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA;AACA;;;;AAIA;;AAEA;;;AAGA;AACA;;;AAGA;AACA;;;AAGA;AACA;;;AAGA;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA;AAsDA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;;;AAKA","sourceRoot":""}

View File

@@ -39,7 +39,7 @@
</p>`}
${this._error?i.dy`<p class="error">${this._error}</p>`:""}
</ha-dialog>
`:i.dy``}},{kind:"method",key:"_toggleSnapshot",value:function(){this._createSnapshot=!this._createSnapshot}},{kind:"method",key:"_update",value:async function(){if(this._createSnapshot){this._action="snapshot";try{await(0,s.iN)(this.hass,this._dialogParams.snapshotParams)}catch(e){return this._error=(0,a.js)(e),void(this._action=null)}}this._action="update";try{await this._dialogParams.updateHandler()}catch(e){return this.hass.connection.connected&&!(0,a.yz)(e)&&(this._error=(0,a.js)(e)),void(this._action=null)}this.closeDialog()}},{kind:"get",static:!0,key:"styles",value:function(){return[l.Qx,l.yu,i.iv`
`:i.dy``}},{kind:"method",key:"_toggleSnapshot",value:function(){this._createSnapshot=!this._createSnapshot}},{kind:"method",key:"_update",value:async function(){if(this._createSnapshot){this._action="snapshot";try{await(0,s.iN)(this.hass,this._dialogParams.snapshotParams)}catch(e){return this._error=(0,a.js)(e),void(this._action=null)}}this._action="update";try{await this._dialogParams.updateHandler()}catch(e){return void(this.hass.connection.connected&&!(0,a.yz)(e)&&(this._error=(0,a.js)(e),this._action=null))}this.closeDialog()}},{kind:"get",static:!0,key:"styles",value:function(){return[l.Qx,l.yu,i.iv`
.form {
color: var(--primary-text-color);
}
@@ -59,4 +59,4 @@
text-align: center;
}
`]}}]}}),i.oi)}}]);
//# sourceMappingURL=chunk.5a6ec0bde8ac85b43894.js.map
//# sourceMappingURL=chunk.342edcac6840583a8f96.js.map

View File

@@ -1 +1 @@
{"version":3,"file":"chunk.5a6ec0bde8ac85b43894.js","sources":["webpack://home-assistant-frontend/chunk.5a6ec0bde8ac85b43894.js"],"mappings":"AAAA;AA4JA;AACA;;AAEA;;;;AAIA;;;;;AAKA;;;AAGA;;;AAGA;;AAEA;;;;AAIA;AACA;;;AAGA;AACA;;;AAGA;AACA;;;AAGA;;AAEA;;AA1CA;;;;;;;;;;;;;;;;;;;AA+GA","sourceRoot":""}
{"version":3,"file":"chunk.342edcac6840583a8f96.js","sources":["webpack://home-assistant-frontend/chunk.342edcac6840583a8f96.js"],"mappings":"AAAA;AA4JA;AACA;;AAEA;;;;AAIA;;;;;AAKA;;;AAGA;;;AAGA;;AAEA;;;;AAIA;AACA;;;AAGA;AACA;;;AAGA;AACA;;;AAGA;;AAEA;;AA1CA;;;;;;;;;;;;;;;;;;;AA+GA","sourceRoot":""}

View File

@@ -1 +0,0 @@
{"version":3,"file":"chunk.5598c951cccebf59265c.js","sources":["webpack://home-assistant-frontend/chunk.5598c951cccebf59265c.js"],"mappings":"AAAA;AAqqBA;AACA;AACA;AAGA;;;;;;;;;;;;;;;;;AA0BA;AAmOA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;;;AAIA;;;AAGA;;;AAGA;;;;;AAKA;;;AAGA;;;AAGA;;;;;AAKA;AACA;;AAEA;;AAEA;AACA;;;;;AAKA;AACA;;;;AAMA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;;AAEA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;;;AAIA;;AAEA;;;AAGA;AACA;;;AAGA;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA;AAgDA;AACA;AACA;AACA;AACA;;;;;AAKA;AACA;AACA;AACA;;;AAKA","sourceRoot":""}

View File

@@ -22,10 +22,10 @@
${this._dialogParams.supervisor.localize("snapshot.create")}
</mwc-button>
</ha-dialog>
`:i.dy``}},{kind:"method",key:"_createSnapshot",value:async function(){if("running"!==this._dialogParams.supervisor.info.state)return void(0,c.Ys)(this,{title:this._dialogParams.supervisor.localize("snapshot.could_not_create"),text:this._dialogParams.supervisor.localize("snapshot.create_blocked_not_running","state",this._dialogParams.supervisor.info.state)});const e=this._snapshotContent.snapshotDetails();if(this._creatingSnapshot=!0,this._error="",this._snapshotContent.snapshotHasPassword&&!this._snapshotContent.snapshotPassword.length)return this._error=this._dialogParams.supervisor.localize("snapshot.enter_password"),void(this._creatingSnapshot=!1);try{"full"===this._snapshotContent.snapshotType?await(0,l.a2)(this.hass,e):await(0,l.iN)(this.hass,e),this._dialogParams.onCreate(),this.closeDialog()}catch(e){this._error=(0,a.js)(e)}this._creatingSnapshot=!1}},{kind:"get",static:!0,key:"styles",value:function(){return[d.Qx,d.yu,i.iv`
`:i.dy``}},{kind:"method",key:"_createSnapshot",value:async function(){if("running"!==this._dialogParams.supervisor.info.state)return void(0,c.Ys)(this,{title:this._dialogParams.supervisor.localize("snapshot.could_not_create"),text:this._dialogParams.supervisor.localize("snapshot.create_blocked_not_running","state",this._dialogParams.supervisor.info.state)});const e=this._snapshotContent.snapshotDetails();if(this._creatingSnapshot=!0,this._error="",e.password&&!e.password.length)return this._error=this._dialogParams.supervisor.localize("snapshot.enter_password"),void(this._creatingSnapshot=!1);if(e.password&&e.password!==e.confirm_password)return this._error=this._dialogParams.supervisor.localize("snapshot.passwords_not_matching"),void(this._creatingSnapshot=!1);delete e.confirm_password;try{"full"===this._snapshotContent.snapshotType?await(0,l.a2)(this.hass,e):await(0,l.iN)(this.hass,e),this._dialogParams.onCreate(),this.closeDialog()}catch(e){this._error=(0,a.js)(e)}this._creatingSnapshot=!1}},{kind:"get",static:!0,key:"styles",value:function(){return[d.Qx,d.yu,i.iv`
ha-circular-progress {
display: block;
text-align: center;
}
`]}}]}}),i.oi)}}]);
//# sourceMappingURL=chunk.6ea5225840eebdecf9f4.js.map
//# sourceMappingURL=chunk.58ccbbcd7a2d185c5a5d.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"chunk.58ccbbcd7a2d185c5a5d.js","sources":["webpack://home-assistant-frontend/chunk.58ccbbcd7a2d185c5a5d.js"],"mappings":"AAAA;;;;AAuIA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;;AAEA;;AAEA;;;AAxBA;;;;;AA0FA","sourceRoot":""}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"version":3,"file":"chunk.5d46f709c2effa2a3af5.js","sources":["webpack://home-assistant-frontend/chunk.5d46f709c2effa2a3af5.js"],"mappings":"AAAA;;;;AA0MA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;;AAEA;;;;;;;;AAQA;AACA;;;AAGA;;;;;;AAjCA;;;;;;;;AAwDA","sourceRoot":""}

View File

@@ -1 +0,0 @@
{"version":3,"file":"chunk.6ea5225840eebdecf9f4.js","sources":["webpack://home-assistant-frontend/chunk.6ea5225840eebdecf9f4.js"],"mappings":"AAAA;;;;AAuIA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;;AAEA;;AAEA;;;AAxBA;;;;;AAkFA","sourceRoot":""}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"version":3,"file":"chunk.9b1e5f0529cd61352928.js","sources":["webpack://home-assistant-frontend/chunk.9b1e5f0529cd61352928.js"],"mappings":"AAAA;;;;;AAiJA;AACA;;;;AAIA;;;AAGA;;;;;AAKA;AACA;AACA;;;;;AAKA;AACA;AACA;;;;;AAKA;;AAEA;;;;AAIA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;;AAGA;;AAEA;;;;AAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDA","sourceRoot":""}

View File

@@ -1 +1 @@
{"version":3,"file":"chunk.d1bf586cab064970bcb1.js","sources":["webpack://home-assistant-frontend/chunk.d1bf586cab064970bcb1.js"],"mappings":"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","sourceRoot":""}
{"version":3,"file":"chunk.abe8714eb54d8d9a6780.js","sources":["webpack://home-assistant-frontend/chunk.abe8714eb54d8d9a6780.js"],"mappings":"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","sourceRoot":""}

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
{"version":3,"file":"chunk.f31c7a14d3f583802ab5.js","sources":["webpack://home-assistant-frontend/chunk.f31c7a14d3f583802ab5.js"],"mappings":"AAAA;AA0PA;AACA;AACA;AANA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEA","sourceRoot":""}

View File

@@ -13,8 +13,6 @@ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT */
/**
* @license
* Copyright 2016 Google Inc.

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More