こんにちは。インサイトテクノロジーの松尾です!
今年の札幌の夏、連日 30℃ を超え、とても暑かったですね。でも、お盆を過ぎると本当に涼しくなるのは、札幌のスバラシイところ♪
さて、本ブログでは Insight Database Testing を API で操作する方法を紹介します!
Insight Database Testing を API から操作したいモチベーション
Insight Database Testing では収集した SQL をターゲット DB で評価 ( アセスメント ) するにあたり、基本的には以下の流れで行います。
- 評価 SQL セットの作成
- アセスメントの実行
- アセスメント結果の取得
通常は画面 ( GUI ) からこの操作を行いますが、評価対象のデータベースが多かったり、評価対象の SQL を日時ごとに分けて実行したい場合など、お客様によっては、評価 SQL セットやアセスメントの数が100個を超える形で利用いただいているケースもあるようです。
このように数が多い場合、GUI からの操作を煩雑に感じることもあると思います。
そんなあなたに朗報です!Insight Database Testing では API 経由で操作可能になっています。本ブログでは、API 経由で Insight Database Testing を操作しいくつかの作業を自動化することで、Insight Database Testing をより効果的に利用する方法をご紹介します。
API マニュアル
Insight Database Testing の API ドキュメントは、GUI へログイン後に確認することができます。
参照方法についてはInsight Database Testing の APIドキュメント参照方法を参照ください。
まずは素の API を使ってみる
では、早速 API ドキュメントに従って、Insight Database Testing にアクセスしてみましょう。
administrator ユーザーでのタスクも API 経由で可能ですが、あまり現実的なタスクでは使わないと思いますので、今回は、一般ユーザーによる操作を対象とします。一般ユーザーをまだ作成していない場合は、一般ユーザーの新規作成 にしたがって、まず一般ユーザーを作成してください。
以下の例における IP_ADDRESS
は Insight DT Manager の IP アドレスやホストです。ご使用の環境に合わせて変更してください。
ログオン
ユーザーアカウントで接続します。USERNAME
にユーザー名、PASSWORD
にお使いのパスワードを設定してください。
$ curl -c cookie.txt -X POST -H "Content-type: application/json" -d '{"username": "USERNAME", "password": "PASSWORD"}' http://IP_ADDRESS:7777/idt/api/v2/auth
{"id":"42e6d20c-e098-4a47-bef1-14bdc806e4f3","name":"insight","role":"normal"}
接続に成功すると、API ドキュメントに記載されている内容のレスポンスが返ってくることが確認できます。
操作
認証を必要とする何らかの操作を行ってみます。以下では、Insight Database Testing のバージョン情報を取得しています。
$ curl -b cookie.txt http://IP_ADDRESS:7777/idt/api/v2/version
{"PRODUCT_NAME":"Insight Database Testing","VERSION":"2.3.0.0","RELEASE_DATE":"20210625(YYYYMMDD)","COPYRIGHT":"(c) 2019 Insight Technology, Inc."}
なお、ログオンしていない状態でアクセスすると、以下のように、認証されていない旨のレスポンスが返ります。
$ curl -b cookie.txt http://IP_ADDRESS:7777/idt/api/v2/version
{"message":"un authorized."}
同様に、アセスメントの一覧を取得してみます。
$ curl -b cookie.txt http://IP_ADDRESS:7777/idt/api/v2/assessments
{"total":1,"rows":[{"id":"3ccc57f0-4a8f-438d-bf4f-4d14c6230e94","status":1,"name":"ASSESSMENT1 RDS", ........... ,"createdAt":"2021-06-25T03:31:02.402Z","updatedAt":"2021-07-01T11:02:44.522Z"}}]}
このような形で json でレスポンスが返ってくることを確認できました。json の内容については、API ドキュメントを参照ください。
ログオフ
ログオフは以下のように実行可能です。
$ curl -b cookie.txt -X DELETE http://IP_ADDRESS:7777/idt/api/v2/auth
{"message":"logoff is success"}
$ rm cookie.txt
Insight Database Testing SDK for Python ( 仮 )
基本的には前述の手順を繰り返すことで操作を行うことが可能です。
ただ毎回 curl ベースでアクセスして戻り値を解析することは不便なので、通常は何らかのスクリプト言語などから操作することになると思いますので、今回は Python による例をご紹介します。
まだ全ての API を網羅しているわけではありませんが、GitHub に PyInsightDatabaseTesting として置きました。
PyInsightDatabaseTesting – GitHub
ここにある Python モジュールを利用して、呼び出しを実行してみましょう。呼び出し側のソースコードは以下の感じです。
import insight_database_testing
IP_ADDRESS = '<your Insight DT Manager ip address>'
URLBASE = 'http://' + IP_ADDRESS + ':7777/idt/'
IDT_USER = '<your user name>'
IDT_PASS = '<your user password>'
if __name__ == '__main__':
with insight_database_testing.InsightDatabaseTesting(URLBASE, IDT_USER, IDT_PASS) as idt:
idt.print_assessments()
IP_ADDRESS
、IDT_USER
、IDT_PASS
には、接続先、ユーザー名 ( 一般ユーザー )、パスワードを設定してください。実行すると以下のような結果を得られます。
$ python print_assessment_list.py
Assessment: ASSESSMENT1 RDS (3ccc57f0-4a8f-438d-bf4f-4d14c6230e94)
start: 2021-07-01 13:58:45.664000
finish: 2021-07-01 13:59:07.524000
elapsed time: 0:00:21.860000
success: 322, failed: 1132
だいぶ簡単に実行できることがわかりましたね!
おわりに
本ブログでは Insight Database Testing を、簡単ではありますが API で操作する方法を紹介しました。
また、Python でのアクセスを行うためのライブラリも紹介しました。
PyInsightDatabaseTesting には他のメソッドも用意しましたので、本 Python ライブラリを使ってのアセスメント実行なども、別の機会に紹介したいと思います。また、実装が不十分なところは、今後も引き続き更新していく予定です!
Insight Database Testing をまだご利用いただいていない方で実際に試されたい場合は、製品の説明やデモ、トライアルなどについてInsight Database Testingに関するお問い合わせ よりお問い合わせください。
次回もどうぞお楽しみに!