Skip to content

Commit

Permalink
Gestion par pyr2pyr du multi cluster S3
Browse files Browse the repository at this point in the history
  • Loading branch information
Dolite committed Jan 13, 2023
1 parent 010287d commit d1737bc
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 9 deletions.
9 changes: 2 additions & 7 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,16 @@

## Summary

Cette release contient le premier outil de la suite Python PYR2PYR. Il utilise la [librairie Python du projet](https://github.com/rok4/core-python).
PYR2PYR gère les copies inter cluster S3

## Changelog

### [Changed]

* Outil PYR2PYR :
* Au lancement de l'agent, on ne fournit plus le fichier où écrire le travail fait. En cas d'erreur attrapée, un fichier/objet est poussé à côté de la todo list contenant le nom de la dernière dalle traitée. L'existence de ce fichier/objet est testée avant de commencer le travail
* Les pyramides source et destination peuvent être sur des clusters S3 différents. Ils sont précisés lors de la recopie des dalles. Pour préciser le cluster dans le chemin vers le descripteur de la pyramide source (ou l'emplacement de la pyramide destination), il suffit de suffixer le nom du bucket avec `@{hôte du cluster}`.


### [Fixed]

* Outil PYR2PYR
* Correction de la lecture du fichier liste temporaire de la pyramide source

<!--
### [Added]
Expand Down
16 changes: 15 additions & 1 deletion bin/pyr2pyr.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,9 @@ def master_work():

# Parcours des dalles de la pyramide en entrée et constitution des todo lists
with open(from_list_obj.name, "r") as listin:

from_s3_cluster = from_pyramid.storage_s3_cluster

for line in listin:
line = line.rstrip()
logging.debug(line)
Expand All @@ -182,7 +185,13 @@ def master_work():

if header:
root_id, root_path = line.split("=", 1)
roots[root_id] = root_path
if from_s3_cluster is None:
roots[root_id] = root_path
else:
# On a un nom de cluster S3, on l'ajoute au nom du bucket dans les racines
root_bucket, root_path = root_path.split("/", 1)
roots[root_id] = f"{root_bucket}@{from_s3_cluster}/{root_path}"

continue

# On traite une dalle
Expand Down Expand Up @@ -331,6 +340,11 @@ def finisher_work():
to_root = os.path.join(to_pyramid.storage_root, to_pyramid.name)
list_file_obj.write(f"0={to_root}\n#\n")

if to_pyramid.storage_s3_cluster is not None:
# Les chemins de destination contiendront l'hôte du cluster S3 utilisé,
# Il faut donc l'inclure dans la racine à supprimer des chemins vers les dalles
to_root = os.path.join(f"{to_pyramid.storage_root}@{to_pyramid.storage_s3_cluster}", to_pyramid.name)

for i in range(0, config["process"]["parallelization"]):

todo_list_obj = tempfile.NamedTemporaryFile(mode='r', delete=False)
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@
description='Python tools for ROK4 project',
author='Géoportail<[email protected]>',
url='https://github.com/rok4/pytools',
install_requires=['rok4lib', 'jsonschema'],
install_requires=['rok4lib >= 1.1.0', 'jsonschema'],
setup_requires=['wheel']
)

0 comments on commit d1737bc

Please sign in to comment.