)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"ef3106d3fe20f47db7d32012e97832e773fa85e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"0226cde7_d1f8e585","updated":"2025-08-22 17:47:43.000000000","message":"Huh, for me this is what it looks like when I have s3_acl \u003d False and `s3_acl_tests_enabled \u003d True` - maybe I screwed up the handling of the legacy double negative config?\n\n```\nFAILED test/s3api/test_service.py::TestGetServiceSigV4::test_existing_service_client3 - botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied.\nFAILED test/s3api/test_service.py::TestGetServiceSigV4::test_service_with_buckets_client2 - AssertionError: Lists differ: [\u0027s3api-test-bucket0-d39a15120a234ed4b442da171ac5c2ee\u0027, \u0027s3api[208 chars]ea0\u0027] !\u003d [\u0027s3api-test-bucket0-b05d48040291...\nFAILED test/s3api/test_service.py::TestGetServiceSigV4::test_service_with_buckets_client3 - botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied.\nFAILED test/s3api/test_service.py::TestGetServiceSigV2::test_existing_service_client3 - botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied.\nFAILED test/s3api/test_service.py::TestGetServiceSigV2::test_service_with_buckets_client2 - AssertionError: Lists differ: [\u0027s3api-test-bucket0-98087d701fc742549ae0d954ca865063\u0027, \u0027s3api[208 chars]be2\u0027] !\u003d [\u0027s3api-test-bucket0-0a8bb4f44306...\nFAILED test/s3api/test_service.py::TestGetServiceSigV2::test_service_with_buckets_client3 - botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied.\nFAILED test/s3api/test_service.py::TestGetServicePresignedV2::test_existing_service_client3 - botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied.\nFAILED test/s3api/test_service.py::TestGetServicePresignedV2::test_service_with_buckets_client2 - AssertionError: Lists differ: [\u0027s3a[64 chars]ucket1-d708d9c495c541a8a7600794e59b606f\u0027, \u0027s3a[155 chars]9cc\u0027] !\u003d [\u0027s3a[64 chars]ucket0-a5d6ec...\nFAILED test/s3api/test_service.py::TestGetServicePresignedV2::test_service_with_buckets_client3 - botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied.\nFAILED test/s3api/test_service.py::TestGetServicePresignedV4::test_existing_service_client3 - botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied.\nFAILED test/s3api/test_service.py::TestGetServicePresignedV4::test_service_with_buckets_client2 - AssertionError: Lists differ: [\u0027s3a[64 chars]ucket1-dc3e2faa47e14a398dc8ada989ee37f0\u0027, \u0027s3a[155 chars]9a6\u0027] !\u003d [\u0027s3a[64 chars]ucket0-a10f28...\nFAILED test/s3api/test_service.py::TestGetServicePresignedV4::test_service_with_buckets_client3 - botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied.\n```","commit_id":"39983167ea0291ff5c768c49d7b53f0161523ed1"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"518a8d8907fb4a33a84ba6b11c3191b45f8df146","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"66026a90_dde2a759","updated":"2025-08-25 14:54:29.000000000","message":"the s3_acl_tests_disabled \u003d False option is overwritten in roles/dsvm-additional-middlewares/tasks/main.yaml but because I let the default s3_acl_tests_enabled \u003d True in test/sample.conf take precedence I end up running the s3api cross-compat suite against keystone with tests that are only useful with tempauth!\n\nI could\n1) fix the ansible to use the new option\n2) fix the legacy config handling to prefer the legacy option\n3) revert the attempts to fix the double-negative","commit_id":"39983167ea0291ff5c768c49d7b53f0161523ed1"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"473c56fca3f1727d3de22d80216545287245bcdb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"aa8ad6fa_eea24578","updated":"2025-10-08 14:47:52.000000000","message":"test_service.py currently fails for me and this patch fixes it by ignoring existing buckets in the test account. Thank you!\n\nI\u0027m ambivalent about the drive-by. I don\u0027t find the inverted sense of the config any more or less intuitive (enabled\u003dFalse vs disabled\u003dTrue) but since the legacy option is still supported (I checked on my vsaio with ``s3_acl_tests_disabled \u003d True``) it\u0027s fine.\n\nI ran test_service.py against my S3 account.\n\nOn master:\n```\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d short test summary info \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nSKIPPED [4] test/s3api/test_service.py:36: must supply [s3api_test]access_key3\nSKIPPED [4] test/s3api/test_service.py:67: must supply [s3api_test]access_key2\nSKIPPED [4] test/s3api/test_service.py:80: must supply [s3api_test]access_key3\nFAILED test/s3api/test_service.py::TestGetServiceSigV4::test_empty_service - AssertionError: Lists differ: [] !\u003d [{\u0027Name\u0027: \u00271space-...\nFAILED test/s3api/test_service.py::TestGetServiceSigV4::test_service_with_buckets - AssertionError: Lists differ: [\u0027s3api-test-buck...\nFAILED test/s3api/test_service.py::TestGetServiceSigV2::test_empty_service - AssertionError: Lists differ: [] !\u003d [{\u0027Name\u0027: \u00271space-...\nFAILED test/s3api/test_service.py::TestGetServiceSigV2::test_service_with_buckets - AssertionError: Lists differ: [\u0027s3api-test-buck...\nFAILED test/s3api/test_service.py::TestGetServicePresignedV2::test_empty_service - AssertionError: Lists differ: [] !\u003d [{\u0027Name\u0027: \u00271...\nFAILED test/s3api/test_service.py::TestGetServicePresignedV2::test_service_with_buckets - AssertionError: Lists differ: [\u0027s3api-tes...\nFAILED test/s3api/test_service.py::TestGetServicePresignedV4::test_empty_service - AssertionError: Lists differ: [] !\u003d [{\u0027Name\u0027: \u00271...\nFAILED test/s3api/test_service.py::TestGetServicePresignedV4::test_service_with_buckets - AssertionError: Lists differ: [\u0027s3api-tes...\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d 8 failed, 12 skipped in 28.03s \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n```\n\nwith this patch:\n```\n(acoles) ~/0dev/openstack/swift{review/alistair_coles/p-mpu-custom-async-updates} % review 958291\nDownloading refs/changes/91/958291/2 from gerrit\nSwitched to branch \"review/clay_gerrard/958291\"\n(acoles) ~/0dev/openstack/swift{review/clay_gerrard/958291} % SWIFT_TEST_AWS_CONFIG_FILE\u003d~/.aws/credentials pytest ./test/s3api/test_service.py\n\n\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d test session starts \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nplatform darwin -- Python 3.8.15, pytest-6.2.5, py-1.11.0, pluggy-1.2.0 -- /Users/acoles/.pyenv/versions/3.8.15/envs/swift-3.8.15/bin/python\ncachedir: .pytest_cache\nrootdir: /Users/acoles/0dev/openstack/swift, configfile: tox.ini\nplugins: cov-2.12.1, repeat-0.9.3, subtests-0.13.1, flake8-1.1.0\ncollected 20 items\n\ntest/s3api/test_service.py::TestGetServiceSigV4::test_existing_service PASSED                                                  [  5%]\ntest/s3api/test_service.py::TestGetServiceSigV4::test_existing_service_client3 SKIPPED (must supply [s3api_test]access_key3)   [ 10%]\ntest/s3api/test_service.py::TestGetServiceSigV4::test_service_with_buckets PASSED                                              [ 15%]\ntest/s3api/test_service.py::TestGetServiceSigV4::test_service_with_buckets_client2 SKIPPED (must supply [s3api_test]access...) [ 20%]\ntest/s3api/test_service.py::TestGetServiceSigV4::test_service_with_buckets_client3 SKIPPED (must supply [s3api_test]access...) [ 25%]\ntest/s3api/test_service.py::TestGetServiceSigV2::test_existing_service PASSED                                                  [ 30%]\ntest/s3api/test_service.py::TestGetServiceSigV2::test_existing_service_client3 SKIPPED (must supply [s3api_test]access_key3)   [ 35%]\ntest/s3api/test_service.py::TestGetServiceSigV2::test_service_with_buckets PASSED                                              [ 40%]\ntest/s3api/test_service.py::TestGetServiceSigV2::test_service_with_buckets_client2 SKIPPED (must supply [s3api_test]access...) [ 45%]\ntest/s3api/test_service.py::TestGetServiceSigV2::test_service_with_buckets_client3 SKIPPED (must supply [s3api_test]access...) [ 50%]\ntest/s3api/test_service.py::TestGetServicePresignedV2::test_existing_service PASSED                                            [ 55%]\ntest/s3api/test_service.py::TestGetServicePresignedV2::test_existing_service_client3 SKIPPED (must supply [s3api_test]acce...) [ 60%]\ntest/s3api/test_service.py::TestGetServicePresignedV2::test_service_with_buckets PASSED                                        [ 65%]\ntest/s3api/test_service.py::TestGetServicePresignedV2::test_service_with_buckets_client2 SKIPPED (must supply [s3api_test]...) [ 70%]\ntest/s3api/test_service.py::TestGetServicePresignedV2::test_service_with_buckets_client3 SKIPPED (must supply [s3api_test]...) [ 75%]\ntest/s3api/test_service.py::TestGetServicePresignedV4::test_existing_service PASSED                                            [ 80%]\ntest/s3api/test_service.py::TestGetServicePresignedV4::test_existing_service_client3 SKIPPED (must supply [s3api_test]acce...) [ 85%]\ntest/s3api/test_service.py::TestGetServicePresignedV4::test_service_with_buckets PASSED                                        [ 90%]\ntest/s3api/test_service.py::TestGetServicePresignedV4::test_service_with_buckets_client2 SKIPPED (must supply [s3api_test]...) [ 95%]\ntest/s3api/test_service.py::TestGetServicePresignedV4::test_service_with_buckets_client3 SKIPPED (must supply [s3api_test]...) [100%]\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d short test summary info \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nSKIPPED [4] test/s3api/test_service.py:73: must supply [s3api_test]access_key3\nSKIPPED [4] test/s3api/test_service.py:107: must supply [s3api_test]access_key2\nSKIPPED [4] test/s3api/test_service.py:121: must supply [s3api_test]access_key3\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d 8 passed, 12 skipped in 33.48s \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n```","commit_id":"b5e6964a223eb7b5bd3225c6da66ddced11bcd96"}]}
