diff --git a/osf/apps.py b/osf/apps.py index 339e451375f..c76685c669d 100644 --- a/osf/apps.py +++ b/osf/apps.py @@ -9,6 +9,7 @@ update_blocked_email_domains, update_license, update_permission_groups, + update_storage_regions, update_waffle_flags, ) @@ -53,3 +54,8 @@ def ready(self): update_blocked_email_domains, dispatch_uid='osf.apps.update_blocked_email_domains' ) + + post_migrate.connect( + update_storage_regions, + dispatch_uid='osf.apps.update_storage_regions' + ) diff --git a/osf/migrations/0099_add_default_storage_region.py b/osf/migrations/0099_add_default_storage_region.py index 5d3b1b7e37b..8b475a24506 100644 --- a/osf/migrations/0099_add_default_storage_region.py +++ b/osf/migrations/0099_add_default_storage_region.py @@ -75,5 +75,4 @@ class Migration(migrations.Migration): ] operations = [ - migrations.RunPython(add_osfstorage_addon, remove_osfstorage_addon), ] diff --git a/osf/migrations/__init__.py b/osf/migrations/__init__.py index c68beea4073..288f4990fe3 100644 --- a/osf/migrations/__init__.py +++ b/osf/migrations/__init__.py @@ -2,9 +2,11 @@ import sys import logging +from django.apps import apps from django.db.utils import ProgrammingError from django.core.management import call_command +from addons.osfstorage.settings import DEFAULT_REGION_ID, DEFAULT_REGION_NAME from api.base import settings as api_settings from osf.management.commands.manage_switch_flags import manage_waffle from osf.utils.migrations import ensure_schemas, map_schemas_to_schemablocks @@ -162,3 +164,22 @@ def update_blocked_email_domains(sender, verbosity=0, **kwargs): domain=domain, defaults={'note': NotableEmailDomain.Note.EXCLUDE_FROM_ACCOUNT_CREATION}, ) + + +def update_storage_regions(sender, verbosity=0, **kwargs): + if getattr(sender, 'label', None) == 'osf': + ensure_default_storage_region() + + +def ensure_default_storage_region(): + osfstorage_config = apps.get_app_config('addons_osfstorage') + Region = apps.get_model('addons_osfstorage', 'Region') + Region.objects.get_or_create( + _id=DEFAULT_REGION_ID, + name=DEFAULT_REGION_NAME, + defaults={ + 'waterbutler_credentials': osfstorage_config.WATERBUTLER_CREDENTIALS, + 'waterbutler_settings': osfstorage_config.WATERBUTLER_SETTINGS, + 'waterbutler_url': osf_settings.WATERBUTLER_URL + } + ) diff --git a/website/settings/defaults.py b/website/settings/defaults.py index dabaf1b0b66..7220447344c 100644 --- a/website/settings/defaults.py +++ b/website/settings/defaults.py @@ -2108,4 +2108,5 @@ def from_node_usage(cls, usage_bytes, private_limit=None, public_limit=None): CAS_LOG_LEVEL = 3 # ERROR PREPRINT_METRICS_START_DATE = datetime.datetime(2019, 1, 1) + WAFFLE_VALUES_YAML = 'osf/features.yaml'