Verwenden der REST-API von Rescale

Mit der REST-API von Rescale können Sie Eingabedateien hochladen, Jobs erstellen, den Status bestehender Jobs anzeigen und vieles mehr. Die vollständige Liste der API-Endpunkte finden Sie im Rescale-API-Dokumentation.

Zur Authentifizierung Ihres Kontos bei der Interaktion mit der API ist ein API-Schlüssel erforderlich. Um einen API-Schlüssel für Ihr Konto zu generieren, gehen Sie zu API Abschnitt Ihrer Einstellungsseite (Profil > Benutzerprofileinstellungen > API), klicken Sie dann auf die API-Schlüssel hinzufügen .

Bild 49 1024x451 1

Sie können beliebig viele API-Schlüssel erstellen. Das Löschen erfolgt ganz einfach durch Auswählen und Klicken auf „Löschen“. API-Schlüssel laufen standardmäßig nie ab. Wenn Sie jedoch eine maximale Lebensdauer festlegen möchten, wenden Sie sich an den Rescale-Support. Eine maximale Lebensdauer legt die Lebensdauer des API-Schlüssels in Tagen fest (z. B. 90 Tage). Sobald eine maximale Lebensdauer festgelegt ist, erhalten alle neuen API-Schlüssel, die nach dem Erstellungsdatum der Richtlinie erstellt werden, ein Ablaufdatum.

Beispiel: Wenn Ihre Richtlinie für die maximale Lebensdauer am 90 auf 1 Tage festgelegt ist, verfallen alle nach diesem Zeitpunkt erstellten API-Schlüssel 1 Tage nach der Erstellung des API-Schlüssels. Wenn ich am 23 einen API-Schlüssel erstelle, verfällt dieser am 90.

Standardmäßig ist der API-Schlüssel ausgeblendet. Um ihn anzuzeigen, klicken Sie einfach darauf. Sie können den API-Schlüssel kopieren, indem Sie auf das Kopiersymbol rechts klicken.

Verwenden von API-Schlüsseln in der Job-Nachbearbeitung

Diese Funktion ist derzeit in der öffentlichen Betaversion verfügbar. Bitte wenden Sie sich für den Zugriff an Ihren Kundenbetreuer..

Rescale-Jobs erhalten automatisch einen eindeutigen, kurzlebigen API-Schlüssel als Umgebungsvariable, RESCALE_API_KEY, wodurch die Sicherheit und die Betriebseffizienz verbessert werden. Die Verfügbarkeit dieses API-Schlüssels im Job optimiert die Jobverkettung, das Fan-Out und Orchesterbearbeitung durch Automatisierung der API-Schlüsselverwaltung.

Der API-Schlüssel läuft nach Abschluss des Auftrags ab, wodurch Sicherheitsrisiken in gemeinsam genutzten Auftragsumgebungen reduziert werden.

Um den eingebetteten Job-API-Schlüssel zu verwenden, fügen Sie einfach Folgendes ein: RESCALE_API_KEY in Ihrem Skript oder in der Rescale-CLI, und es wird dieser auftragsspezifische API-Schlüssel aufgerufen. Wenn Sie den API-Schlüssel im Auftrag validieren möchten, verwenden Sie einfach die echo $RESCALE_API_KEY Befehl in der Job-CLI.

Jobspezifische API-Schlüssel werden in den Benutzerprofileinstellungen zusammen mit dem verknüpften Quelljob angezeigt und verfallen nach Abschluss des Jobs.

Screenshot 2024 02 16 um 12.36.36 Uhr

Wenn Sie den eingebetteten API-Schlüssel mit cURL verwenden, rufen Sie den Umgebungs-API-Schlüssel mit $ auf. Hier ist ein Beispiel für die Auflistung aller Jobs.

curl -H "Autorisierung: Token $RESCALE_API_KEY" https://platform.rescale.com/api/v2/jobs/

Wenn Sie den eingebetteten API-Schlüssel mit Python verwenden, rufen Sie den Umgebungs-API-Schlüssel mithilfe der Betriebssystembibliothek auf. Hier ist ein Beispiel für die Auflistung aller Jobs.

