, line 1)
-fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket object HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:other:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:15 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG:
+test:testertest:testertest:full_controltest:full_controlFULL_CONTROLtest:readtest:readREADtest:writetest:writeWRITEtest:read_acptest:read_acpREAD_ACPtest:write_acptest:write_acpWRITE_ACP
+fake-swift DEBUG: permission denined: 403 Forbidden test:other READ
fake-swift DEBUG: Calling S3Api Middleware
fake-swift DEBUG: Calling S3Api Middleware
fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket object GET {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:15 -0000', 'User-Agent': 'Mozzarella Foxfire'}
fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket object GET {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:15 -0000', 'User-Agent': 'Mozzarella Foxfire'}
fake-swift DEBUG: Calling S3Api Middleware
fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:15 -0000', 'User-Agent': 'Mozzarella Foxfire'}
fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket object HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:15 -0000', 'User-Agent': 'Mozzarella Foxfire'}test.unit.common.middleware.s3api.test_obj.TestS3ApiObjAcl.test_non_slo_object_GET_part_num_invalid
+test.unit.common.middleware.s3api.test_obj.TestS3ApiObjAcl.test_non_slo_object_GET_part_num_invalid ... ok
+test.unit.common.middleware.s3api.test_obj.TestS3ApiObjAcl.test_non_slo_object_GET_part_num_not_satisfiable
+test.unit.common.middleware.s3api.test_obj.TestS3ApiObjAcl.test_non_slo_object_GET_part_num_not_satisfiable ... ok
+test.unit.container.test_backend.TestContainerBroker.test_get_objects_since_row
+test.unit.container.test_backend.TestContainerBroker.test_get_objects_since_row ... ok
+test.unit.container.test_backend.TestContainerBrokerBeforeSPI.test_empty_old_style_shard_container
+test.unit.container.test_backend.TestContainerBrokerBeforeSPI.test_empty_old_style_shard_container ... ok
+test.unit.container.test_backend.TestContainerBroker.test_get_own_shard_range
+test.unit.container.test_backend.TestContainerBroker.test_get_own_shard_range ... ok
+test.unit.container.test_backend.TestContainerBroker.test_get_policy_info
+test.unit.container.test_backend.TestContainerBroker.test_get_policy_info ... ok
+test.unit.container.test_backend.TestContainerBroker.test_get_replication_info
+test.unit.container.test_backend.TestContainerBroker.test_get_replication_info ... ok
+test.unit.container.test_backend.TestContainerBroker.test_get_report_info
+test.unit.container.test_backend.TestContainerBroker.test_get_report_info ... ok
+test.unit.container.test_backend.TestContainerBroker.test_get_shard_range_rows_with_limit
+test.unit.container.test_backend.TestContainerBroker.test_get_shard_range_rows_with_limit ... ok
+test.unit.container.test_backend.TestContainerBroker.test_get_shard_ranges
+test.unit.container.test_backend.TestContainerBroker.test_get_shard_ranges ... ok
+test.unit.container.test_backend.TestContainerBroker.test_get_shard_ranges_includes
+test.unit.container.test_backend.TestContainerBroker.test_get_shard_ranges_includes ... ok
+test.unit.container.test_backend.TestContainerBroker.test_get_shard_ranges_with_sharding_overlaps
+test.unit.container.test_backend.TestContainerBroker.test_get_shard_ranges_with_sharding_overlaps ... ok
+test.unit.container.test_backend.TestContainerBroker.test_get_shard_ranges_with_shrinking_overlaps
+test.unit.container.test_backend.TestContainerBroker.test_get_shard_ranges_with_shrinking_overlaps ... ok
+test.unit.container.test_backend.TestContainerBroker.test_get_shard_usage
+test.unit.container.test_backend.TestContainerBroker.test_get_shard_usage ... ok
+test.unit.container.test_backend.TestContainerBroker.test_has_multiple_policies
+test.unit.container.test_backend.TestContainerBroker.test_has_multiple_policies ... ok
+test.unit.container.test_backend.TestContainerBroker.test_has_other_shard_ranges
+test.unit.container.test_backend.TestContainerBroker.test_has_other_shard_ranges ... ok
+test.unit.container.test_backend.TestContainerBroker.test_initialize_container_broker_in_default
+test.unit.container.test_backend.TestContainerBroker.test_initialize_container_broker_in_default ... ok
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/%00null%00test01" 201 - "-" "-" "-" 0.0009 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/%00null%00test02" 201 - "-" "-" "-" 0.0018 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 2 "-" "-" "-" 0.0018 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 218 "-" "-" "-" 0.0014 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 109 "-" "-" "-" 0.0014 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a" 202 - "-" "-" "-" 0.0012 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/%00null%00test01" 201 - "-" "-" "-" 0.0008 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/%00null%00test02" 201 - "-" "-" "-" 0.0015 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/%00null%00test03" 201 - "-" "-" "-" 0.0016 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 219 "-" "-" "-" 0.0019 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 110 "-" "-" "-" 0.0013 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a" 201 - "-" "-" "-" 0.0026 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/c_nulo" 201 - "-" "-" "-" 0.0009 "-" 3324110 0
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/c_unu" 201 - "-" "-" "-" 0.0015 "-" 3324110 1
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "HEAD /sda1/p/a" 204 - "-" "-" "-" 0.0770 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a" 201 - "-" "-" "-" 0.0030 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/%00null%00" 201 - "-" "-" "-" 0.0010 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/%00null%00test01" 201 - "-" "-" "-" 0.0016 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/null" 201 - "-" "-" "-" 0.0016 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 92 "-" "-" "-" 0.0020 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 304 "-" "-" "-" 0.0014 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 201 "-" "-" "-" 0.0014 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 201 "-" "-" "-" 0.0014 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a" 201 - "-" "-" "-" 0.0027 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 68 "-" "-" "-" 0.0013 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 2 "-" "-" "-" 0.0013 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 400 37 "-" "-" "-" 0.0002 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 400 33 "-" "-" "-" 0.0001 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 400 34 "-" "-" "-" 0.0000 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 400 34 "-" "-" "-" 0.0000 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 400 38 "-" "-" "-" 0.0000 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 400 34 "-" "-" "-" 0.0000 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a" 201 - "-" "-" "-" 0.0026 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 204 - "-" "-" "-" 0.0011 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 204 - "-" "-" "-" 0.0011 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 204 - "-" "-" "-" 0.0011 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 204 - "-" "-" "-" 0.0011 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 204 - "-" "-" "-" 0.0010 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 204 - "-" "-" "-" 0.0010 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a" 201 - "-" "-" "-" 0.0026 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/c1" 201 - "-" "-" "-" 0.0009 "-" 3324110 1
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 3 "-" "-" "-" 0.0020 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "HEAD /sda1/p/a" 204 - "-" "-" "-" 0.0010 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a" 201 - "-" "-" "-" 0.0061 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/c1" 201 - "-" "-" "-" 0.0010 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 3 "-" "-" "-" 0.0019 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "HEAD /sda1/p/a" 204 - "-" "-" "-" 0.0011 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a" 201 - "-" "-" "-" 0.0027 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/%00null%00test01" 201 - "-" "-" "-" 0.0009 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/%00null%00test02" 201 - "-" "-" "-" 0.0015 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/%00null%00foo" 201 - "-" "-" "-" 0.0017 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/%00nullish" 201 - "-" "-" "-" 0.0015 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 2 "-" "-" "-" 0.0018 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 133 "-" "-" "-" 0.0014 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a" 201 - "-" "-" "-" 0.0026 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/%00null%00test01" 201 - "-" "-" "-" 0.0010 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/%00null%00test02" 201 - "-" "-" "-" 0.0014 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/%00null%00foo" 201 - "-" "-" "-" 0.0015 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/%00nullish" 201 - "-" "-" "-" 0.0015 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 2 "-" "-" "-" 0.0019 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 218 "-" "-" "-" 0.0013 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a" 201 - "-" "-" "-" 0.0025 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/%00null%00test01" 201 - "-" "-" "-" 0.0009 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/%00null%00test02" 201 - "-" "-" "-" 0.0014 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a/nullish" 201 - "-" "-" "-" 0.0015 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 313 "-" "-" "-" 0.0018 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 95 "-" "-" "-" 0.0015 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 313 "-" "-" "-" 0.0013 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 200 204 "-" "-" "-" 0.0015 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a" 404 - "-" "-" "-" 0.0003 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /bob" 400 18 "-" "-" "-" 0.0002 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "GET /sda1/p/a/c%D8%3E%2520" 412 12 "-" "-" "-" 0.0001 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a" 201 - "-" "-" "-" 0.0033 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "PUT /sda1/p/a" 202 - "-" "-" "-" 0.0015 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "POST /sda1/p/a" 204 - "-" "-" "-" 0.0011 "-" 3324110 -
+test INFO: - - - [29/Jan/2026:14:30:15 +0000] "POST /sda1/p/a" 204 - "-" "-" "-" 0.0011 "-" 3324110 -
+Reloaded swift-proxy-server
+fake-swift ERROR: While processing manifest /v1/AUTH_test/mancon/manifest, got 403 (Forbidden
Access was denied to this reso...) while retrieving /v1/AUTH_test/c/seg_01test.unit.common.middleware.test_dlo.TestDloGetManifest.test_client_error_fetching_first_segment
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_client_error_fetching_first_segment ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_error_fetching_second_segment
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_error_fetching_second_segment ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_error_listing_container_HEAD
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_error_listing_container_HEAD ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_error_listing_container_first_listing_request
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_error_listing_container_first_listing_request ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_error_listing_container_second_listing_request
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_error_listing_container_second_listing_request ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_error_passthrough
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_error_passthrough ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_etag_comparison_ignores_quotes
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_etag_comparison_ignores_quotes ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_big_manifest
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_big_manifest ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_manifest
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_manifest ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_manifest_passthrough
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_manifest_passthrough ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_multi_range
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_multi_range ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_non_manifest_passthrough
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_non_manifest_passthrough ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_non_object_passthrough
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_non_object_passthrough ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_oversize_segment
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_oversize_segment ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_range
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_range ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_range_first_byte
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_range_first_byte ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_range_last_byte
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_range_last_byte ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_range_many_segments_satisfiability_unknown
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_range_many_segments_satisfiability_unknown ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_range_many_segments_satisfiable
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_range_many_segments_satisfiable ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_range_on_segment_boundaries
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_range_on_segment_boundaries ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_range_overlapping_end
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_range_overlapping_end ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_range_unsatisfiable
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_range_unsatisfiable ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_suffix_range
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_suffix_range ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_suffix_range_many_segments
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_suffix_range_many_segments ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_taking_too_long
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_taking_too_long ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_undersize_segment
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_undersize_segment ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_undersize_segment_range
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_undersize_segment_range ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_with_auth_overridden
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_with_auth_overridden ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_with_if_modified_since
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_get_with_if_modified_since ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_if_match_does_not_match
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_if_match_does_not_match ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_if_match_matches
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_if_match_matches ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_if_none_match_does_not_match
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_if_none_match_does_not_match ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_if_none_match_matches
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_if_none_match_matches ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_mismatched_etag_fetching_second_segment
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_mismatched_etag_fetching_second_segment ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_mismatched_length_fetching_second_segment
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_mismatched_length_fetching_second_segment ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_object_prefix_quoting
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_object_prefix_quoting ... ok
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_server_error_fetching_first_segment
+test.unit.common.middleware.test_dlo.TestDloGetManifest.test_server_error_fetching_first_segment ... ok
+test.unit.common.middleware.test_dlo.TestDloPutManifest.test_validating_x_object_manifest
+test.unit.common.middleware.test_dlo.TestDloPutManifest.test_validating_x_object_manifest ... ok
+test.unit.common.middleware.test_dlo.TestDloPutManifest.test_validation_ignores_accounts
+test.unit.common.middleware.test_dlo.TestDloPutManifest.test_validation_ignores_accounts ... ok
+test.unit.common.middleware.test_dlo.TestDloPutManifest.test_validation_ignores_containers
+test.unit.common.middleware.test_dlo.TestDloPutManifest.test_validation_ignores_containers ... ok
+test.unit.common.middleware.test_dlo.TestDloPutManifest.test_validation_watches_manifests_with_slashes
+test.unit.common.middleware.test_dlo.TestDloPutManifest.test_validation_watches_manifests_with_slashes ... ok
+test.unit.common.middleware.test_domain_remap.TestDomainRemapClientMangling.test_domain_remap_account_container_with_path_obj_slash_v1
+test.unit.common.middleware.test_domain_remap.TestDomainRemapClientMangling.test_domain_remap_account_container_with_path_obj_slash_v1 ... ok
+test.unit.common.middleware.test_domain_remap.TestDomainRemapClientMangling.test_domain_remap_account_container_with_path_root_and_path
+test.unit.common.middleware.test_domain_remap.TestDomainRemapClientMangling.test_domain_remap_account_container_with_path_root_and_path ... ok
+test.unit.common.middleware.test_domain_remap.TestDomainRemapClientMangling.test_domain_remap_account_container_with_path_root_obj
+test.unit.common.middleware.test_domain_remap.TestDomainRemapClientMangling.test_domain_remap_account_container_with_path_root_obj ... ok
+test.unit.common.middleware.test_domain_remap.TestDomainRemapClientMangling.test_domain_remap_account_container_with_path_trailing_slash
+test.unit.common.middleware.test_domain_remap.TestDomainRemapClientMangling.test_domain_remap_account_container_with_path_trailing_slash ... ok
+test.unit.common.middleware.test_domain_remap.TestDomainRemapClientMangling.test_domain_remap_account_container_with_root_path_obj_slash_v1
+test.unit.common.middleware.test_domain_remap.TestDomainRemapClientMangling.test_domain_remap_account_container_with_root_path_obj_slash_v1 ... ok
+test.unit.common.middleware.test_domain_remap.TestDomainRemapClientMangling.test_domain_remap_account_with_path_root_container
+test.unit.common.middleware.test_domain_remap.TestDomainRemapClientMangling.test_domain_remap_account_with_path_root_container ... ok
+test.unit.common.middleware.test_domain_remap.TestDomainRemapClientMangling.test_domain_remap_with_path_root_and_path_no_slash
+test.unit.common.middleware.test_domain_remap.TestDomainRemapClientMangling.test_domain_remap_with_path_root_and_path_no_slash ... ok
+test.unit.common.middleware.test_formpost.TestCappedFileLikeObject.test_exceeded
+test.unit.common.middleware.test_formpost.TestCappedFileLikeObject.test_exceeded ... ok
+test.unit.common.middleware.test_formpost.TestCappedFileLikeObject.test_exceeded_readline
+test.unit.common.middleware.test_formpost.TestCappedFileLikeObject.test_exceeded_readline ... ok
+test.unit.common.middleware.test_formpost.TestCappedFileLikeObject.test_read_sized
+test.unit.common.middleware.test_formpost.TestCappedFileLikeObject.test_read_sized ... ok
+test.unit.common.middleware.test_formpost.TestCappedFileLikeObject.test_whole
+test.unit.common.middleware.test_formpost.TestCappedFileLikeObject.test_whole ... ok
+test.unit.common.middleware.test_formpost.TestCappedFileLikeObject.test_whole_readline
+test.unit.common.middleware.test_formpost.TestCappedFileLikeObject.test_whole_readline ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_GET_and_HEAD_registered
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_GET_and_HEAD_registered ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_GET_registered
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_GET_registered ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_GET_registered_overrides_uploaded
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_GET_registered_overrides_uploaded ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_GET_registered_with_query_string
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_GET_registered_with_query_string ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_PUT_POST
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_PUT_POST ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_PUT_uploaded
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_PUT_uploaded ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_PUT_uploaded_with_query_string
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_PUT_uploaded_with_query_string ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_PUT_with_query_string_POST
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_PUT_with_query_string_POST ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_allowed_methods
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_allowed_methods ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_not_registered
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_not_registered ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_object_GET_updated_with_storage_policy
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_object_GET_updated_with_storage_policy ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_range
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_range ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_range_ignore_range_header
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_range_ignore_range_header ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_range_ignore_range_header_ignored
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_range_ignore_range_header_ignored ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_range_ignore_range_header_old_swift
+test.unit.common.middleware.test_helpers.TestFakeSwift.test_range_ignore_range_header_old_swift ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwiftMultipleResponses.test_register_next_response_first
+test.unit.common.middleware.test_helpers.TestFakeSwiftMultipleResponses.test_register_next_response_first ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwiftMultipleResponses.test_register_next_response_is_last_response_wins
+test.unit.common.middleware.test_helpers.TestFakeSwiftMultipleResponses.test_register_next_response_is_last_response_wins ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwiftMultipleResponses.test_register_next_response_keeps_current_registered_response
+test.unit.common.middleware.test_helpers.TestFakeSwiftMultipleResponses.test_register_next_response_keeps_current_registered_response ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwiftMultipleResponses.test_register_resets
+test.unit.common.middleware.test_helpers.TestFakeSwiftMultipleResponses.test_register_resets ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwiftMultipleResponses.test_register_response_is_forever
+test.unit.common.middleware.test_helpers.TestFakeSwiftMultipleResponses.test_register_response_is_forever ... ok
+test.unit.common.middleware.test_helpers.TestFakeSwiftMultipleResponses.test_register_response_is_last_response_wins
+test.unit.common.middleware.test_helpers.TestFakeSwiftMultipleResponses.test_register_response_is_last_response_wins ... ok
+test.unit.common.middleware.test_slo.TestSloGetRawManifest.test_get_raw_manifest
+test.unit.common.middleware.test_slo.TestSloGetRawManifest.test_get_raw_manifest ... ok
+test.unit.common.middleware.test_slo.TestSloGetRawManifest.test_get_raw_manifest_passthrough_with_ranges
+test.unit.common.middleware.test_slo.TestSloGetRawManifest.test_get_raw_manifest_passthrough_with_ranges ... ok
+test.unit.common.middleware.test_slo.TestSloHeadManifest.test_etag_is_hash_of_segment_etags
+test.unit.common.middleware.test_slo.TestSloHeadManifest.test_etag_is_hash_of_segment_etags ... ok
+test.unit.common.middleware.test_slo.TestSloHeadManifest.test_get_manifest_passthrough
+test.unit.common.middleware.test_slo.TestSloHeadManifest.test_get_manifest_passthrough ... ok
+test.unit.common.middleware.test_slo.TestSloHeadManifest.test_head_manifest_is_efficient
+test.unit.common.middleware.test_slo.TestSloHeadManifest.test_head_manifest_is_efficient ... ok
+test.unit.common.middleware.test_slo.TestSloHeadManifest.test_if_match_etag_not_matching
+test.unit.common.middleware.test_slo.TestSloHeadManifest.test_if_match_etag_not_matching ... ok
+test.unit.common.middleware.test_slo.TestSloHeadManifest.test_if_match_etag_not_matching_with_override
+test.unit.common.middleware.test_slo.TestSloHeadManifest.test_if_match_etag_not_matching_with_override ... ok
+test.unit.common.middleware.test_slo.TestSloHeadManifest.test_if_none_match_etag_matching
+test.unit.common.middleware.test_slo.TestSloHeadManifest.test_if_none_match_etag_matching ... ok
+test.unit.common.middleware.test_slo.TestSloHeadManifest.test_if_none_match_etag_matching_with_override
+test.unit.common.middleware.test_slo.TestSloHeadManifest.test_if_none_match_etag_matching_with_override ... ok
+test.unit.common.middleware.test_slo.TestSloHeadManifest.test_zero_byte_manifest
+test.unit.common.middleware.test_slo.TestSloHeadManifest.test_zero_byte_manifest ... ok
+test.unit.common.middleware.test_tempauth.ServiceTokenFunctionality.test_authed_for_path_single
+test.unit.common.middleware.test_tempauth.ServiceTokenFunctionality.test_authed_for_path_single ... ok
+test.unit.common.middleware.test_tempauth.ServiceTokenFunctionality.test_authed_for_primary_path_multiple
+test.unit.common.middleware.test_tempauth.ServiceTokenFunctionality.test_authed_for_primary_path_multiple ... ok
+test.unit.common.middleware.test_tempauth.ServiceTokenFunctionality.test_authed_for_second_path_with_operator_role_and_service
+test.unit.common.middleware.test_tempauth.ServiceTokenFunctionality.test_authed_for_second_path_with_operator_role_and_service ... ok
+test.unit.common.middleware.test_tempauth.ServiceTokenFunctionality.test_delete_denied_for_second_path
+test.unit.common.middleware.test_tempauth.ServiceTokenFunctionality.test_delete_denied_for_second_path ... ok
+test.unit.common.middleware.test_tempauth.ServiceTokenFunctionality.test_delete_of_second_path_by_reseller_admin
+test.unit.common.middleware.test_tempauth.ServiceTokenFunctionality.test_delete_of_second_path_by_reseller_admin ... ok
+test.unit.common.middleware.test_tempauth.ServiceTokenFunctionality.test_denied_for_path_single
+test.unit.common.middleware.test_tempauth.ServiceTokenFunctionality.test_denied_for_path_single ... ok
+test.unit.common.middleware.test_tempauth.ServiceTokenFunctionality.test_denied_for_second_path_for_service_user
+test.unit.common.middleware.test_tempauth.ServiceTokenFunctionality.test_denied_for_second_path_for_service_user ... ok
+test.unit.common.middleware.test_tempauth.ServiceTokenFunctionality.test_denied_for_second_path_with_only_operator_role
+test.unit.common.middleware.test_tempauth.ServiceTokenFunctionality.test_denied_for_second_path_with_only_operator_role ... ok
+test.unit.common.middleware.test_tempauth.ServiceTokenFunctionality.test_denied_for_second_path_with_only_service
+test.unit.common.middleware.test_tempauth.ServiceTokenFunctionality.test_denied_for_second_path_with_only_service ... ok
+test.unit.common.middleware.test_xprofile.TestProfileMiddleware.test_call
+test.unit.common.middleware.test_xprofile.TestProfileMiddleware.test_call ... ok
+test.unit.common.middleware.test_xprofile.TestProfileMiddleware.test_combine_body_qs
+test.unit.common.middleware.test_xprofile.TestProfileMiddleware.test_combine_body_qs ... ok
+test.unit.common.middleware.test_xprofile.TestProfileMiddleware.test_dump_checkpoint
+test.unit.common.middleware.test_xprofile.TestProfileMiddleware.test_dump_checkpoint ... ok
+test.unit.common.middleware.test_xprofile.TestProfileMiddleware.test_renew_profile
+test.unit.common.middleware.test_xprofile.TestProfileMiddleware.test_renew_profile ... ok
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_abs_paths_persisted
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_abs_paths_persisted ... ok
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_compose_modified_component_builders
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_compose_modified_component_builders ... ok
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_compose_ok
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_compose_ok ... ok
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_compose_override_component_builders
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_compose_override_component_builders ... ok
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_compose_with_builder_files
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_compose_with_builder_files ... ok
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_load_errors
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_load_errors ... ok
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_rebalance
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_rebalance ... ok
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_rebalance_errors
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_rebalance_errors ... ok
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_rebalance_with_unrebalanced_builders
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_rebalance_with_unrebalanced_builders ... ok
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_save_errors
+test.unit.common.ring.test_composite_builder.TestCompositeRingBuilder.test_save_errors ... ok
+test.unit.common.ring.test_utils.TestUtils.test_build_dev_from_opts
+test.unit.common.ring.test_utils.TestUtils.test_build_dev_from_opts ... ok
+test.unit.common.ring.test_utils.TestUtils.test_build_tier_tree
+test.unit.common.ring.test_utils.TestUtils.test_build_tier_tree ... ok
+test.unit.common.ring.test_utils.TestUtils.test_dispersion_report
+test.unit.common.ring.test_utils.TestUtils.test_dispersion_report ... ok
+test.unit.common.ring.test_utils.TestUtils.test_is_local_device
+test.unit.common.ring.test_utils.TestUtils.test_is_local_device ... ok
+test.unit.common.ring.test_utils.TestUtils.test_is_valid_hostname
+test.unit.common.ring.test_utils.TestUtils.test_is_valid_hostname ... ok
+test.unit.common.ring.test_utils.TestUtils.test_normalized_device_tier_names
+test.unit.common.ring.test_utils.TestUtils.test_normalized_device_tier_names ... ok
+test.unit.common.ring.test_utils.TestUtils.test_parse_address_old_format
+test.unit.common.ring.test_utils.TestUtils.test_parse_address_old_format ... ok
+test.unit.common.ring.test_utils.TestUtils.test_parse_args
+test.unit.common.ring.test_utils.TestUtils.test_parse_args ... ok
+test.unit.common.ring.test_utils.TestUtils.test_parse_builder_ring_filename_args
+test.unit.common.ring.test_utils.TestUtils.test_parse_builder_ring_filename_args ... ok
+test.unit.common.ring.test_utils.TestUtils.test_parse_change_values_from_opts
+test.unit.common.ring.test_utils.TestUtils.test_parse_change_values_from_opts ... ok
+test.unit.common.ring.test_utils.TestUtils.test_parse_search_value
+test.unit.common.ring.test_utils.TestUtils.test_parse_search_value ... ok
+test.unit.common.ring.test_utils.TestUtils.test_parse_search_values_from_opts
+test.unit.common.ring.test_utils.TestUtils.test_parse_search_values_from_opts ... ok
+test.unit.common.ring.test_utils.TestUtils.test_replication_defaults
+test.unit.common.ring.test_utils.TestUtils.test_replication_defaults ... ok
+test.unit.common.ring.test_utils.TestUtils.test_tiers_for_dev
+test.unit.common.ring.test_utils.TestUtils.test_tiers_for_dev ... ok
+test.unit.common.ring.test_utils.TestUtils.test_validate_and_normalize_address
+test.unit.common.ring.test_utils.TestUtils.test_validate_and_normalize_address ... ok
+test.unit.common.ring.test_utils.TestUtils.test_validate_and_normalize_ip
+test.unit.common.ring.test_utils.TestUtils.test_validate_and_normalize_ip ... ok
+test.unit.common.ring.test_utils.TestUtils.test_validate_args
+test.unit.common.ring.test_utils.TestUtils.test_validate_args ... ok
+test.unit.common.ring.test_utils.TestUtils.test_validate_args_new_cmd_format
+test.unit.common.ring.test_utils.TestUtils.test_validate_args_new_cmd_format ... ok
+test.unit.common.ring.test_utils.TestUtils.test_validate_replicas_by_tier_close
+test.unit.common.ring.test_utils.TestUtils.test_validate_replicas_by_tier_close ... ok
+test.unit.common.ring.test_utils.TestUtils.test_validate_replicas_by_tier_errors
+test.unit.common.ring.test_utils.TestUtils.test_validate_replicas_by_tier_errors ... ok
+test.unit.common.ring.test_utils.TestUtils.test_validate_replicas_by_tier_exact
+test.unit.common.ring.test_utils.TestUtils.test_validate_replicas_by_tier_exact ... ok
+test.unit.common.test_db_auditor.TestAuditor.test_database_auditor
+test.unit.common.test_db_auditor.TestAuditor.test_database_auditor ... ok
+test.unit.common.test_db_auditor.TestAuditor.test_one_audit_pass
+test.unit.common.test_db_auditor.TestAuditor.test_one_audit_pass ... ok
+test.unit.container.test_backend.TestContainerBroker.test_is_deleted
+test.unit.container.test_backend.TestContainerBroker.test_is_deleted ... ok
+test.unit.container.test_backend.TestContainerBroker.test_is_old_enough_to_reclaim
+test.unit.container.test_backend.TestContainerBroker.test_is_old_enough_to_reclaim ... ok
+test.unit.container.test_backend.TestContainerBroker.test_is_reclaimable
+test.unit.container.test_backend.TestContainerBroker.test_is_reclaimable ... ok
+
fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:15 -0000', 'Content-Md5': 'PggRsy85Tu07EsbATYB/cA==', 'User-Agent': 'Mozzarella Foxfire', 'Etag': '3e0811b32f394eed3b12c6c04d807f70', 'Content-Length': '139'}
fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:15 -0000', 'Content-Md5': 'zDBBHq17IpuHzskOm+GHEQ==', 'User-Agent': 'Mozzarella Foxfire', 'Etag': 'cc30411ead7b229b87cec90e9be18711', 'Content-Length': '139'}
fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:15 -0000', 'Content-Md5': 'hTnOh9sxGnzPiScnD+t0Mg==', 'User-Agent': 'Mozzarella Foxfire', 'Etag': '8539ce87db311a7ccf8927270feb7432', 'Content-Length': '139'}
fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:15 -0000', 'User-Agent': 'Mozzarella Foxfire'}
fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket object HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:15 -0000', 'User-Agent': 'Mozzarella Foxfire'}
fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:other:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:15 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG:
+test:testertest:testertest:full_controltest:full_controlFULL_CONTROLtest:readtest:readREADtest:writetest:writeWRITEtest:read_acptest:read_acpREAD_ACPtest:write_acptest:write_acpWRITE_ACP
+fake-swift DEBUG: permission denined: 403 Forbidden test:other READ
fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket object HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:other:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:15 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG:
+test:testertest:testertest:full_controltest:full_controlFULL_CONTROLtest:readtest:readREADtest:writetest:writeWRITEtest:read_acptest:read_acpREAD_ACPtest:write_acptest:write_acpWRITE_ACP
+fake-swift DEBUG: permission denined: 403 Forbidden test:other READ
fake-swift DEBUG: Calling S3Api Middleware
fake-swift DEBUG: A key is specified for bucket API.
+fake-swift DEBUG: checking permission: bucket None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:15 -0000', 'Content-Md5': 'mbEtd8ufKpkpCIfMjGD7Tw==', 'User-Agent': 'Mozzarella Foxfire', 'Etag': '99b12d77cb9f2a99290887cc8c60fb4f', 'Content-Length': '90'}
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:15 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket object HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:15 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:other:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:15 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG:
+test:testertest:testertest:full_controltest:full_controlFULL_CONTROLtest:readtest:readREADtest:writetest:writeWRITEtest:read_acptest:read_acpREAD_ACPtest:write_acptest:write_acpWRITE_ACP
+fake-swift DEBUG: permission denined: 403 Forbidden test:other READ
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket object HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:other:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:15 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG:
+test:testertest:testertest:full_controltest:full_controlFULL_CONTROLtest:readtest:readREADtest:writetest:writeWRITEtest:read_acptest:read_acpREAD_ACPtest:write_acptest:write_acpWRITE_ACPtest.unit.common.middleware.s3api.test_multi_delete.TestS3ApiMultiDeleteAcl.test_object_multi_DELETE_to_object
+test.unit.common.middleware.s3api.test_multi_delete.TestS3ApiMultiDeleteAcl.test_object_multi_DELETE_to_object ... ok
+test.unit.common.middleware.s3api.test_multi_delete.TestS3ApiMultiDeleteAcl.test_object_multi_DELETE_too_many_keys
+test.unit.common.middleware.s3api.test_multi_delete.TestS3ApiMultiDeleteAcl.test_object_multi_DELETE_too_many_keys ... ok
+test.unit.container.test_backend.TestContainerBroker.test_last_modified_time
+test.unit.container.test_backend.TestContainerBroker.test_last_modified_time ... ok
+test.unit.container.test_backend.TestContainerBroker.test_legacy_pending_files
+test.unit.container.test_backend.TestContainerBroker.test_legacy_pending_files ... ok
+test.unit.container.test_backend.TestContainerBroker.test_list_objects_iter
+test.unit.container.test_backend.TestContainerBroker.test_list_objects_iter ... ok
+
+fake-swift DEBUG: permission denined: 403 Forbidden test:other READ
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket object HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:other:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:13 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG:
+test:testertest:testertest:full_controltest:full_controlFULL_CONTROLtest:readtest:readREADtest:writetest:writeWRITEtest:read_acptest:read_acpREAD_ACPtest:write_acptest:write_acpWRITE_ACP
+fake-swift DEBUG: permission denined: 403 Forbidden test:other READ
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket None DELETE {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket object HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:other:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG:
+test:testertest:testertest:full_controltest:full_controlFULL_CONTROLtest:readtest:readREADtest:writetest:writeWRITEtest:read_acptest:read_acpREAD_ACPtest:write_acptest:write_acpWRITE_ACP
+fake-swift DEBUG: permission denined: 403 Forbidden test:other READ
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket object HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:other:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG:
+test:testertest:testertest:full_controltest:full_controlFULL_CONTROLtest:readtest:readREADtest:writetest:writeWRITEtest:read_acptest:read_acpREAD_ACPtest:write_acptest:write_acpWRITE_ACP
+fake-swift DEBUG: permission denined: 403 Forbidden test:other READ
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket None DELETE {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: checking permission: bucket None DELETE {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket object HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:other:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG:
+test:testertest:testertest:full_controltest:full_controlFULL_CONTROLtest:readtest:readREADtest:writetest:writeWRITEtest:read_acptest:read_acpREAD_ACPtest:write_acptest:write_acpWRITE_ACP
+fake-swift DEBUG: permission denined: 403 Forbidden test:other READ
+fake-swift DEBUG: Calling S3Api Middlewaretest.unit.common.middleware.s3api.test_bucket.TestS3ApiBucketAcl.test_bucket_DELETE_with_empty_versioning
+test.unit.common.middleware.s3api.test_bucket.TestS3ApiBucketAcl.test_bucket_DELETE_with_empty_versioning ... ok
+test.unit.common.middleware.s3api.test_bucket.TestS3ApiBucketAcl.test_bucket_DELETE_with_fullcontrol_permission
+test.unit.common.middleware.s3api.test_bucket.TestS3ApiBucketAcl.test_bucket_DELETE_with_fullcontrol_permission ... ok
+
+fake-swift DEBUG: permission denined: 403 Forbidden test:other READ
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: None GET {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: checking permission: bucket0 None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: checking permission: bucket1 None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG:
+test:othertest:other
+fake-swift DEBUG: permission denined: 403 Forbidden test:tester OWNER
+fake-swift DEBUG: checking permission: bucket2 None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: checking permission: bucket3 None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: checking permission: bucket4 None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG:
+test:othertest:other
+fake-swift DEBUG: permission denined: 403 Forbidden test:tester OWNER
+fake-swift DEBUG: checking permission: bucket5 None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: checking permission: bucket6 None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: checking permission: bucket7 None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG:
+test:othertest:other
+fake-swift DEBUG: permission denined: 403 Forbidden test:tester OWNER
+fake-swift DEBUG: checking permission: bucket8 None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: checking permission: bucket9 None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket object HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:other:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG:
+test:testertest:testertest:full_controltest:full_controlFULL_CONTROLtest:readtest:readREADtest:writetest:writeWRITEtest:read_acptest:read_acpREAD_ACPtest:write_acptest:write_acpWRITE_ACP
+fake-swift DEBUG: permission denined: 403 Forbidden test:other READ
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket object HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:other:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG:
+test:testertest:testertest:full_controltest:full_controlFULL_CONTROLtest:readtest:readREADtest:writetest:writeWRITEtest:read_acptest:read_acpREAD_ACPtest:write_acptest:write_acpWRITE_ACP
+fake-swift DEBUG: permission denined: 403 Forbidden test:other READ
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: None GET {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket object HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:tester:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG: Calling S3Api Middleware
+fake-swift DEBUG: checking permission: bucket None HEAD {'Host': 'localhost:80', 'Authorization': 'AWS test:other:hmac', 'Date': 'Thu, 29 Jan 2026 14:30:14 -0000', 'User-Agent': 'Mozzarella Foxfire'}
+fake-swift DEBUG:
+test:testertest:testertest:full_controltest:full_controlFULL_CONTROLtest:readtest:readREADtest:writetest:writeWRITEtest:read_acptest:read_acpREAD_ACPtest:write_acptest:write_acpWRITE_ACPtest.unit.common.middleware.s3api.test_service.TestS3ApiServiceAcl.test_service_GET_subresource
+test.unit.common.middleware.s3api.test_service.TestS3ApiServiceAcl.test_service_GET_subresource ... ok
+test.unit.common.middleware.s3api.test_service.TestS3ApiServiceAcl.test_service_GET_without_bucket
+test.unit.common.middleware.s3api.test_service.TestS3ApiServiceAcl.test_service_GET_without_bucket ... ok
+test.unit.container.test_backend.TestContainerBroker.test_list_objects_iter_non_slash
+test.unit.container.test_backend.TestContainerBroker.test_list_objects_iter_non_slash ... ok
+test.unit.container.test_backend.TestContainerBroker.test_list_objects_iter_order_and_reverse
+test.unit.container.test_backend.TestContainerBroker.test_list_objects_iter_order_and_reverse ... ok
+test.unit.container.test_backend.TestContainerBroker.test_list_objects_iter_prefix_delim
+test.unit.container.test_backend.TestContainerBroker.test_list_objects_iter_prefix_delim ... ok
+test.unit.container.test_backend.TestContainerBroker.test_list_objects_iter_with_reserved_name
+test.unit.container.test_backend.TestContainerBroker.test_list_objects_iter_with_reserved_name ... ok
+test.unit.container.test_backend.TestContainerBroker.test_load_old_record_from_pending_file
+test.unit.container.test_backend.TestContainerBroker.test_load_old_record_from_pending_file ... ok
+test.unit.container.test_backend.TestContainerBroker.test_make_tuple_for_pickle
+test.unit.container.test_backend.TestContainerBroker.test_make_tuple_for_pickle ... ok
+test.unit.container.test_backend.TestContainerBroker.test_merge_items
+test.unit.container.test_backend.TestContainerBroker.test_merge_items ... ok
+
+swift-ring-builder 1.3
+
+swift-ring-builder
+ Shows information about the ring and the devices within. Output
+ includes a table that describes the report parameters (id, region,
+ port, flags, etc).
+ flags: possible values are 'DEL' and ''
+ DEL - indicates that the device is marked for removal from
+ ring and will be removed in next rebalance.
+
+swift-ring-builder add
+ [r]z-:[R:]/_
+
+ [[r]z-:[R:]/_
+ ] ...
+
+ Where and are replication ip and port.
+
+or
+
+swift-ring-builder add
+ --region --zone --ip --port
+ [--replication-ip ] [--replication-port ]
+ --device --weight
+ [--meta ]
+
+ Adds devices to the ring with the given information. No partitions will be
+ assigned to the new device until after running 'rebalance'. This is so you
+ can make multiple device changes and rebalance them all just once.
+
+swift-ring-builder cancel_increase_partition_power
+ Cancel the increase of the partition power.
+
+ A write_ring command is needed to make the change take effect.
+
+ Once the updated rings have been deployed to all servers you need to run
+ the swift-object-relinker tool to cleanup unneeded links.
+
+ *****************************
+ USE THIS WITH EXTREME CAUTION
+ *****************************
+
+ If you increase the partition power and deploy changed rings, you may
+ introduce unavailability in your cluster. This has an end-user impact. Make
+ sure you execute required operations to increase the partition power
+ accurately.
+
+swift-ring-builder create
+
+ Creates with 2^ partitions and .
+ is number of hours to restrict moving a partition more
+ than once.
+
+swift-ring-builder dispersion [options]
+
+ Output report on dispersion.
+
+ --recalculate option will rebuild cached dispersion info and save builder
+ --verbose option will display dispersion graph broken down by tier
+
+ You can filter which tiers are evaluated to drill down using a regex
+ in the optional search_filter argument. i.e.
+
+ swift-ring-builder dispersion "r\d+z\d+$" -v
+
+ ... would only display rows for the zone tiers
+
+ swift-ring-builder dispersion ".*\-[^/]*$" -v
+
+ ... would only display rows for the server tiers
+
+ The reports columns are:
+
+ Tier : the name of the tier
+ parts : the total number of partitions with assignment in the tier
+ % : the percentage of parts in the tier with replicas over assigned
+ max : maximum replicas a part should have assigned at the tier
+ 0 - N : the number of parts with that many replicas assigned
+
+ e.g.
+ Tier: parts % max 0 1 2 3
+ r1z1 1022 79.45 1 2 210 784 28
+
+ r1z1 has 1022 total parts assigned, 79% of them have more than the
+ recommend max replica count of 1 assigned. Only 2 parts in the ring
+ are *not* assigned in this tier (0 replica count), 210 parts have
+ the recommend replica count of 1, 784 have 2 replicas, and 28 sadly
+ have all three replicas in this tier.
+
+swift-ring-builder finish_increase_partition_power
+ Finally removes the next_part_power flag. Has to be run after the
+ swift-object-relinker tool has been used to cleanup old existing data.
+
+ A write_ring command is needed to make the change take effect.
+
+ *****************************
+ USE THIS WITH EXTREME CAUTION
+ *****************************
+
+ If you increase the partition power and deploy changed rings, you may
+ introduce unavailability in your cluster. This has an end-user impact. Make
+ sure you execute required operations to increase the partition power
+ accurately.
+
+swift-ring-builder increase_partition_power
+ Increases the partition power by one. Needs to be run after
+ prepare_increase_partition_power has been run and all existing data has
+ been relinked using the swift-object-relinker tool.
+
+ A write_ring command is needed to make the change take effect.
+
+ Once the updated rings have been deployed to all servers you need to run
+ the swift-object-relinker tool to cleanup old data.
+
+ *****************************
+ USE THIS WITH EXTREME CAUTION
+ *****************************
+
+ If you increase the partition power and deploy changed rings, you may
+ introduce unavailability in your cluster. This has an end-user impact. Make
+ sure you execute required operations to increase the partition power
+ accurately.
+
+swift-ring-builder list_parts [] ..
+
+or
+
+swift-ring-builder list_parts
+ --region --zone --ip --port
+ --replication-ip --replication-port
+ --device --meta --weight
+
+ Where , and are replication ip, hostname
+ and port.
+ Any of the options are optional in both cases.
+
+ Returns a 2 column list of all the partitions that are assigned to any of
+ the devices matching the search values given. The first column is the
+ assigned partition number and the second column is the number of device
+ matches for that partition. The list is ordered from most number of matches
+ to least. If there are a lot of devices to match against, this command
+ could take a while to run.
+
+swift-ring-builder prepare_increase_partition_power
+ Prepare the ring to increase the partition power by one.
+
+ A write_ring command is needed to make the change take effect.
+
+ Once the updated rings have been deployed to all servers you need to run
+ the swift-object-relinker tool to relink existing data.
+
+ *****************************
+ USE THIS WITH EXTREME CAUTION
+ *****************************
+
+ If you increase the partition power and deploy changed rings, you may
+ introduce unavailability in your cluster. This has an end-user impact. Make
+ sure you execute required operations to increase the partition power
+ accurately.
+
+swift-ring-builder pretend_min_part_hours_passed
+ Resets the clock on the last time a rebalance happened, thus
+ circumventing the min_part_hours check.
+
+ *****************************
+ USE THIS WITH EXTREME CAUTION
+ *****************************
+
+ If you run this command and deploy rebalanced rings before a replication
+ pass completes, you may introduce unavailability in your cluster. This
+ has an end-user impact.
+
+swift-ring-builder rebalance [options]
+ Attempts to rebalance the ring by reassigning partitions that haven't been
+ recently reassigned.
+
+swift-ring-builder remove [search-value ...]
+ [--yes]
+
+or
+
+swift-ring-builder remove
+ --region --zone --ip --port
+ --replication-ip --replication-port
+ --device --meta --weight
+ [--yes]
+
+ Where , and are replication ip, hostname
+ and port.
+ Any of the options are optional in both cases.
+
+ Removes the device(s) from the ring. This should normally just be used for
+ a device that has failed. For a device you wish to decommission, it's best
+ to set its weight to 0, wait for it to drain all its data, then use this
+ remove command. This will not take effect until after running 'rebalance'.
+ This is so you can make multiple device changes and rebalance them all just
+ once.
+
+ Option --yes assume a yes response to all questions.
+
+swift-ring-builder search
+
+or
+
+swift-ring-builder search
+ --region --zone --ip --port
+ --replication-ip