RescaleのREST APIの使用
RescaleのREST APIを使用すると、入力ファイルのアップロード、ジョブの作成、既存のジョブのステータスの表示などを行うことができます。APIエンドポイントの全リストは、Rescale API.Documentationを参照してください。
APIキーは、APIと対話する際に、お客様のアカウントを認証するために必要です。お客様のアカウントのAPIキーを生成するには、設定ページのAPIセクションに移動し、Generate ボタンをクリックします。

Rescale APIによるジョブの実行
この例では、cURLとpythonの両方を使用して、APIからLS-DYNAのジョブを設定する方法を紹介します。
デフォルトでは、API キーは非表示になっています。 これを表示するには、API キーをクリックするだけです。 右側のコピーアイコンをクリックすると、API キーをコピーできます。

API キーに関するよくある質問
Q. API の最大有効期間ポリシーをユーザーレベルで設定できますか?
A. いいえ、API の最大有効期間ポリシーは組織レベルでのみ設定されます。
Q. API キーの有効期限が切れるとどうなりますか?
A. API キーの有効期限が切れると、日付が赤色に変わりますが、API キーは引き続き存在します。 API キーを使用しようとすると、「API キーはもうアクティブではありません」というエラーがスローされます。 API キーの有効期限が切れたときに削除するかどうかはユーザーの責任です。
Q. 有効期限に関連するアラートはありますか?
A. いいえ、今日は有効期限に関連するアラートはありません。 これに興味がある場合は、Rescale に連絡してニーズを表明してください。
Q. キーレベルで権限を追加することは可能ですか?
A. いいえ、すべてのキーには、ユーザーがアクセスできるものに対する完全なアクセス許可が与えられます。
Q. ユーザーが非アクティブ化された場合、API キーはどうなりますか?
A. ユーザーを非アクティブにしていずれかのキーを使用しようとすると、次のメッセージが表示されます。 User inactive or deleted.
Rescale APIによるジョブの実行
この例では、cURLとpythonの両方を使用して、APIからLS-DYNAのジョブを設定する方法を紹介します。
まず、入力ファイル (input.zip) が含まれるディレクトリに移動し、次のコマンドを使用してアップロードします。
curl -X POST -H 'Content-Type:multipart/form-data' \-H '認可: トークン' \-F "file=@input.zip" \https://platform.rescale.com/api/v2/files/contents/
応答は次のようになります。
{ "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" }
次に、分析ソフトウェアを選択する必要があります。 分析の完全なリストは、次の呼び出しによって取得できます。 curl -H "Authorization: Token <api-token>" https://platform.rescale.com/api/v2/analyses/
。 抽出する重要な情報は、使用したいソフトウェアのコードです。以下に示されています。 "code":"..."
.
また、 さまざまな HPC 向けに事前構成され最適化されたアーキテクチャ... その他 を使用して見つけることができる情報 curl -H "Authorization: Token <api-token>" https://platform.rescale.com/api/v2/coretypes/
。 Web UI に表示されるコアタイプの名前は、次の場所にキャプチャされます。 "name":"..."
各エントリで。 同様に、以下に示すコアタイプのコードを抽出する必要があります。 "code":"..."
.
現在いるディレクトリと同じディレクトリに、ジョブ設定と情報の JSON を含むデータ ファイルを作成します。 入力ファイルの ID は、入力ファイルがアップロードされたときの応答で確認できます。 例えば:
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
コマンド オプションとそのデフォルトの完全なリストを参照してください。 ここから.
次に、コマンドを実行して、作成したデータ ファイルに基づいて再スケール ジョブを設定します。
curl -X POST --data @data.json \-H "認証: トークン" \-H "Content-Type: application/json" \https://platform.rescale.com/api/v2/jobs/
応答は次のようになります。
{ "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":[]}
ジョブが保存され、Rescale Web UI に表示されます。 最後に、次のコマンドを使用してジョブを送信する必要があります。
curl -X POST -H '認証: トークン' \https://platform.rescale.com/api/v2/jobs/RcAFeb/submit/
注: ジョブ ID は前の応答で確認できます。
ジョブのステータスを監視したい場合は、次のコマンドを使用します。
curl -H '認可: トークン' \https://platform.rescale.com/api/v2/jobs/RcAFeb/statuses/
応答は次のようになります。
{ "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}
ジョブは Python スクリプトを通じてセットアップすることもできます。 この例では、LS-DYNA ジョブのセットアップと実行に使用できるサンプル Python コードのチャンクを提供します。
注: この方法では、 requests
ライブラリなので実行する必要があります import requests
コードの先頭に。
まず、ファイルを zip 圧縮してから、以下を使用して Rescale にアップロードします。
file_upload =requests.post( 'https://platform.rescale.com/api/v2/files/contents/', data=None, files={'file': open('input.zip','rb') }, headers={'認可': 'トークン'} )print file_upload.content
ファイル (input.zip) はスクリプトと同じディレクトリに存在する必要があることに注意してください。
出力は次のようになります。
{ "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"}
次に、ジョブを設定する必要があります。 このためには、分析ソフトウェアおよびハードウェア情報を取得する必要があります。
分析の場合:
request.get( 'https://platform.rescale.com/api/v2/analyses/', headers={'Authorization': 'トークン'} )
コアタイプの場合:
request.get( 'https://platform.rescale.com/api/v2/coretypes/', headers={'Authorization': 'トークン'} )
どちらの場合も、以下に表示されるコードを取得する必要があります。 "code":"..."
.
ジョブの設定例は次のようになります。
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
注: 入力ファイル ID は、前の出力 (ファイルのアップロード) から見つけることができます。
出力は次のようになります。
{ "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":[ ]}
ジョブが保存され、Rescale Web UI に表示されます。 最後に、次のコマンドを使用してジョブを送信する必要があります。
request.post( 'https://platform.rescale.com/api/v2/jobs/ASwPT/submit/', headers={'Authorization': 'トークン'} )
ジョブを監視したい場合は、次のコマンドを実行できます。
job_status =requests.get( 'https://platform.rescale.com/api/v2/jobs/ASwPT/statuses/', headers={'Authorization': 'トークン'} )job_status.contentを印刷