Coverage for src/edwh_restic_plugin/repositories/oracle.py: 46%
24 statements
« prev ^ index » next coverage.py v7.6.12, created at 2025-02-28 16:28 +0100
« prev ^ index » next coverage.py v7.6.12, created at 2025-02-28 16:28 +0100
1import os
3from edwh.helpers import generate_password
4from invoke import Context
6from . import register
7from .s3 import S3Repository
10@register()
11class OracleRepository(S3Repository):
12 # https://docs.oracle.com/en-us/iaas/Content/Object/Tasks/s3compatibleapi.htm
14 def setup(self) -> None:
15 self.check_env(
16 "ORACLE_NAME",
17 default=None,
18 comment="Bucket to store your backups",
19 )
21 self.check_env(
22 "ORACLE_PASSWORD",
23 default=generate_password(silent=True),
24 comment="Create a Restic password, keep it safe.",
25 )
27 # Namespace is shown on the bucket page and transformed into an S3-compat uri automatically
28 self.check_env("ORACLE_NAMESPACE", default=None, comment="Oracle Object Storage Namespace")
30 # https://docs.oracle.com/en-us/iaas/Content/Identity/Tasks/managingcredentials.htm#Working2
31 self.check_env("ORACLE_ACCESS_KEY_ID", default=None, comment="(Customer) Access Key")
32 self.check_env("ORACLE_SECRET_ACCESS_KEY", default=None, comment="(Customer) Access Secret")
34 self.check_env(
35 "ORACLE_REGION", default="eu-amsterdam-1", comment="In which Oracle region is your bucket located?"
36 )
38 def prepare_for_restic(self, _: Context) -> None:
39 env = self.env_config
40 os.environ["RESTIC_PASSWORD"] = env["ORACLE_PASSWORD"]
41 os.environ["RESTIC_REPOSITORY"] = self.uri
43 os.environ["AWS_ACCESS_KEY_ID"] = env["ORACLE_ACCESS_KEY_ID"]
44 os.environ["AWS_SECRET_ACCESS_KEY"] = env["ORACLE_SECRET_ACCESS_KEY"]
46 @property
47 def uri(self) -> str:
48 env = self.env_config
49 return "s3:{namespace}.compat.objectstorage.{region}.oraclecloud.com/{bucket}".format(
50 namespace=env.get("ORACLE_NAMESPACE", "?"),
51 region=env.get("ORACLE_REGION", "?"),
52 bucket=env.get("ORACLE_NAME", "?"),
53 )