Hitachi

JP1 Version 12 JP1/Automatic Operation サービステンプレート開発ガイド 


4.2.7 サービスおよび部品の入力プロパティに設定する値の動的な変更について

サービス,および部品の入力プロパティに設定する値の候補値を外部リソースプロバイダから取得できます。動的に値を設定するには,サービステンプレート,または部品の作成者(AdminロールまたはDevelopロールを持つユーザー)が外部リソースの取得方法を設定します。こうすることで,Submitロールのユーザーが,サービス実行時に外部リソースプロバイダから取得した値を選択できるようになります。

例えば,vCenter Server上のある仮想マシンに対して操作を行いたい場合,個々の仮想マシンに対するフローを組まなくても,[サービス実行]画面を表示したときにvCenterServerから仮想マシンの一覧を取得し,[サービス実行]画面で選択した仮想マシンに対して,サービスを実行することができます。

外部リソースの取得方法は,次に示す4つの方法があります。

表4‒7 外部リソースの取得方法

外部リソースの取得方法

説明

Javascript

JavascriptでREST APIを実行するコードを記載して,外部Webサービスからリソース情報を取得する。

スクリプト

スクリプトでREST APIを実行するコードを記載して,外部Webサービスからリソース情報を取得する。

コマンドライン

コマンドラインの実行結果をリソース情報として取得する。

ファイル

指定したファイルからリソース情報を取得する。

また,JP1/AOサーバからリソースを取得するビルトイン外部リソースプロバイダでも取得することができます。[外部リソース]で次のビルトイン外部リソースプロバイダを選択した場合,JP1/AOサーバに対してREST APIを実行してリソースを取得します。

ビルトイン外部リソースプロバイダを次に示します。

表4‒8 ビルトイン外部リソースプロバイダ一覧

外部リソースプロバイダの名称

取得する情報

実行する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) 使用手順

  1. [Service Builder Edit]画面にて,次に示すプロパティの設定画面を開きます。
    • [サービスの入力プロパティ作成]ダイアログ

    • [サービスの入力プロパティ編集]ダイアログ

    • [部品の入力プロパティ作成]ダイアログ

    • [部品の入力プロパティ編集]ダイアログ

  2. 表示されたダイアログボックスで,[外部リソース]の設定を実施します。

    詳細は「(2) [外部リソース]の設定手順」を参照してください。

  3. 取得対象としたい外部リソースがない場合,[外部リソース]を新規作成します。

    詳細は「(3) [外部リソース]の作成手順」を参照してください。

  4. [サービス設定]画面,[サービス実行]画面において,取得したリソース情報を選択します。

また,次に示す外部リソースに関する操作は,[外部リソース]のプルダウンリスト,または[管理]タブの[外部リソースプロバイダ]から実行できます。

(2) [外部リソース]の設定手順

[外部リソース]を設定する手順を示します。

  1. サービスまたは部品の入力プロパティの表現形式として,「Selection」または「Radio Button」を選択します。

  2. 表示される[データソース]で「動的」を選択します。

[外部リソース]の設定項目を次に示します。

表4‒11 [外部リソース]に関する設定項目

項目

説明

外部リソース

外部リソースプロパイダの名称

外部リソースの取得方法や取得対象ごとにラベルを選択します。

追加パス

JavascriptのrequestPathまたはスクリプトのREQUEST_PATHに渡したい値。

外部リソースプロバイダのタイプがJavascriptまたはスクリプトの外部リソースプロバイダを選択する場合に指定してください。

必要がなければ指定不要です。

クエリパラメタ

JavascriptのqueryParamMapまたはスクリプトのQUERY_PARAM_MAPに渡したい値。

外部リソースプロバイダのタイプがJavascriptまたはスクリプトの外部リソースプロバイダを選択する場合に指定してください。

必要がなければ指定不要です。

指定する際にはkey=valueの形式で指定します。また,「&」を使用して,複数のパラメタを指定することができます(key=value&key=value)。

名前フィールド

取得した外部リソース中のフィールド名を指定してください。

指定したフィールドの値はプルダウンに表示する選択肢のラベルとなります。

