Enable Armv7 for Add-ons (#936)

* Enable Armv7 for Add-ons

* Cleanups

* fix tests
This commit is contained in:
Pascal Vizeli 2019-03-07 16:00:41 +01:00 committed by GitHub
parent 9ba4ea7d18
commit f1fecdde3a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 28 additions and 26 deletions

View File

@ -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()

View File

@ -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,

View File

@ -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": [

View File

@ -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):