4.2.7 サービスおよび部品の入力プロパティに設定する値の動的な変更について
サービス,および部品の入力プロパティに設定する値の候補値を外部リソースプロバイダから取得できます。動的に値を設定するには,サービステンプレート,または部品の作成者(AdminロールまたはDevelopロールを持つユーザー)が外部リソースの取得方法を設定します。こうすることで,Submitロールのユーザーが,サービス実行時に外部リソースプロバイダから取得した値を選択できるようになります。
例えば,vCenter Server上のある仮想マシンに対して操作を行いたい場合,個々の仮想マシンに対するフローを組まなくても,[サービス実行]画面を表示したときにvCenterServerから仮想マシンの一覧を取得し,[サービス実行]画面で選択した仮想マシンに対して,サービスを実行することができます。
外部リソースの取得方法は,次に示す4つの方法があります。
外部リソースの取得方法 |
説明 |
---|---|
Javascript |
JavascriptでREST APIを実行するコードを記載して,外部Webサービスからリソース情報を取得する。 |
スクリプト |
スクリプトでREST APIを実行するコードを記載して,外部Webサービスからリソース情報を取得する。 |
コマンドライン |
コマンドラインの実行結果をリソース情報として取得する。 |
ファイル |
指定したファイルからリソース情報を取得する。 |
また,JP1/AOサーバからリソースを取得するビルトイン外部リソースプロバイダでも取得することができます。[外部リソース]で次のビルトイン外部リソースプロバイダを選択した場合,JP1/AOサーバに対してREST APIを実行してリソースを取得します。
ビルトイン外部リソースプロバイダを次に示します。
外部リソースプロバイダの名称 |
取得する情報 |
実行するREST API |
---|---|---|
Tasks |
タスク一覧 |
GET /Automation/v1/objects/Tasks/ |
TaskLogs |
タスクログ |
GET /Automation/v1/objects/TaskLogs/ |
TaskHistories |
履歴一覧 |
GET /Automation/v1/objects/TaskHistories/ |
Tags |
タグ一覧 |
GET /Automation/v1/objects/Tags/ |
TagGroups |
タググループ一覧 |
GET /Automation/v1/objects/TagGroups/ |
Services |
サービス一覧 |
GET /Automation/v1/objects/Services/ |
ServiceTemplates |
サービステンプレート一覧 |
GET /Automation/v1/objects/ServiceTemplates/ |
ServiceGroups |
サービスグループ一覧 |
GET /Automation/v1/objects/ServiceGroups/ |
Schedules |
スケジュール一覧 |
GET /Automation/v1/objects/Schedules/ |
PropertyValues |
プロパティ値一覧 |
GET /Automation/v1/objects/PropertyValues/ |
PropertyInformations |
プロパティ定義およびプロパティ値一覧 |
GET /Automation/v1/objects/PropertyInformations/ |
PropertyGroups |
プロパティグループ一覧 |
GET /Automation/v1/objects/PropertyGroups/ |
PropertyDefinitions |
プロパティ定義一覧 |
GET /Automation/v1/objects/PropertyDefinitions/ |
(1) 使用手順
- [Service Builder Edit]画面にて,次に示すプロパティの設定画面を開きます。
-
[サービスの入力プロパティ作成]ダイアログ
-
[サービスの入力プロパティ編集]ダイアログ
-
[部品の入力プロパティ作成]ダイアログ
-
[部品の入力プロパティ編集]ダイアログ
-
-
表示されたダイアログボックスで,[外部リソース]の設定を実施します。
詳細は「(2) [外部リソース]の設定手順」を参照してください。
-
取得対象としたい外部リソースがない場合,[外部リソース]を新規作成します。
詳細は「(3) [外部リソース]の作成手順」を参照してください。
-
[サービス設定]画面,[サービス実行]画面において,取得したリソース情報を選択します。
また,次に示す外部リソースに関する操作は,[外部リソース]のプルダウンリスト,または[管理]タブの[外部リソースプロバイダ]から実行できます。
-
[外部リソース]の編集
手動で設定を更新します。
-
[外部リソース]の更新
選択した外部リソースプロバイダを指定した外部リソースプロバイダ定義ファイル(zip形式)の内容で上書きします。次に外部リソースプロバイダの更新可否について示します。
表4‒9 外部リソースプロバイダ(ERP)の更新可否 ケース
更新可否
エラーメッセージ
更新元ERPのVRS > 更新先ERPのVRS の場合
可
-
更新元ERPのVRS = 更新先ERPのVRS の場合
可
-
更新元ERPのVRS < 更新先ERPのVRS の場合
不可
KNAE01889-E
更新元ERPと更新先ERPでUUIDが異なる場合
不可
KNAE01890-E
-
[外部リソース]の削除
-
[外部リソース]のインポート
外部リソースプロバイダ定義ファイル(zip形式)をインポートします。
[外部リソース]のインポートでは,インポート対象の外部リソースプロバイダと同一UUIDの外部リソースプロバイダがすでに存在していた場合も,外部リソースプロバイダのVRSにかかわらず,既存の外部リソースプロバイダの内容をインポートする外部リソースプロバイダ定義ファイル(zip形式)の内容で上書きします。
表4‒10 外部リソースプロバイダ(ERP)のインポート可否 ケース
インポート可否
補足
インポート対象のERPと同一UUIDのERPが存在しない
可
-
インポート対象のERPと同一UUIDのERPがすでに存在する
可
ERPのVRSにかかわらず,既存のERPの内容をインポートするERPの内容で上書きする。
-
[外部リソース]のエクスポート
外部リソースプロバイダ定義ファイル(zip形式)をエクスポートします。
(2) [外部リソース]の設定手順
[外部リソース]を設定する手順を示します。
-
サービスまたは部品の入力プロパティの表現形式として,「Selection」または「Radio Button」を選択します。
-
表示される[データソース]で「動的」を選択します。
[外部リソース]の設定項目を次に示します。
項目 |
説明 |
---|---|
外部リソース |
外部リソースプロパイダの名称 外部リソースの取得方法や取得対象ごとにラベルを選択します。 |
追加パス |
JavascriptのrequestPathまたはスクリプトのREQUEST_PATHに渡したい値。 外部リソースプロバイダのタイプがJavascriptまたはスクリプトの外部リソースプロバイダを選択する場合に指定してください。 必要がなければ指定不要です。 |
クエリパラメタ |
JavascriptのqueryParamMapまたはスクリプトのQUERY_PARAM_MAPに渡したい値。 外部リソースプロバイダのタイプがJavascriptまたはスクリプトの外部リソースプロバイダを選択する場合に指定してください。 必要がなければ指定不要です。 指定する際にはkey=valueの形式で指定します。また,「&」を使用して,複数のパラメタを指定することができます(key=value&key=value)。 |
名前フィールド※ |
取得した外部リソース中のフィールド名を指定してください。 指定したフィールドの値はプルダウンに表示する選択肢のラベルとなります。 省略した場合,“name“フィールドが指定されます。 |
値フィールド※ |
取得した外部リソース中のフィールド名を指定してください。 指定したフィールドの値は,プルダウンで名前フィールドのラベルを選択した際にプロパティの値に設定されます。 省略した場合,”instanceID”フィールドが指定されます。 |
- 注※
-
データ型がcomposite型の場合は表示されません。
次の外部リソースプロバイダが設定された入力プロパティをもつ同一のサービス部品をフロー上に2つ以上配置することはできません。
- クエリパラメタで他のプロパティを参照している外部リソースプロバイダ
(3) [外部リソース]の作成手順
[外部リソース]のプルダウンから,[(新規リソースプロバイダ作成)]を押下し,[外部リソースプロバイダ作成]ダイアログボックスで次の設定項目を指定してください。
項目 |
説明 |
---|---|
名前 |
外部リソースプロバイダの名称。 指定した名称は,”ExternalResources/外部リソースプロバイダID”とともにドロップダウンに表示されます。 |
バージョン |
バージョン。指定形式:nn.nn.nn 例) 01.00.00 |
コンテントタイプ |
外部リソースとのやり取りで使用するデータ形式。(リクエストボディ,レスポンスボディ,標準出力,ファイルの形式) 次のコンテントタイプ(MIMEタイプ)を選択できます。
(a)application/json JSON形式で指定してください。 {"data":[ オブジェクト1, オブジェクト2, ・・・ ]} (b)text/csv CSV形式で指定してください。 ヘッダ行 レコード1 レコード2 ・・・ なお,コンテントタイプとしてtext/csv を選択した場合,タイプにはコマンドラインまたはファイルを選択してください。 |
説明 |
外部リソースプロバイダの説明。 |
タイプ |
外部リソースの取得方法。 次のタイプを選択することができます。選択したタイプに応じて表示される入力フィールドに,必要な情報を設定する必要があります。 (1)Javascript (2)スクリプト (3)コマンドライン (4)ファイル また,各タイプを選択した際に取得可能な外部リソースは次の通りです。 (1)Javascriptの戻り値 (2)スクリプトの標準出力 (3)コマンドラインの実行結果 (4)ファイルの内容 |
(a) タイプに「Javascript」を指定した場合
Javascriptを定義する必要があります。デフォルトでは次の関数が定義されています。
項目 |
説明 |
||
---|---|---|---|
関数名 |
function fn(requestPath, queryParamMap, properties) { } |
||
引数 |
requestPath |
[追加パス]に指定された値 |
文字列 /外部リソースプロバイダID/追加パスに指定した値 |
queryParamMap |
[クエリパラメータ]に指定された情報 |
keyとvalueのペアを含むJSONオブジェクト {"key":"value", …} |
|
properties |
サービス共有プロパティ※1と外部リソースの予約プロパティ※2が渡されます。 |
プロパティキーとプロパティ値のペアを含むJSONオブジェクト {プロパティキー:プロパティ値, …} |
|
戻り値 |
外部リソースプロバイダが返すリクエストボディの値として,JSONオブジェクトの配列を返却します。 配列は"data"というプロパティに設定する必要があります。データ形式を次に示します。 データ形式: {"data":[ オブジェクト1, オブジェクト2, ・・・ ]} |
- 注※1
-
次に示す共有プロパティは使用することができません。
com.hitachi.software.dna.sys.cm.cache.interval
- 注※2
-
予約プロパティについては,「表3‒13 予約プロパティ一覧」を参照してください。
- Javascriptのライブラリ(auto_utilライブラリ)
Javascript内ではauto_utilライブラリを使用できます。auto_utilライブラリは主に次の機能を持ちます。
-
任意の接続先にhttp(s)のリクエストを送る。
-
接続情報としてWebサービス接続先定義の設定値を参照する。
auto_utilライブラリのAPIは次の通りです。
表4‒14 auto_utilライブラリのAPI詳細 メソッド名
引数
戻り値
説明
sleep
1
数値型でスリープする時間を指定する(単位:ミリ秒)
なし
指定した時間スリープする。
parseJson
1
文字列型でJSONの文字列表現を指定する
JSONオブジェクト
文字列をJSONオブジェクトに変換する。
stringifyJson
1
任意のJSONオブジェクトを指定する
JSONの文字列表現
JSONオブジェクトを文字列に変換する。
base64.encode
1
BASE64に変換する文字列を指定する
BASE64にエンコードした文字列
BASE64にエンコードする。
base64.decode
1
BASE64文字列を指定する
BASE64からデコードした文字列
BASE64からデコードする。
http.call
1
リクエストのJSONオブジェクト
レスポンスのJSONオブジェクト
http(s)のリクエストを行い,レスポンスを返す。
http.toRawHeader
1
ヘッダのJSONオブジェクト
ヘッダ文字列
ヘッダを文字列の形にして返す。引数にはkeyとそれに対するvalueが設定されたJSONオブジェクトを指定する。
http.defaultErrorHandler
1
エラー
なし
HttpErrorインスタンスをスローする。
2
リクエストのJSONオブジェクト
3
レスポンスのJSONオブジェクト
http.handleCall
1
httpCallメソッド
なし
第一引数のhttpCallメソッドを第二引数のリクエストを指定して呼び出す。
結果のレスポンスがレスポンスコード200以上400未満の場合は,第三引数を呼び出し,それ以外のレスポンスコードの場合は第四引数を呼び出す。
2
リクエストのJSONオブジェクト
3
http呼び出しが成功した場合に呼び出すメソッド
4
http呼び出しの結果ステータスコードが200以上400未満の場合に呼び出すメソッド
5
http呼び出しの前にエラーが発生した場合に呼び出すメソッド
引数,および,戻り値のJSONオブジェクトは次の通りです。
表4‒15 リクエストのJSONオブジェクト詳細 メンバ
型
説明
requestUrl
String
【Webサービス接続先定義を使用しない場合】
http(s)から始まるリクエストURLを指定する。
【Webサービス接続先定義を使用する場合】
リクエストURLのホスト名より後の"/"から最後までの部分を指定する。
例:http://host:port/Folder/
の場合は"/Folder"を指定する。
requestMethod
String
HTTPリクエストメソッド。文字列で次の値を指定する。
-
GET
-
POST
-
PUT
-
DELETE
requestHeaders
String
リクエストヘッダ。
http.toRawHeaderメソッドの戻り値を設定することを想定。
【Webサービス接続先定義を使用する場合】
次の値をユーザーIDとパスワードの埋め文字として使用することができる。
-
${connection.username}
-
${connection.password}
requestBody
String
リクエストボディ
authScheme
String
認証が必要な場合,次の値のいずれかを指定する。
-
basic
-
digest
-
negotiate
productName
String
Webサービス接続先定義のカテゴリを指定する。
Webサービス接続先定義を使用する場合は必ず指定する。
connectionName
String
Webサービス接続先定義の名前を指定する。
Webサービス接続先定義を使用する場合は必ず指定する。
userName
String
接続先に認証する場合のユーザー名を指定する。
Webサービス接続先定義を使用する場合は指定しない。
password
String
接続先に認証する場合のパスワードを指定する。
useProxy
boolean
プロキシを使用するかどうかを指定する(true/false)。
proxyHost
String
プロキシサーバのホスト名またはIPアドレスを指定する。
proxyPort
int
プロキシサーバのポート番号を指定する。
proxyAuthScheme
String
プロキシサーバで認証が必要な場合,次の値のいずれかを指定する。
-
basic
-
digest
proxyUserName
String
プロキシサーバで認証が必要な場合のユーザー名を指定する。
proxyPassword
String
プロキシサーバで認証が必要な場合のパスワードを指定する。
表4‒16 レスポンスのJSONオブジェクト詳細 メンバ
型
説明
responseHeaders
String
レスポンスヘッダ
responseStatusCode
int
レスポンスコード
responseStatusMessage
String
レスポンスメッセージ
responseBody
String
レスポンスボディ
-
-
Javascriptのサンプル
次のサンプルでは,Webサービス接続先定義の接続情報を参照し,JP1/AOからサービステンプレート一覧を取得します。なお,サンプルでは,カテゴリが"Automation",名前が"view"のWebサービス接続先定義が登録済みである必要があります。
function fn (requestPath, queryParamMap, properties) { return getServiceTemplates('Automation', 'view'); function getServiceTemplates(productname, connectionname) { var respBody = null; var request = { requestMethod: 'GET', requestUrl: '/Automation/v1/objects/ServiceTemplates/', requestHeaders:auto.util.http.toRawHeader({ 'Accept': 'application/json', 'Accept-Language': 'en', 'Content-Type': 'application/json', }), authScheme: 'basic', connectionName: connectionname, productName: productname, }; auto.util.http.handleCall(auto.util.http.call, request, function(resp, req) { respBody = resp.responseBody; }, function(resp, req) { auto.util.http.defaultErrorHandler(null, req, resp); }, function(err, req) { auto.util.http.defaultErrorHandler(err, req); }); return respBody; } }
(b) タイプに「スクリプト」を指定した場合
タイプに「スクリプト」を指定した場合は,次の設定項目を指定してください。
項目 |
説明 |
---|---|
インタプリタパス |
スクリプトのインタプリタパス。 (1)Pythonスクリプトの場合 サポートするPython のバージョンは,3.xシリーズです。この外部リソースプロバイダをクラスタ環境で使用するには,実行系および待機系システムの両方にPythonインタプリタがインストールされている必要があります。Pythonの仮想環境は未サポートです。インタプリタパスにはサービス共有プロパティを指定できます。 |
スクリプト種別 |
スクリプトの種別。 Pythonのみサポートしています。 |
スクリプト |
スクリプトの実装。 外部リソースプロバイダが返すリクエストボディの値として,JSONオブジェクトの配列を返却します。 配列は"data"というプロパティに設定する必要があります。データ形式を次に示します。スクリプトで下記JSON形式のデータを標準出力print()します。 データ形式: {"data":[ オブジェクト1, オブジェクト2, ・・・ ]} |
スクリプトにおいて,「os.environ[“キー名”]」または「os.environ.get(“キー名”)」の形式で,次の環境変数の値を取得できます。
環境変数 |
説明 |
形式 |
---|---|---|
REQUEST_PATH |
[追加パス]に指定された情報 |
文字列 /外部リソースプロバイダID/追加パスに指定した値 |
QUERY_PARAM_MAP |
[クエリパラメータ]に指定された情報 |
JSON形式の文字列 {プロパティ名:値, …} |
SERVICE_TEMPLATE_ID |
外部リソースプロバイダが属するサービステンプレートID |
数値 |
SERVICE_ID |
外部リソースプロバイダを実行するサービスID |
数値 |
SERVICE_TEMPLATE |
外部リソースプロバイダが属するサービステンプレートの情報 |
JSON形式の文字列 {サービステンプレートの属性:値, …} |
SERVICE |
外部リソースプロバイダを実行するサービスの情報 |
JSON形式の文字列 {サービスの属性:値, …} |
WEB_SERVICE_CONNECTIONS |
Webサービス接続先定義の設定情報 [クエリパラメータ]に指定された"__webServiceConnectionCategory__"および"__webServiceConnectionName__"に対応した情報が格納されます。格納される情報は[クエリパラメータ]の指定によって,異なります。 格納される値については,「表4‒19 環境変数WEB_SERVICE_CONNECTIONSの値」を参照してください。 |
JSON形式の文字列 [{Webサービス接続先定義の属性:値, …}, …] |
クエリパラメータ |
参照情報 |
|
---|---|---|
__webServiceConnectionCategory__ |
__webServiceConnectionName__ |
|
○ |
○ |
指定されたCategoryとNameに一致するWebサービス接続先定義の情報 |
○ |
- |
指定されたCategoryに一致するWebサービス接続先定義の情報 |
- |
○ |
なし |
- |
- |
なし |
- (凡例)
-
〇:指定あり -:指定なし
(c) タイプに「コマンドライン」を指定した場合
次の設定項目を指定してください。
項目 |
説明 |
---|---|
コマンドライン |
JP1/AOサーバ上で実行するコマンドライン。 コマンドの戻り値が0ではない場合はエラーになります。 スクリプトファイルなどを指定する場合は絶対パスで指定してください。 標準出力の上限は30MBです。標準出力を読む際の文字セットはシステムの文字セットを使用して読み込まれます。 プロパティキーを「${」と「}」で囲むことで,コマンドラインにサービス共有プロパティおよび予約プロパティを含めることができます。 |
(d) タイプに「ファイル」を指定した場合
次の設定項目を指定してください。
項目 |
説明 |
---|---|
ファイル |
JP1/AOサーバ上のファイルのパス。 プロパティキーを「${」と「}」で囲むことで,ファイルのパスにサービス共有プロパティおよび予約プロパティを含めることができます。 |