Data Domain: jak korzystać z wbudowanego interfejsu API REST dla DD i DDMC

Riepilogo: Instalacje Data Domain (DD) (fizyczne i wirtualne), jak i PowerProtect DD Management Center (DDMC) mają wbudowaną usługę REST. Klienci mogą go używać do tworzenia własnych aplikacji do interakcji z DD i DDMC. ...

Questo articolo si applica a Questo articolo non si applica a Questo articolo non è legato a un prodotto specifico. Non tutte le versioni del prodotto sono identificate in questo articolo.

Istruzioni

Najnowszą dokumentację można znaleźć na stronie https://developer.dell.com/apis/products/data-protection.

Zarówno DD, jak i DDMC są domyślnie dostarczane z włączonym internetowym interfejsem API REST. Interfejs API REST to sposób programowej interakcji z DD i DDMC. W tym artykule użyto przykładów dla DD od teraz przy użyciu prostego protokołu klienta i serwera. Protokół HTTP nie przechowuje stanu i umożliwia klientowi odczytywanie stanu z DD i uruchamianie poleceń ze specjalnie spreparowanymi wywołaniami HTTP.

W wierszu polecenia następujące polecenie informuje o stanie internetowej usługi interfejsu API REST (web-service):

# adminaccess show
Service       Enabled   Allowed Hosts
-----------   -------   ---------------------
ssh           yes       -
scp           yes       (same as ssh)
telnet        no        DD3300.example.com
                        DD3300.example.com
ftp           no        DD3300.example.com
                        DD3300.example.com
ftps          yes       -
http          yes       -
https         yes       -
web-service   yes       N/A
-----------   -------   ---------------------
...

 


Uwaga: ponieważ interfejs API REST jest obsługiwany z tych samych portów co interfejs użytkownika, nie ma możliwości wyłączenia go oddzielnie. Nie stwarza to zagrożenia dla bezpieczeństwa, ponieważ wszystkie żądania do interfejsu API muszą być uwierzytelniane, w taki sam sposób, jak żądania do interfejsu użytkownika lub interfejsu wiersza poleceń.

Najlepszym sposobem na rozpoczęcie pracy z interfejsem API REST jest użycie klienta w pakiecie na każdym DD i DDMC. Dostęp do niego można uzyskać w następującej lokalizacji:

https://DD_OR_DDMC_IP_ADDRESS/api/

 

Przedstawia ona stronę z linkami do kilku ważnych zasobów, a mianowicie:

  • Dokumentacja API: Szczegółowa lista wszystkich dostępnych wywołań API obsługiwanych przez DD lub DDMC
  • Klient testowy REST: testowanie wywołań interfejsu API z samego interfejsu internetowego DD


Dokumentacja interfejsu API to wszystko, czego programista musi użyć, aby wykorzystać interfejs DD REST API do tworzenia aplikacji na podstawie DD. 

Do korzystania z interfejsu API wymagane jest uwierzytelnienie DD. Potrzebne są dwie informacje:

  • X-DD-AUTH-TOKEN: Plik cookie, który DD dostarcza po pomyślnym uwierzytelnieniu i musi być używany jako uwierzytelniacz dla wszelkich dalszych żądań.
  • X-DD-UUID: unikatowy identyfikator DD, który ma być używany dla (większości) żądań do interfejsu API. Uwaga w przypadku pojedynczego DD może to wydawać się zbędne, ale jest to wyraźnie konieczne w przypadku DDMC, gdzie można wybrać indywidualny DD.



Aby uwierzytelnić się w DD, użyj metody "/rest/v1.0/auth". Aby to zrobić z dowolnego hosta z zainstalowanym "curl" i dostępem do sieci do DD, i wyślij żądanie w następujący sposób:

# curl --include --insecure -X 'POST' --header 'Content-Type: application/json' --header 'Accept: application/text' -d '{ "auth_info":{ "username":"sysadmin","password":"SomePass" } }' 'https://DD_OR_DDMC_IP_ADDRESS:3009/rest/v1.0/auth'

 

Oto kilka komentarzy na temat wiersza poleceń uruchomionego powyżej:

  • Opcja "--include" jest potrzebna, ponieważ niektóre odpowiedzi na zapytanie wracają jako tagi odpowiedzi HTTP, a nie jako część treści
  • Opcja "--insecure" jest wymagana, gdy curl jest skonfigurowany do sprawdzania certyfikatu urzędu certyfikacji serwera z listą znanych i zaufanych urzędów certyfikacji. Ponieważ klient REST TEST w pakiecie z DD nie dodaje tej opcji, ale musi być używany do weryfikacji certyfikatów CA, w przeciwnym razie wszystkie polecenia uruchamiane z poziomu klienta testowego kończą się niepowodzeniem (undefinedERROR Text Status: error). Jeśli zamiast tego spróbujesz uruchomić przykładowy "curl" z wiersza poleceń, błąd będzie następujący:
curl: (60) SSL certificate problem: self signed certificate in certificate chain
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

 

  • Używamy metody HTTP "POST". Każda metoda API ma swoją własną metodę, która jest wyraźnie zaznaczona w dokumentacji.
  • Opcje "--header" służą do przekazywania nagłówków lub opcji na poziomie HTTP do wywoływanego DD
  • "-d" wysyła treść żądania do DD, w tym przypadku nazwę użytkownika i hasło
  • Na koniec identyfikator URI wywołujący określoną metodę uwierzytelniania jest wywoływany jako ostatni parametr (https://DD_OR_DDMC_IP_ADDRESS:3009/rest/v1.0/auth). Ponieważ korzystamy z protokołu HTTPS, poświadczenia są szyfrowane przez sieć. Należy pamiętać, że chociaż dostęp do dokumentacji i wbudowanego klienta testowego jest uzyskiwany za pośrednictwem portu 443, punkt wejścia usługi interfejsu API REST znajduje się na porcie 3009 i do działania musi używać protokołu HTTPS (nie HTTP)



Odpowiedź na powyższe zapytanie uwierzytelniające jest pokazana poniżej:

HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 112
X-DD-AUTH-TOKEN: 434f1d6dc1528bb8d3ad66c70dc7f74f9
X-DD-UUID: 7850d7a24f93f502:1346d63c57821e38
Access-Control-Allow-Credentials: true
Cache-Control: no-cache
Server: Data Domain OS
Access-Control-Expose-Headers: AUTHORIZATION, X-DD-AUTH-TOKEN, X-DD-JSON-RESPONSE-WITH-ROOT, X-DD-PEER-USERNAME

{"service_status": {"details": "success", "code": 0, "link": [{"rel": "related", "href": "/rest/v1.0/system"}]}}

 

Wszystko przed pustym wierszem to nagłówki HTTP wysłane w odpowiedzi. Zawartość po to treść odpowiedzi, która w tym przypadku informuje o powodzeniu. W przypadku tej metody najważniejszymi danymi są:

  • X-DD-AUTH-TOKEN (434f1d6dc1528bb8d3ad66c70dc7f74f9) Jest to tymczasowy token uwierzytelniający, który może być używany przez określony czas do uwierzytelniania dalszych operacji
  • X-DD-UUID (7850d7a24f93f502:1346d63c57821e38) identyfikator DD, o który należy wnioskować, którego należy użyć w późniejszych żądaniach


W przypadku każdego dalszego żądania musimy użyć tych wartości. Załóżmy na przykład, że chcemy znaleźć informacje na temat systemu plików DD. Przejdź do "Dokumentacji API", aby zlokalizować wywołanie, które najlepiej odpowiada naszym potrzebom, jak na poniższym zrzucie ekranu:


Dokumentacja lokalnego interfejsu API systemu

Po sprawdzeniu niezbędnych parametrów możemy zbudować żądanie jak poniżej.  Uwaga: w tym przypadku uruchamiamy żądanie typu "GET" zamiast żądania "POST", takiego jak metoda uwierzytelniania:

# curl --include --insecure -X 'GET' --header 'Content-Type: application/json' --header 'Accept: application/text' --header 'X-DD-AUTH-TOKEN:434f1d6dc1528bb8d3ad66c70dc7f74f9' 'https://DD_OR_DDMC_IP_ADDRESS:3009/rest/v1.0/dd-systems/7850d7a24f93f502%3A1346d63c57821e38/file-systems'

 

Otrzymujemy jednak następującą odpowiedź wskazującą, że token uwierzytelniania jest nieprawidłowy lub wygasł:

{"details": "**** Authentication token \"434f1d6dc1528bb8d3ad66c70dc7f74f9\" is invalid.", "code": 5427, "link": [{"rel": "self", "href": "/rest/v1.0/auth"}]}

 

Musielibyśmy wygenerować nowy token uwierzytelniania, aby uruchomić zapytanie i uzyskać zamierzone wyniki, na przykład:

# curl --include --insecure -X GET --header 'Accept: application/json' --header 'X-DD-AUTH-TOKEN: 178a7b8f337ce3027acdcd889ed10446c' 'https://DD_OR_DDMC_IP_ADDRESS:3009/rest/v1.0/dd-systems/7850d7a24f93f502%3A1346d63c57821e38/file-systems'
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 1123
X-DD-AUTH-TOKEN: 178a7b8f337ce3027acdcd889ed10446c
X-DD-UUID: 7850d7a24f93f502:1346d63c57821e38
Access-Control-Allow-Credentials: true
Cache-Control: no-cache
Server: Data Domain OS
Access-Control-Expose-Headers: AUTHORIZATION, X-DD-AUTH-TOKEN, X-DD-JSON-RESPONSE-WITH-ROOT, X-DD-PEER-USERNAME

{"hostname": "DD3300.example.com", "fs_status": "sn_enabled", "fs_clean_status": "inactive", "fs_cleaning_info": {"filesys_clean_info": {"cleaning_status": "inactive", "cleaning_dates": {"start_epoch": 1663879075, "end_epoch": 1663879131, "success_epoch": 1663679711}, "is_aborted": true, "abort_reason": "Cleaning was aborted by user.", "throttle": 50, "schedule": {"occurrence": "weekly", "days": ["Tue"], "time": "0600"}}, "cloud_clean_info": {"cleaning_status": "inactive", "cleaning_dates": {}, "is_aborted": false, "throttle": 50, "frequency": 0}}, "fs_uptime_secs": 344738, "fs_options": [{"key": "local-compression-type", "value": "gz"}, {"key": "marker-type", "value": "auto"}, {"key": "report-replica-as-writable", "value": "disabled"}, {"key": "staging-reserve", "value": "5% = 4271.2 GiB percent of total space"}, {"key": "warning-space-usage", "value": "90"}, {"key": "critical-space-usage", "value": "95"}], "link": [{"rel": "self", "href": "/rest/v1.0/dd-systems/7850d7a24f93f502%3A1346d63c57821e38/file-systems"}, {"rel": "parent", "href": "/rest/v1.0/dd-systems/7850d7a24f93f502%3A1346d63c57821e38"}]}


Dane wyjściowe w treści odpowiedzi są wysyłane do obiektu wywołującego w formacie JSON, który jest standardem.

Prodotti interessati

Data Domain
Proprietà dell'articolo
Numero articolo: 000203754
Tipo di articolo: How To
Ultima modifica: 30 lug 2026
Versione:  3
Trova risposta alle tue domande dagli altri utenti Dell
Support Services
Verifica che il dispositivo sia coperto dai Servizi di supporto.