Importanforderungen importieren os api_key = os.getenv("RESCALE_API_KEY") requests.get( 'https://platform.rescale.com/api/v2/jobs/', headers={'Authorization': f'Token {api_key}'} ) requests.get( 'https://platform.rescale.com/api/v2/jobs/?state=not_completed', headers={'Authorization': f'Token {api_key}'} )

Ausführen eines Jobs über die Rescale-API

Dieses Beispiel zeigt, wie Sie einen LS-DYNA-Job über die API mit cURL und Python einrichten.

Navigieren Sie zunächst zum Verzeichnis mit der Eingabedatei (input.zip) und laden Sie sie mit dem folgenden Befehl hoch:

curl -X POST -H 'Content-Type:multipart/form-data' \-H 'Authorization: Token ' \-F "file=@input.zip" \https://platform.rescale.com/api/v2/files/contents/

Die Antwort wäre etwa:

{ "pathParts": { "path": "user/user_WrNSdb/input-a2f3d113-6591-461e-a912-57b06166df21.zip", "container": "prod-rescale-platform" }, "typeId": 1, "name": "input.zip", "dateUploaded": "2016-11-11T18:50:54.078468Z", "relativePath": "input.zip", "storage": { "storageType": "S3Storage", "id": "pCTMk", "connectionSettings": { "region": "us-east-1" }, "encryptionType": "default" }, "decryptedSize": 10391660, "downloadUrl": "https://platform.rescale.com/api/v2/files/yMqdxd/contents/", "sharedWith": [], "encodedEncryptionKey": "N1iq48GWyEDkMG1wTHI656hcJZKdSQecuwKhu31Epd0=", "owner": "demo@example.com", "path": "user/user_WrNSdb/input-a2f3d113-6591-461e-a912-57b06166df21.zip", "isUploaded": true, "viewInBrowser": false, "id": "yMqdxd", "isDeleted": false, "md5": "159bb1cdd01987f9122f5ec673958eaf" }

Als nächstes müssen wir eine Analysesoftware auswählen. Die vollständige Liste der Analysen erhalten Sie unter curl -H "Authorization: Token <api-token>" https://platform.rescale.com/api/v2/analyses/. Die wichtigsten Informationen, die Sie extrahieren müssen, sind der Code der Software, die Sie verwenden möchten, angezeigt unter "code":"...".

Sie benötigen außerdem die Kerntyp Informationen, die gefunden werden können unter curl -H "Authorization: Token <api-token>" https://platform.rescale.com/api/v2/coretypes/Der Name des Coretypes, wie er auf der Web-Benutzeroberfläche angezeigt wird, wird unter "name":"..." in jedem Eintrag. Ebenso müssen Sie den Code des Coretypes extrahieren, der unter "code":"...".

Erstellen Sie im aktuellen Verzeichnis eine Datendatei mit den Jobeinstellungen und -informationen im JSON-Format. Die ID der Eingabedatei finden Sie in der Antwort zum Zeitpunkt des Hochladens der Eingabedatei. Beispiel:

cat <<EOF > data.json{  "name": "LS-DYNA cURL API Setup", "billingPriorityValue": "INSTANT", "jobanalyses": [    {      "useRescaleLicense":true,      "command": "ls-dyna -n 2 -i neon.refined.rev01.k -p single",      "analysis": {        "code": "ls_dyna",        "version": "9.0.0"      },      "hardware": {        "coresPerSlot": 2,        "slots": 1,        "coreType": "hpc-3"      },      "inputFiles": [        {          "id": "yMqdxd"        }      ]    }  ]}EOF

Die vollständige Liste der Befehlsoptionen und deren Standardwerte finden Sie werden auf dieser Seite erläutert.

Führen Sie als Nächstes den Befehl aus, um Ihren Rescale-Job basierend auf der gerade erstellten Datendatei einzurichten:

curl -X POST --data @data.json \-H "Autorisierung: Token " \-H "Inhaltstyp: application/json" \https://platform.rescale.com/api/v2/jobs/

Die Antwort wäre etwa:

