Source code for divera.config.migrations

import abc

import versionedconfig as _vc


[docs]class DiveraPythonConfigMigration(_vc.Migration, abc.ABC): pass
[docs]class MigrationTo004(DiveraPythonConfigMigration): from_version = None to_version = '0.0.4'
[docs] def additional_compatibility_check(self, config): return config == {}
[docs] def convert(self, configuration: dict) -> dict: return _vc.Configuration( { 'last_poll': -1, # timestamp of last alarm request 'login': { 'username': None, 'domain': None, }, 'user': {}, 'interval': 30, 'models': { } }, )
[docs]class Migration004to005(DiveraPythonConfigMigration): from_version = None to_version = '0.0.5'
[docs] def check_compatibility(self, config): return 'version' not in config and config != {}
[docs] def convert(self, configuration: dict) -> dict: configuration['access'] = configuration['login'] if type(configuration['login']['domain']) is str: configuration['access']['domain'] = configuration['login']['domain'].lstrip('https://').rstrip('/') else: configuration['access']['domain'] = None if type(configuration['login']['username']) is str: configuration['access']['username'] = configuration['login']['username'] else: configuration['access']['username'] = None del configuration['login'] configuration['access']['protocol'] = 'https' configuration['version'] = self.to_version return configuration
[docs]class Migration005To006(DiveraPythonConfigMigration): from_version = '0.0.5' to_version = '0.0.6'
[docs] def convert(self, configuration: dict) -> dict: configuration['access']['socket'] = { 'reconnection': True, 'reconnection_attempts': 0, 'reconnection_delay': 1, 'reconnection_delay_max': 5, 'randomization_factor': 0.5, 'logger': False, 'binary': False, 'json': None, 'request_timeout': 5, 'ssl_verify': True, 'engineio_logger': False, } configuration['access']['polling'] = { 'interval': configuration['interval'] * 60, 'last_poll': configuration['last_poll'], } del configuration['interval'] del configuration['last_poll'] return self.update_version( configuration=configuration, )
[docs]class Migration006To007(DiveraPythonConfigMigration): from_version = '0.0.6' to_version = '0.0.7'
[docs] def convert(self, configuration: dict) -> dict: configuration['access']['url websocket'] = None return self.update_version( configuration=configuration, )