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