{   "monteCarloIterations":null,   "paramFile":null,   "name":"LS-DYNA cURL API Setup",  "billingPriorityValue": "INSTANT", "includeNominalRun":false,   "jobanalyses":[      {         "envVars":{          },         "preProcessScriptCommand":"",         "postProcessScriptCommand":"",         "postProcessScript":null,         "useRescaleLicense":true,         "templateTasks":[          ],         "analysis":{            "version":"9.0.0",            "code":"ls_dyna",            "name":"LS-DYNA",            "versionName":"R9.0.0"         },         "hardware":{            "coresPerSlot":2,            "coreType":"hpc-3",            "coreSummary":{               "storagePerNode":80000,               "gpusPerNode":0,               "numberOfNodes":1.0,               "memoryPerNode":7500            },            "slots":1,            "type":"compute",            "walltime":750         },         "command":"ls-dyna -n 2 -i neon.refined.rev01.k -p single",         "preProcessScript":null,         "flags":{          },         "inputFiles":[            {               "pathParts":{                  "path":"user/user_WrNSdb/input-a2f3d113-6591-461e-a912-57b06166df21.zip",                  "container":"prod-rescale-platform"               },               "typeId":1,               "name":"input.zip",               "dateUploaded":"2016-11-11T18:50:54.078468Z",               "relativePath":"input.zip",               "storage":{                  "storageType":"S3Storage",                  "id":"pCTMk",                  "connectionSettings":{                     "region":"us-east-1"                  },                  "encryptionType":"default"               },               "decryptedSize":10391660,               "downloadUrl":"https://platform.rescale.com/api/v2/files/yMqdxd/contents/",               "sharedWith":[                ],               "encodedEncryptionKey":"N1iq48GWyEDkMG1wTHI656hcJZKdSQecuwKhu31Epd0=",               "owner":"demo@rescale.com",               "path":"user/user_WrNSdb/input-a2f3d113-6591-461e-a912-57b06166df21.zip",               "isUploaded":true,               "viewInBrowser":false,               "id":"yMqdxd",               "isDeleted":false,               "md5":"159bb1cdd01987f9122f5ec673958eaf"            }         ]      }   ],   "projectId":null,   "resourceFilters":[    ],   "remoteVizConfig":null,   "jobvariables":[    ],   "sshPort":22,   "expectedRuns":null,   "caseFile":null,   "isLowPriority":false,   "owner":"demo@rescale.com",   "isTemplateDryRun":false,   "autoTerminateCluster":true,   "id":"RcAFeb",   "archiveFilters":[]}

Der Auftrag ist nun gespeichert und wird in der Rescale-Web-Benutzeroberfläche angezeigt. Abschließend müssen Sie den Auftrag mit dem folgenden Befehl übermitteln:

curl -X POST -H 'Autorisierung: Token ' \https://platform.rescale.com/api/v2/jobs/RcAFeb/submit/

Hinweis: Die Job-ID finden Sie in der vorherigen Antwort.

Wenn Sie den Status Ihres Auftrags überwachen möchten, verwenden Sie den folgenden Befehl:

curl -H 'Autorisierung: Token ' \https://platform.rescale.com/api/v2/jobs/RcAFeb/statuses/

Die Antwort wäre etwa:

{   "count":6,   "previous":null,   "results":[      {         "status":"Completed",         "statusDate":"2016-11-15T19:01:13.948641Z",         "id":"KNwnm",         "statusReason":"Completed successfully"      },      {         "status":"Executing",         "statusDate":"2016-11-15T18:47:05.530000Z",         "id":"ePisa",         "statusReason":null      },      {         "status":"Validated",         "statusDate":"2016-11-15T18:41:23.929000Z",         "id":"Yfcem",         "statusReason":null      },      {         "status":"Started",         "statusDate":"2016-11-15T18:41:23.629000Z",         "id":"KDisa",         "statusReason":null      },      {         "status":"Queued",         "statusDate":"2016-11-15T18:41:21.577545Z",         "id":"ircem",         "statusReason":null      },      {         "status":"Pending",         "statusDate":"2016-11-15T18:40:56.465755Z",         "id":"UOisa",         "statusReason":null      }   ],   "next":null}

