Classes concernées :
On souhaite pouvoir calculer facilement la taille en octet d'une pyramide à partir d'une instance de la classe
Cette fonctionnalité aura une implémentation différente selon le stockage :
- En stockage fichier, on pourra simplement demander la taille du dossier racine contenant les dalles
- En stockage S3, on peut également avoir un équivalent d'un get_directory_size
- En stockage CEPH, soit on passe par le fichier liste pour demander la taille de chaque dalle, soit on considère qu'on ne gère pas cette fonctionnalité
Dans tous les cas, les intéractions avec le stockage se fera via la librairie stockage.
Piste trouvée pour avoir la taille d'un "dossier S3" et limiter les appels au stockage (pour ne pas en faire un par dalle) :
from boto3 import client
conn = client('s3')
paginator = conn.get_paginator('list_objects_v2')
pages = paginator.paginate(
Bucket='bucket',
Prefix='prefix',
PaginationConfig={
'PageSize': 10000,
}
)
size = 0
for page in pages:
for key in page['Contents']:
size += key['Size']
Si la taille est gérée comme une propriété calculée de la classe pyramide, stocker la valeur dans l'instance en attribut interne pour pouvoir le redemander plus loin sans refaire le calcul.
Enrichissement