らくがきちょう

なんとなく ~所属組織/団体とは無関係であり、個人の見解です~

curl で Cisco SD-WAN に Data Prefix を作成 / 取得 / 更新 / 削除する

以前に curl で Cisco SD-WAN の REST API を試してみる というメモを書きました。 このメモでは GET の例しか記載していなかったので改めて GET, POST, PUT, DELETE する例もメモしておきます。 API の調べ方は前述のメモを参考にしてください。

ログインする

ログイン処理自体は同じです。

curl --insecure \
     --silent \
     --request POST "https://VMANAGE/j_security_check" \
     --header "Content-Type: application/x-www-form-urlencoded" \
     --data "j_username=USERNAME&j_password=PASSWORD" \
     --cookie-jar cookie.txt

POST して Data Prefix を設定する

まず、POST 用のデータを JSON 形式で用意します。

cat << EOF > data.json
{
    "name": "DATA-PREFIX-1",
    "description": "Sample Data Prefix",
    "type": "dataPrefix",
    "entries": [
        {
            "ipPrefix": "192.168.1.0/24"
        },
        {
            "ipPrefix": "192.168.2.0/24"
        },
        {
            "ipPrefix": "192.168.3.0/24"
        }
    ]
}
EOF

用意した JSONPOST します。 これで Data Prefix が作成されているはずです。 レスポンスとして作成した Data Prefix の ListID が返されます。

curl --insecure \
     --silent \
     --header 'Content-Type:application/json' \
     --request POST https://VMANAGE/dataservice/template/policy/list/dataprefix \
     --cookie cookie.txt \
     --data @data.json \
     | python -m json.tool

GET して定義されたデータを確認する

全ての Data Prefix を取得するには以下のように GET します。

curl --insecure \
     --silent \
     --request GET https://VMANAGE/dataservice/template/policy/list/dataprefix \
     --cookie cookie.txt \
     | python -m json.tool

特定の Data Prefix だけを表示するには ListID を指定します。

curl --insecure \
     --silent \
     --request GET https://VMANAGE/dataservice/template/policy/list/dataprefix/12345678-1234-1234-1234-123456789012 \
     --cookie cookie.txt \
     | python -m json.tool

PUT してデータを書き換える

POST は新規作成することが出来ますが、既に同じ名前のデータがある場合、エラーになります。 定義済みデータをアップデートするには PUT を使います。 まず、書き換えるデータを定義します。

cat << EOF > data.json
{
    "name": "DATA-PREFIX-1",
    "description": "Sample Data Prefix 2",
    "type": "dataPrefix",
    "entries": [
        {
            "ipPrefix": "192.168.4.0/24"
        },
        {
            "ipPrefix": "192.168.5.0/24"
        },
        {
            "ipPrefix": "192.168.6.0/24"
        }
    ]
}
EOF

これを PUT します。 これでデータが書き換えられました。

curl --insecure \
     --silent \
     --header 'Content-Type:application/json' \
     --request PUT https://VMANAGE/dataservice/template/policy/list/dataprefix/12345678-1234-1234-1234-123456789012 \
     --cookie cookie.txt \
     --data @data.json \
     | python -m json.tool

DELETE して削除する

DELETE するとデータを削除することが出来ます。

curl --insecure \
     --silent \
     --request PUT https://VMANAGE/dataservice/template/policy/list/dataprefix/12345678-1234-1234-1234-123456789012 \
     --cookie cookie.txt