diff --git a/CHANGELOG.md b/CHANGELOG.md index e2533041a..fe6fcf5e7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,40 @@ Moto Changelog ============== + +4.0.7 +----- +Docker Digest for 4.0.7: + + New Services: + * Comprehend: + * create_entity_recognizer() + * delete_entity_recognizer() + * describe_entity_recognizer() + * list_entity_recognizers() + * list_tags_for_resource() + * stop_training_entity_recognizer() + + * MeteringMarketplace: + * batch_meter_usage() + + New Methods: + * EC2: + * modify_vpc_endpoint() + * MediaConnect: + * grant_flow_entitlements() + * revoke_flow_entitlement() + * update_flow_entitlement() + * update_flow_output() + + Miscellaneous: + * DynamoDB:transact_write_items() - Now includes validation if multipel operations are provided in the same item + * EC2:cancel_spot_fleet_request() - Fixed a bug where instances were always terminated + * EC2:create_instances() - Now uses the private IP address as as provided in the NetworkInterface + * EC2:describe_instance_types() - Now supports all filters + * ECS:run_task() - Now creates/attaches an ENI if appropriate + * S3: Fixed an issue where file handles were not closed on large uploads + 4.0.6 ----- Docker Digest for 4.0.6: _sha256:01582a705be7c50bc15993acc2271cd190db9c08c5fc09d85c59c8ddae6bb260_ diff --git a/IMPLEMENTATION_COVERAGE.md b/IMPLEMENTATION_COVERAGE.md index c354b4348..1f38f27c0 100644 --- a/IMPLEMENTATION_COVERAGE.md +++ b/IMPLEMENTATION_COVERAGE.md @@ -5246,7 +5246,7 @@ ## s3
-61% implemented +62% implemented - [X] abort_multipart_upload - [X] complete_multipart_upload @@ -5331,7 +5331,7 @@ - [X] put_bucket_replication - [ ] put_bucket_request_payment - [X] put_bucket_tagging -- [ ] put_bucket_versioning +- [X] put_bucket_versioning - [ ] put_bucket_website - [X] put_object - [X] put_object_acl diff --git a/docs/docs/services/s3.rst b/docs/docs/services/s3.rst index 977feb9a2..22152ed77 100644 --- a/docs/docs/services/s3.rst +++ b/docs/docs/services/s3.rst @@ -122,7 +122,7 @@ s3 - [X] put_bucket_replication - [ ] put_bucket_request_payment - [X] put_bucket_tagging -- [ ] put_bucket_versioning +- [X] put_bucket_versioning - [ ] put_bucket_website - [X] put_object - [X] put_object_acl diff --git a/moto/s3/models.py b/moto/s3/models.py index abc80a3ab..0226909d9 100644 --- a/moto/s3/models.py +++ b/moto/s3/models.py @@ -1565,7 +1565,7 @@ class S3Backend(BaseBackend, CloudWatchMetricProvider): else: return self.buckets.pop(bucket_name) - def set_bucket_versioning(self, bucket_name, status): + def put_bucket_versioning(self, bucket_name, status): self.get_bucket(bucket_name).versioning_status = status def get_bucket_versioning(self, bucket_name): diff --git a/moto/s3/responses.py b/moto/s3/responses.py index 0d1316811..f587f2998 100644 --- a/moto/s3/responses.py +++ b/moto/s3/responses.py @@ -757,7 +757,7 @@ class S3Response(BaseResponse): body = self.body.decode("utf-8") ver = re.search(r"([A-Za-z]+)", body) if ver: - self.backend.set_bucket_versioning(bucket_name, ver.group(1)) + self.backend.put_bucket_versioning(bucket_name, ver.group(1)) template = self.response_template(S3_BUCKET_VERSIONING) return template.render(bucket_versioning_status=ver.group(1)) else: diff --git a/moto/s3bucket_path/utils.py b/moto/s3bucket_path/utils.py index bdf3e769b..7ee2a0475 100644 --- a/moto/s3bucket_path/utils.py +++ b/moto/s3bucket_path/utils.py @@ -18,6 +18,7 @@ def is_delete_keys(request, path, bucket_name): return ( path == "/" + bucket_name + "/?delete" or path == "/" + bucket_name + "?delete" + or path == "/" + bucket_name + "?delete=" or ( path == "/" + bucket_name and getattr(request, "query_string", "") == "delete" diff --git a/tests/terraformtests/terraform-tests.success.txt b/tests/terraformtests/terraform-tests.success.txt index 93f275211..c2eaa21aa 100644 --- a/tests/terraformtests/terraform-tests.success.txt +++ b/tests/terraformtests/terraform-tests.success.txt @@ -243,9 +243,48 @@ route53|2: - TestAccRoute53HealthCheck_disappears - TestAccRoute53ResolverEndpoint s3: + - TestAccS3Bucket_Basic_forceDestroyWithEmptyPrefixes + - TestAccS3Bucket_Basic_namePrefix + - TestAccS3Bucket_Basic_keyEnabled + - TestAccS3Bucket_Basic_forceDestroyWithObjectLockEnabled + - TestAccS3Bucket_Basic_generatedName + - TestAccS3Bucket_Basic_acceleration + - TestAccS3Bucket_Basic_forceDestroy + - TestAccS3Bucket_Basic_emptyString - TestAccS3BucketPolicy - TestAccS3BucketPublicAccessBlock + - TestAccS3BucketVersioning_basic + - TestAccS3BucketVersioning_disappears + - TestAccS3BucketVersioning_update + - TestAccS3BucketVersioning_Status_ - TestAccS3ObjectCopy + - TestAccS3Object_noNameNoKey + - TestAccS3Object_sse + - TestAccS3Object_kms + - TestAccS3Object_empty + - TestAccS3Object_source + - TestAccS3Object_content + - TestAccS3Object_etagEncryption + - TestAccS3Object_contentBase64 + - TestAccS3Object_sourceHashTrigger + - TestAccS3Object_withContentCharacteristics + - TestAccS3Object_nonVersioned + - TestAccS3Object_acl + - TestAccS3Object_metadata + - TestAccS3Object_tags + - TestAccS3ObjectDataSource_kmsEncrypted + - TestAccS3ObjectDataSource_readableBody + - TestAccS3ObjectDataSource_bucketKeyEnabled + - TestAccS3ObjectDataSource_allParams + - TestAccS3ObjectDataSource_object + - TestAccS3ObjectDataSource_leadingSlash + - TestAccS3ObjectDataSource_multipleSlashes + - TestAccS3ObjectDataSource_singleSlashAsKey + - TestAccS3ObjectsDataSource_all + - TestAccS3ObjectsDataSource_prefixes + - TestAccS3ObjectsDataSource_maxKeys + - TestAccS3ObjectsDataSource_startAfter + - TestAccS3ObjectsDataSource_fetchOwner sagemaker: - TestAccSageMakerPrebuiltECRImageDataSource servicediscovery: