PowerStore : Utilisation de l’API REST PowerStore

Résumé: Cet article fournit une introduction à l’API REST PowerStore, y compris des exemples d’utilisation pratique et des erreurs courantes.

Cet article concerne Cet article ne concerne pas Cet article n’est associé à aucun produit spécifique. Toutes les versions du produit ne sont pas identifiées dans cet article.

Instructions

Plusieurs outils peuvent être utilisés pour tester les API REST, notamment Postman, HTTPie et cURL. Dans cet article, cURL est utilisé pour tous les exemples, car elle est facilement disponible sur la plupart des systèmes d’exploitation par défaut.
 
Utilisation courante de l’API Rest :

 

Intégrité du nœud :
curl -H « Accept : application/json » -u « admin :******** » -X GET -k https://xx.xx.xx.xx/api/rest/hardware?select=id,name,type,lifecycle_state?type=eq.Node

Exemples de sortie :

{"id » :"00b941ceea9243f0a36e85abe9504214 »,"name » :"BaseEnclosure-NodeB »,"type » :"Node »,"lifecycle_state » :"Healthy"},
{"id » :"2877d096fd2a4cc4b3b8af97f21c1c24 »,"name » :"BaseEnclosure-NodeA »,"type » :"Node »,"lifecycle_state » :"Healthy"}

 

État de la réplication :
curl -H « Accept : application/json » -u « admin :******** » -X GET -k https://xx.xx.xx.xx/api/rest/replication_session?select=id,role,state,last_sync_timestamp,local_resource_id

Exemples de sortie :

{"id » :"047e38ee-9aeb-4761-8ca5-393204fe6584 »,"role » :"Metro_Preferred »,"state » :"OK »,"last_sync_timestamp » :"2026-07-16T15:48:05.628263+00:00 »,"local_resource_id » :"d34bd80e-1d43-4692-ab37-e307bc92eb73"},
{"id » :"26dd4105-a24f-4d82-b40b-20dcefbfe5df »,"role » :"Source »,"state » :"OK »,"last_sync_timestamp » :"2026-07-16T15:31:54.64127+00:00 »,"local_resource_id » :"82c40277-dee4-46de-8559-920fe5f942cc"},
{"id » :"414dba20-08b1-4d5e-a521-517a3b37473a »,"role » :"Metro_Preferred »,"state » :"OK »,"last_sync_timestamp » :"2026-07-16T15:51:05.525764+00:00 »,"local_resource_id » :"eb970724-cc3e-4661-8d71-bec7f44baf10"}

 

Alerte système :
curl -H « Accept : application/json » -u « admin :******** » -X GET -k https://xx.xx.xx.xx/api/rest/alert?select=id,event_code,severity,resource_type,generated_timestamp,state,description_l10n

Exemples de sortie :

{"id » :"008abb47-e72d-4608-b915-b8c01328b64e »,"event_code » :"0x01700304 »,"severity » :"Major »,"resource_type » :"remote_system »,"generated_timestamp » :"2026-05-11T01:51:01.280627+00:00 »,"state » :"ACTIVE »,"description_l10n » :"Toutes les connexions de données du système distant Ghost sont déconnectées."},
{"id » :"01114811-82a9-484e-8cf9-3da50c0e3d7b »,"event_code » :"0x01701801 »,"severity » :"Info »,"resource_type » :"volume »,"generated_timestamp » :"2026-07-14T02:15:34.764524+00:00 »,"state » :"CLEARED »,"description_l10n » :"Witness Metro configuré pour la ressource HyperV-Node1 est engagé."}

 

Événements d’audit :
curl -H « Accept : application/json » -u « admin :******** » -X GET -k https://xx.xx.xx.xx/api/rest/audit_event?select=id,type,timestamp,username,resource_type,resource_action,message_l10n,client_address

Le résultat peut être énorme et nécessiter un filtre. Par exemple, pour afficher les événements liés à l’administrateur de l’utilisateur. Try :
curl -H « Accept : application/json » -u « admin :******** » -X GET -k https://xx.xx.xx.xx/api/rest/audit_event?select=id,type,timestamp,username,resource_type,resource_action,message_l10n,client_address?username=eq.admin

Exemples de sortie :

{"id » :"111540 »,"type » :"Config »,"timestamp » :"2026-03-11T20:25:57.267124+00:00 »,"username » :"admin »,"resource_type » :"host »,"resource_action » :"delete »,"message_l10n » :"Suppression réussie de l’hôte avec le nom : Thors 183.24 (iSCSI) et l’ID : c698f28b-49ac-4268-a9c7-c6da66bdfbc8. »,"client_address » :"10.158.49.47"},
{"id » :"111541 »,"type » :"Config »,"timestamp » :"2026-03-11T20:25:57.337655+00:00 »,"username » :"admin »,"resource_type » :"host »,"resource_action » :"delete », » message_l10n » :"Suppression réussie des métadonnées avec les clés : [] associées à la ressource avec le type : host et l’ID : c698f28b-49ac-4268-a9c7-c6da66bdfbc8. »,"client_address » :"10.158.49.47"}

 

Liste de snapshots :
curl -H « Accept : application/json » -u « admin :******** » -X GET -k https://xx.xx.xx.xx/api/rest/volume_snap_list_cma_view?select=id,name,source_timestamp,description,creation_timestamp

Exemples de sortie :
{"id » :"24d7856d-d389-4f05-9752-ebb1de61a6d6 »,"name » :"Walid Snaps.PowerTriage-RHEL (Walid DO NOT DELETE). ». 2026-07-15T00:00:00Z 189403910 »,"source_timestamp » :"2026-07-15T00:03:16.096762+00:00 »,"description » :" »,"creation_timestamp » :"2026-07-15T00:03:16.096762+00:00"},
{"id » :"2cfd727f-b09c-4895-8fd5-93850fd63698 »,"name » :"Daily-File.7DSL0M2-1-001.2026-07-14T00:08:08Z 281536767 »,"source_timestamp » :"2026-07-14T00:08:08.618343+00:00 », » description » :null,"creation_timestamp » :"2026-07-14T00:08:08.618343+00:00"}

 

Metrics de performances :
curl -H « Accept : application/json » -H « Content-Type : application/json » -u « admin :******** » -X POST -k https://xx.xx.xx.xx/api/rest/metrics/generate -d '{ « entity » : « performance_metrics_by_appliance », « entity_id » : « A1 »,"interval » : « One_Day » }'|jq '.'

Exemples de sortie :


{ « appliance_id » : « A1 »,
« timestamp » : « 2026-07-15T00:00:00Z »,
« avg_read_latency » : 172.76094,
« avg_write_latency » : 404.14536,
« avg_mirror_write_latency » : 924.59375,
« avg_mirror_overhead_latency » : 364.82297,
« avg_latency » : 273.2135,
« avg_read_size » : 91601.2,
« avg_write_size » : 6204.5635,
« avg_io_size » : 54527.355,
« avg_read_iops » : 9.996701,
« avg_write_iops » : 7.669595,
« avg_mirror_write_iops » : 0.024386574,
  « avg_total_iops » : 17.666296,
« avg_read_bandwidth » : 915709.9,
« avg_write_bandwidth » : 47586.49,
« avg_mirror_write_bandwidth » : 190.67259,
« avg_total_bandwidth » : 963296.4,
« avg_io_workload_cpu_utilization » : 0.00399437453597784,
« max_avg_read_latency » : 401.14688,
« max_avg_write_latency » : 1679.9584,
« max_avg_latency » : 652.1067,
« max_avg_mirror_write_latency » : 3842,
« max_avg_mirror_overhead_latency » : 3319,
  « max_avg_read_size » : 99656.45,
« max_avg_write_size » : 30189.037,
« max_avg_io_size » : 85726.97,
« max_read_iops » : 161.2,
« max_write_iops » : 680.6,
« max_mirror_write_iops » : 3.8,
« max_total_iops » : 834,
« max_read_bandwidth » : 8509440,
« max_write_bandwidth » : 8792986,
« max_mirror_write_bandwidth » : 22732.8,
« max_total_bandwidth » : 17252044,
« max_io_workload_cpu_utilization » : 0.2170485556125641,
« repeat_count » : 1,

  ...

  « response_definition » : « performance_metrics_by_appliance_rollup »,
« entity » : « performance_metrics_by_appliance"
}

 

Erreurs courantes avec l’API Rest :

Ajoutez « -v » à votre commande curl pour afficher l’erreur. 

Exemple 1 : informations d’identification incorrectes.

curl -H « Accept : application/json » -u « admin :wrong_password » -k https://10.241.219.160/api/rest/hardware?select=id,name,type,lifecycle_state?type=eq.Node

* Request completely sent off
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4) :
< HTTP/1.1 401 Unauthorized
< WWW-Authenticate : SSOCustom realm="Cyclone Realm »
< content-type : application/json
< content-length : 0

Exemple 2 : httpd n’est pas en cours d’exécution.

curl -v -H « Accept : application/json » -u « admin :******** » -k https://xx.xx.xx.xx/api/rest/hardware?select=id,name,type,lifecycle_state?type=eq.Node
* Trying xx.xx.xx.xx :443...
* Échec de la connexion au port 443 xx.xx.xx.xx à partir du port 59124 de xx.xx.xx.xx : expiration du délai de
connexion* Échec de la connexion au port 443 xx.xx.xx après 31 939 ms : Impossible de se connecter au serveur
* Fermeture de la connexion #0
curl : (28) Échec de la connexion au port 443 xx.xx.xx après 31 939 ms : Impossible de se connecter au serveur

Exemple 3 : syntaxe incorrecte sans type de contenu.

curl -v -H « Accept : application/json » -u « admin :******** » -X POST -k https://xx.xx.xx.xx/api/rest/metrics/generate -d '{ « entity » : « performance_metrics_by_appliance », « entity_id » : « A1 »,"interval » : « One_Day » }'
{"messages » :[{"severity » :"Erreur »,"code » :"0xE04040030001 »,"message_l10n » :"Échec de la validation : L’en-tête Request-Content-Type '[application/x-www-form-urlencoded]' ne correspond à aucun type autorisé. Doit être l’une des suivantes : [application/json]., Un corps de demande est requis mais aucun n’a été trouvé.. »,"arguments » :[{"delimiter » : », « ,"messages » :[{"severity » :"Erreur »,"code » :"validation.request.contentType.notAllowed »,"message_l10n » :"L’en-tête Request-Content-Type '[application/x-www-form-urlencoded]' ne correspond à aucun type autorisé. Doit être l’un des suivants : [application/json]. »,"arguments » :["[application/x-www-form-urlencoded] »,"[application/json]"]},{"severity » :"Erreur »,"code » :"validation.request.body.missing »,"message_l10n » :"Un corps de demande est requis mais aucun n’a été trouvé."}]}]}]}]}

 

Liens utiles :

https://dl.dell.com/content/manual55475248-dell-powerstore-rest-api-developers-guide.pdf?language=en-us

https://< PWST_CLUSTER_IP>/swaggerui/

 

Produits concernés

PowerStore, PowerStoreOS
Propriétés de l’article
Numéro d’article: 000490125
Type d’article: How To
Dernière modification: 16 juil. 2026
Version:  1
Trouvez des réponses à vos questions auprès d’autres utilisateurs Dell
Services de support
Vérifiez si votre appareil est couvert par les services de support.