省略した場合,“name“フィールドが指定されます。

値フィールド

取得した外部リソース中のフィールド名を指定してください。

指定したフィールドの値は,プルダウンで名前フィールドのラベルを選択した際にプロパティの値に設定されます。

省略した場合,”instanceID”フィールドが指定されます。

注※

データ型がcomposite型の場合は表示されません。

次の外部リソースプロバイダが設定された入力プロパティをもつ同一のサービス部品をフロー上に2つ以上配置することはできません。

(3) [外部リソース]の作成手順

[外部リソース]のプルダウンから,[(新規リソースプロバイダ作成)]を押下し,[外部リソースプロバイダ作成]ダイアログボックスで次の設定項目を指定してください。

表4‒12 [外部リソースプロバイダ作成]の設定項目

項目

説明

名前

外部リソースプロバイダの名称。

指定した名称は,”ExternalResources/外部リソースプロバイダID”とともにドロップダウンに表示されます。

バージョン

バージョン。指定形式:nn.nn.nn

例) 01.00.00

コンテントタイプ

外部リソースとのやり取りで使用するデータ形式。(リクエストボディ,レスポンスボディ,標準出力,ファイルの形式)

次のコンテントタイプ(MIMEタイプ)を選択できます。

  • application/json

  • text/csv

(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を定義する必要があります。デフォルトでは次の関数が定義されています。

表4‒13 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) タイプに「スクリプト」を指定した場合

タイプに「スクリプト」を指定した場合は,次の設定項目を指定してください。

表4‒17 [スクリプト]を指定した場合の設定項目

項目

説明

インタプリタパス

スクリプトのインタプリタパス。

(1)Pythonスクリプトの場合

サポートするPython のバージョンは,3.xシリーズです。この外部リソースプロバイダをクラスタ環境で使用するには,実行系および待機系システムの両方にPythonインタプリタがインストールされている必要があります。Pythonの仮想環境は未サポートです。インタプリタパスにはサービス共有プロパティを指定できます。

スクリプト種別

スクリプトの種別。

Pythonのみサポートしています。

スクリプト

スクリプトの実装。

外部リソースプロバイダが返すリクエストボディの値として,JSONオブジェクトの配列を返却します。

配列は"data"というプロパティに設定する必要があります。データ形式を次に示します。スクリプトで下記JSON形式のデータを標準出力print()します。

データ形式:

{"data":[
 オブジェクト1,
 オブジェクト2,
 ・・・
]}

スクリプトにおいて,「os.environ[“キー名”]」または「os.environ.get(“キー名”)」の形式で,次の環境変数の値を取得できます。

表4‒18 スクリプトで取得できる環境変数

環境変数

説明

形式

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サービス接続先定義の属性:, …}, …]

表4‒19 環境変数WEB_SERVICE_CONNECTIONSの値

クエリパラメータ

参照情報

__webServiceConnectionCategory__

__webServiceConnectionName__

指定されたCategoryとNameに一致するWebサービス接続先定義の情報

指定されたCategoryに一致するWebサービス接続先定義の情報

なし

なし

(凡例)

〇:指定あり -:指定なし

(c) タイプに「コマンドライン」を指定した場合

次の設定項目を指定してください。

表4‒20 [コマンドライン]を指定した場合の設定項目

項目

説明

コマンドライン

JP1/AOサーバ上で実行するコマンドライン。

コマンドの戻り値が0ではない場合はエラーになります。

スクリプトファイルなどを指定する場合は絶対パスで指定してください。

標準出力の上限は30MBです。標準出力を読む際の文字セットはシステムの文字セットを使用して読み込まれます。

プロパティキーを「${」と「}」で囲むことで,コマンドラインにサービス共有プロパティおよび予約プロパティを含めることができます。

(d) タイプに「ファイル」を指定した場合

次の設定項目を指定してください。

表4‒21 [ファイル]を指定した場合の設定項目

項目

説明

ファイル

JP1/AOサーバ上のファイルのパス。

プロパティキーを「${」と「}」で囲むことで,ファイルのパスにサービス共有プロパティおよび予約プロパティを含めることができます。