error

Unable to serialize object of class in vCenter Orchestrator

家ラボの vCenter Orchestrator を 5.5.2.1 (ShellShock 対応) に上げたところ、action:waitAllWorkflowComplete でエラーが発生するようになったので、その対応方法を記します。 発生するエラーメッセージは以下の通り。

Workflow:Create lab / waitAllWorkflowComplete (item6) : ch.dunes.model.type.ConvertorException: Unable to serialize object of class : ch.dunes.vso.sdk.SDKTypeConvertor_server$1

この問題を起こした Action は、直前の Foreach ノードで複数実行したワークフローの完了を workflow token (wfTokens) の内容を確認しながら待機します。この wfToken は Foreach ノードで実行したワークフローのアウトプット オブジェクトも含まれているので、その辺で Serialize Error が出ているのかもしれません。以下が、問題を発生した実際のワークフローになります。

vco error

バグ報告をしても修正を待っていられないので、回避策として action:waitAllWorkflowComplete を Scriptable Task に置き換えます。 まず、action:waitAllWorkflowComplete のスクリプトの内容を確認します。

script task

次に、問題を起こしたワークフローの action:waitAllWorkflowComplete を Scriptable Task に変更します。

revised task

そしてその中身のスクリプトとパラメーターバインディングを行います。スクリプトは以下になります。

parameter binding

action:waitAllWorkflowComplete のスクリプトから不要な return 文を削除します。 パラメーターバインディングは以下になります。

parameter binding

ワークフローでは、ワークフロー トークンの配列を wfTokens としていますが、バインディングの際に tokens という名前に変更しています。 実際のスクリプトは、貼り付けるほどでもないですが、以下のようになります。

var result = new Array();
if (tokens != null && tokens.length > 0) {
    result[tokens.length-1] = null; // init the array with the good size but full of null

    var allFinished = false;
    while (! allFinished) {
        System.sleep(500);

        allFinished = true;

        for (var i in tokens) {
            if (tokens[i].state == "completed" || tokens[i].state == "failed" || tokens[i].state == "canceled") {
                allFinished &= true;
                if (result[i] == null) {
                    var prop = tokens[i].getOutputParameters(); // Properties
                    if (prop == null) prop = new Properties();
                    prop.put("__state", tokens[i].state);
                    if (tokens[i].state == "failed")
                        prop.put("__exception", tokens[i].exception);
                    result[i] = prop;
                }
            }
            else {
                allFinished = false;
            }
        }
    }   
}

関連記事

  1. vco

    vCenter Orchestrator (1) – Intro

    VMware の数ある製品の中でおそらく 3 番目に顧客先でインス…

  2. vco

    [Fixed] Unable to serialize object of class in vRe…

    先日にエントリのネタになったバグが KB として上がり、さらにバグパッ…

  3. Yufuin-no-mori Traing

    vco

    Updating Host advanced settings with updateOptions…

    まとめvRealize Orchestrator のスクリプティ…

  4. Tong-Sai@Naka Island, Thailand

    install

    vCenter Orchestrator (2) – Installation Type…

    Windows 版 vCenter Server をイ…

  5. vco

    vCO のスクリプトで vCenter の情報が取得できない

    vCenter Orchestrator (vCO) のスクリプト…

  6. vco

    備忘録: wait a vim task in vCO script

    var task = folder.destory_Task();…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。










  1. netapp

    NetApp Clustered DataONTAP command lines…
  2. vmware

    VMware から提供されるサービス
  3. vcenter

    How to deploy vCenter Server 6.0 (Embedd…
  4. powercli

    VMware PowerCLI 6.5.1 のアンインストール
  5. host client

    ESXi と Host Client のバージョンの組み合わせ
PAGE TOP
Translate »