background jobs fix: ensure bucket is parsed correctly (#1359)
Follow-up to #1321 - correctly parse the endpoint_url into prefix and bucket path - also add region and s3 provider type to storage secrets
This commit is contained in:
parent
ea5650f173
commit
d2d7240455
@ -3,6 +3,8 @@ from datetime import datetime
|
|||||||
from typing import Optional, Tuple, Union, List, Dict, TYPE_CHECKING, cast
|
from typing import Optional, Tuple, Union, List, Dict, TYPE_CHECKING, cast
|
||||||
from uuid import UUID
|
from uuid import UUID
|
||||||
|
|
||||||
|
from urllib.parse import urlsplit
|
||||||
|
|
||||||
from fastapi import APIRouter, Depends, HTTPException
|
from fastapi import APIRouter, Depends, HTTPException
|
||||||
|
|
||||||
from .storages import StorageOps
|
from .storages import StorageOps
|
||||||
@ -63,9 +65,9 @@ class BackgroundJobOps:
|
|||||||
self.profile_ops = profile_ops
|
self.profile_ops = profile_ops
|
||||||
|
|
||||||
def strip_bucket(self, endpoint_url: str) -> tuple[str, str]:
|
def strip_bucket(self, endpoint_url: str) -> tuple[str, str]:
|
||||||
"""strip the last path segment (bucket) and return rest of endpoint"""
|
"""split the endpoint_url into the origin and return rest of endpoint as bucket path"""
|
||||||
inx = endpoint_url.rfind("/", 0, -1) + 1
|
parts = urlsplit(endpoint_url)
|
||||||
return endpoint_url[0:inx], endpoint_url[inx:]
|
return parts.scheme + "://" + parts.netloc + "/", parts.path[1:]
|
||||||
|
|
||||||
async def handle_replica_job_finished(self, job: CreateReplicaJob) -> None:
|
async def handle_replica_job_finished(self, job: CreateReplicaJob) -> None:
|
||||||
"""Update replicas in corresponding file objects, based on type"""
|
"""Update replicas in corresponding file objects, based on type"""
|
||||||
|
|||||||
@ -42,12 +42,21 @@ spec:
|
|||||||
name: "{{ primary_secret_name }}"
|
name: "{{ primary_secret_name }}"
|
||||||
key: STORE_SECRET_KEY
|
key: STORE_SECRET_KEY
|
||||||
|
|
||||||
|
- name: RCLONE_CONFIG_PRIMARY_REGION
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: "{{ primary_secret_name }}"
|
||||||
|
key: STORE_REGION
|
||||||
|
|
||||||
|
- name: RCLONE_CONFIG_PRIMARY_PROVIDER
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: "{{ primary_secret_name }}"
|
||||||
|
key: STORE_S3_PROVIDER
|
||||||
|
|
||||||
- name: RCLONE_CONFIG_PRIMARY_ENDPOINT
|
- name: RCLONE_CONFIG_PRIMARY_ENDPOINT
|
||||||
value: "{{ primary_endpoint }}"
|
value: "{{ primary_endpoint }}"
|
||||||
#valueFrom:
|
|
||||||
# secretKeyRef:
|
|
||||||
# name: "{{ primary_secret_name }}"
|
|
||||||
# key: STORE_ENDPOINT_URL
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
- name: RCLONE_CONFIG_REPLICA_TYPE
|
- name: RCLONE_CONFIG_REPLICA_TYPE
|
||||||
@ -65,12 +74,20 @@ spec:
|
|||||||
name: "{{ replica_secret_name }}"
|
name: "{{ replica_secret_name }}"
|
||||||
key: STORE_SECRET_KEY
|
key: STORE_SECRET_KEY
|
||||||
|
|
||||||
|
- name: RCLONE_CONFIG_REPLICA_REGION
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: "{{ replica_secret_name }}"
|
||||||
|
key: STORE_REGION
|
||||||
|
|
||||||
|
- name: RCLONE_CONFIG_REPLICA_PROVIDER
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: "{{ replica_secret_name }}"
|
||||||
|
key: STORE_S3_PROVIDER
|
||||||
|
|
||||||
- name: RCLONE_CONFIG_REPLICA_ENDPOINT
|
- name: RCLONE_CONFIG_REPLICA_ENDPOINT
|
||||||
value: "{{ replica_endpoint }}"
|
value: "{{ replica_endpoint }}"
|
||||||
#valueFrom:
|
|
||||||
# secretKeyRef:
|
|
||||||
# name: "{{ replica_secret_name }}"
|
|
||||||
# key: STORE_ENDPOINT_URL
|
|
||||||
|
|
||||||
{% if job_type == BgJobType.CREATE_REPLICA %}
|
{% if job_type == BgJobType.CREATE_REPLICA %}
|
||||||
command: ["rclone", "-vv", "copyto", "--checksum", "primary:{{ primary_file_path }}", "replica:{{ replica_file_path }}"]
|
command: ["rclone", "-vv", "copyto", "--checksum", "primary:{{ primary_file_path }}", "replica:{{ replica_file_path }}"]
|
||||||
|
|||||||
@ -67,5 +67,8 @@ stringData:
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
STORE_ENDPOINT_NO_BUCKET_URL: "{{ $storage.endpoint_url }}"
|
STORE_ENDPOINT_NO_BUCKET_URL: "{{ $storage.endpoint_url }}"
|
||||||
|
|
||||||
|
STORE_REGION: "{{ $storage.region }}"
|
||||||
|
|
||||||
|
STORE_S3_PROVIDER: {{ $storage.s3_provider | default "Other" }}
|
||||||
|
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user