* feat: basic blobstore infrastructure for dev
* refactor: (broken) attempt to put minio console behind nginx
* feat: initialize blobstore with boto3
* fix: abandon attempt to proxy minio. Use docker compose instead.
* feat: beginning of blob writes
* feat: storage utilities
* feat: test buckets
* chore: black
* chore: remove unused import
* chore: avoid f string when not needed
* fix: inform all settings files about blobstores
* fix: declare types for some settings
* ci: point to new target base
* ci: adjust test workflow
* fix: give the tests debug environment a blobstore
* fix: "better" name declarations
* ci: use devblobstore container
* chore: identify places to write to blobstorage
* chore: remove unreachable code
* feat: store materials
* feat: store statements
* feat: store status changes
* feat: store liaison attachments
* feat: store agendas provided with Interim session requests
* chore: capture TODOs
* feat: store polls and chatlogs
* chore: remove unneeded TODO
* feat: store drafts on submit and post
* fix: handle storage during doc expiration and resurrection
* fix: mirror an unlink
* chore: add/refine TODOs
* feat: store slide submissions
* fix: structure slide test correctly
* fix: correct sense of existence check
* feat: store some indexes
* feat: BlobShadowFileSystemStorage
* feat: shadow floorplans / host logos to the blob
* chore: remove unused import
* feat: strip path from blob shadow names
* feat: shadow photos / thumbs
* refactor: combine photo and photothumb blob kinds
The photos / thumbs were already dropped in the same
directory, so let's not add a distinction at this point.
* style: whitespace
* refactor: use kwargs consistently
* chore: migrations
* refactor: better deconstruct(); rebuild migrations
* fix: use new class in mack patch
* chore: add TODO
* feat: store group index documents
* chore: identify more TODO
* feat: store reviews
* fix: repair merge
* chore: remove unnecessary TODO
* feat: StoredObject metadata
* fix: deburr some debugging code
* fix: only set the deleted timestamp once
* chore: correct typo
* fix: get_or_create vs get and test
* fix: avoid the questionable is_seekable helper
* chore: capture future design consideration
* chore: blob store cfg for k8s
* chore: black
* chore: copyright
* ci: bucket name prefix option + run Black
Adds/uses DATATRACKER_BLOB_STORE_BUCKET_PREFIX option. Other changes
are just Black styling.
* ci: fix typo in bucket name expression
* chore: parameters in app-configure-blobstore
Allows use with other blob stores.
* ci: remove verify=False option
* fix: don't return value from __init__
* feat: option to log timing of S3Storage calls
* chore: units
* fix: deleted->null when storing a file
* style: Black
* feat: log as JSON; refactor to share code; handle exceptions
* ci: add ietf_log_blob_timing option for k8s
* test: --no-manage-blobstore option for running tests
* test: use blob store settings from env, if set
* test: actually set a couple more storage opts
* feat: offswitch (#8541)
* feat: offswitch
* fix: apply ENABLE_BLOBSTORAGE to BlobShadowFileSystemStorage behavior
* chore: log timing of blob reads
* chore: import Config from botocore.config
* chore(deps): import boto3-stubs / botocore
botocore is implicitly imported, but make it explicit
since we refer to it directly
* chore: drop type annotation that mypy loudly ignores
* refactor: add storage methods via mixin
Shares code between Document and DocHistory without
putting it in the base DocumentInfo class, which
lacks the name field. Also makes mypy happy.
* feat: add timeout / retry limit to boto client
* ci: let k8s config the timeouts via env
* chore: repair merge resolution typo
* chore: tweak settings imports
* chore: simplify k8s/settings_local.py imports
---------
Co-authored-by: Jennifer Richards <jennifer@staff.ietf.org>
* fix: keep draft-iesg state on expiration. Update action holders
* feat: task to repair docs in dead because expiry
* fix: restore all to-date flows through update_action_holders
* fix: Fetch the System user following more regular conventions
* fix: better signal test
* refactor: Change import style for clarity
* feat: Add iana_changes_updates_task()
* chore: Squelch lint warning
My linter does not like variables defined outside
of __init__()
* feat: Add PeriodicTask for iana_changes_updates_task
* refactor: tasks instead of scripts on sync.views.notify()
* test: Test iana_changes_updates_task
* refactor: rename task for consistency
* feat: Add iana_protocols_update_task
* feat: Add PeriodicTask for iana protocols sync
* refactor: Use protocol sync task instead of script in view
* refactor: itertools.batched() not available until py312
* test: test iana_protocols_update_task
* feat: Add idindex_update_task()
Calls idindex generation functions and does the file
update dance to put them in place.
* chore: Add comments to bin/hourly
* fix: annotate types and fix bug
* feat: Create PeriodicTask for idindex_update_task
* refactor: Move helpers into a class
More testable this way
* refactor: Make TempFileManager a context mgr
* test: Test idindex_update_task
* test: Test TempFileManager
* fix: Fix bug in TestFileManager
yay testing
* feat: Add expire_ids_task()
* feat: Create PeriodicTask for expire_ids_task
* test: Test expire_ids_task
* test: Test request timeout in iana_protocols_update_task
* refactor: do not re-raise timeout exception
Not sure this is the right thing to do, but it's the
same as rfc_editor_index_update_task
* feat: Add notify_expirations_task
* feat: Add "weekly" celery beat crontab
* refactor: Reorder crontab fields
This matches the crontab file field order
* feat: Add PeriodicTask for notify_expirations
* test: Test notify_expirations_task
* test: Add annotation to satisfy mypy