LoginSignup

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 5 years have passed since last update.

[RescaleAPI] ジョブの作成

Last updated at Posted at 2017-02-13

0. 前提

事前に下記が実施されていることを前提とします。設定済みであれば飛ばしてOKです。

1. ジョブの作成

1.1 スクリプトの作成

以下のスクリプトを "${script}/rescale-createJob.sh" という名前で保存します。

rescale-uploadfile.shの作成
vi ${script}/rescale-createJob.sh
source
#!/bin/sh

filename=$1

platform='https://platform.rescale.jp/'
token=${RESCALE_API_TOKEN}


_create_job()
{
rescaleJson=$1
echo $rescaleJson | jq . > _jobanalyses.json 2>/dev/null
curl -s -X POST \
-H "Authorization: Token ${token}" \
-H "Content-Type: application/json" \
${platform}/api/v2/jobs/ \
-d "${rescaleJson}"
}

_my_jobanalyses()
{
cat << EOF
{
    "name": "Hellow world",
    "jobanalyses": [
        {
            "useMpi": "true",
            "command": "./sample.sh",
            "analysis": {
                "code": "user_included_platformmpi",
                "name": "Bring Your Own MPI Software",
                "version": "platformmpi-9.1.4"
            },
            "hardware": {
                "coresPerSlot": 2,
                "slots": 1,
                "coreType": "hpc-plus"
            }
        }
    ],
    "isLowPriority": "true"
}
EOF
}

_create_rescaleJson()
{
if [ $# -gt 0 ];then
    buff=$(_my_jobanalyses | jq '.jobanalyses[0] |= .+ {"inputFiles": []}')
    for filename in $*
    do
        buff=$(echo ${buff} | jq ".jobanalyses[0].inputFiles |= .+[{"id": \"${filename}\"}]")
    done
    echo ${buff}
elif [ $# -eq 0 ];then
    _my_jobanalyses
else
    exit 1
fi
}

#
# Rescaleに送るためのJSONを作る
# 普段ブラウザ上で行う作業をJSONで表現される
#
jobAnalysesJson=$(_create_rescaleJson $*)

#
# バラバラにならないように、" " で囲むこと。
# スペースが入っているため、引数1で全てを送る必要がある
r=$(_create_job "${jobAnalysesJson}")
echo $r
実行権限付与
chmod +x ${script}/rescale-createJob.sh

1.2 実行例: ジョブを生成しjobIdを取得する

job_idとは、ブラウザでアクセスした時、そのURLが https://platform.rescale.jp/jobs/htgchb/runs/1/results/
JOB_ID="htgchb"
であれば、"htgchb" がジョブIDに相当します

変数の確認
cat << ETX

RESCALE_API_TOKEN: ${RESCALE_API_TOKEN}
fileId: ${fileId}

ETX
createJob
createJson=$(rescale-createJob.sh ${fileId})
jobId=$(echo ${createJson} | jq -r .id) && echo ${jobId}
zDQAo
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up