Add support for cloud backups in Core #7684
ci.yaml
on: pull_request
Prepare Python dependencies
13s
Check ruff-format
20s
Check ruff
21s
Check Dockerfile
5s
Check executables
14s
Check JSON
18s
Check pylint
32s
Process test coverage
0s
Annotations
7 errors
Run tests Python 3.12.7:
tests/api/test_mounts.py#L314
test_api_update_dbus_error_mount_remains
assert "Could not ge...^^^^^^^^\\n']" == 'Could not mo... due to: fail'
- Could not mount backup_test due to: fail
+ Could not get mount unit due to: The service interface raised an error: pop from empty list.
+ [' File "src/dbus_fast/message_bus.py", line 863, in dbus_fast.message_bus.BaseMessageBus._process_message\n', ' File "src/dbus_fast/message_bus.py", line 882, in dbus_fast.message_bus.BaseMessageBus._callback_method_handler\n', ' File "src/dbus_fast/message_bus.py", line 891, in dbus_fast.message_bus.BaseMessageBus._callback_method_handler\n', ' File "/home/runner/work/supervisor/supervisor/tests/dbus_service_mocks/base.py", line 64, in track_calls\n return func(self, *args)\n ^^^^^^^^^^^^^^^^^\n', ' File "/home/runner/work/supervisor/supervisor/tests/dbus_service_mocks/systemd.py", line 713, in GetUnit\n unit = self.response_get_unit.pop(0)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n']
|
Run tests Python 3.12.7:
tests/backups/test_manager.py#L629
test_full_backup_to_mount
AssertionError: assert PosixPath('/tmp/pytest-of-runner/pytest-0/test_full_backup_to_mount0/mounts/backup_test') in {None: PosixPath('/tmp/pytest-of-runner/pytest-0/test_full_backup_to_mount0/backup'), '.cloud_backup': PosixPath('/tmp...ore/backup'), 'backup_test': PosixPath('/tmp/pytest-of-runner/pytest-0/test_full_backup_to_mount0/mounts/backup_test')}
+ where {None: PosixPath('/tmp/pytest-of-runner/pytest-0/test_full_backup_to_mount0/backup'), '.cloud_backup': PosixPath('/tmp...ore/backup'), 'backup_test': PosixPath('/tmp/pytest-of-runner/pytest-0/test_full_backup_to_mount0/mounts/backup_test')} = <supervisor.backups.manager.BackupManager object at 0x7f2a0706ad80>.backup_locations
+ where <supervisor.backups.manager.BackupManager object at 0x7f2a0706ad80> = <supervisor.coresys.CoreSys object at 0x7f2a07069400>.backups
|
Run tests Python 3.12.7:
tests/backups/test_manager.py#L674
test_partial_backup_to_mount
AssertionError: assert PosixPath('/tmp/pytest-of-runner/pytest-0/test_partial_backup_to_mount0/mounts/backup_test') in {None: PosixPath('/tmp/pytest-of-runner/pytest-0/test_partial_backup_to_mount0/backup'), '.cloud_backup': PosixPath('/.../backup'), 'backup_test': PosixPath('/tmp/pytest-of-runner/pytest-0/test_partial_backup_to_mount0/mounts/backup_test')}
+ where {None: PosixPath('/tmp/pytest-of-runner/pytest-0/test_partial_backup_to_mount0/backup'), '.cloud_backup': PosixPath('/.../backup'), 'backup_test': PosixPath('/tmp/pytest-of-runner/pytest-0/test_partial_backup_to_mount0/mounts/backup_test')} = <supervisor.backups.manager.BackupManager object at 0x7f2a06da7020>.backup_locations
+ where <supervisor.backups.manager.BackupManager object at 0x7f2a06da7020> = <supervisor.coresys.CoreSys object at 0x7f2a06da54f0>.backups
|
Run tests Python 3.12.7:
tests/backups/test_manager.py#L726
test_backup_to_down_mount_error
AssertionError: assert PosixPath('/tmp/pytest-of-runner/pytest-0/test_backup_to_down_mount_erro0/mounts/backup_test') in {None: PosixPath('/tmp/pytest-of-runner/pytest-0/test_backup_to_down_mount_erro0/backup'), '.cloud_backup': PosixPath(...ackup'), 'backup_test': PosixPath('/tmp/pytest-of-runner/pytest-0/test_backup_to_down_mount_erro0/mounts/backup_test')}
+ where {None: PosixPath('/tmp/pytest-of-runner/pytest-0/test_backup_to_down_mount_erro0/backup'), '.cloud_backup': PosixPath(...ackup'), 'backup_test': PosixPath('/tmp/pytest-of-runner/pytest-0/test_backup_to_down_mount_erro0/mounts/backup_test')} = <supervisor.backups.manager.BackupManager object at 0x7f2a06707440>.backup_locations
+ where <supervisor.backups.manager.BackupManager object at 0x7f2a06707440> = <supervisor.coresys.CoreSys object at 0x7f2a06705940>.backups
|
Run tests Python 3.12.7:
tests/docker/test_homeassistant.py#L50
test_homeassistant_start
AssertionError: assert [{'Target': '...slave'}}, ...] == [{'Target': '...slave'}}, ...]
At index 7 diff: {'Target': PurePosixPath('/backup'), 'Source': '/mnt/data/supervisor/backup', 'Type': <MountType.BIND: 'bind'>, 'ReadOnly': False, 'BindOptions': {'Propagation': 'rslave'}} != {'Target': '/etc/pulse/client.conf', 'Source': '/mnt/data/supervisor/tmp/homeassistant_pulse', 'Type': 'bind', 'ReadOnly': True}
Left contains 2 more items, first extra item: {'Target': '/etc/asound.conf', 'Source': '/mnt/data/supervisor/audio/asound', 'Type': <MountType.BIND: 'bind'>, 'ReadOnly': True}
Full diff:
[
{
'BindOptions': {
'ReadOnlyNonRecursive': True,
},
'ReadOnly': True,
'Source': '/dev',
'Target': '/dev',
- 'Type': 'bind',
+ 'Type': <MountType.BIND: 'bind'>,
},
{
'ReadOnly': True,
'Source': '/run/dbus',
'Target': '/run/dbus',
- 'Type': 'bind',
+ 'Type': <MountType.BIND: 'bind'>,
},
{
'ReadOnly': True,
'Source': '/run/udev',
'Target': '/run/udev',
- 'Type': 'bind',
+ 'Type': <MountType.BIND: 'bind'>,
},
{
'ReadOnly': False,
'Source': '/mnt/data/supervisor/homeassistant',
'Target': '/config',
- 'Type': 'bind',
+ 'Type': <MountType.BIND: 'bind'>,
},
{
'ReadOnly': True,
'Source': '/mnt/data/supervisor/ssl',
'Target': '/ssl',
- 'Type': 'bind',
+ 'Type': <MountType.BIND: 'bind'>,
},
{
'BindOptions': {
'Propagation': 'rslave',
},
'ReadOnly': False,
'Source': '/mnt/data/supervisor/share',
'Target': '/share',
- 'Type': 'bind',
+ 'Type': <MountType.BIND: 'bind'>,
},
{
'BindOptions': {
'Propagation': 'rslave',
},
'ReadOnly': False,
'Source': '/mnt/data/supervisor/media',
'Target': '/media',
- 'Type': 'bind',
+ 'Type': <MountType.BIND: 'bind'>,
+ },
+ {
+ 'BindOptions': {
+ 'Propagation': 'rslave',
+ },
+ 'ReadOnly': False,
+ 'Source': '/mnt/data/supervisor/backup',
+ 'Target': PurePosixPath('/backup'),
+ 'Type': <MountType.BIND: 'bind'>,
+ },
+ {
+ 'ReadOnly': False,
+ 'Source': '/mnt/data/supervisor/core/backup',
+ 'Target': '/cloud_backup',
+ 'Type': <MountType.BIND: 'bind'>,
},
{
'ReadOnly': True,
'Source': '/mnt/data/supervisor/tmp/homeassistant_pulse',
'Target': '/etc/pulse/client.conf',
- 'Type': 'bind',
+ 'Type': <MountType.BIND: 'bind'>,
},
{
'ReadOnly': True,
'Source': '/mnt/data/supervisor/audio/external',
'Target': '/run/audio',
- 'Type': 'bind',
+ 'Type': <MountType.BIND: 'bind'>,
},
{
'ReadOnly': True,
'Source': '/mnt/data/supervisor/audio/asound',
'Target': '/etc/asound.conf',
- 'Type': 'bind',
+ 'Type': <MountType.BIND: 'bind'>,
},
{
'ReadOnly': True,
'Source': '/etc/machine-id',
'Target': '/etc/machine-id',
- 'Type': 'bind',
+ 'Type': <MountType.BIND: 'bind'>,
},
]
|
Run tests Python 3.12.7:
tests/resolution/fixup/test_mount_execute_remove.py#L50
test_fixup
supervisor.exceptions.MountError: Could not get active state of mount due to: The service interface raised an error: pop from empty list.
[' File "src/dbus_fast/service.py", line 589, in dbus_fast.service.ServiceInterface._get_property_value\n', ' File "/home/runner/work/supervisor/supervisor/tests/dbus_service_mocks/systemd_unit.py", line 222, in ActiveState\n return self.active_state.pop(0)\n ^^^^^^^^^^^^^^^^^^^^^^^^\n']
|
Run tests Python 3.12.7
Process completed with exit code 1.
|