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

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

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

  2. vco

    vCenter Orchestrator (1) – Intro

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

  3. vco

    備忘録: wait a vim task in vCO script

    var task = folder.destory_Task();…

  4. Yufuin-no-mori Traing

    vco

    Updating Host advanced settings with updateOptions…

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

  5. Tong-Sai@Naka Island, Thailand

    install

    vCenter Orchestrator (2) – Installation Type…

    Windows 版 vCenter Server をイ…

  6. vco

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

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

コメント

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

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










  1. powercli

    PowerShell スクリプト コマンドレットのパラメータに補完機能を
  2. vagrant

    Vagrantfile で Linked Clone をデフォルトにする
  3. vrealize

    Gugent’s certificate for Linux in …
  4. powercli

    Details of host Advanced settings
  5. fusion

    IME 切替 on MacBook Pro + VMware Fusion + …
PAGE TOP
Translate »