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 S3 Bucket integration for backups #134206

Draft
wants to merge 5 commits into
base: dev
Choose a base branch
from

Conversation

mkohns
Copy link

@mkohns mkohns commented Dec 29, 2024

Breaking change

Proposed change

Inspired by #134014
I added a new integration handling S3 buckets for backup locations.
I tested this with iDrive, Minio and Azure Storage (over S3Proxy)

Type of change

  • Dependency upgrade
  • Bugfix (non-breaking change which fixes an issue)
  • New integration (thank you!)
  • New feature (which adds functionality to an existing integration)
  • Deprecation (breaking change to happen in the future)
  • Breaking change (fix/feature causing existing functionality to break)
  • Code quality improvements to existing code or addition of tests

Additional information

Checklist

  • The code change is tested and works locally.
  • Local tests pass. Your PR cannot be merged unless tests pass
  • There is no commented out code in this PR.
  • I have followed the development checklist
  • I have followed the perfect PR recommendations
  • The code has been formatted using Ruff (ruff format homeassistant tests)
  • Tests have been added to verify that the new code works.

If user exposed functionality or configuration variables are added/changed:

If the code communicates with devices, web services, or third-party tools:

  • The manifest file has all fields filled out correctly.
    Updated and included derived files by running: python3 -m script.hassfest.
  • New or updated dependencies have been added to requirements_all.txt.
    Updated by running python3 -m script.gen_requirements_all.
  • For the updated dependencies - a link to the changelog, or at minimum a diff between library versions is added to the PR description.

To help with the load of incoming pull requests:

Copy link

@home-assistant home-assistant bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @mkohns

It seems you haven't yet signed a CLA. Please do so here.

Once you do that we will be able to review and accept this pull request.

Thanks!

@home-assistant
Copy link

Please take a look at the requested changes, and use the Ready for review button when you are done, thanks 👍

Learn more about our pull request process.

raise ConfigEntryAuthFailed(
f"Invalid authentication token for S3 account: {err}"
) from err
except Exception as err: # noqa: BLE001
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't catch all exceptions. Always limit it to errors you expect it to be raised

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HI Paulus! Thank you for reviewing and taking your time. I am new in homeassistant and perhaps would need a little more help. But I am eager to learn. This is the list of exceptions botocore could raise:
https://boto3.amazonaws.com/v1/documentation/api/latest/guide/error-handling.html#botocore-exceptions
I can not see in the documentation of session.client which exceptions it could raise. I browsed through the code and I think that could be a lot. Many should be covered by ClientError. But how should I take care for the Exceptions I am not aware of? I thought the "final" exception is taking care for this. If I would remove it - and an uncatched exceptions is being raised - what happens then? What is your recommendation?

@zweckj
Copy link
Member

zweckj commented Dec 29, 2024

Did you think about using one of the asyncio implementations (aiobotocore/aioboto3)? This can make your code significantly shorter (check my azure_storage PR for a comparison)

@mkohns
Copy link
Author

mkohns commented Dec 29, 2024

Did you think about using one of the asyncio implementations (aiobotocore/aioboto3)? This can make your code significantly shorter (check my azure_storage PR for a comparison)

Hi, yes i tried to use the async libs, but did not succeed. My skills have not been high enough to get this sorted out :(
I looked into your code at https://github.com/zweckj/home-assistant-core/blob/azure-storage/init/homeassistant/components/azure_storage/backup.py - but do not understand how to transfer the azure.core code to aioboto. Is it a problem to leave it as is?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants