mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-07-07 17:26:32 +00:00
Enable Armv7 for Add-ons (#936)
* Enable Armv7 for Add-ons * Cleanups * fix tests
This commit is contained in:
parent
9ba4ea7d18
commit
f1fecdde3a
@ -60,11 +60,6 @@ class Addon(CoreSysAttributes):
|
||||
return
|
||||
await self.instance.attach()
|
||||
|
||||
# NOTE: Can't be removed after soon
|
||||
if ATTR_IMAGE not in self._data.user[self._id]:
|
||||
self._data.user[self._id][ATTR_IMAGE] = self.image_name
|
||||
self.save_data()
|
||||
|
||||
@property
|
||||
def slug(self):
|
||||
"""Return slug/id of add-on."""
|
||||
@ -510,19 +505,20 @@ class Addon(CoreSysAttributes):
|
||||
def image(self):
|
||||
"""Return image name of add-on."""
|
||||
if self.is_installed:
|
||||
# NOTE: cleanup
|
||||
if ATTR_IMAGE in self._data.user[self._id]:
|
||||
return self._data.user[self._id][ATTR_IMAGE]
|
||||
return self.image_name
|
||||
return self._data.user[self._id].get(ATTR_IMAGE)
|
||||
return self.image_next
|
||||
|
||||
@property
|
||||
def image_name(self):
|
||||
def image_next(self):
|
||||
"""Return image name for install/update."""
|
||||
if self.is_detached:
|
||||
addon_data = self._data.system.get(self._id)
|
||||
else:
|
||||
addon_data = self._data.cache.get(self._id)
|
||||
return self._get_image(addon_data)
|
||||
|
||||
def _get_image(self, addon_data) -> str:
|
||||
"""Generate image name from data."""
|
||||
# Repository with Dockerhub images
|
||||
if ATTR_IMAGE in addon_data:
|
||||
arch = self.sys_arch.match(addon_data[ATTR_ARCH])
|
||||
@ -724,10 +720,10 @@ class Addon(CoreSysAttributes):
|
||||
await self._install_apparmor()
|
||||
|
||||
if not await self.instance.install(
|
||||
self.last_version, self.image_name):
|
||||
self.last_version, self.image_next):
|
||||
return False
|
||||
|
||||
self._set_install(self.image_name, self.last_version)
|
||||
self._set_install(self.image_next, self.last_version)
|
||||
return True
|
||||
|
||||
@check_installed
|
||||
@ -805,9 +801,9 @@ class Addon(CoreSysAttributes):
|
||||
return False
|
||||
|
||||
if not await self.instance.update(
|
||||
self.last_version, self.image_name):
|
||||
self.last_version, self.image_next):
|
||||
return False
|
||||
self._set_update(self.image_name, self.last_version)
|
||||
self._set_update(self.image_next, self.last_version)
|
||||
|
||||
# Setup/Fix AppArmor profile
|
||||
await self._install_apparmor()
|
||||
@ -952,7 +948,8 @@ class Addon(CoreSysAttributes):
|
||||
|
||||
# Restore data or reload add-on
|
||||
_LOGGER.info("Restore config for addon %s", self._id)
|
||||
self._restore_data(data[ATTR_USER], data[ATTR_SYSTEM], self.image_name)
|
||||
restore_image = self._get_image(data[ATTR_SYSTEM])
|
||||
self._restore_data(data[ATTR_USER], data[ATTR_SYSTEM], restore_image)
|
||||
|
||||
# Check version / restore image
|
||||
version = data[ATTR_VERSION]
|
||||
@ -963,7 +960,7 @@ class Addon(CoreSysAttributes):
|
||||
if image_file.is_file():
|
||||
await self.instance.import_image(image_file, version)
|
||||
else:
|
||||
if await self.instance.install(version, self.image_name):
|
||||
if await self.instance.install(version, restore_image):
|
||||
await self.instance.cleanup()
|
||||
else:
|
||||
await self.instance.stop()
|
||||
|
@ -156,7 +156,7 @@ SCHEMA_BUILD_CONFIG = vol.Schema({
|
||||
# pylint: disable=no-value-for-parameter
|
||||
SCHEMA_ADDON_USER = vol.Schema({
|
||||
vol.Required(ATTR_VERSION): vol.Coerce(str),
|
||||
vol.Optional(ATTR_IMAGE): vol.Maybe(vol.Coerce(str)),
|
||||
vol.Optional(ATTR_IMAGE): vol.Coerce(str),
|
||||
vol.Optional(ATTR_UUID, default=lambda: uuid.uuid4().hex): UUID_MATCH,
|
||||
vol.Optional(ATTR_ACCESS_TOKEN): SHA256,
|
||||
vol.Optional(ATTR_OPTIONS, default=dict): dict,
|
||||
|
@ -3,22 +3,27 @@
|
||||
"armhf"
|
||||
],
|
||||
"raspberrypi2": [
|
||||
"armv7",
|
||||
"armhf"
|
||||
],
|
||||
"raspberrypi3": [
|
||||
"armv7",
|
||||
"armhf"
|
||||
],
|
||||
"raspberrypi3-64": [
|
||||
"aarch64",
|
||||
"armv7",
|
||||
"armhf"
|
||||
],
|
||||
"tinker": [
|
||||
"armv7",
|
||||
"armhf"
|
||||
],
|
||||
"odroid-c2": [
|
||||
"aarch64"
|
||||
],
|
||||
"odroid-xu": [
|
||||
"armv7",
|
||||
"armhf"
|
||||
],
|
||||
"orangepi-prime": [
|
||||
|
@ -46,8 +46,8 @@ async def test_raspberrypi2_arch(coresys, sys_machine):
|
||||
sys_machine.return_value = "raspberrypi2"
|
||||
await coresys.arch.load()
|
||||
|
||||
assert coresys.arch.default == "armhf"
|
||||
assert coresys.arch.supported == ["armhf"]
|
||||
assert coresys.arch.default == "armv7"
|
||||
assert coresys.arch.supported == ["armv7", "armhf"]
|
||||
|
||||
|
||||
async def test_raspberrypi3_arch(coresys, sys_machine):
|
||||
@ -55,8 +55,8 @@ async def test_raspberrypi3_arch(coresys, sys_machine):
|
||||
sys_machine.return_value = "raspberrypi3"
|
||||
await coresys.arch.load()
|
||||
|
||||
assert coresys.arch.default == "armhf"
|
||||
assert coresys.arch.supported == ["armhf"]
|
||||
assert coresys.arch.default == "armv7"
|
||||
assert coresys.arch.supported == ["armv7", "armhf"]
|
||||
|
||||
|
||||
async def test_raspberrypi3_64_arch(coresys, sys_machine):
|
||||
@ -65,7 +65,7 @@ async def test_raspberrypi3_64_arch(coresys, sys_machine):
|
||||
await coresys.arch.load()
|
||||
|
||||
assert coresys.arch.default == "aarch64"
|
||||
assert coresys.arch.supported == ["aarch64", "armhf"]
|
||||
assert coresys.arch.supported == ["aarch64", "armv7", "armhf"]
|
||||
|
||||
|
||||
async def test_tinker_arch(coresys, sys_machine):
|
||||
@ -73,8 +73,8 @@ async def test_tinker_arch(coresys, sys_machine):
|
||||
sys_machine.return_value = "tinker"
|
||||
await coresys.arch.load()
|
||||
|
||||
assert coresys.arch.default == "armhf"
|
||||
assert coresys.arch.supported == ["armhf"]
|
||||
assert coresys.arch.default == "armv7"
|
||||
assert coresys.arch.supported == ["armv7", "armhf"]
|
||||
|
||||
|
||||
async def test_odroid_c2_arch(coresys, sys_machine):
|
||||
@ -91,8 +91,8 @@ async def test_odroid_xu_arch(coresys, sys_machine):
|
||||
sys_machine.return_value = "odroid-xu"
|
||||
await coresys.arch.load()
|
||||
|
||||
assert coresys.arch.default == "armhf"
|
||||
assert coresys.arch.supported == ["armhf"]
|
||||
assert coresys.arch.default == "armv7"
|
||||
assert coresys.arch.supported == ["armv7", "armhf"]
|
||||
|
||||
|
||||
async def test_orangepi_prime_arch(coresys, sys_machine):
|
||||
|
Loading…
x
Reference in New Issue
Block a user