from selfprivacy_api.migrations.migration import Migration from selfprivacy_api.utils import ReadUserData, WriteUserData class CreateProviderFields(Migration): """Unhardcode providers""" def get_migration_name(self): return "create_provider_fields" def get_migration_description(self): return "Add DNS, backup and server provider fields to enable user to choose between different clouds and to make the deployment adapt to these preferences." def is_migration_needed(self): try: with ReadUserData() as userdata: return "dns" not in userdata except Exception as e: print(e) return False def migrate(self): # Write info about providers to userdata.json try: with WriteUserData() as userdata: userdata["dns"] = { "provider": "CLOUDFLARE", "apiKey": userdata["cloudflare"]["apiKey"], } userdata["server"] = { "provider": "HETZNER", } userdata["backup"] = { "provider": "BACKBLAZE", "accountId": userdata["backblaze"]["accountId"], "accountKey": userdata["backblaze"]["accountKey"], "bucket": userdata["backblaze"]["bucket"], } print("Done") except Exception as e: print(e) print("Error migrating provider fields")