Cisco UCS Director カスタム タスク開始ガイド、リリース 5.4
カスタム タスクの概要
カスタム タスクの概要

カスタム タスクの概要

カスタム タスクを使用する理由

カスタム タスクは、Cisco UCS Director Orchestrator の機能を拡張します。カスタム タスクを使用することで、事前定義されているタスクや Cisco UCS Director に同梱されているワークフローで使用できない機能を作成することができます。カスタム タスク内からレポートの生成、物理リソースまたは仮想リソースの設定、および他のタスクの呼び出しを行うことができます。

カスタム タスクの仕組み

カスタム タスクは、作成されて Cisco UCS Director にインポートされると、Cisco UCS Director Orchestrator の他のタスクと同様に機能します。カスタム タスクを変更、インポート、およびエクスポートしたり、ワークフローに追加したりできます。

カスタム タスクの使用方法

Cisco UCS Director 内からカスタム タスクを記述、編集、およびテストします。カスタム タスクを記述するには、管理者権限が必要です。

オーケストレーション操作を可能にする Cisco UCS Director Java ライブラリを含む JavaScript のバージョンである CloupiaScript を使用して、カスタム タスクを記述します。そして、ワークフロー内のタスクを含む他のタスクのようなカスタム タスクを使用して、コンポーネント上で作業を調整します。

CloupiaScript はすべての JavaScript 構文をサポートします。また、CloupiaScriptCisco UCS Director Java ライブラリのサブセットへのアクセスをサポートし、カスタム タスクが Cisco UCS Director コンポーネントにアクセスできるようにします。CloupiaScript はサーバでのみ動作するため、クライアント側のオブジェクトはサポートされていません。

CloupiaScript は Nashorn スクリプト エンジンを使用します。Nashorn の詳細については、https:/​/​docs.oracle.com/​javase/​8/​docs/​technotes/​guides/​scripting/​nashorn/​api.htm で Oracle の Web サイトにあるテクニカル ノートを参照してください。

カスタム タスクの暗黙的な変数

3 つの事前に定義された最上位レベルの変数がカスタム タスクに自動的に含まれています。

変数 説明

ctxt

ワークフロー実行コンテキスト。このコンテキスト オブジェクトには、現在のワークフロー、現在のタスク、および使用可能な入出力に関する情報が含まれています。また、Cisco UCS Director Java API へのアクセス権も含まれており、これを使用して作成、読み取り、更新、および削除(CRUD)の操作の実行、他のタスクの起動、他の API メソッドの呼び出しを行うことができます。ctxt 変数は、プラットフォーム API クラス com.cloupia.service.cIM.inframgr.customactions のインスタンスです。

CustomActionTriggerContext

logger

ワークフロー logger オブジェクト。ワークフロー ロガーは、サービス要求(SR)のログに書き込みを行います。logger 変数は、プラットフォーム API クラス com.cloupia.service.cIM.inframgr.customactions.CustomActionLogger のインスタンスです。

util

ユーティリティ メソッドへのアクセス権を提供するオブジェクト。util 変数は、プラットフォーム API クラス com.cloupia.lib.util.managedreports.APIFunctions のインスタンスです。

暗黙的な変数の API クラスの詳細については、Cisco UCS Director スクリプト バンドルに含まれている CloupiaScript Javadoc を参照してください。

JDK アップグレードによる CloupiaScript への変更

Cisco UCS Director リリース 5.4 では、JDK バージョンが 1.6 から 1.8 にアップグレードされています。JDK 1.6 バージョンが Rhino JavaScript エンジンをベースにしていたのに対し、JDK 1.8 バージョンには新しい Nashorn Javascript エンジンが付属しています。Nashorn JavaScript エンジンには、構文の変更とスクリプト内の特定の関数およびクラスの使用方法の変更があります。

