Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add resource_minio_s3_object 'source' support #555

Merged
merged 2 commits into from Mar 11, 2024

Conversation

fhemberger
Copy link
Contributor

Add resource_minio_s3_object 'source' support for PutObject

Only 'content' and 'content_base64' have been implemented sofar, this PR adds 'source' support for resource_minio_s3_object, derived from https://github.com/hashicorp/terraform-provider-aws/blob/main/internal/service/s3/bucket_object.go#L388-L405

Reference

Closing issues

@pjsier
Copy link
Collaborator

pjsier commented Jan 23, 2024

Sorry for the delay in looking at this! It would be great to add some test cases here for CI if you have a chance

@fhemberger
Copy link
Contributor Author

fhemberger commented Jan 23, 2024

@pjsier Is there some sort of 'best practice' for testing opening/reading files in Go? I've only dabbled a bit in the language so far and I don't know much about writing unit tests in it.

@pjsier
Copy link
Collaborator

pjsier commented Jan 24, 2024

@fhemberger I'm not sure on overall best practices, but I think we could leverage a similar pattern to the AWS provider adding a method to create tempfiles that can then be used later in the test

https://github.com/hashicorp/terraform-provider-aws/blob/43bd19db00807459b8c5ae3b4faaa91a183d3a7f/internal/service/s3/object_test.go#L702-L734

@fhemberger
Copy link
Contributor Author

@pjsier I'm still having trouble setting up the unit tests, however, I'd really appreciate it if the fix could land anyways, as:

  1. The source attribute is currently documented to be available, yet it's not implemented at all
  2. There hasn't been a single unit test for minio_s3_object so far to build on.
  3. The code is taken directly from Hashicorp's own official AWS provider.

So even without test cases, that's already an improvement over the current state.

@fhemberger
Copy link
Contributor Author

/ping @pjsier @felladrin

@felladrin
Copy link
Collaborator

felladrin commented Mar 11, 2024

Thanks @fhemberger! It's being released on v2.1.0.

@felladrin felladrin merged commit 67ee876 into aminueza:main Mar 11, 2024
2 checks passed
@fhemberger
Copy link
Contributor Author

@felladrin Thank you!

kireque pushed a commit to kireque/home-ops that referenced this pull request Mar 12, 2024
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [minio](https://registry.terraform.io/providers/aminueza/minio)
([source](https://togithub.com/aminueza/terraform-provider-minio)) |
required_provider | major | `1.20.1` -> `2.1.0` |

---

### Release Notes

<details>
<summary>aminueza/terraform-provider-minio (minio)</summary>

###
[`v2.1.0`](https://togithub.com/aminueza/terraform-provider-minio/releases/tag/v2.1.0)

[Compare
Source](https://togithub.com/aminueza/terraform-provider-minio/compare/v2.0.1...v2.1.0)

#### What's Changed

- Fixed group policy assign parameter typo by
[@&#8203;danielhass](https://togithub.com/danielhass) in
[aminueza/terraform-provider-minio#553
- Document `DeleteMarker` expiry in ilm policy by
[@&#8203;michaelruigrok](https://togithub.com/michaelruigrok) in
[aminueza/terraform-provider-minio#558
- Add resource_minio_s3\_object 'source' support by
[@&#8203;fhemberger](https://togithub.com/fhemberger) in
[aminueza/terraform-provider-minio#555

#### New Contributors

- [@&#8203;danielhass](https://togithub.com/danielhass) made their first
contribution in
[aminueza/terraform-provider-minio#553
- [@&#8203;michaelruigrok](https://togithub.com/michaelruigrok) made
their first contribution in
[aminueza/terraform-provider-minio#558
- [@&#8203;fhemberger](https://togithub.com/fhemberger) made their first
contribution in
[aminueza/terraform-provider-minio#555

**Full Changelog**:
aminueza/terraform-provider-minio@v2.0.1...v2.1.0

###
[`v2.0.1`](https://togithub.com/aminueza/terraform-provider-minio/releases/tag/v2.0.1)

[Compare
Source](https://togithub.com/aminueza/terraform-provider-minio/compare/v2.0.0...v2.0.1)

#### What's Changed

- Fix null expiration date handling by
[@&#8203;pjsier](https://togithub.com/pjsier) in
[aminueza/terraform-provider-minio#545
- Update terraform version to 1.5.7 in GitHub Action by
[@&#8203;felladrin](https://togithub.com/felladrin) in
[aminueza/terraform-provider-minio#540

**Full Changelog**:
aminueza/terraform-provider-minio@v2.0.0...v2.0.1

###
[`v2.0.0`](https://togithub.com/aminueza/terraform-provider-minio/releases/tag/v2.0.0)

[Compare
Source](https://togithub.com/aminueza/terraform-provider-minio/compare/v1.20.1...v2.0.0)

#### What's Changed

- Update madmin-go to version 3 by
[@&#8203;acolombier](https://togithub.com/acolombier) in
[aminueza/terraform-provider-minio#514
- Handle empty service account policy by
[@&#8203;ArataEM](https://togithub.com/ArataEM) in
[aminueza/terraform-provider-minio#518
- Go 1.20 by [@&#8203;BuJo](https://togithub.com/BuJo) in
[aminueza/terraform-provider-minio#519
- Destroy object versions on bucket force_destroy by
[@&#8203;pjsier](https://togithub.com/pjsier) in
[aminueza/terraform-provider-minio#524
- Update goreleaser-action to v5 and add permission for the workflow to
attach binaries to GitHub Releases by
[@&#8203;felladrin](https://togithub.com/felladrin) in
[aminueza/terraform-provider-minio#521
- Add Noncurrent Version expiration to ilm policy by
[@&#8203;ndejesus](https://togithub.com/ndejesus) in
[aminueza/terraform-provider-minio#526
- Add service account values to read and import by
[@&#8203;pjsier](https://togithub.com/pjsier) in
[aminueza/terraform-provider-minio#525
- feat: add minio_s3\_bucket_replication resource by
[@&#8203;acolombier](https://togithub.com/acolombier) in
[aminueza/terraform-provider-minio#528
- feat: recreate user if not found anymore by
[@&#8203;tobikris](https://togithub.com/tobikris) in
[aminueza/terraform-provider-minio#534
- Bump google.golang.org/grpc from 1.58.0 to 1.58.3 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[aminueza/terraform-provider-minio#535
- Change terraform-provider-minio license to AGPL-3.0 and append `/v2`
to the module name by [@&#8203;BuJo](https://togithub.com/BuJo) in
[aminueza/terraform-provider-minio#522

#### Breaking Change: About the major version update

We've updated `madmin-go` to `v3` so we can use the new features from
the SDK, like the [bucket
replication](https://togithub.com/aminueza/terraform-provider-minio/pull/528).
As a consequence of this, we had to change our License to AGPL-3.0 to
comply with `madmin-go`, [which has been using AGPL-3.0 since its v2
release](https://togithub.com/minio/madmin-go/pull/154).

For those who can't upgrade to **terraform-provider-minio v2** due to
license incompatibilities, we recommend you keep using the **v1** until
you feel you need some of the new features.

To don't let anyone behind, we've created a
[v1](https://togithub.com/aminueza/terraform-provider-minio/tree/v1)
branch, which is now protected and will live along with the
[main](https://togithub.com/aminueza/terraform-provider-minio/tree/main).
So if users of `v1` want to push features/fixes, they can create pull
requests targeting that branch, and as soon as it's merged, we release a
new update for the `v1.x`.

For those importing this package in their software and want to upgrade,
here's the command to upgrade:

```bash
go get github.com/aminueza/terraform-provider-minio/v2@&#8203;v2.0.0
```

**Full Changelog**:
aminueza/terraform-provider-minio@v1.18.0...v2.0.0

> **Note**
> [v1](https://togithub.com/aminueza/terraform-provider-minio/tree/v1)
branch diverged from
[main](https://togithub.com/aminueza/terraform-provider-minio/tree/main)
at after the [release
v1.18.0](https://togithub.com/aminueza/terraform-provider-minio/releases/tag/v1.18.0).

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Renovate
Bot](https://togithub.com/renovatebot/renovate).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yMzUuNSIsInVwZGF0ZWRJblZlciI6IjM3LjIzNS42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9-->

Co-authored-by: kireque-bot[bot] <143391978+kireque-bot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FATAL] putting object failed (): one of source / content / content_base64 is not set
3 participants