Ein Job kann auch über ein Python-Skript eingerichtet werden. Dieses Beispiel enthält Beispiele für Python-Code, mit dem Sie einen LS-DYNA-Job einrichten und ausführen können.

Hinweis: Diese Methode verwendet die requests Bibliothek, also müssen Sie ausführen import requests am Anfang Ihres Codes.

Komprimieren Sie die Datei zunächst und laden Sie sie dann mit folgendem Befehl in Rescale hoch:

file_upload = requests.post( 'https://platform.rescale.com/api/v2/files/contents/', Daten=Keine, Dateien={'Datei': öffnen('input.zip','rb')}, Header={'Autorisierung': 'Token '} )print file_upload.content

Beachten Sie, dass sich die Datei (input.zip) im selben Verzeichnis wie das Skript befinden muss.

Die Ausgabe wäre etwa wie folgt:

{   "pathParts":{      "path":"user/user_WrNSdb/input-69b6c9bd-e4d8-4291-9c79-487ac21a0c7c.zip",      "container":"prod-rescale-platform"   },   "typeId":1,   "name":"input.zip",   "dateUploaded":"2016-11-14T22:58:35.729270Z",   "relativePath":"input.zip",   "storage":{      "storageType":"S3Storage",      "id":"pCTMk",      "connectionSettings":{         "region":"us-east-1"      },      "encryptionType":"default"   },   "decryptedSize":10391660,   "downloadUrl":"https://platform.rescale.com/api/v2/files/FDXpJd/contents/",   "sharedWith":[    ],   "encodedEncryptionKey":"ixay5gbPcYHnSwKNhPHldhzCZXEpN/rpD9Q8tskoavo=",   "owner":"demo@rescale.com",   "path":"user/user_WrNSdb/input-69b6c9bd-e4d8-4291-9c79-487ac21a0c7c.zip",   "isUploaded":true,   "viewInBrowser":false,   "id":"FDXpJd",   "isDeleted":false,   "md5":"159bb1cdd01987f9122f5ec673958eaf"}

Als Nächstes müssen Sie den Job einrichten. Dazu benötigen Sie Informationen zur Analysesoftware und -hardware.

Für Analysen:

requests.get( 'https://platform.rescale.com/api/v2/analyses/', headers={'Authorization': 'Token '} )

Für Coretype:

requests.get( 'https://platform.rescale.com/api/v2/coretypes/', headers={'Authorization': 'Token '} )

In beiden Fällen müssen Sie den Code abrufen, der unter "code":"...".

Ein Beispiel für die Einrichtung eines Jobs wäre:

job_setup = requests.post(    'https://platform.rescale.com/api/v2/jobs/',    json = {         "name": "LS-DYNA Python API Setup",         "jobanalyses": [             {                 "useRescaleLicense":True,                 "command": "ls-dyna -n 2 -i neon.refined.rev01.k -p single",                 "analysis": {                     "code": "ls_dyna",                     "version": "9.0.0"                    },                 "hardware": {                     "coresPerSlot": 2,                     "slots": 1,                     "coreType": "hpc-3"                    },                 "inputFiles": [                     {                         "id": "FDXpJd"                        }                    ]                }            ]        },  headers={'Authorization': 'Token <api-token>'} )print job_setup.content

Hinweis: Die Eingabedatei-ID finden Sie in der vorherigen Ausgabe (Datei-Upload).

Die Ausgabe wäre etwa wie folgt:

