From 04bdee19f2af428da52ff18df5b3d23faa9edf24 Mon Sep 17 00:00:00 2001 From: Maciej Szumocki Date: Thu, 14 Oct 2021 12:45:03 +0200 Subject: [PATCH] When a bucket that is in state no longer exists, warning is logged and the bucket is removed from state. Prepare for 0.7.1 release --- CHANGELOG.md | 8 +++++++- b2/resource_b2_bucket.go | 7 +++++++ python-bindings/b2_terraform/provider_tool.py | 7 +++++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6444c94..bcabe3b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.7.1] - 2021-10-14 + +### Changed +* When a bucket that is in state no longer exists, warning is logged and the bucket is removed from state + ## [0.7.0] - 2021-09-24 ### Fixed @@ -83,7 +88,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added * Implementation of PoC (simple `b2_application_key` data source) -[Unreleased]: https://github.com/Backblaze/terraform-provider-b2/compare/v0.7.0...HEAD +[Unreleased]: https://github.com/Backblaze/terraform-provider-b2/compare/v0.7.1...HEAD +[0.7.1]: https://github.com/Backblaze/terraform-provider-b2/compare/v0.7.9...v0.7.1 [0.7.0]: https://github.com/Backblaze/terraform-provider-b2/compare/v0.6.1...v0.7.0 [0.6.1]: https://github.com/Backblaze/terraform-provider-b2/compare/v0.6.0...v0.6.1 [0.6.0]: https://github.com/Backblaze/terraform-provider-b2/compare/v0.5.0...v0.6.0 diff --git a/b2/resource_b2_bucket.go b/b2/resource_b2_bucket.go index 94aec0a..cbdc3aa 100644 --- a/b2/resource_b2_bucket.go +++ b/b2/resource_b2_bucket.go @@ -12,6 +12,7 @@ package b2 import ( "context" + "log" "github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" @@ -158,6 +159,12 @@ func resourceB2BucketRead(ctx context.Context, d *schema.ResourceData, meta inte if err != nil { return diag.FromErr(err) } + if len(output) == 0 && !d.IsNewResource() { + // deleted bucket + log.Printf("[WARN] Bucket (%s) not found, removing from state", d.Id()) + d.SetId("") + return nil + } err = client.populate(name, op, output, d) if err != nil { diff --git a/python-bindings/b2_terraform/provider_tool.py b/python-bindings/b2_terraform/provider_tool.py index d3270ea..68ea97f 100644 --- a/python-bindings/b2_terraform/provider_tool.py +++ b/python-bindings/b2_terraform/provider_tool.py @@ -24,7 +24,7 @@ EncryptionMode, EncryptionSetting, ) -from b2sdk.exception import BadRequest +from b2sdk.exception import BadRequest, NonExistentBucket from b2_terraform.api_wrapper import B2ApiWrapper from b2_terraform.arg_parser import ArgumentParser @@ -239,7 +239,10 @@ def resource_create( return self._postprocess(**bucket) def resource_read(self, *, bucket_id, **kwargs): - bucket = self.api.get_bucket_by_id(bucket_id) + try: + bucket = self.api.get_bucket_by_id(bucket_id) + except NonExistentBucket: # return empty dict if bucket does not exist, handled in resource_b2.bucket.go + return {} return self._postprocess(**bucket.as_dict()) def resource_update(