この製品のマニュアルセットは、偏向のない言語を使用するように配慮されています。このマニュアルセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザーインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブランゲージに対する取り組みの詳細は、こちらをご覧ください。
このドキュメントは、米国シスコ発行ドキュメントの参考和訳です。リンク情報につきましては、日本語版掲載時点で、英語版にアップデートがあり、リンク先のページが移動/変更されている場合がありますことをご了承ください。あくまでも参考和訳となりますので、正式な内容については米国サイトのドキュメントを参照ください。
カスタム タスクは、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 構文をサポートします。また、CloupiaScript は Cisco 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 を参照してください。
以下は、Cisco UCS Director リリース 5.5 のカスタム タスクをスクリプト化する際に留意するべき変更点です。
オブジェクト プロパティの値を取得するため、オブジェクトをマップに変換
importPackage(com.cloupia.service.cIM.inframgr); importPackage(com.cloupia.model.cIM); importPackage(com.cloupia.lib.util); importPackage(java.util); importPackage(java.lang); var vmSummary =""; var vminfo = ctxt.getAPI().getVMwareVMInfo(306);//306 is vmId for(var x in vminfo){ //escaping getter and setter methods if(x.match(/get*/) == null && x.match(/set*/) == null && x.match(/jdo*/) == null && x.match(/is*/) == null && x.match(/hashCode/) == null && x.match(/equals/) == null) { vmSummary += x +":"+ vminfo[x] + '#'; }; }; logger.addInfo("VMSUMMARY="+vmSummary);
importPackage(com.cloupia.service.cIM.inframgr); importPackage(com.cloupia.model.cIM); importPackage(com.cloupia.lib.util); importPackage(java.lang); importPackage(java.util); var vmSummary = ""; var vminfo = ctxt.getAPI().getVMwareVMInfo(4);//4 is vmId var vminfo = ObjectToMap.convertObjectToMap(vminfo); for (var x in vminfo) { vmSummary += x +":"+ vminfo[x] + '#'; } logger.addInfo("VMSUMMARY="+vmSummary);
(注) | ObjectToMap.convertObjectToMap(vminfo) クラスはオブジェクト(vminfo など)にプリミティブまたは文字列型のプロパティが含まれている場合にのみ使用できます。ベスト プラクティスは、getVmId() や getVmName() などの標準の getter メソッドを使用してオブジェクトの値を取得することです。 |
print( ) 関数の使用
println( ) の代わりに print( ) を使用します。
(注) | JDK 1.8 は、後方互換性のために println( ) を引き続きサポートします。 |
class<T> パラメータをメソッドまたはコンストラクタに渡すための構文の変更
var fml = new FormManagedList(PrivateCloudNetworkPolicyNICPortGroup);
var fml = new FormManagedList(PrivateCloudNetworkPolicyNICPortGroup.class);
クラスおよびパッケージをインポートする構文の変更
クラスとパッケージをインポートする構文が変更されました。以前のインポート ステートメントではクラスまたはパッケージが javascript 実行のグローバル スペースで使用できるようになっており、それが必ずしも必要ではなかったのに対し、新しいインポート ステートメントではクラスまたはパッケージの使用のローカリゼーションが向上します。
importPackage(com.cloupia.model.cIM); importClass(java.util.ArrayList);
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.5 で引き続きサポートされます。カスタム タスクのスクリプトを実行する前に、バックエンドのエンジンはロード('nashorn:Mozilla_compat.js')を呼び出します。 |
静的メソッドへのアクセス
静的メソッドへのアクセスの柔軟性は Nashorn エンジンでは低下します。Rhino のバージョンのエンジンでは、静的メソッドにはクラス名(Java と同じ構文)からだけでなく、そのクラスのどのインスタンスからも(Java とは異なり)アクセスできました。
var myRBUtil = new com.cloupia.service.cIM.inframgr.i18n.RBUtil(); myRBUtil.getString();// No error com.cloupia.service.cIM.inframgr.i18n.RBUtil.getString();// No error
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 オブジェクトがあります。
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