PowerStore: come utilizzare l'API REST di PowerStore

Summary: Questo articolo fornisce un'introduzione all'API REST di PowerStore, inclusi esempi pratici di utilizzo ed errori comuni.

This article applies to This article does not apply to This article is not tied to any specific product. Not all product versions are identified in this article.

Instructions

È possibile utilizzare diversi strumenti per testare le API REST, tra cui Postman, HTTPie e cURL. In questo articolo, cURL viene utilizzato per tutti gli esempi perché è prontamente disponibile nella maggior parte dei sistemi operativi per impostazione predefinita.
 
Utilizzo comune dell'API REST:

 

Stato del nodo:
curl -H "Accetta: application/json" -u "admin:********" -X GET -k https://xx.xx.xx.xx/api/rest/hardware?select=id,name,type,lifecycle_state?type=eq.Node

Esempi di output:

{"id":"00b941ceea9243f0a36e85abe9504214","name":"BaseEnclosure-NodeB","type":"Nodo","lifecycle_state":"Integro"},
{"id":"2877d096fd2a4cc4b3b8af97f21c1c24","name":"BaseEnclosure-NodeA","type":"Nodo","lifecycle_state":"Integro"}

 

Stato replica:
curl -H "Accetta: 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

Esempi di output:

{"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"}

 

Avviso di sistema:
curl -H "Accetta: 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

Esempi di output:

{"id":"008abb47-e72d-4608-b915-b8c01328b64e","event_code":"0x01700304","severity":"Principale","resource_type":"remote_system","generated_timestamp":"2026-05-11T01:51:01.280627+00:00","state":"ACTIVE","description_l10n":"Tutte le connessioni dati dal sistema remoto Ghost sono disconnesse."},
{"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":"Il witness metro configurato per la risorsa HyperV-Node1 è impegnato."}

 

Eventi di controllo:
curl -H "Accetta: 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

L'output può essere enorme e necessita di filtro. Ad esempio, per visualizzare gli eventi relativi all'amministratore utente. 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

Esempi di output:

{"id":"111540","type":"Config","timestamp":"2026-03-11T20:25:57.267124+00:00","username":"admin","resource_type":"host","resource_action":"delete","message_l10n":"Host eliminato correttamente con nome: Thors 183.24 (iSCSI) e 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":"Metadati eliminati correttamente con chiavi: [] associate alla risorsa con tipo: host e ID: c698f28b-49ac-4268-a9c7-c6da66bdfbc8.","client_address":"10.158.49.47"}

 

Elenco istantanee:
curl -H "Accetta: 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

Esempi di output:
{"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"," descrizione":null,"creation_timestamp":"2026-07-14T00:08:08.618343+00:00"}

 

Metriche delle prestazioni:
curl -H "Accetta: 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 '.'

Esempi di output:


{ "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"
}

 

Errori comuni con l'API REST:

Aggiunta di "-v" al comando curl per visualizzare l'errore. 

Esempio 1: credenziale errata.

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

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

Esempio 2: httpd non è in esecuzione.

curl -v -H "Accetta: application/json" -u "admin:********" -k https://xx.xx.xx.xx/api/rest/hardware?select=id,name,type,lifecycle_state?type=eq.Node
* Sto provando xx.xx.xx.xx:443...
* Connessione alla porta xx.xx.xx.xx 443 dalla porta xx.xx.xx.xx 59124 non riuscita: connessione scaduta
* Impossibile connettersi alla porta xx.xx.xx.xx 443 dopo 31939 ms: Impossibile connettersi al server
* Chiusura della connessione #0
curl: (28) Impossibile connettersi alla porta xx.xx.xx.xx 443 dopo 31939 ms: impossibile connettersi al server

Esempio 3: sintassi errata senza tipo di contenuto.

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":"Error","code":"0xE04040030001","message_l10n":"Convalida non riuscita: l'intestazione Request-Content-Type '[application/x-www-form-urlencoded]' non corrisponde ad alcun tipo consentito. Deve essere uno tra: [application/json]., È richiesto un corpo della richiesta ma non ne è stato trovato..","arguments":[{"delimiter":", ","messages":[{"severity":"Error","code":"validation.request.contentType.notAllowed","message_l10n":"L'intestazione Request-Content-Type '[application/x-www-form-urlencoded]' non corrisponde ad alcun tipo consentito. Deve essere uno tra: [application/json].","arguments":["[application/x-www-form-urlencoded]","[application/json]"]},{"severity":"Error","code":"validation.request.body.missing","message_l10n":"È richiesto un corpo della richiesta ma non ne è stato trovato."}]}]}]}

 

Link utili:

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

https://< PWST_CLUSTER_IP>/spavalderia/

 

Affected Products

PowerStore, PowerStoreOS
Article Properties
Article Number: 000490125
Article Type: How To
Last Modified: 31 juill. 2026
Version:  2
Find answers to your questions from other Dell users
Support Services
Check if your device is covered by Support Services.