{   "monteCarloIterations":null,   "paramFile":null,   "name":"LS-DYNA Python API Setup",   "includeNominalRun":false,   "jobanalyses":[      {         "envVars":{          },         "preProcessScriptCommand":"",         "postProcessScriptCommand":"",         "postProcessScript":null,         "useRescaleLicense":true,         "templateTasks":[          ],         "analysis":{            "version":"9.0.0",            "code":"ls_dyna",            "name":"LS-DYNA",            "versionName":"R9.0.0"         },         "hardware":{            "coresPerSlot":2,            "coreType":"hpc-3",            "coreSummary":{               "storagePerNode":80000,               "gpusPerNode":0,               "numberOfNodes":1.0,               "memoryPerNode":7500            },            "slots":1,            "type":"compute",            "walltime":750         },         "command":"ls-dyna -n 2 -i neon.refined.rev01.k -p single",         "preProcessScript":null,         "flags":{          },         "inputFiles":[            {               "pathParts":{                  "path":"user/user_WrNSdb/input-69b6c9bd-e4d8-4291-9c79-487ac21a0c7c.zip",                  "container":"prod-rescale-platform"               },               "typeId":1,               "name":"input.zip",               "dateUploaded":"2016-11-14T22:58:35.729270Z",               "relativePath":"input.zip",               "storage":{                  "storageType":"S3Storage",                  "id":"pCTMk",                  "connectionSettings":{                     "region":"us-east-1"                  },                  "encryptionType":"default"               },               "decryptedSize":10391660,               "downloadUrl":"https://platform.rescale.com/api/v2/files/FDXpJd/contents/",               "sharedWith":[                ],               "encodedEncryptionKey":"ixay5gbPcYHnSwKNhPHldhzCZXEpN/rpD9Q8tskoavo=",               "owner":"demo@rescale.com",               "path":"user/user_WrNSdb/input-69b6c9bd-e4d8-4291-9c79-487ac21a0c7c.zip",               "isUploaded":true,               "viewInBrowser":false,               "id":"FDXpJd",               "isDeleted":false,               "md5":"159bb1cdd01987f9122f5ec673958eaf"            }         ]      }   ],   "projectId":null,   "resourceFilters":[    ],   "remoteVizConfig":null,   "jobvariables":[    ],   "sshPort":22,   "expectedRuns":null,   "caseFile":null,   "isLowPriority":false,   "owner":"demo@rescale.com",   "isTemplateDryRun":false,   "autoTerminateCluster":true,   "id":"ASwPT",   "archiveFilters":[    ]}

Der Auftrag ist nun gespeichert und wird in der Rescale-Web-Benutzeroberfläche angezeigt. Abschließend müssen Sie den Auftrag mit dem folgenden Befehl übermitteln:

requests.post( 'https://platform.rescale.com/api/v2/jobs/ASwPT/submit/', headers={'Authorization': 'Token '} )

Wenn Sie Ihren Job überwachen möchten, können Sie den folgenden Befehl ausführen:

job_status = requests.get( 'https://platform.rescale.com/api/v2/jobs/ASwPT/statuses/', headers={'Authorization': 'Token '} )Druckauftragsstatus.Inhalt

Häufig gestellte Fragen zu API-Schlüsseln

F: Kann ich die Richtlinie für die maximale API-Lebensdauer auf Benutzerebene festlegen?
A. Nein, die Richtlinien zur maximalen API-Lebensdauer werden nur auf Organisationsebene festgelegt.

F: Was passiert, wenn ein API-Schlüssel abläuft?
A. Wenn ein API-Schlüssel abläuft, wird das Datum rot angezeigt, der API-Schlüssel bleibt jedoch bestehen. Beim Versuch, den API-Schlüssel zu verwenden, wird die Fehlermeldung „API-Schlüssel ist nicht mehr aktiv“ angezeigt. Es liegt in der Verantwortung des Benutzers, abgelaufene API-Schlüssel zu löschen.

F: Gibt es Warnungen im Zusammenhang mit dem Ablaufdatum?
A. Nein, es gibt heute keine Benachrichtigungen zum Ablaufdatum. Wenn Sie Interesse daran haben, wenden Sie sich bitte an Rescale und teilen Sie uns Ihren Bedarf mit.

F: Ist es möglich, Berechtigungen auf Schlüsselebene hinzuzufügen?
A. Nein, alle Schlüssel verfügen über die volle Berechtigung für alles, worauf der Benutzer Zugriff hat.

F: Was passiert mit dem API-Schlüssel, wenn ein Benutzer deaktiviert wird?
A. Wenn Sie einen Benutzer deaktivieren und versuchen, einen der Schlüssel zu verwenden, erhalten Sie die Meldung: User inactive or deleted.