swift 2.35.2__tar.gz → 2.35.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {swift-2.35.2 → swift-2.35.4}/.mailmap +6 -3
- {swift-2.35.2 → swift-2.35.4}/.zuul.yaml +14 -7
- {swift-2.35.2 → swift-2.35.4}/AUTHORS +2 -3
- {swift-2.35.2 → swift-2.35.4}/CHANGELOG +41 -0
- {swift-2.35.2/swift.egg-info → swift-2.35.4}/PKG-INFO +1 -1
- swift-2.35.4/releasenotes/notes/release-2.35.3-48f117a536316b56.yaml +20 -0
- swift-2.35.4/releasenotes/notes/release-2.35.4-3205ae28c1240697.yaml +33 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/db.py +3 -2
- {swift-2.35.2 → swift-2.35.4}/swift/common/direct_client.py +2 -2
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/gatekeeper.py +11 -5
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/s3request.py +32 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/swob.py +1 -1
- {swift-2.35.2 → swift-2.35.4}/swift/common/utils/__init__.py +1 -24
- {swift-2.35.2 → swift-2.35.4}/swift/common/utils/checksum.py +2 -1
- swift-2.35.4/swift/common/utils/pickle.py +77 -0
- {swift-2.35.2 → swift-2.35.4}/swift/container/backend.py +8 -5
- {swift-2.35.2 → swift-2.35.4}/swift/obj/diskfile.py +4 -3
- {swift-2.35.2 → swift-2.35.4}/swift/obj/reconstructor.py +2 -2
- {swift-2.35.2 → swift-2.35.4}/swift/obj/replicator.py +2 -3
- {swift-2.35.2 → swift-2.35.4}/swift/obj/updater.py +16 -7
- {swift-2.35.2 → swift-2.35.4/swift.egg-info}/PKG-INFO +1 -1
- {swift-2.35.2 → swift-2.35.4}/swift.egg-info/SOURCES.txt +4 -0
- swift-2.35.4/swift.egg-info/pbr.json +1 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_relinker.py +4 -4
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_obj.py +52 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_s3api.py +20 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_s3request.py +78 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_gatekeeper.py +13 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_db.py +3 -2
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_swob.py +18 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/utils/test_checksum.py +14 -0
- swift-2.35.4/test/unit/common/utils/test_pickle.py +113 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/container/test_sharder.py +7 -4
- {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_diskfile.py +13 -12
- {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_server.py +14 -14
- {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_updater.py +64 -13
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/multinode_setup/run.yaml +9 -0
- swift-2.35.2/swift.egg-info/pbr.json +0 -1
- {swift-2.35.2 → swift-2.35.4}/.alltests +0 -0
- {swift-2.35.2 → swift-2.35.4}/.coveragerc +0 -0
- {swift-2.35.2 → swift-2.35.4}/.dockerignore +0 -0
- {swift-2.35.2 → swift-2.35.4}/.functests +0 -0
- {swift-2.35.2 → swift-2.35.4}/.manpages +0 -0
- {swift-2.35.2 → swift-2.35.4}/.probetests +0 -0
- {swift-2.35.2 → swift-2.35.4}/.stestr.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/.unittests +0 -0
- {swift-2.35.2 → swift-2.35.4}/CONTRIBUTING.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/Dockerfile +0 -0
- {swift-2.35.2 → swift-2.35.4}/LICENSE +0 -0
- {swift-2.35.2 → swift-2.35.4}/MANIFEST.in +0 -0
- {swift-2.35.2 → swift-2.35.4}/README.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/REVIEW_GUIDELINES.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/conf.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/index.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/metadata_header_encoding.inc +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/metadata_header_syntax.inc +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/parameters.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/account-containers-list-http-request-json.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/account-containers-list-http-request-xml.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/account-containers-list-http-response-json.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/account-containers-list-http-response-xml.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/account-containers-list-response.json +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/account-containers-list-response.xml +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/capabilities-list-response.json +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/containers-list-http-request.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/containers-list-http-response.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/endpoints-list-response-headers.json +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/endpoints-list-response.json +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/goodbyeworld.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/helloworld.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/objects-list-http-response-json.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/objects-list-http-response-xml.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/objects-list-response.json +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/samples/objects-list-response.xml +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/storage-account-services.inc +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/storage-container-services.inc +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/storage-object-services.inc +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/storage_endpoints.inc +0 -0
- {swift-2.35.2 → swift-2.35.4}/api-ref/source/storage_info.inc +0 -0
- {swift-2.35.2 → swift-2.35.4}/bandit.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/bindep.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/account-server.conf.5 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/container-reconciler.conf.5 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/container-server.conf.5 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/container-sync-realms.conf.5 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/dispersion.conf.5 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/object-expirer.conf.5 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/object-server.conf.5 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/proxy-server.conf.5 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-account-audit.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-account-auditor.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-account-info.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-account-reaper.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-account-replicator.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-account-server.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-config.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-container-auditor.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-container-info.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-container-reconciler.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-container-replicator.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-container-server.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-container-sync.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-container-updater.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-dispersion-populate.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-dispersion-report.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-drive-audit.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-form-signature.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-get-nodes.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-init.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-object-auditor.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-object-expirer.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-object-info.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-object-reconstructor.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-object-relinker.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-object-replicator.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-object-server.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-object-updater.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-oldies.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-orphans.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-proxy-server.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-recon-cron.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-recon.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-reconciler-enqueue.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-ring-builder-analyzer.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-ring-builder.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift-ring-composer.1 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/manpages/swift.conf.5 +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/requirements.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/conf/ceph-known-failures-keystone.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/conf/ceph-known-failures-tempauth.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/access_control_policy.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/bucket_logging_status.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/common.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/complete_multipart_upload.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/complete_multipart_upload_result.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/copy_object_result.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/copy_part_result.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/create_bucket_configuration.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/delete.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/delete_result.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/error.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/initiate_multipart_upload_result.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/lifecycle_configuration.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/list_all_my_buckets_result.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/list_bucket_result.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/list_multipart_uploads_result.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/list_parts_result.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/list_versions_result.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/location_constraint.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/s3api/rnc/versioning_configuration.rnc +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/bin/remakerings +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/bin/resetswift +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/bin/startmain +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/bin/startrest +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/rsyncd.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/rsyslog.d/10-swift.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/account-server/1.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/account-server/2.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/account-server/3.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/account-server/4.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/container-reconciler/1.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/container-reconciler/2.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/container-reconciler/3.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/container-reconciler/4.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/container-server/1.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/container-server/2.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/container-server/3.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/container-server/4.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/container-sync-realms.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/internal-client.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/object-expirer.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/object-server/1.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/object-server/2.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/object-server/3.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/object-server/4.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/proxy-server.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/saio/swift/swift.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/_extra/.htaccess +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/account.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage-accountscontainers.png +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage-arch.png +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage-buildingblocks.png +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage-nodes.png +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage-partitions.png +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage-replication.png +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage-ring.png +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage-usecase.png +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage-zones.png +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/figures/objectstorage.png +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/index.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-EC.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-account-reaper.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-arch.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-auditors.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-characteristics.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-components.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-features.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-intro.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-large-objects.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-monitoring.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-replication.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-ringbuilder.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-tenant-specific-image-storage.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin/objectstorage-troubleshoot.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/admin_guide.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/apache_deployment_guide.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/api/authentication.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/api/bulk-delete.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/api/container_quotas.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/api/discoverability.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/api/form_post_middleware.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/api/large_objects.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/api/object-expiration.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/api/object_api_v1_overview.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/api/object_versioning.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/api/pagination.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/api/pseudo-hierarchical-folders-directories.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/api/serialized-response-formats.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/api/static-website.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/api/temporary_url_middleware.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/api/use_content-encoding_metadata.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/api/use_the_content-disposition_metadata.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/associated_projects.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/audit_watchers.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/conf.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/config/account_server_config.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/config/container_server_config.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/config/global_memcache_config.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/config/index.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/config/object_server_config.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/config/proxy_server_config.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/config/swift_common_config.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/container.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/contributor/contributing.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/contributor/review_guidelines.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/cors.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/crossdomain.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/db.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/deployment_guide.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/development_auth.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/development_guidelines.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/development_middleware.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/development_ondisk_backends.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/development_saio.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/development_watchers.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/first_contribution_swift.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/getting_started.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/images/ec_overview.png +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/images/reload_process_tree_1.svg +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/images/reload_process_tree_2.svg +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/images/reload_process_tree_3.svg +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/images/reload_process_tree_4.svg +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/images/reload_process_tree_5.svg +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/images/reload_process_tree_6.svg +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharded_GET.svg +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_GET.svg +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_cleave1_load.svg +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_cleave2_load.svg +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_cleave_basic.svg +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_db_states.svg +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_scan_basic.svg +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_scan_load.svg +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_sharded_load.svg +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_unsharded.svg +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/images/sharding_unsharded_load.svg +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/index.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/controller-common_prerequisites.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/controller-include.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/controller-install-debian.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/controller-install-obs.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/controller-install-rdo.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/controller-install-ubuntu.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/controller-install.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/edit_hosts_file.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/environment-networking.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/finalize-installation-obs.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/finalize-installation-rdo.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/finalize-installation-ubuntu-debian.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/finalize-installation.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/get_started.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/index.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/initial-rings.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/next-steps.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/storage-include1.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/storage-include2.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/storage-include3.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/storage-install-obs.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/storage-install-rdo.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/storage-install-ubuntu-debian.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/storage-install.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/install/verify.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/logs.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/account_auditor.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/account_reaper.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/account_replicator.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/account_server.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/all.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/container_auditor.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/container_replicator.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/container_server.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/container_sync.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/container_updater.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/object_auditor.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/object_expirer.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/object_reconstructor.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/object_replicator.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/object_server.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/object_updater.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/metrics/proxy_server.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/middleware.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/misc.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/object.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/ops_runbook/diagnose.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/ops_runbook/index.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/ops_runbook/maintenance.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/ops_runbook/procedures.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/ops_runbook/troubleshooting.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/overview_acl.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/overview_architecture.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/overview_auth.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/overview_backing_store.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/overview_container_sharding.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/overview_container_sync.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/overview_encryption.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/overview_erasure_code.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/overview_expiring_objects.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/overview_global_cluster.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/overview_large_objects.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/overview_policies.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/overview_reaper.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/overview_replication.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/overview_ring.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/overview_wsgi_management.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/policies_saio.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/proxy.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/ratelimit.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/replication_network.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/ring.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/ring_background.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/ring_partpower.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/s3_compat.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/doc/source/test-cors.html +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/dockerhub_description.md +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/install_scripts/00_swift_needs.sh +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/install_scripts/10_apk_install_prereqs.sh +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/install_scripts/21_apk_install_py3.sh +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/install_scripts/50_swift_install.sh +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/install_scripts/60_pip_uninstall_dev.sh +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/install_scripts/99_apk_uninstall_dev.sh +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/install_scripts/python_test_dirs +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/cont-init.d/01_swift_logs +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/cont-init.d/02_build_remakerings +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/fix-attrs.d/logging +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/fix-attrs.d/srv_node +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/fix-attrs.d/swift +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/fix-attrs.d/tmp +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/profile +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/rsyncd.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/rsyslog.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/rsyslog.d/00-swift.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/rsyslog.d/50-default.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/services.d/memcached/run +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/services.d/swift-account/run +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/services.d/swift-container/run +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/services.d/swift-object/run +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/services.d/swift-proxy/run +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/socklog.rules/swift_account_server +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/socklog.rules/swift_all +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/socklog.rules/swift_container_server +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/socklog.rules/swift_object_server +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/socklog.rules/swift_proxy_server +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/swift/account-server.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/swift/container-server.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/swift/object-server.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/swift/proxy-server.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/swift/swift.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/swift_build/build_devices +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/swift_build/build_remakerings +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/rootfs/etc/swift_build/prepare_rings +0 -0
- {swift-2.35.2 → swift-2.35.4}/docker/s6-gpg-pub-key +0 -0
- {swift-2.35.2 → swift-2.35.4}/etc/account-server.conf-sample +0 -0
- {swift-2.35.2 → swift-2.35.4}/etc/backend-ratelimit.conf-sample +0 -0
- {swift-2.35.2 → swift-2.35.4}/etc/container-reconciler.conf-sample +0 -0
- {swift-2.35.2 → swift-2.35.4}/etc/container-server.conf-sample +0 -0
- {swift-2.35.2 → swift-2.35.4}/etc/container-sync-realms.conf-sample +0 -0
- {swift-2.35.2 → swift-2.35.4}/etc/dispersion.conf-sample +0 -0
- {swift-2.35.2 → swift-2.35.4}/etc/drive-audit.conf-sample +0 -0
- {swift-2.35.2 → swift-2.35.4}/etc/internal-client.conf-sample +0 -0
- {swift-2.35.2 → swift-2.35.4}/etc/keymaster.conf-sample +0 -0
- {swift-2.35.2 → swift-2.35.4}/etc/memcache.conf-sample +0 -0
- {swift-2.35.2 → swift-2.35.4}/etc/mime.types-sample +0 -0
- {swift-2.35.2 → swift-2.35.4}/etc/object-expirer.conf-sample +0 -0
- {swift-2.35.2 → swift-2.35.4}/etc/object-server.conf-sample +0 -0
- {swift-2.35.2 → swift-2.35.4}/etc/proxy-server.conf-sample +0 -0
- {swift-2.35.2 → swift-2.35.4}/etc/rsyncd.conf-sample +0 -0
- {swift-2.35.2 → swift-2.35.4}/etc/swift-rsyslog.conf-sample +0 -0
- {swift-2.35.2 → swift-2.35.4}/etc/swift.conf-sample +0 -0
- {swift-2.35.2 → swift-2.35.4}/examples/apache2/account-server.template +0 -0
- {swift-2.35.2 → swift-2.35.4}/examples/apache2/container-server.template +0 -0
- {swift-2.35.2 → swift-2.35.4}/examples/apache2/object-server.template +0 -0
- {swift-2.35.2 → swift-2.35.4}/examples/apache2/proxy-server.template +0 -0
- {swift-2.35.2 → swift-2.35.4}/examples/wsgi/account-server.wsgi.template +0 -0
- {swift-2.35.2 → swift-2.35.4}/examples/wsgi/container-server.wsgi.template +0 -0
- {swift-2.35.2 → swift-2.35.4}/examples/wsgi/object-server.wsgi.template +0 -0
- {swift-2.35.2 → swift-2.35.4}/examples/wsgi/proxy-server.wsgi.template +0 -0
- {swift-2.35.2 → swift-2.35.4}/lower-constraints.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/py3-constraints.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_10_0_release-666a76f4975657a5.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_11_0_release-ac1d256e455d347e.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_12_0_release-06af226abc7b91ef.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_13_0_release-875e1fb1ef59f015.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_14_0_release-7c3ef515ebded888.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_15_0_release-0a05a011fb85a9c9.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_15_1_release-be25e67bfc5e886a.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_15_2_release-6996eccabba558b4.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_16_0_release-d48cb9b2629df8ab.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_17_0_release-bd35f18c41c5ef18.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_17_1_release-dd6e6879cbb94f85.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_18_0_release-3acf63cfe2475c65.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_19_0_release-3e6ee3e6a1fcc6bb.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_19_1_release-5072dd72557f5708.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_20_0_release-7b090a5f4bd916e4.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_21_0_release-d8ae33ef18b7be3a.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_22_0_release-f60d29508b3c1283.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_23_0_release-2a2d11c1934f0b61.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_24_0_release-1ca244cc959922fc.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_25_0_release-09410c808881bf21.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_26_0_release-6548eadcba544f72.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_27_0_release-a9ae967d6d271342.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_28_0_release-f2515e07fb61cd01.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_29_0_release-af71f7efd73109b0.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_29_1_release-a2962252523d9396.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_30_0_release-642778c3010848db.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_31_0_release-77e6b20dfba3b32c.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_31_1_release-20ccd07e32b91c1f.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/2_32_0_release-39c8fb77a0a3e72d.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/3_33_0_release-d208917f5012cedd.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/release-2.34.0-2136ae35f56f8b5a.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/release-2.35.0-bb2736e6cbc4a520.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/release-2.35.1-58d9d52dfe46ee4d.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/notes/release-2.35.2-45d782fba98d426f.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/2023.1.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/2023.2.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/2024.1.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/2024.2.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/conf.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/current.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/index.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/locale/ja/LC_MESSAGES/releasenotes.po +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/newton.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/ocata.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/pike.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/queens.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/rocky.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/stein.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/train.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/ussuri.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/victoria.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/wallaby.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/xena.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/yoga.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/releasenotes/source/zed.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/requirements.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/roles/additional-keystone-users/tasks/main.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/roles/additional-tempauth-users/tasks/main.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/roles/dsvm-additional-middlewares/tasks/main.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/setup.cfg +0 -0
- {swift-2.35.2 → swift-2.35.4}/setup.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/account/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/account/auditor.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/account/backend.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/account/reaper.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/account/replicator.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/account/server.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/account/utils.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/account_audit.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/config.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/container_deleter.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/dispersion_populate.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/dispersion_report.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/drive_audit.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/form_signature.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/get_nodes.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/info.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/manage_shard_ranges.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/oldies.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/orphans.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/recon.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/recon_cron.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/reconciler_enqueue.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/relinker.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/reload.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/ring_builder_analyzer.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/ringbuilder.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/ringcomposer.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/cli/shard-info.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/base_storage_server.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/bufferedhttp.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/constraints.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/container_sync_realms.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/daemon.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/db_auditor.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/db_replicator.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/digest.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/error_limiter.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/exceptions.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/header_key_dict.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/http.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/http_protocol.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/internal_client.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/linkat.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/manager.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/memcached.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/account_quotas.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/acl.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/backend_ratelimit.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/bulk.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/catch_errors.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/cname_lookup.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/container_quotas.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/container_sync.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/copy.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/crossdomain.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/crypto/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/crypto/crypto_utils.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/crypto/decrypter.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/crypto/encrypter.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/crypto/keymaster.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/crypto/kmip_keymaster.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/crypto/kms_keymaster.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/dlo.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/domain_remap.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/etag_quoter.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/formpost.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/healthcheck.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/keystoneauth.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/list_endpoints.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/listing_formats.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/memcache.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/name_check.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/proxy_logging.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/ratelimit.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/read_only.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/recon.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/acl_handlers.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/acl_utils.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/acl.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/base.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/bucket.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/location.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/logging.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/multi_delete.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/multi_upload.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/obj.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/object_lock.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/s3_acl.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/service.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/tagging.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/controllers/versioning.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/etree.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/exception.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/s3api.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/s3response.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/s3token.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/access_control_policy.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/bucket_logging_status.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/common.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/complete_multipart_upload.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/complete_multipart_upload_result.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/copy_object_result.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/copy_part_result.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/create_bucket_configuration.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/delete.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/delete_result.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/error.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/initiate_multipart_upload_result.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/lifecycle_configuration.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/list_all_my_buckets_result.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/list_bucket_result.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/list_multipart_uploads_result.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/list_parts_result.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/list_versions_result.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/location_constraint.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/schema/versioning_configuration.rng +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/subresource.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/s3api/utils.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/slo.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/staticweb.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/symlink.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/tempauth.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/tempurl.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/versioned_writes/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/versioned_writes/legacy.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/versioned_writes/object_versioning.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/x_profile/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/x_profile/exceptions.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/x_profile/html_viewer.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/x_profile/profile_model.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/middleware/xprofile.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/recon.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/registry.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/request_helpers.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/ring/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/ring/builder.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/ring/composite_builder.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/ring/ring.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/ring/utils.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/splice.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/statsd_client.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/storage_policy.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/utils/base.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/utils/config.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/utils/ipaddrs.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/utils/libc.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/utils/logs.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/utils/timestamp.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/common/wsgi.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/container/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/container/auditor.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/container/reconciler.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/container/replicator.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/container/server.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/container/sharder.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/container/sync.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/container/sync_store.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/container/updater.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/obj/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/obj/auditor.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/obj/expirer.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/obj/mem_diskfile.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/obj/mem_server.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/obj/server.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/obj/ssync_receiver.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/obj/ssync_sender.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/obj/watchers/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/obj/watchers/dark_data.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/proxy/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/proxy/controllers/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/proxy/controllers/account.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/proxy/controllers/base.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/proxy/controllers/container.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/proxy/controllers/info.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/proxy/controllers/obj.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift/proxy/server.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift.egg-info/dependency_links.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift.egg-info/entry_points.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift.egg-info/not-zip-safe +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift.egg-info/requires.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/swift.egg-info/top_level.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/cors/README.rst +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/cors/harness.js +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/cors/index.html +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/cors/main.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/cors/test-account.js +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/cors/test-container.js +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/cors/test-info.js +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/cors/test-large-objects.js +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/cors/test-object.js +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/cors/test-s3-obj.js +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/cors/test-symlink.js +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/cors/vendor/aws-sdk-2.829.0.min.js +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/debug_logger.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/mock_swift_key_manager.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/s3_test_client.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/test_acl.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/test_bucket.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/test_multi_delete.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/test_multi_upload.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/test_object.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/test_presigned.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/test_service.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/test_versioning.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/test_xxe_injection.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/s3api/utils.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/swift_test_client.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/test_access_control.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/test_account.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/test_container.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/test_dlo.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/test_domain_remap.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/test_object.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/test_object_versioning.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/test_protocol.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/test_slo.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/test_staticweb.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/test_symlink.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/test_tempurl.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/test_versioned_writes.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/functional/tests.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/brain.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/common.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_account_failures.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_account_get_fake_responses_match.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_account_reaper.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_container_failures.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_container_merge_policy_index.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_container_sync.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_dark_data.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_db_replicator.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_empty_device_handoff.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_mpu.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_object_async_update.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_object_conditional_requests.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_object_expirer.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_object_failures.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_object_handoff.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_object_metadata_replication.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_object_partpower_increase.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_object_versioning.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_orphan_container.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_reconstructor_rebuild.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_reconstructor_revert.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_replication_servers_working.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_reserved_name.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_sharder.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/probe/test_signals.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/s3api/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/s3api/test_input_errors.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/s3api/test_mpu.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/s3api/test_object_checksums.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/s3api/test_object_lock.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/s3api/test_request_target_style.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/s3api/test_service.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/s3api/test_versioning.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/sample.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/account/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/account/test_auditor.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/account/test_backend.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/account/test_reaper.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/account/test_replicator.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/account/test_server.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/account/test_utils.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/cli/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_container_deleter.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_default_output.stub +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_default_output_id_assigned.stub +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_default_sorted_output.stub +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_dispersion_report.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_form_signature.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_info.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_ipv6_output.stub +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_manage_shard_ranges.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_recon.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_recon_cron.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_reload.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_ring_builder_analyzer.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_ringbuilder.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/cli/test_ringcomposer.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/corrupted_example.db +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/malformed_example.db +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/malformed_schema_example.db +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/crypto_helpers.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/test_crypto.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/test_crypto_utils.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/test_decrypter.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/test_encrypter.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/test_encryption.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/test_keymaster.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/test_kmip_keymaster.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/crypto/test_kms_keymaster.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/helpers.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/exceptions.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/helpers.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_acl.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_acl_handlers.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_acl_utils.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_bucket.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_cfg.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_etree.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_location.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_logging.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_multi_delete.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_multi_get.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_multi_upload.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_object_lock.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_s3_acl.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_s3response.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_s3token.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_service.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_subresource.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_utils.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/s3api/test_versioning.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_account_quotas.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_acl.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_backend_ratelimit.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_bulk.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_catch_errors.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_cname_lookup.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_container_sync.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_copy.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_crossdomain.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_dlo.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_domain_remap.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_etag_quoter.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_formpost.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_healthcheck.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_helpers.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_keystoneauth.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_list_endpoints.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_listing_formats.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_memcache.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_name_check.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_object_versioning.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_proxy_logging.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_quotas.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_ratelimit.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_read_only.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_recon.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_slo.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_staticweb.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_subrequest_logging.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_symlink.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_tempauth.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_tempurl.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_versioned_writes.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/middleware/test_xprofile.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/missing_container_info.db +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/ring/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/ring/test_builder.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/ring/test_composite_builder.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/ring/test_ring.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/ring/test_utils.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_base_storage_server.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_bufferedhttp.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_constraints.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_container_sync_realms.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_daemon.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_db_auditor.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_db_replicator.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_digest.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_direct_client.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_error_limiter.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_exceptions.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_header_key_dict.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_http_protocol.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_internal_client.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_linkat.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_manager.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_memcached.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_recon.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_registry.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_request_helpers.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_splice.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_statsd_client.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_storage_policy.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_utils.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/test_wsgi.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/utils/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/utils/test_config.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/utils/test_ipaddrs.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/utils/test_libc.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/utils/test_logs.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/common/utils/test_timestamp.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/container/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/container/test_auditor.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/container/test_backend.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/container/test_reconciler.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/container/test_replicator.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/container/test_server.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/container/test_sync.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/container/test_sync_store.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/container/test_updater.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/helpers.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/obj/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/obj/common.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_auditor.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_expirer.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_reconstructor.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_replicator.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_ssync.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_ssync_receiver.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/obj/test_ssync_sender.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/controllers/__init__.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/controllers/test_account.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/controllers/test_base.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/controllers/test_container.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/controllers/test_info.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/controllers/test_obj.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/test_mem_server.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/test_server.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test/unit/proxy/test_sysmeta.py +0 -0
- {swift-2.35.2 → swift-2.35.4}/test-requirements.txt +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/ceph-s3tests/ceph-s3.conf +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/ceph-s3tests/post.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/ceph-s3tests/run.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/common/cover-post.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/common/install_dependencies.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/common/restart_swift.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/cors/install_selenium.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/cors/post.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/cors/run.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/dsvm/post.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/dsvm/pre.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/dsvm/run.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/multinode_setup/common_config.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/multinode_setup/configure_loopback.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/multinode_setup/make_rings.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/multinode_setup/pre.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/multinode_setup/templates/make_multinode_rings.j2 +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/multinode_setup/templates/rc.local.j2 +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/multinode_setup/templates/test.conf.j2 +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/probetests/post.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/probetests/run.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/s3api-tests/run.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/saio_single_node_setup/add_s3api.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/saio_single_node_setup/make_rings.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/saio_single_node_setup/setup_saio.yaml +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/playbooks/saio_single_node_setup/templates/rc.local.j2 +0 -0
- {swift-2.35.2 → swift-2.35.4}/tools/test-setup.sh +0 -0
- {swift-2.35.2 → swift-2.35.4}/tox.ini +0 -0
|
@@ -23,7 +23,8 @@ Chmouel Boudjnah <chmouel@enovance.com> <chmouel@chmouel.com>
|
|
|
23
23
|
Gaurav B. Gangalwar <gaurav@gluster.com> gaurav@gluster.com <>
|
|
24
24
|
Joe Arnold <joe@swiftstack.com> <joe@cloudscaling.com>
|
|
25
25
|
Kapil Thangavelu <kapil.foss@gmail.com> kapil.foss@gmail.com <>
|
|
26
|
-
Samuel Merritt <
|
|
26
|
+
Samuel Merritt <smerritt@nvidia.com> <spam@andcheese.org>
|
|
27
|
+
Samuel Merritt <smerritt@nvidia.com> <sam@swiftstack.com>
|
|
27
28
|
Morita Kazutaka <morita.kazutaka@gmail.com>
|
|
28
29
|
Zhongyue Luo <zhongyue.nah@intel.com> <lzyeval@gmail.com>
|
|
29
30
|
Russ Nelson <russ@crynwr.com> <nelson@nelson-laptop>
|
|
@@ -52,8 +53,9 @@ Tom Fifield <tom@openstack.org> Tom Fifield <fifieldt@unimelb.edu.au>
|
|
|
52
53
|
Sascha Peilicke <saschpe@gmx.de> Sascha Peilicke <saschpe@suse.de>
|
|
53
54
|
Zhenguo Niu <zhenguo@unitedstack.com> <Niu.ZGlinux@gmail.com>
|
|
54
55
|
Peter Portante <peter.portante@redhat.com> <peter.a.portante@gmail.com>
|
|
55
|
-
Christian Schwede <cschwede@
|
|
56
|
-
Christian Schwede <cschwede@
|
|
56
|
+
Christian Schwede <cschwede@mailbox.org> <info@cschwede.de>
|
|
57
|
+
Christian Schwede <cschwede@mailbox.org> <cschwede@redhat.com>
|
|
58
|
+
Christian Schwede <cschwede@mailbox.org> <christian.schwede@enovance.com>
|
|
57
59
|
Constantine Peresypkin <constantine.peresypk@rackspace.com> <constantine@litestack.com>
|
|
58
60
|
Madhuri Kumari <madhuri.rai07@gmail.com> madhuri <madhuri@madhuri-VirtualBox.(none)>
|
|
59
61
|
Morgan Fainberg <morgan.fainberg@gmail.com> <m@metacloud.com>
|
|
@@ -146,3 +148,4 @@ Chris Smart <distroguy@gmail.com> <chris.smart@humanservices.gov.au>
|
|
|
146
148
|
Ashwin Nair <nairashwin952013@gmail.com> <ashnair@nvidia.com>
|
|
147
149
|
Chinemerem Chigbo <chinemeremchigbo@Outlook.com> Chinemerem
|
|
148
150
|
Chinemerem Chigbo <chinemeremchigbo@Outlook.com> <cchigbo@nvidia.com>
|
|
151
|
+
Tim Burke <tim.burke@gmail.com> <tburke@nvidia.com>
|
|
@@ -349,6 +349,11 @@
|
|
|
349
349
|
- tools/playbooks/cors/install_selenium.yaml
|
|
350
350
|
run: tools/playbooks/cors/run.yaml
|
|
351
351
|
post-run: tools/playbooks/cors/post.yaml
|
|
352
|
+
# TODO: OpenSSL 3.5.7 seems to have broken ansible's get_url, used to
|
|
353
|
+
# fetch selenium's firefox driver. For more info, see
|
|
354
|
+
# https://github.com/openssl/openssl/issues/31807
|
|
355
|
+
# Make this voting again once it starts passing again.
|
|
356
|
+
voting: false
|
|
352
357
|
|
|
353
358
|
- nodeset:
|
|
354
359
|
name: swift-five-nodes-centos-9
|
|
@@ -463,7 +468,7 @@
|
|
|
463
468
|
name: swift-multinode-rolling-upgrade-dalmatian
|
|
464
469
|
parent: swift-multinode-rolling-upgrade
|
|
465
470
|
vars:
|
|
466
|
-
previous_swift_version:
|
|
471
|
+
previous_swift_version: 2024.2-eol
|
|
467
472
|
tox_envlist: func-py3
|
|
468
473
|
|
|
469
474
|
- job:
|
|
@@ -575,6 +580,10 @@
|
|
|
575
580
|
description: This is integrated object-storage job testing on Ubuntu jammy(22.04)
|
|
576
581
|
parent: tempest-integrated-object-storage
|
|
577
582
|
nodeset: openstack-single-node-jammy
|
|
583
|
+
vars:
|
|
584
|
+
devstack_localrc:
|
|
585
|
+
TEMPEST_VENV_UPPER_CONSTRAINTS: '/opt/stack/requirements/upper-constraints.txt'
|
|
586
|
+
TEMPEST_BRANCH: '46.3.0'
|
|
578
587
|
|
|
579
588
|
- project-template:
|
|
580
589
|
name: swift-jobs-arm64
|
|
@@ -688,10 +697,9 @@
|
|
|
688
697
|
irrelevant-files: *tempest-irrelevant-files
|
|
689
698
|
- openstacksdk-functional-devstack:
|
|
690
699
|
irrelevant-files: *tempest-irrelevant-files
|
|
691
|
-
- grenade:
|
|
692
|
-
irrelevant-files: *tempest-irrelevant-files
|
|
693
|
-
- grenade-skip-level:
|
|
700
|
+
- grenade-skip-level-always:
|
|
694
701
|
irrelevant-files: *tempest-irrelevant-files
|
|
702
|
+
voting: false
|
|
695
703
|
gate:
|
|
696
704
|
jobs:
|
|
697
705
|
# For gate jobs, err towards running more jobs (so, generally avoid
|
|
@@ -730,10 +738,9 @@
|
|
|
730
738
|
irrelevant-files: *tempest-irrelevant-files
|
|
731
739
|
- openstacksdk-functional-devstack:
|
|
732
740
|
irrelevant-files: *tempest-irrelevant-files
|
|
733
|
-
- grenade:
|
|
734
|
-
irrelevant-files: *tempest-irrelevant-files
|
|
735
|
-
- grenade-skip-level:
|
|
741
|
+
- grenade-skip-level-always:
|
|
736
742
|
irrelevant-files: *tempest-irrelevant-files
|
|
743
|
+
voting: false
|
|
737
744
|
experimental:
|
|
738
745
|
jobs:
|
|
739
746
|
- swift-tox-py37
|
|
@@ -31,7 +31,7 @@ Greg Lange (greglange@gmail.com)
|
|
|
31
31
|
Janie Richling (jrichli@us.ibm.com)
|
|
32
32
|
Michael Barton (mike@weirdlooking.com)
|
|
33
33
|
Mahati Chamarthy (mahati.chamarthy@gmail.com)
|
|
34
|
-
Samuel Merritt (
|
|
34
|
+
Samuel Merritt (smerritt@nvidia.com)
|
|
35
35
|
Romain Le Disez (romain.ledisez@ovh.net)
|
|
36
36
|
|
|
37
37
|
Contributors
|
|
@@ -107,7 +107,7 @@ Chris Smart (distroguy@gmail.com)
|
|
|
107
107
|
Chris Wedgwood (cw@f00f.org)
|
|
108
108
|
Christian Berendt (berendt@b1-systems.de)
|
|
109
109
|
Christian Hugo (hugo.christian@web.de)
|
|
110
|
-
Christian Schwede (cschwede@
|
|
110
|
+
Christian Schwede (cschwede@mailbox.org)
|
|
111
111
|
Christopher Bartz (bartz@dkrz.de)
|
|
112
112
|
Christopher MacGown (chris@pistoncloud.com)
|
|
113
113
|
Chuck Short (chuck.short@canonical.com)
|
|
@@ -390,7 +390,6 @@ Russ Nelson (russ@crynwr.com)
|
|
|
390
390
|
Russell Bryant (rbryant@redhat.com)
|
|
391
391
|
Sachin Patil (psachin@redhat.com)
|
|
392
392
|
Sam Morrison (sorrison@gmail.com)
|
|
393
|
-
Samuel Merritt (sam@swiftstack.com)
|
|
394
393
|
Sarafraj Singh (Sarafraj.Singh@intel.com)
|
|
395
394
|
Sarvesh Ranjan (saranjan@cisco.com)
|
|
396
395
|
Sascha Peilicke (saschpe@gmx.de)
|
|
@@ -1,3 +1,44 @@
|
|
|
1
|
+
swift (2.35.4, epoxy stable backports)
|
|
2
|
+
|
|
3
|
+
* Fixed `Accept` header parsing to avoid excessive backtracking. Previously,
|
|
4
|
+
an unauthenticated user could send a malicious `Accept` header that would
|
|
5
|
+
keep a proxy-server process pegged at 100% CPU for several seconds.
|
|
6
|
+
Repeated requests would exhaust all available workers, leading to a
|
|
7
|
+
complete denial of service. Refer to CVE-2026-71190 for more information.
|
|
8
|
+
|
|
9
|
+
* Require that more `x-amz-*` headers be included in the set of signed
|
|
10
|
+
headers if present in an S3 API request. Previously an attacker could include
|
|
11
|
+
an unsigned `x-amz-copy-source` header with a valid presigned PUT to
|
|
12
|
+
copy arbitrary data accessible by the signer provided that the container
|
|
13
|
+
and object name were known. This required the default `s3_acl = False`
|
|
14
|
+
configuration. Refer to CVE-2026-71191 for more information.
|
|
15
|
+
|
|
16
|
+
* Limit native Swift control headers from S3 API requests. Previously these
|
|
17
|
+
could allow an attacker to copy arbitrary data to a bucket they control
|
|
18
|
+
provided they know the account, container, and object name to copy. This
|
|
19
|
+
required the non-default `s3_acl = True` configuration. Refer to
|
|
20
|
+
CVE-2026-71192 for more information.
|
|
21
|
+
|
|
22
|
+
* Prevent a crash when `AF_ALG` socket creation is denied by policy (such
|
|
23
|
+
as may be the case with recent versions of Docker).
|
|
24
|
+
|
|
25
|
+
swift (2.35.3, epoxy stable backports)
|
|
26
|
+
|
|
27
|
+
* Block client-supplied container-update headers. Previously, these could
|
|
28
|
+
be used to perform server-side request forgery (SSRF) attacks. Refer to
|
|
29
|
+
CVE-2026-50221 for more information.
|
|
30
|
+
|
|
31
|
+
* Restrict the types of data that may be sent between object servers and
|
|
32
|
+
replicators. Previously, if an object server were compromised, it could
|
|
33
|
+
use REPLICATE responses to attempt to compromise other nodes through
|
|
34
|
+
their replicators.
|
|
35
|
+
|
|
36
|
+
* Fixed an infinite loop in s3api when attempting to read from a truncated
|
|
37
|
+
aws-chunked input. This could be used as a Denial-of-Service vector
|
|
38
|
+
as the proxy-server process stopped handling other requests. Refer to
|
|
39
|
+
CVE-2026-49017 for more information.
|
|
40
|
+
|
|
41
|
+
|
|
1
42
|
swift (2.35.2, epoxy stable backports)
|
|
2
43
|
|
|
3
44
|
* The s3token middleware now passes service auth tokens to Keystone
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
security:
|
|
3
|
+
- |
|
|
4
|
+
Block client-supplied container-update headers. Previously, these could
|
|
5
|
+
be used to perform server-side request forgery (SSRF) attacks. Refer to
|
|
6
|
+
`CVE-2026-50221 <https://www.cve.org/CVERecord?id=CVE-2026-50221>`__ for
|
|
7
|
+
more information.
|
|
8
|
+
|
|
9
|
+
- |
|
|
10
|
+
Restrict the types of data that may be sent between object servers and
|
|
11
|
+
replicators. Previously, if an object server were compromised, it could
|
|
12
|
+
use REPLICATE responses to attempt to compromise other nodes through
|
|
13
|
+
their replicators.
|
|
14
|
+
|
|
15
|
+
- |
|
|
16
|
+
Fixed an infinite loop when attempting to read from a truncated
|
|
17
|
+
aws-chunked input. This could be used as a Denial-of-Service vector
|
|
18
|
+
as the proxy-server process stopped handling other requests. Refer to
|
|
19
|
+
`CVE-2026-49017 <https://www.cve.org/CVERecord?id=CVE-2026-49017>`__ for
|
|
20
|
+
more information.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
security:
|
|
3
|
+
- |
|
|
4
|
+
Fixed ``Accept`` header parsing to avoid excessive backtracking. Previously,
|
|
5
|
+
an unauthenticated user could send a malicious ``Accept`` header that would
|
|
6
|
+
keep a proxy-server process pegged at 100% CPU for several seconds.
|
|
7
|
+
Repeated requests would exhaust all available workers, leading to a
|
|
8
|
+
complete denial of service. Refer to
|
|
9
|
+
`CVE-2026-71190 <https://www.cve.org/CVERecord?id=CVE-2026-71190>`__
|
|
10
|
+
for more information.
|
|
11
|
+
|
|
12
|
+
- |
|
|
13
|
+
Require that more ``x-amz-*`` headers be included in the set of signed
|
|
14
|
+
headers if present in an S3 API request. Previously an attacker could include
|
|
15
|
+
an unsigned ``x-amz-copy-source`` header with a valid presigned PUT to
|
|
16
|
+
copy arbitrary data accessible by the signer provided that the container
|
|
17
|
+
and object name were known. This required the default ``s3_acl = False``
|
|
18
|
+
configuration. Refer to
|
|
19
|
+
`CVE-2026-71191 <https://www.cve.org/CVERecord?id=CVE-2026-71191>`__
|
|
20
|
+
for more information.
|
|
21
|
+
|
|
22
|
+
- |
|
|
23
|
+
Limit native Swift control headers from S3 API requests. Previously these
|
|
24
|
+
could allow an attacker to copy arbitrary data to a bucket they control
|
|
25
|
+
provided they know the account, container, and object name to copy. This
|
|
26
|
+
required the non-default ``s3_acl = True`` configuration. Refer to
|
|
27
|
+
`CVE-2026-71192 <https://www.cve.org/CVERecord?id=CVE-2026-71192>`__
|
|
28
|
+
for more information.
|
|
29
|
+
|
|
30
|
+
fixes:
|
|
31
|
+
- |
|
|
32
|
+
Prevent a crash when ``AF_ALG`` socket creation is denied by policy (such
|
|
33
|
+
as may be the case with recent versions of Docker).
|
|
@@ -31,6 +31,7 @@ import sqlite3
|
|
|
31
31
|
|
|
32
32
|
from swift.common.constraints import MAX_META_COUNT, MAX_META_OVERALL_SIZE, \
|
|
33
33
|
check_utf8
|
|
34
|
+
from swift.common.utils.pickle import unpickle
|
|
34
35
|
from swift.common.utils import Timestamp, renamer, \
|
|
35
36
|
mkdirs, lock_parent_directory, fallocate, md5
|
|
36
37
|
from swift.common.exceptions import LockTimeout
|
|
@@ -832,8 +833,8 @@ class DatabaseBroker(object):
|
|
|
832
833
|
for entry in fp.read().split(b':'):
|
|
833
834
|
if entry:
|
|
834
835
|
try:
|
|
835
|
-
data =
|
|
836
|
-
|
|
836
|
+
data = unpickle(base64.b64decode(entry),
|
|
837
|
+
encoding='utf8')
|
|
837
838
|
self._commit_puts_load(item_list, data)
|
|
838
839
|
except Exception:
|
|
839
840
|
self.logger.exception(
|
|
@@ -23,7 +23,6 @@ import os
|
|
|
23
23
|
import socket
|
|
24
24
|
|
|
25
25
|
from eventlet import sleep, Timeout
|
|
26
|
-
import pickle # nosec: B403
|
|
27
26
|
from http.client import HTTPException
|
|
28
27
|
|
|
29
28
|
from swift.common.bufferedhttp import http_connect, http_connect_raw
|
|
@@ -31,6 +30,7 @@ from swift.common.exceptions import ClientException
|
|
|
31
30
|
from swift.common.request_helpers import USE_REPLICATION_NETWORK_HEADER, \
|
|
32
31
|
get_ip_port
|
|
33
32
|
from swift.common.swob import normalize_etag
|
|
33
|
+
from swift.common.utils.pickle import unpickle
|
|
34
34
|
from swift.common.utils import Timestamp, FileLikeIter, quote
|
|
35
35
|
from swift.common.http import HTTP_NO_CONTENT, HTTP_INSUFFICIENT_STORAGE, \
|
|
36
36
|
is_success, is_server_error
|
|
@@ -656,7 +656,7 @@ def direct_get_suffix_hashes(node, part, suffixes, conn_timeout=5,
|
|
|
656
656
|
host={'ip': node['replication_ip'],
|
|
657
657
|
'port': node['replication_port']}
|
|
658
658
|
)
|
|
659
|
-
return
|
|
659
|
+
return unpickle(resp.read())
|
|
660
660
|
|
|
661
661
|
|
|
662
662
|
def retry(func, *args, **kwargs):
|
|
@@ -48,11 +48,17 @@ import re
|
|
|
48
48
|
# If adding to this list, note that these are regex patterns,
|
|
49
49
|
# so use a trailing $ to constrain to an exact header match
|
|
50
50
|
# rather than prefix match.
|
|
51
|
-
inbound_exclusions = [
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
inbound_exclusions = [
|
|
52
|
+
get_sys_meta_prefix('account'),
|
|
53
|
+
get_sys_meta_prefix('container'),
|
|
54
|
+
get_sys_meta_prefix('object'),
|
|
55
|
+
OBJECT_TRANSIENT_SYSMETA_PREFIX,
|
|
56
|
+
'x-backend',
|
|
57
|
+
# Block any update headers that predate x-backend headers
|
|
58
|
+
'x-account-(host|device|partition)$',
|
|
59
|
+
'x-container-(host|device|partition|root-db-state)$',
|
|
60
|
+
'x-delete-at-(host|device|partition|container)$',
|
|
61
|
+
]
|
|
56
62
|
|
|
57
63
|
|
|
58
64
|
#: A list of python regular expressions that will be used to
|
|
@@ -94,6 +94,24 @@ SIGV4_CHUNK_MIN_SIZE = 8192
|
|
|
94
94
|
SERVICE = 's3' # useful for mocking out in tests
|
|
95
95
|
|
|
96
96
|
|
|
97
|
+
SIGV4_MUST_BE_SIGNED_AMZ_PREFIXES = (
|
|
98
|
+
'x-amz-copy',
|
|
99
|
+
'x-amz-acl',
|
|
100
|
+
'x-amz-grant',
|
|
101
|
+
'x-amz-meta',
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
DISALLOWED_CLIENT_HEADERS = frozenset((
|
|
106
|
+
'x-copy-from',
|
|
107
|
+
'x-copy-from-account',
|
|
108
|
+
'x-symlink-target',
|
|
109
|
+
'x-symlink-target-account',
|
|
110
|
+
'x-object-manifest',
|
|
111
|
+
'x-static-large-object',
|
|
112
|
+
))
|
|
113
|
+
|
|
114
|
+
|
|
97
115
|
CHECKSUMS_BY_HEADER = {
|
|
98
116
|
'x-amz-checksum-crc32': checksum.crc32,
|
|
99
117
|
'x-amz-checksum-crc32c': checksum.crc32c,
|
|
@@ -430,6 +448,8 @@ class StreamingInput:
|
|
|
430
448
|
self._to_read -= len(buf)
|
|
431
449
|
if readline and buf[-1:] == b'\n':
|
|
432
450
|
break
|
|
451
|
+
if not buf and not self._completed_payload:
|
|
452
|
+
raise S3InputIncomplete
|
|
433
453
|
return b''.join(bufs)
|
|
434
454
|
|
|
435
455
|
def _read_trailers(self):
|
|
@@ -922,6 +942,14 @@ class SigV4Mixin(object):
|
|
|
922
942
|
(k.lower().strip(), ' '.join(_header_strip(v or '').split()))
|
|
923
943
|
for (k, v) in self.headers.items())
|
|
924
944
|
|
|
945
|
+
for key in headers_lower_dict:
|
|
946
|
+
key = swob.wsgi_to_str(key)
|
|
947
|
+
if (key not in self._signed_headers
|
|
948
|
+
and key.startswith(SIGV4_MUST_BE_SIGNED_AMZ_PREFIXES)):
|
|
949
|
+
raise AccessDenied(
|
|
950
|
+
'There were headers present in the request which were '
|
|
951
|
+
'not signed', headers_not_signed=key)
|
|
952
|
+
|
|
925
953
|
if 'host' in headers_lower_dict and re.match(
|
|
926
954
|
'Boto/2.[0-9].[0-2]',
|
|
927
955
|
headers_lower_dict.get('user-agent', '')):
|
|
@@ -1103,6 +1131,10 @@ class S3Request(swob.Request):
|
|
|
1103
1131
|
# by full URL when absolute path given. See swift.swob for more detail.
|
|
1104
1132
|
self.environ['swift.leave_relative_location'] = True
|
|
1105
1133
|
|
|
1134
|
+
for header in list(self.headers):
|
|
1135
|
+
if header.lower() in DISALLOWED_CLIENT_HEADERS:
|
|
1136
|
+
self.headers.pop(header, None)
|
|
1137
|
+
|
|
1106
1138
|
def validate_part_number(self, parts_count=None, check_max=True):
|
|
1107
1139
|
"""
|
|
1108
1140
|
Get the partNumber param, if it exists, and check it is valid.
|
|
@@ -697,7 +697,7 @@ class Accept(object):
|
|
|
697
697
|
|
|
698
698
|
# RFC 2616 section 2.2
|
|
699
699
|
token = r'[^()<>@,;:\"/\[\]?={}\x00-\x20\x7f]+' # nosec B105
|
|
700
|
-
qdtext = r'[^"]'
|
|
700
|
+
qdtext = r'[^"\\]'
|
|
701
701
|
quoted_pair = r'(?:\\.)'
|
|
702
702
|
quoted_string = r'"(?:' + qdtext + r'|' + quoted_pair + r')*"'
|
|
703
703
|
extension = (r'(?:\s*;\s*(?:' + token + r")\s*=\s*" + r'(?:' + token +
|
|
@@ -42,7 +42,7 @@ from optparse import OptionParser
|
|
|
42
42
|
import traceback
|
|
43
43
|
import warnings
|
|
44
44
|
|
|
45
|
-
from tempfile import gettempdir,
|
|
45
|
+
from tempfile import gettempdir, NamedTemporaryFile
|
|
46
46
|
import glob
|
|
47
47
|
import itertools
|
|
48
48
|
import stat
|
|
@@ -64,7 +64,6 @@ from eventlet.green import socket
|
|
|
64
64
|
import eventlet.hubs
|
|
65
65
|
import eventlet.queue
|
|
66
66
|
|
|
67
|
-
import pickle # nosec: B403
|
|
68
67
|
from configparser import (ConfigParser, NoSectionError,
|
|
69
68
|
NoOptionError)
|
|
70
69
|
from urllib.parse import unquote, urlparse
|
|
@@ -1501,28 +1500,6 @@ def cache_from_env(env, allow_none=False):
|
|
|
1501
1500
|
return item_from_env(env, 'swift.cache', allow_none)
|
|
1502
1501
|
|
|
1503
1502
|
|
|
1504
|
-
def write_pickle(obj, dest, tmp=None, pickle_protocol=0):
|
|
1505
|
-
"""
|
|
1506
|
-
Ensure that a pickle file gets written to disk. The file
|
|
1507
|
-
is first written to a tmp location, ensure it is synced to disk, then
|
|
1508
|
-
perform a move to its final location
|
|
1509
|
-
|
|
1510
|
-
:param obj: python object to be pickled
|
|
1511
|
-
:param dest: path of final destination file
|
|
1512
|
-
:param tmp: path to tmp to use, defaults to None
|
|
1513
|
-
:param pickle_protocol: protocol to pickle the obj with, defaults to 0
|
|
1514
|
-
"""
|
|
1515
|
-
if tmp is None:
|
|
1516
|
-
tmp = os.path.dirname(dest)
|
|
1517
|
-
mkdirs(tmp)
|
|
1518
|
-
fd, tmppath = mkstemp(dir=tmp, suffix='.tmp')
|
|
1519
|
-
with os.fdopen(fd, 'wb') as fo:
|
|
1520
|
-
pickle.dump(obj, fo, pickle_protocol)
|
|
1521
|
-
fo.flush()
|
|
1522
|
-
os.fsync(fd)
|
|
1523
|
-
renamer(tmppath, dest)
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
1503
|
def search_tree(root, glob_match, ext='', exts=None, dir_ext=None):
|
|
1527
1504
|
"""Look in root, for any files/dirs matching glob, recursively traversing
|
|
1528
1505
|
any found directories looking for files ending with ext
|
|
@@ -106,7 +106,8 @@ except OSError as e:
|
|
|
106
106
|
if e.errno == errno.ENOENT:
|
|
107
107
|
# could create socket, but crc32c is unknown
|
|
108
108
|
_sock.close()
|
|
109
|
-
elif e.errno
|
|
109
|
+
elif e.errno not in (errno.EAFNOSUPPORT, errno.EPERM, errno.EACCES):
|
|
110
|
+
# EPERM/EACCES: sandboxes such as Docker >= 29 deny AF_ALG
|
|
110
111
|
raise
|
|
111
112
|
crc32c_kern = None
|
|
112
113
|
else:
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Copyright (c) 2010-2026 OpenStack Foundation
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
12
|
+
# implied.
|
|
13
|
+
# See the License for the specific language governing permissions and
|
|
14
|
+
# limitations under the License.
|
|
15
|
+
|
|
16
|
+
import _codecs
|
|
17
|
+
import copyreg
|
|
18
|
+
import io
|
|
19
|
+
import os
|
|
20
|
+
import pickle # nosec: B403
|
|
21
|
+
from tempfile import mkstemp
|
|
22
|
+
|
|
23
|
+
from swift.common import header_key_dict
|
|
24
|
+
from swift.common.utils import mkdirs, renamer
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def write_pickle(obj, dest, tmp=None, pickle_protocol=0):
|
|
28
|
+
"""
|
|
29
|
+
Ensure that a pickle file gets written to disk. The file
|
|
30
|
+
is first written to a tmp location, ensure it is synced to disk, then
|
|
31
|
+
perform a move to its final location
|
|
32
|
+
|
|
33
|
+
:param obj: python object to be pickled
|
|
34
|
+
:param dest: path of final destination file
|
|
35
|
+
:param tmp: path to tmp to use, defaults to None
|
|
36
|
+
:param pickle_protocol: protocol to pickle the obj with, defaults to 0
|
|
37
|
+
"""
|
|
38
|
+
if tmp is None:
|
|
39
|
+
tmp = os.path.dirname(dest)
|
|
40
|
+
mkdirs(tmp)
|
|
41
|
+
fd, tmppath = mkstemp(dir=tmp, suffix='.tmp')
|
|
42
|
+
with os.fdopen(fd, 'wb') as fo:
|
|
43
|
+
pickle.dump(obj, fo, pickle_protocol)
|
|
44
|
+
fo.flush()
|
|
45
|
+
os.fsync(fd)
|
|
46
|
+
renamer(tmppath, dest)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
_ALLOWED_GLOBALS = {
|
|
50
|
+
('_codecs', 'encode'): _codecs.encode,
|
|
51
|
+
# Needed for HeaderKeyDict
|
|
52
|
+
('copy_reg', '_reconstructor'): copyreg._reconstructor,
|
|
53
|
+
('copyreg', '_reconstructor'): copyreg._reconstructor,
|
|
54
|
+
('swift.common.header_key_dict', 'HeaderKeyDict'):
|
|
55
|
+
header_key_dict.HeaderKeyDict,
|
|
56
|
+
('builtins', 'dict'): dict,
|
|
57
|
+
('__builtin__', 'dict'): dict,
|
|
58
|
+
('builtins', 'bytes'): bytes,
|
|
59
|
+
('__builtin__', 'bytes'): bytes,
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
class RestrictedUnpickler(pickle.Unpickler):
|
|
64
|
+
def find_class(self, module, name):
|
|
65
|
+
try:
|
|
66
|
+
return _ALLOWED_GLOBALS[(module, name)]
|
|
67
|
+
except KeyError:
|
|
68
|
+
# Forbid any other loading
|
|
69
|
+
raise pickle.UnpicklingError(
|
|
70
|
+
f"global '{module}.{name}' is forbidden")
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def unpickle(source, encoding='ASCII'):
|
|
74
|
+
"""Helper function analogous to pickle.loads()."""
|
|
75
|
+
if isinstance(source, bytes):
|
|
76
|
+
source = io.BytesIO(source)
|
|
77
|
+
return RestrictedUnpickler(source, encoding=encoding).load()
|
|
@@ -746,7 +746,8 @@ class ContainerBroker(DatabaseBroker):
|
|
|
746
746
|
Mark an object deleted.
|
|
747
747
|
|
|
748
748
|
:param name: object name to be deleted
|
|
749
|
-
:param timestamp:
|
|
749
|
+
:param timestamp: string representation of the timestamp when the
|
|
750
|
+
object was marked as deleted
|
|
750
751
|
:param storage_policy_index: the storage policy index for the object
|
|
751
752
|
"""
|
|
752
753
|
self.put_object(name, timestamp, 0, 'application/deleted', 'noetag',
|
|
@@ -766,16 +767,18 @@ class ContainerBroker(DatabaseBroker):
|
|
|
766
767
|
Creates an object in the DB with its metadata.
|
|
767
768
|
|
|
768
769
|
:param name: object name to be created
|
|
769
|
-
:param timestamp:
|
|
770
|
+
:param timestamp: string representation of the timestamp when the
|
|
771
|
+
object was created
|
|
770
772
|
:param size: object size
|
|
771
773
|
:param content_type: object content-type
|
|
772
774
|
:param etag: object etag
|
|
773
775
|
:param deleted: if True, marks the object as deleted and sets the
|
|
774
776
|
deleted_at timestamp to timestamp
|
|
775
777
|
:param storage_policy_index: the storage policy index for the object
|
|
776
|
-
:param ctype_timestamp:
|
|
777
|
-
|
|
778
|
-
:param meta_timestamp:
|
|
778
|
+
:param ctype_timestamp: string representation of the timestamp when
|
|
779
|
+
content_type was last updated, or None
|
|
780
|
+
:param meta_timestamp: string representation of the timestamp when
|
|
781
|
+
metadata was last updated, or None
|
|
779
782
|
"""
|
|
780
783
|
record = {'name': name, 'created_at': timestamp, 'size': size,
|
|
781
784
|
'content_type': content_type, 'etag': etag,
|
|
@@ -57,9 +57,10 @@ from pyeclib.ec_iface import ECDriverError, ECInvalidFragmentMetadata, \
|
|
|
57
57
|
|
|
58
58
|
from swift.common.constraints import check_drive
|
|
59
59
|
from swift.common.request_helpers import is_sys_meta
|
|
60
|
+
from swift.common.utils.pickle import unpickle, write_pickle
|
|
60
61
|
from swift.common.utils import mkdirs, Timestamp, \
|
|
61
62
|
storage_directory, hash_path, renamer, fallocate, fsync, fdatasync, \
|
|
62
|
-
fsync_dir, drop_buffer_cache, lock_path,
|
|
63
|
+
fsync_dir, drop_buffer_cache, lock_path, \
|
|
63
64
|
config_true_value, listdir, split_path, remove_file, \
|
|
64
65
|
get_md5_socket, F_SETPIPE_SZ, decode_timestamps, encode_timestamps, \
|
|
65
66
|
MD5_OF_EMPTY_STRING, link_fd_to_path, \
|
|
@@ -237,7 +238,7 @@ def read_metadata(fd, add_missing_checksum=False):
|
|
|
237
238
|
# strings are utf-8 encoded when written, but have not always been
|
|
238
239
|
# (see https://bugs.launchpad.net/swift/+bug/1678018) so encode them again
|
|
239
240
|
# when read
|
|
240
|
-
metadata =
|
|
241
|
+
metadata = unpickle(metadata, encoding='bytes')
|
|
241
242
|
return _decode_metadata(metadata, metadata_written_by_py3)
|
|
242
243
|
|
|
243
244
|
|
|
@@ -360,7 +361,7 @@ def read_hashes(partition_dir):
|
|
|
360
361
|
pass
|
|
361
362
|
else:
|
|
362
363
|
try:
|
|
363
|
-
hashes =
|
|
364
|
+
hashes = unpickle(pickled_hashes)
|
|
364
365
|
except Exception:
|
|
365
366
|
# pickle.loads() can raise a wide variety of exceptions when
|
|
366
367
|
# given invalid input depending on the way in which the
|
|
@@ -21,7 +21,6 @@ from os.path import join
|
|
|
21
21
|
import random
|
|
22
22
|
import time
|
|
23
23
|
from collections import defaultdict
|
|
24
|
-
import pickle # nosec: B403
|
|
25
24
|
import shutil
|
|
26
25
|
|
|
27
26
|
from eventlet import (GreenPile, GreenPool, Timeout, sleep, tpool, spawn)
|
|
@@ -34,6 +33,7 @@ from swift.common.utils import (
|
|
|
34
33
|
load_recon_cache, parse_override_options, distribute_evenly,
|
|
35
34
|
remove_directory, config_request_node_count_value,
|
|
36
35
|
non_negative_int, get_prefixed_logger)
|
|
36
|
+
from swift.common.utils.pickle import unpickle
|
|
37
37
|
from swift.common.header_key_dict import HeaderKeyDict
|
|
38
38
|
from swift.common.bufferedhttp import http_connect
|
|
39
39
|
from swift.common.daemon import Daemon, run_daemon
|
|
@@ -934,7 +934,7 @@ class ObjectReconstructor(Daemon):
|
|
|
934
934
|
"Invalid response %(resp)s from %(full_path)s",
|
|
935
935
|
{'resp': resp.status, 'full_path': full_path})
|
|
936
936
|
else:
|
|
937
|
-
remote_suffixes =
|
|
937
|
+
remote_suffixes = unpickle(resp.read())
|
|
938
938
|
except (Exception, Timeout):
|
|
939
939
|
# all exceptions are logged here so that our caller can
|
|
940
940
|
# safely catch our exception and continue to the next node
|
|
@@ -22,7 +22,6 @@ import random
|
|
|
22
22
|
import shutil
|
|
23
23
|
import time
|
|
24
24
|
import itertools
|
|
25
|
-
import pickle # nosec: B403
|
|
26
25
|
|
|
27
26
|
import eventlet
|
|
28
27
|
from eventlet import GreenPool, queue, tpool, Timeout, sleep
|
|
@@ -36,6 +35,7 @@ from swift.common.utils import whataremyips, unlink_older_than, \
|
|
|
36
35
|
config_auto_int_value, storage_directory, load_recon_cache, EUCLEAN, \
|
|
37
36
|
parse_override_options, distribute_evenly, listdir, node_to_string, \
|
|
38
37
|
get_prefixed_logger
|
|
38
|
+
from swift.common.utils.pickle import unpickle
|
|
39
39
|
from swift.common.bufferedhttp import http_connect
|
|
40
40
|
from swift.common.daemon import Daemon, run_daemon
|
|
41
41
|
from swift.common.http import HTTP_OK, HTTP_INSUFFICIENT_STORAGE
|
|
@@ -709,8 +709,7 @@ class ObjectReplicator(Daemon):
|
|
|
709
709
|
failure_devs_info.add((node['replication_ip'],
|
|
710
710
|
node['device']))
|
|
711
711
|
continue
|
|
712
|
-
remote_hash =
|
|
713
|
-
resp.read()) # nosec: B301
|
|
712
|
+
remote_hash = unpickle(resp.read())
|
|
714
713
|
finally:
|
|
715
714
|
conn.close()
|
|
716
715
|
del resp
|
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
# limitations under the License.
|
|
15
15
|
import queue
|
|
16
16
|
|
|
17
|
-
import pickle # nosec: B403
|
|
18
17
|
import errno
|
|
19
18
|
import os
|
|
20
19
|
import signal
|
|
@@ -31,7 +30,8 @@ from swift.common.bufferedhttp import http_connect
|
|
|
31
30
|
from swift.common.constraints import check_drive
|
|
32
31
|
from swift.common.exceptions import ConnectionTimeout
|
|
33
32
|
from swift.common.ring import Ring
|
|
34
|
-
from swift.common.utils import
|
|
33
|
+
from swift.common.utils.pickle import unpickle, write_pickle
|
|
34
|
+
from swift.common.utils import get_logger, renamer, \
|
|
35
35
|
dump_recon_cache, config_true_value, RateLimitedIterator, split_path, \
|
|
36
36
|
eventlet_monkey_patch, get_redirect_data, ContextPool, hash_path, \
|
|
37
37
|
non_negative_float, config_positive_int_value, non_negative_int, \
|
|
@@ -645,13 +645,22 @@ class ObjectUpdater(Daemon):
|
|
|
645
645
|
)
|
|
646
646
|
|
|
647
647
|
def _load_update(self, device, update_path):
|
|
648
|
+
pickle_data = None
|
|
648
649
|
try:
|
|
649
|
-
|
|
650
|
+
with open(update_path, 'rb') as fp:
|
|
651
|
+
pickle_data = fp.read()
|
|
652
|
+
return unpickle(pickle_data)
|
|
650
653
|
except Exception as e:
|
|
651
654
|
if getattr(e, 'errno', None) == errno.ENOENT:
|
|
652
|
-
return
|
|
653
|
-
|
|
654
|
-
|
|
655
|
+
return None
|
|
656
|
+
if pickle_data is None:
|
|
657
|
+
self.logger.exception(
|
|
658
|
+
'ERROR Pickle problem reading, quarantining %s',
|
|
659
|
+
update_path)
|
|
660
|
+
else:
|
|
661
|
+
self.logger.exception(
|
|
662
|
+
'ERROR Pickle problem unpickling, quarantining %s',
|
|
663
|
+
update_path)
|
|
655
664
|
self.stats.quarantines += 1
|
|
656
665
|
self.logger.increment('quarantines')
|
|
657
666
|
target_path = os.path.join(device, 'quarantined', 'objects',
|
|
@@ -664,7 +673,7 @@ class ObjectUpdater(Daemon):
|
|
|
664
673
|
os.rmdir(os.path.dirname(update_path))
|
|
665
674
|
except OSError:
|
|
666
675
|
pass
|
|
667
|
-
return
|
|
676
|
+
return None
|
|
668
677
|
|
|
669
678
|
def _iter_async_pendings(self, device):
|
|
670
679
|
"""
|