CloudStorageTool - Action sur les liens cloud

Bonjour,

Dans le cadre de notre projet, nous avons besoin quotidiennement de scanner des dossiers sur le cloud GCP et de vérifier la présence de fichiers.

Les fichiers déposés respectent une nomenclature de nommage, notamment un horodatage.

J’aimerai via CloudStorageTool, pouvoir lister les fichiers présents.

Pouvez-vous me confirmer que cette fonctionnalité n’existe pas actuellement ?

Si pas de fonctionnalité, est-il possible d’enrichir l’objet pour répondre à ce besoin ?

Merci d’avance
Jean-Baptiste

Bonjour,

C’est effectivement une feature request
pour prévoir 2 choses en plus :

  • Lister les fichiers
  • Et aussi la suppression d’un fichier

@david il y a surement d’autres services élémentaires qu’on peut wrapper (copy, rename…) quel que soit le service AWT, Google, Azure…
.

Oui ce helper peut encore largement évoluer. jusqu’ici les besoins étaient uniquement du get/put.

A voir ce qu’offre l’API sous jacente = la librairie jClouds

Bonjour,

Est il possible d’implémenter dans Simplicité les méthodes de liste / suppression / déplacement pour la semaine prochaine ?
La méthode pour lister étant la plus attendue.

Merci d’avance.
Jean-Baptiste

Nous allons regarder pour une méthode liste en début de semaine.

Mais, au pire, comme dit précédemment, le helper CloudStorageTool n’étant qu’un wrapper de la librairie jClouds, rien ne vous empêche non plus de taper à son niveau en attendant.

La methode list est implémentée, c’est isolé donc ce sera backporté et livré sur 5.x les 4.0 maintenance au prochain build:

A utiliser genre comme cela:

try (CloudStorageTool cst = new CloudStorageTool(getGrant().getJSONObjectParameter("MY_CLOUD_STORAGE_CONFIG"))) {
	JSONArray list = cst.list();
}

Bonjour David,

Je viens de tester la méthode et j’ai un null pointer.
Voici la stack trace :
java.lang.NullPointerException: Cannot invoke “java.lang.Long.longValue()” because the return value of “org.jclouds.blobstore.domain.StorageMetadata.getSize()” is null

Je suis à la racine de mon bucket GCP, avec 1 fichier et le début d’un arborescence.

Pouvez-vous vérifier ce point ?
Merci d’avance.
Jean-Baptiste

OK je vais retester dans un contexte similaire

Dans le contexte de mon test sur un bucket GCP cela fonctionne:

Votre pb n’est il pas un pb de settings ?

Puis-je voir la stacktrace complète de votre erreur pour que je voie où rendre le code plus robuste à des erreurs non prévues si besoin

Je vais voir pour la config.

Pour la trace je peux donner ça :

    java.lang.NullPointerException: Cannot invoke "java.lang.Long.longValue()" because the return value of "org.jclouds.blobstore.domain.StorageMetadata.getSize()" is null
     at com.simplicite.util.tools.CloudStorageTool.list(CloudStorageTool.java:355)
     at com.simplicite.commons.mla_utilities.MlaExchangeFileCloud.getListFile(MlaExchangeFileCloud.java:24)
     at com.simplicite.objects.mla_export_file.MlaGenerateFiles.actionGCPConnexion(MlaGenerateFiles.java:211)
     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

Est ce que ça te convient ou tu veux toute la trace ?

A ce stade ça ira => on va ajouter un try/catch autour de l’appel au getSize() pour plus de robustesse mais dans nos tests il n’a jamais retourné null d’où mon questionnement sur les settings et/ou les droits des settings utilisés.

PS: on parle de quelle version de Simplicité ? Une 4.0 ou une 5 ?

On est sur une version 5.
Je vois avec les dev ops pour vérifier s’ils n’ont pas ajouté de restriction.

Après vérification, nous n’avons pas de pb d’autorisation.
Nous avons parcourir les dossier avec d’autres méthodes.
L’erreur sur le getSize() me laisse penser que l’on est sur un lien d’arborescence (leur size est de 0 et je ne vois pas ce cas dans ta capture d’écran)

Oui le pb c’est les “folders” du bucket qui n’ont pas de taille.

Nous allons pousser ce soir une mise à jour avec une nouvelle méthode list dans CloudStrageTool, celle-ci permettra de descendre dans les “folders” d’un bucket et gérera donc le cas des taille nulles

Bonjour,

Testé ce matin et ça fonctionne.
Merci pour votre réactivité.