以下は、Cisco UCS Director リリース 5.4 のカスタム タスクをスクリプト化する際に留意するべき変更点です。
  • print( ) 関数の使用

    println( ) の代わりに print( ) を使用します。


    (注)  


    JDK 1.8 は、後方互換性のために println( ) を引き続きサポートします。


  • クラスおよびパッケージをインポートする構文の変更

    クラスとパッケージをインポートする構文が変更されました。以前のインポート ステートメントではクラスまたはパッケージが javascript 実行のグローバル スペースで使用できるようになっており、それが必ずしも必要ではなかったのに対し、新しいインポート ステートメントではクラスまたはパッケージの使用のローカリゼーションが向上します。

    ステートメントを Rhino JavaScript エンジンにインポートします。
    importPackage(com.cloupia.model.cIM);
    importClass(java.util.ArrayList);
    
    
    ステートメントを Nashorn JavaScript エンジンにインポートします。
    var CollectionsAndFiles = new JavaImporter( java.util, java.io, java.nio); 
    with (CollectionsAndFiles) { 
    	var files = new LinkedHashSet(); 
    	files.add(new File("Filename1")); 
    	files.add(new File("Filename2")); 
    }
      
    

    「with」ステートメントは、オブジェクトがメモリにロードされる時間についての引数として与えられた変数の範囲を定義します。たとえば、一度に多くの Java パッケージをインポートするのにも役立ちます。JavaImporter クラスを「with」ステートメントとともに使用できます。インポートされたパッケージからのすべてのクラス ファイルは、「with」ステートメントのローカル範囲内にアクセスできます。

    Java パッケージのインポート:

    var imports = new JavaImporter(java.io, java.lang);
    with (imports) {
        var file = new File(__FILE__);
        System.out.println(file.getAbsolutePath());
        // /path/to/my/script.js
    

    (注)  


    古い importPackage() および importClass() ステートメントは、後方互換性のために Cisco UCS Director 5.4 で引き続きサポートされます。カスタム タスクのスクリプトを実行する前に、バックエンドのエンジンはロード('nashorn:Mozilla_compat.js')を呼び出します。


  • 静的メソッドへのアクセス

    静的メソッドへのアクセスの柔軟性は Nashorn エンジンでは低下します。Rhino のバージョンのエンジンでは、静的メソッドにはクラス名(Java と同じ構文)からだけでなく、そのクラスのどのインスタンスからも(Java とは異なり)アクセスできました。

    Rhino での静的メソッドへのアクセス
    var myRBUtil = new com.cloupia.service.cIM.inframgr.i18n.RBUtil();
    myRBUtil.getString();// No error
    com.cloupia.service.cIM.inframgr.i18n.RBUtil.getString();// No error
    
    Nashorn での静的メソッドへのアクセス
    var myRBUtil = new com.cloupia.service.cIM.inframgr.i18n.RBUtil();
    myRBUtil.getString();// No error
    com.cloupia.service.cIM.inframgr.i18n.RBUtil.getString();// No error
    
    
  • ネイティブ JSON オブジェクトと com.cloupia.lib.util.JSON との比較

    Nashorn 環境はネイティブ JSON オブジェクトで構成され、オブジェクトを JSON 形式に変換したり、またその逆に変換するための組み込み関数があります。Cisco UCS Director には、com.cloupia.lib.util.JSON と呼ばれる独自のバージョンの JSON オブジェクトがあります。

    Cisco UCS Director クラスをインポートすると、ネイティブ JSON オブジェクトへのアクセスは同じオブジェクト名が使用されているため、失われます。UCS Director とネイティブ JSON オブジェクト両方の使用をイネーブルにするために、UCS Director は名前 NativeJSON を使用してネイティブ クラスを保存します。たとえば、以下はネイティブ オブジェクトの静的メソッド コールです。

  • 文字列への新しい演算子の使用
    NativeJSON.stringify(object myObj); OR
    NativeJSON.parse(String mystr);

    オブジェクトの作成時に明示的にキーワード「new」を追加します。

    次に、例を示します。
    var customName = new java.lang.String(input.name);
    var ai = new CMDB.AdditionalInfo();// static class